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…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營