Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編


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.