分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編
MHPのメインプログラムのコーディング例を次に示します。
10 * 20 ******************************************************** 30 * MHP メインプログラム * 40 ******************************************************** 50 * 60 IDENTIFICATION DIVISION. 70 80 PROGRAM-ID. CBMAIN. 90 100 ENVIRONMENT DIVISION. 110 CONFIGURATION SECTION. 120 * 130 ******************************************************** 140 * ワーク変数 * 150 ******************************************************** 160 * 170 DATA DIVISION. 180 WORKING-STORAGE SECTION. 190 * 200 ******************************************************** 210 * RPC-OPEN データ領域 * 220 ******************************************************** 230 * 240 01 ROPEN-PARM1. 250 02 ROPEN-NAME PIC X(8) VALUE 'OPEN '. 260 02 ROPEN-STATUS PIC X(5). 270 02 FILLER PIC X(3). 280 02 RO-FLG PIC S9(9) COMP VALUE ZERO. 290 * 300 ******************************************************** 310 * MCF-OPEN データ領域 * 320 ******************************************************** 330 * 340 01 MOPEN-PARM1. 350 02 MOPEN-NAME PIC X(8) VALUE 'OPEN '. 360 02 MOPEN-STATUS PIC X(5). 370 02 FILLER PIC X(3). 380 02 MO-FLG1 PIC S9(9) COMP VALUE ZERO. 390 02 MO-RSV PIC X(12) VALUE LOW-VALUE. 400 * 410 ******************************************************** 420 * MCF-MAINLOOP データ領域 * 430 ******************************************************** 440 * 450 01 MAIN-PARM1. 460 02 MAIN-NAME PIC X(8) VALUE 'MAINLOOP'. 470 02 MAIN-STATUS PIC X(5). 480 02 FILLER PIC X(3). 490 02 M-RSV PIC X(16) VALUE LOW-VALUE. 500 * 510 ******************************************************** 520 * MCF-CLOSE データ領域 * 530 ******************************************************** 540 * 550 01 MCLSE-PARM1. 560 02 MCLSE-NAME PIC X(8) VALUE 'CLOSE '. 570 02 MCLSE-STATUS PIC X(5). 580 02 MFILLER PIC X(3). 590 02 MC-FLG1 PIC S9(9) COMP VALUE ZERO. 600 02 MC-RSV PIC X(12) VALUE LOW-VALUE. 610 * 620 ******************************************************** 630 * RPC-CLOSE データ領域 * 640 ******************************************************** 650 * 660 01 RCLSE-PARM1. 670 02 RCLSE-NAME PIC X(8) VALUE 'CLOSE '. 680 02 RCLSE-STATUS PIC X(5). 690 02 FILLER PIC X(3). 700 02 RC-FLG PIC S9(9) COMP VALUE ZERO. 710 * 720 PROCEDURE DIVISION. 730 * 740 ******************************************************** 750 * RPC-OPEN(UAPの開始) * 760 ******************************************************** 770 * 780 CALL 'CBLDCRPC' USING ROPEN-PARM1. 790 IF ROPEN-STATUS IS NOT EQUAL TO '00000' 800 GO TO RCLOS. 810 * 820 ******************************************************** 830 * MCF-OPEN(MCF環境のオープン) * 840 ******************************************************** 850 * 860 CALL 'CBLDCMCF' USING MOPEN-PARM1. 870 IF MOPEN-STATUS IS NOT EQUAL TO '00000' 880 GO TO RCLOS. 890 * 900 ******************************************************** 910 * MCF-MAINLOOP(MHPのサービス開始) * 920 ******************************************************** 930 * 940 CALL 'CBLDCMCF' USING MAIN-PARM1. 950 * 960 ******************************************************** 970 * MCF-CLOSE(MCF環境のクローズ) * 980 ******************************************************** 990 * 1000 CALL 'CBLDCMCF' USING MCLSE-PARM1. 1010 * 1020 ******************************************************** 1030 * RPC-CLOSE(UAPの終了) * 1040 ******************************************************** 1050 * 1060 RCLOS. 1070 CALL 'CBLDCRPC' USING RCLSE-PARM1. 1080 * 1090 ******************************************************** 1100 * 終了処理 * 1110 ******************************************************** 1120 * 1130 STOP RUN.
MHPのサービスプログラムのコーディング例を次に示します。
10 * 20 ******************************************************** 30 * MHPサービスプログラム * 40 ******************************************************** 50 * 60 IDENTIFICATION DIVISION. 70 80 PROGRAM-ID. SVRA. 90 100 ENVIRONMENT DIVISION. 110 CONFIGURATION SECTION. 120 * 130 ******************************************************** 140 * ワーク変数 * 150 ******************************************************** 160 * 170 DATA DIVISION. 180 WORKING-STORAGE SECTION. 190 * 200 ******************************************************** 210 * MCF-RECEIVEデータ領域 * 220 ******************************************************** 230 * 240 01 RECV-PARM1. 250 02 RECV-NAME PIC X(8) VALUE 'RECEIVE '. 260 02 RECV-STATUS PIC X(5). 270 02 FILLER PIC X(3). 280 02 FRST-ID PIC X(4) VALUE 'FRST' 290 02 RE-RSV1 PIC X(4) VALUE SPACE. 300 02 DATE-ID PIC 9(8). 310 02 TIME-ID PIC 9(8). 320 02 RE-LENG PIC 9(9) COMP VALUE 1024. 330 02 RE-RSV2 PIC X(4) VALUE SPACE. 340 02 RE-RSV3 PIC X(4) VALUE SPACE. 350 02 RE-RSV4 PIC X(4) VALUE SPACE. 360 02 RE-RSV5 PIC X(4) VALUE SPACE. 370 02 RE-RSV6 PIC X(8) VALUE SPACE. 380 02 RE-RSV7 PIC X(4) VALUE SPACE. 390 02 RE-RSV8 PIC X(8) VALUE SPACE. 400 02 RE-RSV9 PIC X(4) VALUE SPACE. 410 02 RE-RSV10 PIC 9(9) COMP VALUE ZERO. 420 02 RE-RSV11 PIC 9(9) COMP VALUE ZERO. 430 02 RE-RSV12 PIC X(1) VALUE SPACE. 440 02 RE-RSV13 PIC X(1) VALUE '1'. 450 02 RE-RSV14 PIC X(14) VALUE LOW-VALUE. 460 01 RECV-PARM2. 470 02 RE-RSV15 PIC X(4) VALUE SPACE. 480 02 TERM-ID PIC X(8). 490 02 RE-RSV16 PIC X(8) VALUE SPACE. 500 02 RE-RSV17 PIC X(8) VALUE SPACE. 510 02 RE-RSV18 PIC X(28) VALUE LOW-VALUE. 520 01 RECV-PARM3. 530 02 RE-DATALENG PIC 9(9) COMP. 540 02 RE-RSV19 PIC X(8). 550 02 RE-DATA PIC X(1024). 560 * 570 ******************************************************** 580 * MCF-EXECAP データ領域 * 590 ******************************************************** 600 * 610 01 EXEC-PARM1. 620 02 EXEC-NAME PIC X(8) VALUE 'EXECAP '. 630 02 EXEC-STATUS PIC X(5). 640 02 FILLER PIC X(3). 650 02 EX-RSV1 PIC X(4) VALUE SPACE. 660 02 EX-RSV2 PIC X(4) VALUE SPACE. 670 02 EX-RSV3 PIC 9(8). 680 02 EX-RSV4 PIC 9(8). 690 02 EX-RSV5 PIC 9(9) COMP VALUE ZERO. 700 02 EX-EMI PIC X(4) VALUE 'EMI '. 710 02 EX-RSV6 PIC X(4) VALUE SPACE. 720 02 EX-RSV7 PIC X(4) VALUE SPACE. 730 02 EX-RSV8 PIC X(4) VALUE SPACE. 740 02 EX-TIME PIC X(8) VALUE '00000000'. 750 02 EX-RSV9 PIC X(4) VALUE SPACE. 760 02 EX-RSV10 PIC X(8) VALUE 'aprepB '. 770 02 EX-EXEC PIC X(4) VALUE 'JUST'. 780 02 EX-RSV11 PIC 9(9) COMP VALUE ZERO. 790 02 EX-RSV12 PIC 9(9) COMP VALUE ZERO. 800 02 EX-RSV13 PIC X(1) VALUE SPACE. 810 02 EX-RSV14 PIC X(1) VALUE '1'. 820 02 EX-RSV15 PIC X(14) VALUE LOW-VALUE. 830 01 EXEC-PARM2. 840 02 EX-RSV16 PIC X(4) VALUE SPACE. 850 02 EX-RSV17 PIC X(8) VALUE SPACE. 860 02 EX-RSV18 PIC X(8) VALUE SPACE. 870 02 EX-RSV19 PIC X(8) VALUE SPACE. 880 02 EX-RSV20 PIC X(28) VALUE LOW-VALUE. 890 01 EXEC-PARM3. 900 02 EX-DATALENG PIC 9(9) COMP VALUE 16. 910 02 EX-RSV21 PIC X(8). 920 02 EX-DATA PIC X(16) VALUE 'SVRA EXECAP DATA'. 930 * 940 ******************************************************** 950 * MCF-REPLY データ領域 * 960 ******************************************************** 970 * 980 01 RPLY-PARM1. 990 02 RPLY-NAME PIC X(8) VALUE 'REPLY '. 1000 02 RPLY-STATUS PIC X(5). 1010 02 FILLER PIC X(3). 1020 02 RP-RSV1 PIC X(4) VALUE SPACE. 1030 02 RP-RSV2 PIC X(4) VALUE SPACE. 1040 02 RP-RSV3 PIC 9(8). 1050 02 RP-RSV4 PIC 9(8). 1060 02 RP-RSV5 PIC 9(9) COMP VALUE ZERO. 1070 02 RP-EMI PIC X(4) VALUE'EMI '. 1080 02 RP-RSV6 PIC X(4) VALUE SPACE. 1090 02 RP-RSV7 PIC X(4) VALUE SPACE. 1100 02 RP-RSV8 PIC X(4) VALUE SPACE. 1110 02 RP-RSV9 PIC X(8) VALUE SPACE. 1120 02 RP-RSV10 PIC X(4) VALUE SPACE. 1130 02 RP-RSV11 PIC X(8) VALUE SPACE. 1140 02 RP-RSV12 PIC X(4) VALUE SPACE. 1150 02 RP-RSV13 PIC 9(9) COMP VALUE ZERO. 1160 02 RP-RSV14 PIC 9(9) COMP VALUE ZERO. 1170 02 RP-RSV15 PIC X(1) VALUE SPACE. 1180 02 RP-RSV16 PIC X(1) VALUE '1'. 1190 02 RP-RSV17 PIC X(14) VALUE LOW-VALUE. 1200 01 RPLY-PARM2. 1210 02 RP-RSV18 PIC X(4) VALUE SPACE. 1220 02 RP-RSV19 PIC X(8) VALUE SPACE. 1230 02 RP-RSV20 PIC X(8) VALUE SPACE. 1240 02 RP-RSV21 PIC X(8) VALUE SPACE. 1250 02 RP-RSV22 PIC X(28) VALUE LOW-VALUE. 1260 01 RPLY-PARM3. 1270 02 RP-DATALENG PIC 9(9) COMP VALUE 16. 1280 02 RP-RSV23 PIC X(8). 1290 02 RP-DATA PIC X(16) VALUE 'SVRA REPLY DATA1'. 1300 * 1310 ******************************************************** 1320 * MCF-ROLLBACK データ領域 * 1330 ******************************************************** 1340 * 1350 01 RBK-PARM1. 1360 02 RBK-NAME PIC X(8) VALUE 'ROLLBACK'. 1370 02 RBK-STATUS PIC X(5). 1380 02 FILLER PIC X(3). 1390 02 RBK-ACTION PIC X(4) VALUE 'NRTN'. 1400 02 RBK-RSV1 PIC X(12) VALUE LOW-VALUE. 1410 1420 PROCEDURE DIVISION. 1430 * 1440 ******************************************************** 1450 * MCF-RECEIVE (メッセージの受信) * 1460 ******************************************************** 1470 * 1480 CALL 'CBLDCMCF' USING RECV-PARM1 RECV-PARM2 RECV-PARM3. 1490 IF RECV-STATUS IS NOT EQUAL TO '00000' 1500 * 1510 ******************************************************** 1520 * MCF-ROLLBACK (エラー処理) * 1530 ******************************************************** 1540 * 1550 CALL 'CBLDCMCF' USING RBK-PARM1. 1560 * 1570 ******************************************************** 1580 * MCF-EXECAP (アプリケーションプログラム起動) * 1590 ******************************************************** 1600 * 1610 CALL 'CBLDCMCF' USING EXEC-PARM1 EXEC-PARM2 EXEC-PARM3. 1620 IF EXEC-STATUS IS NOT EQUAL TO '00000' 1630 * 1640 ******************************************************** 1650 * MCF-ROLLBACK (エラー処理) * 1660 ******************************************************** 1670 * 1680 CALL 'CBLDCMCF' USING RBK-PARM1. 1690 * 1700 ******************************************************** 1710 * MCF-REPLY (応答メッセージの送信) * 1720 ******************************************************** 1730 * 1740 CALL 'CBLDCMCF' USING RPLY-PARM1 RPLY-PARM2 RPLY-PARM3. 1750 IF RPLY-STATUS IS NOT EQUAL TO '00000' 1760 * 1770 ******************************************************** 1780 * MCF-ROLLBACK (エラー処理) * 1790 ******************************************************** 1800 * 1810 CALL 'CBLDCMCF' USING RBK-PARM1. 1820 * 1830 ******************************************************** 1840 * 終了処理 * 1850 ******************************************************** 1860 * 1870 EXIT PROGRAM.
MHPのサービスプログラムをデータ操作言語(DML)で作成した場合のコーディング例を次に示します。
10 * 20 ******************************************************** 30 * MHPサービスプログラム * 40 ******************************************************** 50 * 60 IDENTIFICATION DIVISION. 70 80 PROGRAM-ID. SVRA. 90 100 ENVIRONMENT DIVISION. 110 CONFIGURATION SECTION. 120 * 130 ******************************************************** 140 * ワーク変数 * 150 ******************************************************** 160 * 170 DATA DIVISION. 180 WORKING-STORAGE SECTION. 190 * 200 ******************************************************** 210 * メッセージ受信領域 * 220 ******************************************************** 230 * 240 01 RECV-AREA. 250 02 RE-DATALENG PIC 9(4) COMP VALUE 1028. 260 02 RE-RSV1 PIC X(2). 270 02 RE-DATA PIC X(1024). 280 * 290 ******************************************************** 300 * アプリケーション起動メッセージ領域 * 310 ******************************************************** 320 * 330 01 SEND-PRO-AREA. 340 02 PRO-DATALENG PIC 9(4) COMP VALUE 20. 350 02 PRO-RSV1 PIC X(2). 360 02 PRO-DATA PIC X(16) VALUE 'SVRA EXECAP DATA'. 370 * 380 ******************************************************** 390 * 応答メッセージ送信領域 * 400 ******************************************************** 410 * 420 01 SEND-IO-AREA. 430 02 IO-DATALENG PIC 9(4) COMP VALUE 20. 440 02 IO-RSV1 PIC X(2). 450 02 IO-DATA PIC X(16) VALUE 'SVRA REPLY DATA1'. 460 * 470 ******************************************************** 480 * 通信記述項 * 490 ******************************************************** 500 * 510 COMMUNICATION SECTION. 520 * 530 ******************************************************** 540 * メッセージの受信 * 550 ******************************************************** 560 * 570 CD RECV-INF 580 FOR INPUT 590 STATUS KEY IS RE-STATUS 600 SYMBOLIC TERMINAL IS RE-TERMNAM 610 MESSAGE DATE IS RE-DATE 620 MESSAGE TIME IS RE-TIME. 630 * 640 ******************************************************** 650 * アプリケーションプログラム起動 * 660 ******************************************************** 670 * 680 CD SEND-PRO 690 FOR OUTPUT PROGRAM 700 STATUS KEY IS SE-STATUS-PRO 710 SYMBOLIC TERMINAL IS SE-TERMNAM-PRO. 720 * 730 ******************************************************** 740 * 応答メッセージの送信 * 750 ******************************************************** 760 * 770 CD SEND-IO 780 FOR I-O 790 STATUS KEY IS SE-STATUS-IO 800 SYNCHRONOUS MODE IS ASYNC. 810 820 PROCEDURE DIVISION. 830 840 * 850 ******************************************************** 860 * メッセージの受信 * 870 ******************************************************** 880 * 890 RECEIVE RECV-INF 900 FIRST SEGMENT 910 INTO RECV-AREA. 920 IF RE-STATUS IS NOT EQUAL '00000' 930 * 940 ******************************************************** 950 * 部分回復 * 960 ******************************************************** 970 * 980 ROLLBACK WITH STOPPING. 990 * 1000 ******************************************************** 1010 * アプリケーションプログラム起動 * 1020 ******************************************************** 1030 * 1040 MOVE 'aprepB ' TO SE-TERMNAM-PRO 1050 SEND SEND-PRO 1060 FROM SEND-PRO-AREA 1070 WITH EMI. 1080 IF SE-STATUS-PRO IS NOT EQUAL '00000' 1090 * 1100 ******************************************************** 1110 * 部分回復 * 1120 ******************************************************** 1130 * 1140 ROLLBACK WITH STOPPING. 1150 * 1160 ******************************************************** 1170 * 応答メッセージの送信 * 1180 ******************************************************** 1190 * 1200 SEND SEND-IO 1210 FROM SEND-IO-AREA 1220 WITH EMI. 1230 IF SE-STATUS-IO IS NOT EQUAL '00000' 1240 * 1250 ******************************************************** 1260 * 部分回復 * 1270 ******************************************************** 1280 * 1290 ROLLBACK WITH STOPPING. 1300 * 1310 ******************************************************** 1320 * 終了処理 * 1330 ******************************************************** 1340 * 1350 EXIT PROGRAM.
All Rights Reserved. Copyright (C) 2006, 2012, Hitachi, Ltd.