分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSI-TP編

[目次][用語][索引][前へ][次へ]

付録E.3 ユーザアプリケーションプログラムのコーディング例(全二重でのデータ操作言語)

<この項の構成>
(1) コンテンション勝者側
(2) コンテンション敗者側

(1) コンテンション勝者側

 
*
**************************************************************
*    SPPサービスプログラム                                   *
**************************************************************
*
 IDENTIFICATION DIVISION.
 
    PROGRAM-ID. SEND01.
 
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
*    ワーク変数    *
 DATA DIVISION.
 WORKING-STORAGE SECTION.
*    ダイアログ開始要求送信領域    *
 01    SEND-AREA1.
      02  SE-DATALENG1        PIC  9(4)  COMP  VALUE  58.
      02  SE-RSV1             PIC  X(2).
      02  SE-DATA1.
            03  S1-DATA1      PIC  X(1)  VALUE  X'00'.
            03  S1-DATA2      PIC  X(1)  VALUE  X'0a'.
            03  S1-DATA3      PIC  X(4)  VALUE  'OTP1'.
            03  S1-DATA4      PIC  X(4)  VALUE  'BDR '.
            03  S1-DATA5      PIC  X(1)  VALUE  X'00'.
            03  S1-DATA6      PIC  X(1)  VALUE  X'2a'.
            03  S1-DATA7      PIC  X(1)  VALUE  X'00'.
            03  S1-DATA8      PIC  X(1)  VALUE  X'0d'.
            03  S1-DATA8-1    PIC  X(2)  VALUE  'PR'.
            03  S1-DATA9      PIC  X(9)  VALUE  'SEND_TPSU'.
            03  S1-DATA10     PIC  X(1)  VALUE  X'00'.
            03  S1-DATA11     PIC  X(1)  VALUE  X'02'.
            03  S1-DATA12     PIC  X(1)  VALUE  X'00'.
            03  S1-DATA13     PIC  X(1)  VALUE  X'0d'.
            03  S1-DATA13-1   PIC  X(2)  VALUE  'PR'.
            03  S1-DATA14     PIC  X(9)  VALUE  'RECV_TPSU'.
            03  S1-DATA15     PIC  X(1)  VALUE  X'00'.
            03  S1-DATA16     PIC  X(1)  VALUE  X'04'.
            03  S1-DATA17     PIC  X(1)  VALUE  X'48'.
            03  S1-DATA18     PIC  X(1)  VALUE  X'ff'.
            03  S1-DATA19     PIC  X(1)  VALUE  X'00'.
            03  S1-DATA20     PIC  X(1)  VALUE  X'02'.
            03  S1-DATA21     PIC  X(1)  VALUE  X'00'.
            03  S1-DATA22     PIC  X(1)  VALUE  X'02'.
            03  S1-DATA23     PIC  X(1)  VALUE  X'00'.
            03  S1-DATA24     PIC  X(1)  VALUE  X'04'.
            03  S1-DATA25     PIC  X(2)  VALUE  'AL'.
            03  S1-DATA26     PIC  X(1)  VALUE  X'00'.
            03  S1-DATA27     PIC  X(1)  VALUE  X'02'.
*    ダイアログ開始応答受信領域    *
 01    RECV-AREA1.
      02  RE-DATALENG1      PIC  9(4)  COMP  VALUE  1028.
      02  RE-RSV1           PIC  X(2).
      02  RE-DATA1          PIC  X(1024).
