6.3.3 MHPの例(サービスプログラム DMLの例)
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.