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…