*    データ転送要求送信領域    *
 01    SEND-AREA2.
      02  SE-DATALENG2      PIC  9(4)  COMP  VALUE  27.
      02  SE-RSV2           PIC  X(2).
      02  SE-DATA2.
          03  S2-DATA1        PIC  X(1)  VALUE  X'00'.
          03  S2-DATA2        PIC  X(1)  VALUE  X'0a'.
          03  S2-DATA3        PIC  X(4)  VALUE  'OTP1'.
          03  S2-DATA4        PIC  X(4)  VALUE  'TDR '.
          03  S2-DATA5        PIC  X(1)  VALUE  X'00'.
          03  S2-DATA6        PIC  X(1)  VALUE  X'02'.
          03  S2-DATA7        PIC  X(1)  VALUE  X'00'.
          03  S2-DATA8        PIC  X(1)  VALUE  X'0b'.
          03  S2-DATA9        PIC  X(1)  VALUE  X'80'.
          03  S2-DATA10       PIC  X(8)  VALUE  'USERDATA'.
*    ハンドシェイク指示受信領域    *
 01    RECV-AREA2.
      02  RE-DATALENG2        PIC  9(4)  COMP  VALUE  1028.
      02  RE-RSV2             PIC  X(2).
      02  RE-DATA2            PIC  X(1024).
*    ハンドシェイク応答送信領域    *
 01    SEND-AREA3.
      02  SE-DATALENG3        PIC  9(4)  COMP  VALUE  18.
      02  SE-RSV3             PIC  X(2).
      02  SE-DATA3.
          03  S3-DATA1        PIC  X(1)  VALUE  X'00'.
          03  S3-DATA2        PIC  X(1)  VALUE  X'0a'.
          03  S3-DATA3        PIC  X(4)  VALUE  'OTP1'.
          03  S3-DATA4        PIC  X(4)  VALUE  'HSP '.
          03  S3-DATA5        PIC  X(1)  VALUE  X'00'.
          03  S3-DATA6        PIC  X(1)  VALUE  X'02'.
          03  S3-DATA7        PIC  X(1)  VALUE  X'00'.
          03  S3-DATA8        PIC  X(1)  VALUE  X'02'.
*    ダイアログ終了要求送信領域    *
 01    SEND-AREA4.
      02  SE-DATALENG4        PIC  9(4)  COMP  VALUE  22.
      02  SE-RSV4             PIC  X(2).
      02  SE-DATA4.
          03  S4-DATA1        PIC  X(1)  VALUE  X'00'.
          03  S4-DATA2        PIC  X(1)  VALUE  X'0a'.
          03  S4-DATA3        PIC  X(4)  VALUE  'OTP1'.
          03  S4-DATA4        PIC  X(4)  VALUE  'EDR '.
          03  S4-DATA5        PIC  X(1)  VALUE  X'00'.
          03  S4-DATA6        PIC  X(1)  VALUE  X'06'.
          03  S4-DATA7        PIC  X(1)  VALUE  X'00'.
          03  S4-DATA8        PIC  X(1)  VALUE  X'04'.
          03  S4-DATA9        PIC  X(2)  VALUE  'TR'.
          03  S4-DATA10       PIC  X(1)  VALUE  X'00'.
          03  S4-DATA11       PIC  X(1)  VALUE  X'02'.
 
*    ダイアログ終了確認受信領域    *
 01    RECV-AREA3.
      02  RE-DATALENG3        PIC  9(4)  COMP  VALUE  1028.
      02  RE-RSV3             PIC  X(2).
      02  RE-DATA3            PIC  X(1024).
*    通信記述項    *
 COMMUNICATION SECTION.
*    ダイアログ開始要求の送信    *
      CD  SEND-OT1
          FOR  I-O
          STATUS KEY IS          SE-STATUS1
          SYMBOLIC TERMINAL IS   SE-TERMNAM1
          SYNCHRONOUS MODE IS    SYNC.
*    ダイアログ開始指示の受信    *
      CD  RECV-IN1
          FOR  I-O
          STATUS KEY IS          RE-STATUS1
          SYMBOLIC TERMINAL IS   RE-TERMNAM1
          MESSAGE DATE IS        RE-DATE1
          MESSAGE TIME IS        RE-TIME1
          SYNCHRONOUS MODE IS SYNC
          WAITING TIME IS RE-WAIT1.
