参阅:
(7)改变属性值后更新运行时数据库
用户现在应该已经不能满足于简单的”helloworld“程序,而迫不及待地要尝试更多逻辑复杂的应用程序了。那么PD的PathName属性或者TD的ProgName属性或者两个都可能需要修改,然后重启region来使修改生效。但是重启region会耗费太多的时间。下面两种方法可以在修改属性后避免重启region。
a. 首先使用”cicsdelete -R“,然后运行”cicsupdate -B“
“cicsdelete -R“会将资源定义从运行时数据库中删除并从运行中的系统中卸载。”cicsupdate -B“可以更新持久化和运行时数据库,并向运行中的系统中安装资源定义。
b. 首先使用”cicsdelete -B“,然后运行”cicsadd -B“
严格来说,这不是更新而是重新添加资源定义。但是它行得通。
4. 练习
(1)在RGN1的bin目录下通过”-e“和”-d“选项翻译、编译、连接”helloworld“程序。
(2)向RGN1中添加名为HELLOPRG的PD记录。
(3)向RGN1中添加名为HELO的TD记录。
(4)使用CEDF调试HELO交易并阅读EDF显示的信息。
(5)改变helloworld.ccs中”Hello“变量的内容以显示其他字符串。重新编译程序,运行HELO交易并观察信息是否改变。
(6)完成下列的操作并观察会发生什么(确保region处于激活状态并且上边的练习已经完成)。
a. 首先删除PD,接下来向持久化数据库添加PD,然后运行HELO交易。
b. 首先删除PD,接下来向持久化和运行时数据库添加PD,然后运行HELO交易。
c. 首先删除TD,接下来向持久化数据库添加TD,然后运行HELO交易。
(7)更新PathName属性来指向其他程序。
5. 答案
(1)在RGN1的bin目录下通过”-e“和”-d“选项翻译、编译、连接”helloworld“程序。
#vi /var/cics_regions/RGN1/bin/helloworld.ccs
编辑程序的源代码。
#cicstcl -e -d -lC helloworld.ccs
(2)向RGN1中添加名为HELLOPRG的PD记录。
#cicsadd -c pd -r RGN1 HELLOPRG PathName=helloworld
(3)向RGN1中添加名为HELO的TD记录。
#cicsadd -c td -r RGN1 HELO ProgName=HELLOPRG
(4)使用CEDF调试HELO交易并阅读EDF显示的信息。
使用cicslterm连接到region,运行CEDF交易并记录下显示的终端标识号(例如C9F2)。
在新的命令窗口使用cicslterm连接到region,运行CECI START TRANSID(HELO) TERMID(C9F2),然后回到第一个终端进行调试。
(5)改变helloworld.ccs中”Hello“变量的内容以显示其他字符串。重新编译程序,运行HELO交易并观察信息是否改变。
“Hello“变量中的信息已经改变为新的字符串。
(6)完成下列的操作并观察会发生什么(确保region处于激活状态并且上边的练习已经完成)。
a. 首先删除PD,接下来向持久化数据库添加PD,然后运行HELO交易。
#cicsdelete -c pd -r RGN1 -B HELLOPRG
#cicsadd -c pd -r RGN1 HELLOPRG PathName=helloworld
会收到信息“ERZ014016E: Transaction ‘HELO’, Abend ‘A144’, at ‘D9F2’.”
b. 首先删除PD,接下来向持久化和运行时数据库添加PD,然后运行HELO交易。
#cicsdelete -c pd -r RGN1 HELLOPRG
#cicsadd -c pd -r RGN1 -B HELLOPRG PathName=helloworld
交易成功运行。
c. 首先删除TD,接下来向持久化数据库添加TD,然后运行HELO交易。
#cicsdelete -c td -r RGN1 -B HELO
#cicsadd -c td -r RGN1 HELO ProgName=HELLOPRG
会收到信息“ERZ033001E: Transaction ‘HELO’ rejected – ‘transaction not found'”.
(7)更新PathName属性来指向其他程序。
#cicsdelete -c pd -r RGN1 -R HELLOPRG
#cicsupdate -c pd -r RGN1 -B HELLOPRG PathName=/var/bin/helloworld
TXSeries入门系列文章–单元三
数据管理
一部分
文件
三单元 数据管理
关于本单元
毫无疑问,商业交易离不开大量的数据,所以数据管理是一个相当大的主题。在本单元用户将学到大量的关于TXSeries如何与来自文件、队列和数据库的数据一起工作的详细命令。为了便于理解,本单元被分为五部分来展示如何去管理文件、TDQ/TSQ、MQ、DB2和Oracle。在学习本单元之前请确保已经完成了”Hello World“示例程序。
第一部分 文件
关于本部分
TXSeries可以在本地或远程文件中读取、写入、更新、删除和浏览数据。这里的文件不同于可以使用像VI这样的编辑器打开并被操作系统管理的文件。实际上,数据以文件形式被存储在例如SFS,DB2和Oracle这样的文件系统中,在定义了FD记录后可以被TXSeries识别。本单元将只讨论使用SFS作为文件系统的情况。
TXSeries为用户提供了一些专用的工具和API,可以通过命令行和应用程序创建和访问文件,例如”cicssdt“和”EXEC CICS READ“。用户将会学习到如何使用这些工具,并编写几个程序来管理文件中的记录。
1. 使用”cicssdt” 创建文件并编辑记录
在通过命令行或API使用文件前,用户需要创建一个文件并向其中添加一些测试数据。”cicssdt“是用于SFS文件管理的命令行工具(”cicsddt“用于DB2,”cicsodt“用于Oracle,它们的功能是相同的,在此只介绍”cicssdt“),允许用户创建和编辑位于SFS服务器中的文件。
确保在使用此命令时SFS服务器是处于激活状态的,这样”cicssdt“可以连接到SFS服务器(使用”cicscp -v start sfs_server <SFSname>“来启动一个SFS服务器)。
语法
cicssdt [-s <SFSname>] [-c <SDTcommands> …]
选项
-s: 指定连接到哪个SFS服务器。
<SFSname>: SFS服务器名称,例如: /.:/cics/sfs/OceanLinux64。
-c: 指定使用的SDT命令列表。这个选项一定要在命令的最后。
<SDT commands>:SDT命令列表,包括创建、列出、写入、删除、信息等。
在第一个region被创建时会自动生成一个默认的SFS服务器,以机器的主机名(可以通过”uname -n“获得)命名。本单元示例的主机名是”OceanLinux64“,SFSname是”/.:/cics/sfs/OceanLinux64“。
参阅:
上述语法是用户需要知道的最简单的用法。用户可以使用诸如”cicssdt -s /.:/cics/sfs/OceanLinux64“的命令来连接指定的SFS服务器,稍后使用SDT命令;或者在最后直接添加SDT命令,就像在cicslterm命令中指定执行一个交易(cicslterm -r <regionName> -t <transactionID>),例如,”cicssdt -s /.:/cics/sfs/OceanLinux64 –c create file1“。”create file1“是SDT命令,下面将介绍最重要的命令:
(1)create <filename>
这条命令允许用户在当前的SFS服务器中创建一个指定名称的文件,并决定文件的组织形式、域的属性(名称、类型、尺寸,类似一个表)、索引名称和排序方式等。
下面的示例在名为OceanLinux64的SFS服务器中创建一个”file1“文件,文件组织形式设置为BtreeClustered(KSDS),有三个域(包括id,名称和年龄),id用作文件的索引并升序排列。KSDS是键序数据集,这是常用的默认类型,不同的类型在某些操作上可能会有所不同。若想了解更多的关于其他类型的信息,请参考本节的”参阅”。本部分所有的示例都是基于KSDS的。
“//“之后的蓝色字体部分用于注释。
#cicssdt -s /.:/cics/sfs/OceanLinux64 -c create file1
ERZ037068I/0500: CICSSDT talking to: ‘/.:/cics/sfs/OceanLinux64’
ERZ037069I/0501: Version [2.1 : 12-07-1995]
ERZ037070I/0502: Contacting Server …
ERZ037103I/0704: (Server OK)
cicssdt: -> create
[File Name……………………………: file1ile
[SFS Server Volume Name …….: sfs_SOceanLi //automatically filled
[File Organisation [E/R/B] ………: B[treeClustered] //default type
[Field 01: Name …………………….: id
[Field 01: Type ………………………: byteArray //recommended type for flexibility in programming
[Field 01: Size ……………………….: 3
[Field 02: Name …………………….: name
[Field 02: Type ………………………: byteArray
[Field 02: Size ……………………….: 10
[Field 03: Name …………………….: age
[Field 03: Type ………………………: byteArray
[Field 03: Size ……………………….: 3
以下文章点击率最高
Loading…