TXSeries入门系列文章20

ListenerName             regionALD。其中的地址和端口将被远程region使用来与regionA通信。

参阅:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/reference/r_comms_defns.html?lang=en

d. regionB添加PD

regionB中添加一个程序定义(PD),它将作为后端程序被regionA中的链接程序链接。这个程序通过”EXEC CICS ADDRESS“命令获得COMMAREA的地址,并向其中添加一些数据。最后它通过”EXEC CICS RETURN“命令将控制权返回给链接程序。

e. regionB添加LD

类似于regionA中的监听器定义(LD),TCPAddressregionBIP地址,TCPService的值应被设置为regionB所在机器”/etc/services“文件中定义的服务名称。

3DPL编程

DPL编程中最重要的API是”EXEC CICS LINK“。这条命令将通过指定SYSID选项来链接远程region中的另一个程序。

语法

EXEC CICS LINK PROGRAM(“<PD entry of regionB>”) COMMAREA(<pointer to commarea>)

LENGTH(<size of commarea>) SYSID(“<CD entry in regionA>”) SYNCONRETURN;

选项

PROGRAM      远程region中后端程序的PD

LENGTH           commarea的大小,例如:60

SYSID               指定哪个region中的后端程序将要运行。值应该是本地region中的CD名称。

SYNCONRETURN:如果EXEC CICS LINK命令中没有指定SYNCONRETURN选项,镜像交易保持激活状态,并且不会提交对资源进行的更改,直到链接程序到达一个同步点。这可能产生不必要的延迟。使用SYNCONRETURN可以避免这种延迟,而且也避免当后端资源被提交时链接程序和后端程序之间的通信。但是,当两个region共享资源时这个选项不适用。请用户根据实际情况考虑是否使用这个选项。

参阅:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/reference/r_link.html?lang=en

4DPL的其他实现方式

除了在LINK命令的SYSID中指定CD名称,TXSeries也允许向本地region添加一个镜像程序,并在链接程序中链接这个镜像程序。 请按照下列步骤添加镜像程序。

a. regionA添加镜像程序的PD

语法

cicsadd -c pd -r <regionA’s name> <mirror program name> RemoteSysId=”<CD entry name in regionA>” RemoteName=”<PD entry name in regionB>”

选项

<mirror program name>        这个名称(PD名称)会被LINK命令使用来链接程序。

RemoteSysId               这个选项的值指向真正的后端程序所在的远程region

RemoteName             远程region中真正的后端程序的PD名称。

参阅:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/tasks/t_config_prgrm_dfntns_dpl.html?lang=en

b. 修改LINK命令

在本示例中,没有必要在LINK命令中指定SYSID——这条命令会链接本地region中的镜像程序。

语法

EXEC CICS LINK PROGRAM(“<mirror program name>”) COMMAREA(<pointer to commarea>)LENGTH(<size of commarea>) SYNCONRETURN;

所以在这种方式中,链接程序将链接本地镜像程序,并尝试通过程序定义中的RemoteNameRemoteSysId寻找远程region中真正的后端程序。

2. Function shipping

1)什么是FS

FSfunction shipping)允许本地程序访问其他region拥有的CICS文件。所以通过这种方式,文件可以在不同region间共享。此外,它也可以向TSQTDQ中传输数据或从其中取得数据,并在其他region中启动交易。本节只介绍关于文件的操作。

参阅:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/concepts/c_end_func_shpng.html?lang=en

2)配置FS

示例中,测试程序位于本地region regionA,目标文件位于远程region regionB

类似于DPLFS也需要为两个region配置两个LD,并为本地region配置CD。另外,regionA中要定义测试程序的PDregionB中要添加一个FD,并在远程SFS服务器上创建一个示例文件。

3FS编程

为了读取远程文件中的记录,需要如下扩展”EXEC CICS READ“命令的用法。可以参考三单元一部分的内容来获得关于文件的其他信息。

语法

EXEC CICS READ FILE(“<FD entry in regionB>”) INTO(<pointer to record struct>) LENGTH(<length of

record>) RIDFLD(<recordIndex>) KEYLENGTH(<length of index>) SYSID(“<CD entry name>”);

选项

LENGTH           这个选项的值必须是一个”short“型的变量,这个变量的值应该是记录的长度。

KEYLENGTH     这个选项的值是索引值的长度。

SYSID               指定远程文件的位置。

参阅:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/reference/r_read.html?lang=en

3. 练习

1)通过在LINK命令中指定SYSID,实现两个不同region之间程序的DPLregionA中的ProgramACOMMAREA中放入消息”Hi, I am A!“,然后regionB中的programBCOMMAREA中添加消息”Hi, I am B!“。最后,ProgramA添加”Hi, I am A~“并向终端发送这条消息。

2)通过配置一个镜像程序,实现两个不同region之间程序的DPLregionA中的ProgramACOMMAREA中放入消息”Hi, I am A!“,然后regionB中的programBCOMMAREA中添加消息”Hi, I am B!“。最后,ProgramA添加”Hi, I am A~“并向终端发送这条消息。

3)通过FS实现regionA中的programA读取regionB中的远程文件。

4. 答案

1)通过在LINK命令中指定SYSID,实现两个不同region之间程序的DPLregionA中的ProgramACOMMAREA中放入消息”Hi, I am A!“,然后regionB中的programBCOMMAREA中添加消息”Hi, I am B!“。最后,ProgramA添加”Hi, I am A~“并向终端发送这条消息。

环境

regionA地址:192.168.220.130 port:1436

regionB地址:192.168.220.129 port:1437

regionA配置

#cicsadd -cpd -r regionA progA PathName=programA RSLKey=public

#cicsadd -ctd -r regionA PRGA ProgName=progA

#vi /etc/services

添加:DPL_1436 1436/tcp

#cicsadd –c ld -r regionA LSNA Protocol=TCP TCPAddress=192.168.220.130 TCPService=”DPL_1436″

#cicsadd –c cd -r regionA RGNB ConnectionType=cics_tcp RemoteLUName=”regionB”

RemoteTCPAddress=192.168.220.129 RemoteTCPPort=1437 ListenerName=”LSNA”

regionB配置

#cicsadd -cpd -r regionB progB PathName=programB RSLKey=public

#vi /etc/services

添加:DPL_1437 1437/tcp

#cicsadd –c ld -r regionB LSNB Protocol=TCP TCPAddress=192.168.220.129 TCPService=”DPL_1437″

源代码

请查看/Unit 5/Exercise 1目录下的源代码。

2)通过配置一个镜像程序,实现两个不同region之间程序的DPLregionA中的ProgramACOMMAREA中放入消息”Hi, I am A!“,然后regionB中的programBCOMMAREA中添加消息”Hi, I am B!“。最后,ProgramA添加”Hi, I am A~“并向终端发送这条消息。

环境

regionA地址:192.168.220.130 port:1436

regionB地址:192.168.220.129 port:1437

regionA配置

#cicsadd –c pd -r regionA progA2 PathName=programA_2 RSLKey=public

#cicsadd –c td -r regionA PGA2 ProgName=progA2

#cicsadd –c pd -r regionA mirror RemoteName=”progB” RemoteSysId=”RGNB” RSLKey=public

#vi /etc/services

添加:DPL_1436 1436/tcp

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注