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

<この項の構成>
(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'88'.
           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    SEND-AREA3.
     02  SE-DATALENG3        PIC  9(4)  COMP  VALUE  22.
     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  'HGR '.
         03  S3-DATA5        PIC  X(1)  VALUE  X'00'.
         03  S3-DATA6        PIC  X(1)  VALUE  X'06'.
         03  S3-DATA7        PIC  X(1)  VALUE  X'00'.
         03  S3-DATA8        PIC  X(1)  VALUE  X'04'.
         03  S3-DATA9        PIC  X(2)  VALUE  'UR'.
         03  S3-DATA10       PIC  X(1)  VALUE  X'00'.
         03  S3-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-AREA2.
     02  RE-DATALENG2        PIC  9(4)  COMP  VALUE  1028.
     02  RE-RSV2             PIC  X(2).
     02  RE-DATA2            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-AREA4.
     02  SE-DATALENG4        PIC  9(4)  COMP  VALUE  18.
     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  'EDP '.
         03  S4-DATA5        PIC  X(1)  VALUE  X'00'.
         03  S4-DATA6        PIC  X(1)  VALUE  X'02'.
         03  S4-DATA7        PIC  X(1)  VALUE  X'00'.
         03  S4-DATA8        PIC  X(1)  VALUE  X'02'.
*    通信記述項    *
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  SEND-OT3
         FOR  I-O
         STATUS KEY IS          SE-STATUS3
         SYMBOLIC TERMINAL IS   SE-TERMNAM3
         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-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  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-OT4
         FOR  I-O
         STATUS KEY IS          SE-STATUS4
         SYMBOLIC TERMINAL IS   SE-TERMNAM4.
*    通信文    *
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 SE-TERMNAM3.
     SEND  SEND-OT3
         FROM  SEND-AREA3.
*    ハンドシェイク&制御権譲渡確認の受信    *
     MOVE 'otm01' TO RE-TERMNAM3.
     MOVE '00010000' TO RE-WAIT3.
     RECEIVE  RECV-IN3
         SEGMENT
         INTO  RECV-AREA3.
*    データ転送指示の受信    *
     MOVE 'otm01' TO RE-TERMNAM2.
     MOVE '00010000' TO RE-WAIT2.
     RECEIVE  RECV-IN2
         SEGMENT
         INTO  RECV-AREA2.
*    ダイアログ終了指示の受信    *
     MOVE 'otm01' TO RE-TERMNAM4.
     MOVE '00010000' TO RE-WAIT4.
     RECEIVE  RECV-IN4
         SEGMENT
         INTO  RECV-AREA4.
*    ダイアログ終了応答の送信    *
     MOVE 'otm01' TO SE-TERMNAM4.
     DISABLE  SEND-OT4
         WITH  SEND-AREA4.
*    終了処理    *
     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    RECV-AREA3.
     02  RE-DATALENG3        PIC  9(4)  COMP  VALUE  1028.
     02  RE-RSV3             PIC  X(2).
     02  RE-DATA3            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  'HGP '.
         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-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    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-AREA4.
     02  RE-DATALENG4        PIC  9(4)  COMP  VALUE  1028.
     02  RE-RSV4             PIC  X(2).
     02  RE-DATA4            PIC  X(1024).
*    通信記述項    *
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  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  SEND-OT3
         FOR  I-O
         STATUS KEY IS          SE-STATUS3
         SYMBOLIC TERMINAL IS   SE-TERMNAM3
         SYNCHRONOUS MODE IS    SYNC.
*    データ転送要求の送信    *
     CD  SEND-OT2
         FOR  I-O
         STATUS KEY IS          SE-STATUS2
         SYMBOLIC TERMINAL IS   SE-TERMNAM2
         SYNCHRONOUS MODE IS    SYNC.
*    ダイアログ終了要求の送信    *
     CD  SEND-OT4
         FOR  I-O
         STATUS KEY IS          SE-STATUS4
         SYMBOLIC TERMINAL IS   SE-TERMNAM4.
*    ダイアログ終了確認の受信    *
     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.
*    通信文    *
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 RE-TERMNAM3.
     MOVE '00010000' TO RE-WAIT3.
     RECEIVE  RECV-IN3
         SEGMENT
         INTO  RECV-AREA3.
*    ハンドシェイク&制御権譲渡応答の送信    *
     MOVE RE-TERMNAM1 TO SE-TERMNAM3.
     SEND  SEND-OT3
         FROM  SEND-AREA3.
*    データ転送要求の送信    *
     MOVE RE-TERMNAM1 TO SE-TERMNAM2.
     SEND  SEND-OT2
         FROM  SEND-AREA2.
*    ダイアログ終了要求の送信    *
     MOVE RE-TERMNAM1 TO SE-TERMNAM4.
     DISABLE  SEND-OT4
         WITH SEND-AREA4.
*    ダイアログ終了確認の受信    *
     MOVE RE-TERMNAM1 TO RE-TERMNAM4.
     MOVE '00010000' TO RE-WAIT4.
     RECEIVE  RECV-IN4
         SEGMENT
         INTO  RECV-AREA4.
*    終了処理    *
     EXIT PROGRAM.