*    データ転送要求の送信    *
      CD  SEND-OT2
          FOR  I-O
          STATUS KEY IS          SE-STATUS2
          SYMBOLIC TERMINAL IS   SE-TERMNAM2
          SYNCHRONOUS MODE IS    SYNC.
*    ハンドシェイク指示の受信    *
      CD  RECV-IN2
          FOR  I-O
          STATUS KEY IS          RE-STATUS2
          SYMBOLIC TERMINAL IS   RE-TERMNAM2
          MESSAGE DATE IS        RE-DATE2
          MESSAGE TIME IS        RE-TIME2
          SYNCHRONOUS MODE IS SYNC
          WAITING TIME IS RE-WAIT2.
*    ハンドシェイク応答の送信    *
      CD  SEND-OT3
          FOR  I-O
          STATUS KEY IS          SE-STATUS3
          SYMBOLIC TERMINAL IS   SE-TERMNAM3
          SYNCRONOUS MODE IS     SYNC.
*    ダイアログ終了要求の送信    *
      CD  SEND-OT4
          FOR  I-O
          STATUS KEY IS          SE-STATUS4
          SYMBOLIC TERMINAL IS   SE-TERMNAM4.
*    ダイアログ終了確認の受信    *
      CD  RECV-IN3
          FOR  I-O
          STATUS KEY IS          RE-STATUS3
          SYMBOLIC TERMINAL IS   RE-TERMNAM3
          MESSAGE DATE IS        RE-DATE3
          MESSAGE TIME IS        RE-TIME3
          SYNCHRONOUS MODE IS SYNC
          WAITING TIME IS RE-WAIT3.
*    通信文    *
 PROCEDURE DIVISION.
*    ダイアログ開始要求の送信    *
      MOVE 'otm01' TO SE-TERMNAM1.
      SEND  SEND-OT1
          FROM  SEND-AREA1.
*    ダイアログ開始確認の受信    *
      MOVE 'otm01' TO RE-TERMNAM1.
      MOVE '00010000' TO RE-WAIT1.
      RECEIVE  RECV-IN1
          SEGMENT
          INTO  RECV-AREA1.
*    データ転送要求の送信    *
      MOVE 'otm01' TO SE-TERMNAM2.
      SEND  SEND-OT2
          FROM  SEND-AREA2.
*    ハンドシェイク指示の受信    *
      MOVE 'otm01' TO RE-TERMNAM2.
      MOVE '00010000' TO RE-WAIT2.
      RECEIVE  RECV-IN2
          SEGMENT
          INTO  RECV-AREA2.
*    ハンドシェイク応答の送信    *
      MOVE 'otm01' TO SE-TERMNAM3.
      SEND  SEND-OT3
          FROM  SEND-AREA3.
*    ダイアログ終了要求の送信    *
      MOVE 'otm01' TO SE-TERMNAM4.
      DISABLE  SEND-OT4
          WITH SEND-AREA4.
*    ダイアログ終了確認の受信    *
      MOVE 'otm01' TO RE-TERMNAM3.
      MOVE '00010000' TO RE-WAIT3.
      RECEIVE  RECV-IN3
          SEGMENT
          INTO  RECV-AREA3.
*    終了処理    *
      EXIT PROGRAM.

(2) コンテンション敗者側

 
*
**************************************************************
*    MHPサービスプログラム                                   *
**************************************************************
*
 IDENTIFICATION DIVISION.
 
    PROGRAM-ID. RECV01.
 
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
*    ワーク変数    *
 DATA DIVISION.
 WORKING-STORAGE SECTION.
*    ダイアログ開始指示受信領域    *
 01    RECV-AREA1.
      02  RE-DATALENG1        PIC  9(4)  COMP  VALUE  1028.
      02  RE-RSV1             PIC  X(2).
      02  RE-DATA1            PIC  X(1024).
