ListenerName: regionA的LD。其中的地址和端口将被远程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),TCPAddress是regionB的IP地址,TCPService的值应被设置为regionB所在机器”/etc/services“文件中定义的服务名称。
(3)DPL编程
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
(4)DPL的其他实现方式
除了在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;
所以在这种方式中,链接程序将链接本地镜像程序,并尝试通过程序定义中的RemoteName和RemoteSysId寻找远程region中真正的后端程序。
2. Function shipping
(1)什么是FS
FS(function shipping)允许本地程序访问其他region拥有的CICS文件。所以通过这种方式,文件可以在不同region间共享。此外,它也可以向TSQ和TDQ中传输数据或从其中取得数据,并在其他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。
类似于DPL,FS也需要为两个region配置两个LD,并为本地region配置CD。另外,regionA中要定义测试程序的PD,regionB中要添加一个FD,并在远程SFS服务器上创建一个示例文件。
(3)FS编程
为了读取远程文件中的记录,需要如下扩展”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之间程序的DPL。regionA中的ProgramA向COMMAREA中放入消息”Hi, I am A!“,然后regionB中的programB向COMMAREA中添加消息”Hi, I am B!“。最后,ProgramA添加”Hi, I am A~“并向终端发送这条消息。
(2)通过配置一个镜像程序,实现两个不同region之间程序的DPL。regionA中的ProgramA向COMMAREA中放入消息”Hi, I am A!“,然后regionB中的programB向COMMAREA中添加消息”Hi, I am B!“。最后,ProgramA添加”Hi, I am A~“并向终端发送这条消息。
(3)通过FS实现regionA中的programA读取regionB中的远程文件。
4. 答案
(1)通过在LINK命令中指定SYSID,实现两个不同region之间程序的DPL。regionA中的ProgramA向COMMAREA中放入消息”Hi, I am A!“,然后regionB中的programB向COMMAREA中添加消息”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之间程序的DPL。regionA中的ProgramA向COMMAREA中放入消息”Hi, I am A!“,然后regionB中的programB向COMMAREA中添加消息”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…