Hitachi

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


6.1.2 SPPの例(メインプログラム)

SPPのメインプログラムのコーディング例を次に示します。

  10       *  
  20       ********************************************************
  30       * SPP01 メインプログラム                               *
  40       ********************************************************
  50       *  
  60        IDENTIFICATION DIVISION.  
  70       *  
  80        PROGRAM-ID. MAIN.  
  90       *  
 100       ********************************************************
 110       * データ領域の設定                                     *
 120       ********************************************************
 130       *  
 140        DATA DIVISION.  
 150        WORKING-STORAGE SECTION.  
 160        01  FD-ID EXTERNAL.  
 170            10  FD-SAVE      PIC S9(9) COMP.  
 180        01  RPC-ARG1.  
 190            02  REQ-CODE     PIC X(8) VALUE SPACE.  
 200            02  STATUS-CODE  PIC X(5) VALUE SPACE.  
 210            02  FILLER       PIC X(3).  
 220            02  FLAGS        PIC S9(9) COMP.  
 230        01  DAM-ARG1.  
 240            02  REQUEST      PIC X(8) VALUE SPACE.  
 250            02  STATUS-CODE  PIC X(5) VALUE SPACE.  
 260            02  FILLER       PIC X(3).  
 270            02  FILE-NAME    PIC X(8).  
 280            02  FILLER       PIC S9(9) COMP.  
 290            02  FILLER       PIC S9(9) COMP.  
 300            02  FILDES       PIC S9(9) COMP VALUE ZERO.  
 310            02  FILLER       PIC X(28).  
 320        01  DAM-ARG2.  
 330            02  ACCESS-CODE  PIC X(4).  
 340            02  FLAG1        PIC X(1).  
 350            02  FILLER       PIC X(1).  
 360            02  FILLER       PIC X(1).  
 370            02  FILLER       PIC X(1).  
 380            02  FLAGS        PIC S9(9) COMP VALUE ZERO.  
 390       *  
 400        PROCEDURE DIVISION.  
 410       *  
 420       ********************************************************
 430       * RPC-OPEN(UAPの開始)                                *
 440       ********************************************************
 450       *  
 460        MOVE 'OPEN' TO REQ-CODE OF RPC-ARG1.  
 470        MOVE ZERO   TO FLAGS    OF RPC-ARG1.  
 480        CALL 'CBLDCRPC' USING RPC-ARG1.  
 490            IF STATUS-CODE OF RPC-ARG1 NOT = '00000' THEN  
 500              DISPLAY 'SPP01:RPC-OPEN FAILED. CODE = '  
 510              STATUS-CODE OF RPC-ARG1  
 520              GO TO PROG-END  
 530            END-IF.  
 540       *  
 550       ********************************************************
 560       * DAM-OPEN(論理ファイルのオープン)                     *
 570       ********************************************************
 580       *  
 590        MOVE 'DCDAMSVC' TO REQUEST     OF DAM-ARG1.  
 600        MOVE 'damfile0' TO FILE-NAME   OF DAM-ARG1.  
 610        MOVE 'OPEN'     TO ACCESS-CODE OF DAM-ARG2.  
 620        MOVE 'B'        TO FLAG1       OF DAM-ARG2.  
 630        CALL 'CBLDCDAM' USING DAM-ARG1 DAM-ARG2.  
 640            IF STATUS-CODE OF DAM-ARG1 NOT = '00000' THEN  
 650              DISPLAY 'SPP01:DAM-OPEN FAILED. CODE = '  
 660              STATUS-CODE OF DAM-ARG1  
 670              GO TO DAM-END  
 680            END-IF.  
 690        MOVE FILDES TO FD-SAVE.  
 700       *  
 710       ********************************************************
 720       * RPC-MAINLOOP(SPPのサービス開始)                      *
 730       ********************************************************
 740       *  
 750        DISPLAY 'SPP01: MAINLOOP START.'  
 760        MOVE 'MAINLOOP' TO REQ-CODE OF RPC-ARG1.  
 770        MOVE ZERO       TO FLAGS    OF RPC-ARG1.  
 780        CALL 'CBLDCRSV' USING RPC-ARG1.  
 790            IF STATUS-CODE OF RPC-ARG1 NOT = '00000' THEN  
 800              DISPLAY 'SPP01:RPC-MAINLOOP FAILED. CODE ='  
 810              STATUS-CODE OF RPC-ARG1  
 820            END-IF.  
 830        DAM-END.  
 840       *  
 850       ********************************************************
 860       * DAM-CLOSE(論理ファイルのクローズ)                    *
 870       ********************************************************
 880       *  
 890        MOVE 'damfile0' TO FILE-NAME   OF DAM-ARG1.  
 900        MOVE FD-SAVE    TO FILDES      OF DAM-ARG1.  
 910        MOVE 'CLOS'     TO ACCESS-CODE OF DAM-ARG2.  
 920        CALL 'CBLDCDAM' USING DAM-ARG1 DAM-ARG2.  
 930            IF STATUS-CODE OF DAM-ARG1 NOT = '00000' THEN  
 940              DISPLAY 'SPP01:DAM-CLOSE FAILED. CODE = '  
 950              STATUS-CODE OF DAM-ARG1  
 960            END-IF.  
 970        PROG-END.  
 980       *  
 990       ********************************************************
1000       * RPC-CLOSE(UAPの終了)                                 *
1010       ********************************************************
1020       *  
1030        MOVE 'CLOSE' TO REQ-CODE OF RPC-ARG1.  
1040        MOVE ZERO    TO FLAGS    OF RPC-ARG1.  
1050        CALL 'CBLDCRPC' USING RPC-ARG1.  
1060       *  
1070       ********************************************************
1080       * 終了処理                                             *
1090       ********************************************************
1100       *  
1110        DISPLAY 'SPP01:Good-by!'  
1120        STOP RUN.