*    ダイアログ開始応答送信領域    *
 01    SEND-AREA1.
      02  SE-DATALENG1        PIC  9(4)  COMP  VALUE  22.
      02  SE-RSV1             PIC  X(2).
      02  SE-DATA1.
          03  S1-DATA1        PIC  X(1)  VALUE  X'00'.
          03  S1-DATA2        PIC  X(1)  VALUE  X'0a'.
          03  S1-DATA3        PIC  X(4)  VALUE  'OTP1'.
          03  S1-DATA4        PIC  X(4)  VALUE  'BDPA'.
          03  S1-DATA5        PIC  X(1)  VALUE  X'00'.
          03  S1-DATA6        PIC  X(1)  VALUE  X'06'.
          03  S1-DATA7        PIC  X(1)  VALUE  X'00'.
          03  S1-DATA8        PIC  X(1)  VALUE  X'04'.
          03  S1-DATA9        PIC  X(2)  VALUE  'AC'.
          03  S1-DATA10       PIC  X(1)  VALUE  X'00'.
          03  S1-DATA11       PIC  X(1)  VALUE  X'02'.
*    データ転送指示受信領域    *
 01    RECV-AREA2.
      02  RE-DATALENG2        PIC  9(4)  COMP  VALUE  1028.
      02  RE-RSV2             PIC  X(2).
      02  RE-DATA2            PIC  X(1024).
*    ハンドシェイク要求送信領域    *
 01    SEND-AREA2.
      02  SE-DATALENG2        PIC  9(4)  COMP  VALUE  22.
      02  SE-RSV2             PIC  X(2).
      02  SE-DATA2.
          03  S2-DATA1        PIC  X(1)  VALUE  X'00'.
          03  S2-DATA2        PIC  X(1)  VALUE  X'0a'.
          03  S2-DATA3        PIC  X(4)  VALUE  'OTP1'.
          03  S2-DATA4        PIC  X(4)  VALUE  'HSR '.
          03  S2-DATA5        PIC  X(1)  VALUE  X'00'.
          03  S2-DATA6        PIC  X(1)  VALUE  X'06'.
          03  S2-DATA7        PIC  X(1)  VALUE  X'00'.
          03  S2-DATA8        PIC  X(1)  VALUE  X'04'.
          03  S2-DATA9        PIC  X(2)  VALUE  'NR'.
          03  S2-DATA10       PIC  X(1)  VALUE  X'00'.
          03  S2-DATA11       PIC  X(1)  VALUE  X'02'.
*    ハンドシェイク確認受信領域    *
 01    RECV-AREA3.
      02  RE-DATALENG3        PIC  9(4)  COMP  VALUE  1028.
      02  RE-RSV3             PIC  X(2).
      02  RE-DATA3            PIC  X(1024).
*    ダイアログ終了指示受信領域    *
 01    RECV-AREA4.
      02  RE-DATALENG4        PIC  9(4)  COMP  VALUE  1028.
      02  RE-RSV4             PIC  X(2).
      02  RE-DATA4            PIC  X(1024).
*    ダイアログ終了応答送信領域    *
 01    SEND-AREA3.
      02  SE-DATALENG3        PIC  9(4)  COMP  VALUE  18.
      02  SE-RSV3             PIC  X(2).
      02  SE-DATA3.
          03  S3-DATA1        PIC  X(1)  VALUE  X'00'.
          03  S3-DATA2        PIC  X(1)  VALUE  X'0a'.
          03  S3-DATA3        PIC  X(4)  VALUE  'OTP1'.
          03  S3-DATA4        PIC  X(4)  VALUE  'EDP '.
          03  S3-DATA5        PIC  X(1)  VALUE  X'00'.
          03  S3-DATA6        PIC  X(1)  VALUE  X'02'.
          03  S3-DATA7        PIC  X(1)  VALUE  X'00'.
          03  S3-DATA8        PIC  X(1)  VALUE  X'02'.
*    通信記述項    *
 COMMUNICATION SECTION.
