付録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.