*    ダイアログ開始要求の受信    *
      CD  RECV-IN1
          FOR  INPUT
          STATUS KEY IS          RE-STATUS1
          SYMBOLIC TERMINAL IS   RE-TERMNAM1
          MESSAGE DATE IS        RE-DATE1
          MESSAGE TIME IS        RE-TIME1.
*    ダイアログ開始応答の送信    *
      CD  SEND-OT1
          FOR  I-O
          STATUS KEY IS          SE-STATUS1
          SYMBOLIC TERMINAL IS   SE-TERMNAM1
          SYNCHRONOUS MODE IS    SYNC.
*    データ転送指示の受信    *
      CD  RECV-IN2
          FOR  I-O
          STATUS KEY IS          RE-STATUS2
          SYMBOLIC TERMINAL IS   RE-TERMNAM2
          MESSAGE DATE IS        RE-DATE2
          MESSAGE TIME IS        RE-TIME2
          SYNCHRONOUS MODE IS SYNC
          WAITING TIME IS RE-WAIT2.
*    ハンドシェイク要求の送信    *
      CD  SEND-OT2
          FOR  I-O
          STATUS KEY IS          SE-STATUS2
          SYMBOLIC TERMINAL IS   SE-TERMNAM2
          SYNCHRONOUS MODE IS    SYNC.
*    ハンドシェイク確認の受信    *
      CD  RECV-IN3
          FOR  I-O
          STATUS KEY IS          RE-STATUS3
          SYMBOLIC TERMINAL IS   RE-TERMNAM3
          MESSAGE DATE IS        RE-DATE3
          MESSAGE TIME IS        RE-TIME3
          SYNCHRONOUS MODE IS SYNC
          WAITING TIME IS RE-WAIT3.
*    ダイアログ終了指示の受信    *
      CD  RECV-IN4
          FOR  I-O
          STATUS KEY IS          RE-STATUS4
          SYMBOLIC TERMINAL IS   RE-TERMNAM4
          MESSAGE DATE IS        RE-DATE4
          MESSAGE TIME IS        RE-TIME4
          SYNCHRONOUS MODE IS SYNC
          WAITING TIME IS RE-WAIT4.
*    ダイアログ終了応答の送信    *
      CD  SEND-OT3
          FOR  I-O
          STATUS KEY IS          SE-STATUS3
          SYMBOLIC TERMINAL IS   SE-TERMNAM3.
*    通信文    *
 PROCEDURE DIVISION.
*    ダイアログ開始指示の受信    *
      RECEIVE  RECV-IN1
          FIRST  SEGMENT
          INTO  RECV-AREA1.
*    ダイアログ開始応答の送信    *
      MOVE RE-TERMNAM1 TO SE-TERMNAM1.
      SEND  SEND-OT1
          FROM  SEND-AREA1.
*    データ転送指示の受信    *
      MOVE RE-TERMNAM1 TO RE-TERMNAM2.
      MOVE '00010000' TO RE-WAIT2.
      RECEIVE  RECV-IN2
          SEGMENT
          INTO  RECV-AREA2.
*    ハンドシェイク要求の送信    *
      MOVE RE-TERMNAM1 TO SE-TERMNAM2.
      SEND  SEND-OT2
          FROM  SEND-AREA2.
*    ハンドシェイク確認の受信    *
      MOVE RE-TERMNAM1 TO RE-TERMNAM3.
      MOVE '00010000' TO RE-WAIT3.
      RECEIVE  RECV-IN3
          SEGMENT
          INTO  RECV-AREA3.
*    ダイアログ終了指示の受信    *
      MOVE RE-TERMNAM1 TO RE-TERMNAM4.
      MOVE '00010000' TO RE-WAIT4.
      RECEIVE  RECV-IN4
          SEGMENT
          INTO  RECV-AREA4.
*    ダイアログ終了応答の送信    *
      MOVE RE-TERMNAM1 TO SE-TERMNAM3.
      DISABLE  SEND-OT3
          WITH  SEND-AREA3.
*    終了処理    *
      EXIT PROGRAM.