Hitachi

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


付録H.1 コーディング例

ここでは,ユーザアプリケーションプログラムのコーディング例を示します。

〈この項の構成〉

(1) ユーザアプリケーションプログラムのコーディング例(全二重でのC言語)

(a) コンテンション勝者側(SPP)

#include <dcmcf.h>
#include <string.h>
 
#define     WAITTIME    60
 
void    SEND01(in, in_len,  out, out_len)
 
                char         *in     ;
   unsigned     DCLONG       in_len  ;
                char         *out    ;
   unsigned     DCLONG       out_len ;
{
   /*★★引数定義★★*/             /*引数を使用している関数*/
                   /* sendsync, recvsync, sendrecv, receive */
   DCLONG   action        ;/*  0         0         0        0 */
   DCLONG   commform      ;/*  0         0         0        0 */
   char     termnam[16]   ;/*  0         0         0        0 */
   char     resv01[16]    ;/*  0         0         0        0 */
   char     senddata[256] ;/*  0         -         0        - */
   DCLONG   sdataleng     ;/*  0         -         0        - */
   char     recvdata[256] ;/*  -         0         0        0 */
   DCLONG   rdataleng     ;/*  -         0         0        0 */
   DCLONG   time          ;/*  -         0         0        0 */
   DCLONG   wachtime      ;/*  0         0         0        - */
   char     resv02[16]    ;/*  0         -         -        - */
   DCLONG   opcd          ;/*  0         -         -        - */
   DCLONG   inbufleng     ;/*  -         0         0        0 */
 
   /*★★変数定義 & 初期化★★*/
   int         rtn = 0x00  ;
 
   /*★★引数初期化★★*/
   action         =    NULL;
   commform       =    NULL;
   memset(termnam, 0, 16)  ;
   memset(resv01, 0, 16)   ;
   memset(senddata, 0, 256);
   sdataleng      =    NULL;
   memset(recvdata, 0, 256);
   rdataleng      =    NULL;
   time           =    NULL;
   wachtime       =    NULL;
   memset(resv02, 0, 16)   ;
   opcd           =    NULL;
   inbufleng      =    NULL;
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始要求送信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   strcpy(termnam, "otm01")         ;
   resv01[0]        =   NULL        ;
   /* senddataイニシャライズは省略 */
   sdataleng        =   54          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00    ; /* レングス 01 */
   senddata[9] = 0x0a    ; /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1") ; /* 送信手順(OTP1) */
   strcpy(senddata + 14, "BDR ") ;
                           /* サービスプリミティブコード */
                           /* TP_BEGIN_DIALOGUE req */
 
   senddata[18] = 0x00    ; /* レングス 02 */
   senddata[19] = 0x2a    ; /* パラメタフィールドのトータル */
 
   senddata[20] = 0x00    ; /* レングス 03 */
   senddata[21] = 0x0d    ; /* 起動側TPSUタイトルの長さ */
 
   strcpy(senddata + 22, "PR")   ;  /* 型コード */
   strcpy(senddata + 24, "SEND_TPSU");
                          /* 起動側TPSUタイトル(パラメタ1) */
 
   senddata[33] = 0x00    ; /* レングス 04 */
   senddata[34] = 0x02    ; /* 受信側AP(パラメタ 2省略) */
 
   senddata[35] = 0x00    ; /* レングス 05 */
   senddata[36] = 0x0d    ; /* 受信側TPSUタイトルの長さ */
   strcpy(senddata + 37, "PR")   ;  /* 型コード */
   strcpy(senddata + 39, "RECV_TPSU");
                          /* 受信側TPSUタイトル(パラメタ3) */
 
   senddata[48] = 0x00    ; /* レングス 06 */
   senddata[49] = 0x04    ; /* 予備の長さ */
 
   senddata[50] = 0x48    ;
                /*全二重&ハンドシェイク機能単位(パラメタ4) */
   senddata[51] = 0xff    ; /* 予備 */
 
   senddata[52] = 0x00    ; /* レングス 07 */
   senddata[53] = 0x02    ; /* サービス品質(パラメタ5省略) */
 
   senddata[54] = 0x00    ; /* レングス 08 */
   senddata[55] = 0x02    ;
               /* アプリケーションコンテキスト(パラメタ  6) */
 
   senddata[56] = 0x00    ; /* レングス 09 */
   senddata[57] = 0x04    ; /* 確認項目の長さ */
 
   strcpy(senddata + 58, "AL")  ;  /* 確認項目(パラメタ 7) */
                                   /* all(同期型) */
 
   senddata[60] = 0x00    ; /* レングス 10 */
   senddata[61] = 0x02    ; /* ユ−ザ情報(省略) */
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                          wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始応答受信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action          =  DCMCFFRST ;
   commform        =  DCNOFLAGS ;
   resv01[0]       =  NULL      ;
   /*recvdataイニシャライズは省略*/
   rdataleng       =  NULL      ;
   inbufleng       =  256       ;
   time            =  NULL      ;
   wachtime        =  WAITTIME  ;
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, &rdataleng, inbufleng,
                         &time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆          データ送信(TP-DATA)                   ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   23          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata clear ★*/
   memset(senddata, 0, 256)         ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00    ; /* レングス 01 */
   senddata[9] = 0x0a    ; /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1"); /* 送信手順(OTP1) */
   strcpy(senddata + 14, "TDR ");
                           /* サービスプリミティブコード */
                           /* TP_DT req */
 
   senddata[18] = 0x00    ; /* レングス 02 */
   senddata[19] = 0x02    ; /* パラメタ(省略) */
 
   senddata[20] = 0x00    ; /* レングス 03 */
   senddata[21] = 0x0b    ; /* ユーザ情報の長さ */
 
   senddata[22] = 0x80    ; /* 連結状態 */
 
   strcpy(senddata + 23, "USERDATA");  /* ユーザデータ */
 
 
   /*▼▼ データ送信(sendsync)開始 ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ データ送信(sendsync)終了 ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆      ハンドシェイク受信(TP-HANDSHAKE)          ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ recvdata clear ★★*/
   memset(recvdata, 0, 256)         ;
 
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, &rdataleng, inbufleng,
                         &time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆     ハンドシェイク送信(TP-HANDSHAKE)           ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   14          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata clear ★*/
   memset(senddata, 0, 256)         ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00    ; /* レングス 01 */
   senddata[9] = 0x0a    ; /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1"); /* 送信手順(OTP1) */
   strcpy(senddata + 14, "HSP ");
                           /* サービスプリミティブコード */
 
   senddata[18] = 0x00   ; /* レングス 02 */
   senddata[19] = 0x02   ; /* パラメタ(省略) */
 
   senddata[20] = 0x00   ; /* レングス 3 */
   senddata[21] = 0x02   ; /* ユーザ情報(省略) */
 
   /*▼▼ データ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ データ送信終了(sendsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ終了要求送受信(TP-END-DIALOGUE)      ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendrecv引数設定 ★★*/
   action          =    DCMCFEMI    ;
   commform        =    DCMCFIO     ;
   resv01[0]       =    NULL        ;
   sdataleng       =    18          ;
   rdataleng       =    NULL        ;
   inbufleng       =    256         ;
   time            =    NULL        ;
   wachtime        =    WAITTIME    ;
 
   /*★ senddata and recvdata clear ★*/
   memset(senddata, 0, 256)         ;
   memset(recvdata, 0, 256)         ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00    ; /* レングス 01 */
   senddata[9] = 0x0a    ; /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1") ; /* 送信手順(OTP1) */
 
   strcpy(senddata + 14, "EDR ") ;
                           /* サービスプリミティブコード */
                           /* TP_END_DIALOGUE req */
 
   senddata[18] = 0x00   ; /* レングス 02 */
   senddata[19] = 0x06   ; /* パラメタ全体の長さ */
 
   senddata[20] = 0x00   ; /* レングス 03 */
   senddata[21] = 0x04   ; /* 確認項目の長さ */
 
   strcpy(senddata + 22, "TR")   ;  /* 確認項目(パラメタ1) */
 
   senddata[24] = 0x00    ; /* レングス 04 */
   senddata[25] = 0x02    ; /* ユーザ情報(省略) */
 
   /*▼▼ メッセージ送受信開始(sendrecv) ▼▼*/
 
   rtn = dc_mcf_sendrecv(action, commform, termnam, resv01,
                         senddata, sdataleng, recvdata,
                         &rdataleng, inbufleng, &time,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ送受信終了(sendrecv)▲▲*/
 
ERROR : ;
}

(b) コンテンション敗者側(MHP)

#include <dcmcf.h>
#include <string.h>
 
#define     WAITTIME    60
 
void    RECV01(in, in_len, out, out_len)
 
                char        *in     ;
   unsigned     DCLONG      in_len  ;
                char        *out    ;
   unsigned     DCLONG      out_len ;
{
   /*★★引数定義★★*/             /*引数を使用している関数*/
                   /* sendsync, recvsync, sendrecv, receive */
   DCLONG  action         ;/*  0         0         0        0 */
   DCLONG  commform       ;/*  0         0         0        0 */
   char    termnam[16]    ;/*  0         0         0        0 */
   char    resv01[16]     ;/*  0         0         0        0 */
   char    senddata[256]  ;/*  0         -         0        - */
   DCLONG  sdataleng      ;/*  0         -         0        - */
   char    recvdata[256]  ;/*  -         0         0        0 */
   DCLONG  rdataleng      ;/*  -         0         0        0 */
   DCLONG  time           ;/*  -         0         0        0 */
   DCLONG  wachtime       ;/*  0         0         0        - */
   char    resv02[16]     ;/*  0         -         -        - */
   DCLONG  opcd           ;/*  0         -         -        - */
   DCLONG  inbufleng      ;/*  -         0         0        0 */
 
   /*★★変数定義 & 初期化★★*/
   int         rtn = NULL  ;
 
   /*★★引数初期化★★*/
   action          =   NULL;
   commform        =   NULL;
   memset(termnam, 0, 16)  ;
   memset(resv01, 0, 16)   ;
   memset(senddata, 0, 256);
   sdataleng       =   NULL;
   memset(recvdata, 0, 256);
   rdataleng       =   NULL;
   time            =   NULL;
   wachtime        =   NULL;
   memset(resv02, 0, 16)   ;
   opcd            =   NULL;
   inbufleng       =   NULL;
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始要求受信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ receive引数設定 (初期化) ★★*/
   action           =   DCMCFFRST;
   commform         =   DCNOFLAGS;
   termnam[0]       =   NULL     ;
   /*recvdataイニシャライズは省略*/
   resv01[0]        =   NULL     ;
   rdataleng        =   NULL     ;
   inbufleng        =   256      ;
   time             =   NULL     ;
 
   /*▼▼ ダイアログ開始要求受信開始(receive) ▼▼*/
 
   rtn = dc_mcf_receive(action, commform, termnam, resv01,
                        recvdata, &rdataleng, inbufleng,
                        &time);
 
   if ( rtn != DCMCFRTN_00000 )
  {
       goto ERROR;
   }
   /*▲▲ ダイアログ開始要求受信終了(receive) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始応答送信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   18          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00 ;   /* レングス 01 */
   senddata[9] = 0x0a ;   /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "BDPA")  ;
                          /* サービスプリミティブコード */
                          /* TP_BEGIN_DIALOGUE rsp */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x06  ; /* パラメタ全体の長さ */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x04  ; /* 結果の長さ */
 
   strcpy(senddata + 22, "AC")   ;  /* 結果(パラメタ 1) */
 
   senddata[24] = 0x00  ; /* レングス 04 */
   senddata[25] = 0x02  ; /* ユーザ情報(省略) */
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
 /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆          TP_DATA受信(TP-DT)                   ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ recvdata clear ★★*/
   memset(recvdata, 0, 256)    ;
 
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, &rdataleng, inbufleng,
                         &time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆    ハンドシェイク(TP-HANDSHAKE)                ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendrecv引数設定 (初期化) ★★*/
 
   action           =   DCMCFEMI    ;
   commform         =   DCMCFIO     ;
   resv01[0]        =   NULL        ;
   sdataleng        =   18          ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ senddata clear★★*/
   memset(senddata, 0, 256);
 
   /*★★ recvdata clear★★*/
   memset(recvdata, 0, 256);
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ;   /* レングス 01 */
   senddata[9] = 0x0a  ;   /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "HSR ")  ;  /* サービスプリミティブ */
                                     /* TP_HANDSHAKE */
 
   senddata[18] = 0x00  ;  /* レングス 02 */
   senddata[19] = 0x06  ;  /* パラメタ全体の長さ */
 
   senddata[20] = 0x00  ;  /* レングス 03 */
   senddata[21] = 0x04  ;  /* 緊急確認項目の長さ */
 
   strcpy(senddata + 22, "NR")   ;
                           /* 緊急確認項目(パラメタ 1) */
 
   senddata[24] = 0x00  ;  /* レングス 04 */
   senddata[25] = 0x02  ;  /* ユーザ情報(省略) */
 
   /*▼▼ メッセージ送受信開始(sendrecv) ▼▼*/
 
   rtn = dc_mcf_sendrecv(action, commform, termnam, resv01,
                         senddata, sdataleng, recvdata,
                         &rdataleng, inbufleng, &time,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ送受信終了(sendrecv) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ終了要求受信(TP-END-DIALOGUE)       ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ recvdata clear★★*/
   memset(recvdata, 0, 256)     ;
 
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, &rdataleng, inbufleng,
                         &time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync)▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ終了応答送信(TP-END-DIALOGUE)       ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =    DCMCFEMI   ;
   commform         =    DCNOFLAGS  ;
   resv01[0]        =    NULL       ;
   sdataleng        =    14         ;
   resv02[0]        =    NULL       ;
   opcd             =    DCNOFLAGS  ;
   wachtime         =    WAITTIME   ;
 
   /*★★ senddata clear★★*/
   memset(senddata, 0, 256)     ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00 ;    /* レングス 01 */
   senddata[9] = 0x0a ;    /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1") ;   /* 送信手順(OTP1) */
   strcpy(senddata + 14, "EDP ") ;
                           /* サービスプリミティブコード */
 
   senddata[18] = 0x00 ;   /* レングス 02 */
   senddata[19] = 0x02 ;   /* パラメタ(省略) */
   senddata[20] = 0x00 ;   /* レングス 03 */
   senddata[21] = 0x02 ;   /* ユーザ情報(省略) */
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
ERROR : ;
}

(2) ユーザアプリケーションプログラムのコーディング例(全二重でのCOBOL言語)

(a) コンテンション勝者側(SPP)

IDENTIFICATION  DIVISION.
PROGRAM-ID.     SEND01.
 
ENVIRONMENT     DIVISION.
 
DATA            DIVISION.
WORKING-STORAGE SECTION.
 
01    SND-S1.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA1        PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA2        PIC X(4)   VALUE   SPACE.
      02    DATA3        PIC X(4)   VALUE   SPACE.
      02    DATA4        PIC 9(8).
      02    DATA5        PIC 9(8).
      02    DATA6        PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA7        PIC X(4)   VALUE   SPACE.
      02    DATA8        PIC X(4)   VALUE   SPACE.
      02    DATA9        PIC X(4)   VALUE   SPACE.
      02    DATA10       PIC X(8)   VALUE   SPACE.
      02    DATA11       PIC X(4)   VALUE   SPACE.
      02    DATA12       PIC X(8)   VALUE   SPACE.
      02    DATA13       PIC X(4)   VALUE   SPACE.
      02    DATA14       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA15       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA16       PIC X(1)   VALUE   SPACE.
      02    DATA17       PIC X(1)   VALUE   SPACE.
      02    DATA18       PIC X(14)  VALUE   LOW-VALUE.
01    SND-S2.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA19       PIC X(8)   VALUE   SPACE.
      02    DATA20       PIC X(8)   VALUE   SPACE.
      02    DATA21       PIC X(28)  VALUE   LOW-VALUE.
01    SND-S3.
      02    DATA22       PIC 9(9)    COMP    VALUE   54.
      02    DATA23       PIC X(8).
      02    SEND-DATA.
            03    S-DATA1     PIC X(1)   VALUE   X'00'.
            03    S-DATA2     PIC X(1)   VALUE   X'0a'.
            03    S-DATA3     PIC X(4)   VALUE   'OTP1'.
            03    S-DATA4     PIC X(4)   VALUE   'BDR '.
            03    S-DATA5     PIC X(1)   VALUE   X'00'.
            03    S-DATA6     PIC X(1)   VALUE   X'2a'.
            03    S-DATA7     PIC X(1)   VALUE   X'00'.
            03    S-DATA8     PIC X(1)   VALUE   X'0d'.
            03    S-DATA8-1   PIC X(2)   VALUE   'PR'.
            03    S-DATA9     PIC X(9)   VALUE   'SEND_TPSU'.
            03    S-DATA10    PIC X(1)   VALUE   X'00'.
            03    S-DATA11    PIC X(1)   VALUE   X'02'.
            03    S-DATA12    PIC X(1)   VALUE   X'00'.
            03    S-DATA13    PIC X(1)   VALUE   X'0d'.
            03    S-DATA13-1  PIC X(2)   VALUE   'PR'.
            03    S-DATA14    PIC X(9)   VALUE   'RECV_TPSU'.
            03    S-DATA15    PIC X(1)   VALUE   X'00'.
            03    S-DATA16    PIC X(1)   VALUE   X'04'.
            03    S-DATA17    PIC X(1)   VALUE   X'48'.
            03    S-DATA18    PIC X(1)   VALUE   X'ff'.
            03    S-DATA19    PIC X(1)   VALUE   X'00'.
            03    S-DATA20    PIC X(1)   VALUE   X'02'.
            03    S-DATA21    PIC X(1)   VALUE   X'00'.
            03    S-DATA22    PIC X(1)   VALUE   X'02'.
            03    S-DATA23    PIC X(1)   VALUE   X'00'.
            03    S-DATA24    PIC X(1)   VALUE   X'04'.
            03    S-DATA25    PIC X(2)   VALUE   'AL'.
            03    S-DATA26    PIC X(1)   VALUE   X'00'.
            03    S-DATA27    PIC X(1)   VALUE   X'02'.
01    SND-S4.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA25       PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA26       PIC X(4)   VALUE   SPACE.
      02    DATA27       PIC X(4)   VALUE   SPACE.
      02    DATA28       PIC 9(8).
      02    DATA29       PIC 9(8).
      02    DATA30       PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA31       PIC X(4)   VALUE   SPACE.
      02    DATA32       PIC X(4)   VALUE   SPACE.
      02    DATA33       PIC X(4)   VALUE   SPACE.
      02    DATA34       PIC X(8)   VALUE   SPACE.
      02    DATA35       PIC X(4)   VALUE   SPACE.
      02    DATA36       PIC X(8)   VALUE   SPACE.
      02    DATA37       PIC X(4)   VALUE   SPACE.
      02    DATA38       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA39       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA40       PIC X(1)   VALUE   SPACE.
      02    DATA41       PIC X(1)   VALUE   SPACE.
      02    DATA42       PIC X(14)  VALUE   LOW-VALUE.
01    SND-S5.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA43       PIC X(8)   VALUE   SPACE.
      02    DATA44       PIC X(8)   VALUE   SPACE.
      02    DATA45       PIC X(28)  VALUE   LOW-VALUE.
01    SND-S6.
      02    DATA46       PIC 9(9)    COMP VALUE 23.
      02    DATA48       PIC X(8).
      02    SEND-DATA2.
            03    S-DATA281   PIC X(1)   VALUE   X'00'.
            03    S-DATA282   PIC X(1)   VALUE   X'0a'.
            03    S-DATA283   PIC X(4)   VALUE   'OTP1'.
            03    S-DATA284   PIC X(4)   VALUE   'TDR '.
            03    S-DATA285   PIC X(1)   VALUE   X'00'.
            03    S-DATA286   PIC X(1)   VALUE   X'02'.
            03    S-DATA287   PIC X(1)   VALUE   X'00'.
            03    S-DATA288   PIC X(1)   VALUE   X'0b'.
            03    S-DATA289   PIC X(1)   VALUE   X'80'.
            03    S-DATA290   PIC X(8)   VALUE   'USERDATA'.
 
01    SND-S7.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA49       PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA50       PIC X(4)   VALUE   SPACE.
      02    DATA51       PIC X(4)   VALUE   SPACE.
      02    DATA52       PIC 9(8).
      02    DATA53       PIC 9(8).
      02    DATA54       PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA55       PIC X(4)   VALUE   SPACE.
      02    DATA56       PIC X(4)   VALUE   SPACE.
      02    DATA57       PIC X(4)   VALUE   SPACE.
      02    DATA58       PIC X(8)   VALUE   SPACE.
      02    DATA59       PIC X(4)   VALUE   SPACE.
      02    DATA60       PIC X(8)   VALUE   SPACE.
      02    DATA61       PIC X(4)   VALUE   SPACE.
      02    DATA62       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA63       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA64       PIC X(1)   VALUE   SPACE.
      02    DATA65       PIC X(1)   VALUE   SPACE.
      02    DATA66       PIC X(14)  VALUE   LOW-VALUE.
01    SND-S8.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA67       PIC X(8)   VALUE   SPACE.
      02    DATA68       PIC X(8)   VALUE   SPACE.
      02    DATA69       PIC X(28)  VALUE   LOW-VALUE.
01    SND-S9.
      02    DATA70       PIC 9(9)   COMP    VALUE   14.
      02    DATA71       PIC X(8).
      02    SEND-DATA3.
            03    S-DATA29    PIC X(1)   VALUE   X'00'.
            03    S-DATA30    PIC X(1)   VALUE   X'0a'.
            03    S-DATA31    PIC X(4)   VALUE   'OTP1'.
            03    S-DATA32    PIC X(4)   VALUE   'HSP '.
            03    S-DATA33    PIC X(1)   VALUE   X'00'.
            03    S-DATA34    PIC X(1)   VALUE   X'02'.
            03    S-DATA35    PIC X(1)   VALUE   X'00'.
            03    S-DATA36    PIC X(1)   VALUE   X'02'.
01    RCV-S1.
      02    MSG-RCVSYNC  PIC X(8)   VALUE   'RECVSYNC'.
      02    DATA73       PIC X(5).
      02    FILLER       PIC X(3).
      02    RCV-S-SEG    PIC X(4)   VALUE   'FRST'.
      02    DATA74       PIC X(4)   VALUE   SPACE.
      02    DATA75       PIC 9(8).
      02    DATA76       PIC 9(8).
      02    RCV-S-LEG    PIC 9(9)   COMP    VALUE   256.
      02    DATA77       PIC X(4)   VALUE   SPACE.
      02    DATA78       PIC X(4)   VALUE   SPACE.
      02    DATA79       PIC X(4)   VALUE   SPACE.
      02    DATA80       PIC X(4)   VALUE   SPACE.
      02    DATA81       PIC X(8)   VALUE   SPACE.
      02    DATA82       PIC X(4)   VALUE   SPACE.
      02    DATA83       PIC X(8)   VALUE   SPACE.
      02    DATA84       PIC X(4)   VALUE   SPACE.
      02    DATA85       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA86       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA87       PIC X(1)   VALUE   SPACE.
      02    DATA88       PIC X(1)   VALUE   SPACE.
      02    DATA89       PIC X(14)  VALUE   LOW-VALUE.
01    RCV-S2.
      02    DATA90       PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA92       PIC X(8)   VALUE   SPACE.
      02    DATA93       PIC X(8)   VALUE   SPACE.
      02    DATA94       PIC X(28)  VALUE   LOW-VALUE.
01    RCV-S3.
      02    DATA95       PIC 9(9)   COMP.
      02    DATA96       PIC X(8).
      02    DATA97       PIC X(1024).
01    SND-RCV1.
      02    MSG-SNDRCV   PIC X(8)   VALUE   'SENDRECV'.
      02    DATA101      PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA102      PIC X(4)   VALUE   SPACE.
      02    DATA103      PIC X(4)   VALUE   SPACE.
      02    DATA104      PIC 9(8).
      02    DATA105      PIC 9(8).
      02    SND-RCV-LEG  PIC 9(9)   COMP    VALUE   256.
      02    SND-RCV-SEG  PIC X(4)   VALUE   'EMI '.
      02    DATA106      PIC X(4)   VALUE   SPACE.
      02    DATA107      PIC X(4)   VALUE   SPACE.
      02    DATA108      PIC X(4)   VALUE   SPACE.
      02    DATA109      PIC X(8)   VALUE   SPACE.
      02    DATA110      PIC X(4)   VALUE   SPACE.
      02    DATA111      PIC X(8)   VALUE   SPACE.
      02    DATA112      PIC X(4)   VALUE   SPACE.
      02    PRO-CD       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA113      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA113-1    PIC X(1)   VALUE   SPACE.
      02    DATA113-2    PIC X(1)   VALUE   SPACE.
      02    DATA114      PIC X(14)  VALUE   LOW-VALUE.
01    SND-RCV2.
      02    MSG          PIC X(4)   VALUE   'IO  '.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA115      PIC X(8)   VALUE   SPACE.
      02    DATA116      PIC X(8)   VALUE   SPACE.
      02    DATA117      PIC X(28)  VALUE   LOW-VALUE.
01    SND-RCV3.
      02    MSG-SEG-LEG  PIC 9(9)   COMP    VALUE   18.
      02    DATA119      PIC X(8).
      02    SNDRCV-DATA.
            03    SR-DATA1    PIC X(1)   VALUE   X'00'.
            03    SR-DATA2    PIC X(1)   VALUE   X'0a'.
            03    SR-DATA3    PIC X(4)   VALUE   'OTP1'.
            03    SR-DATA4    PIC X(4)   VALUE   'EDR '.
            03    SR-DATA5    PIC X(1)   VALUE   X'00'.
            03    SR-DATA6    PIC X(1)   VALUE   X'06'.
            03    SR-DATA7    PIC X(1)   VALUE   X'00'.
            03    SR-DATA8    PIC X(1)   VALUE   X'04'.
            03    SR-DATA9    PIC X(2)   VALUE   'TR'.
            03    SR-DATA10   PIC X(1)   VALUE   X'00'.
            03    SR-DATA11   PIC X(1)   VALUE   X'02'.
01    SND-RCV4.
      02    DATA120      PIC 9(9)   COMP.
      02    DATA121-1    PIC X(7)   VALUE   SPACE.
      02    DATA121-2    PIC X(1).
      02    DATA123      PIC X(248).
 
PROCEDURE       DIVISION.
CALL  'CBLDCMCF'  USING  SND-S1   SND-S2   SND-S3.
 
CALL  'CBLDCMCF'  USING  RCV-S1   RCV-S2   RCV-S3.
 
CALL  'CBLDCMCF'  USING  SND-S4   SND-S5   SND-S6.
 
CALL  'CBLDCMCF'  USING  RCV-S1   RCV-S2   RCV-S3.
 
CALL  'CBLDCMCF'  USING  SND-S7   SND-S8   SND-S9.
 
CALL  'CBLDCMCF'  USING  SND-RCV1 SND-RCV2 SND-RCV3 SND-RCV4.
 
EXIT  PROGRAM.

(b) コンテンション敗者側(MHP)

IDENTIFICATION  DIVISION.
PROGRAM-ID.     RECV01.
 
ENVIRONMENT     DIVISION.
 
DATA            DIVISION.
WORKING-STORAGE SECTION.
 
01    RCV1.
      02    MSG-RCV      PIC X(8)   VALUE   'RECEIVE '.
      02    DATA1        PIC X(5).
      02    FILLER       PIC X(3).
      02    SEG-CODE     PIC X(4)   VALUE   'FRST'.
      02    DATA2        PIC X(4)   VALUE   SPACE.
      02    DATA3        PIC 9(8).
      02    DATA4        PIC 9(8).
      02    SEG-LENG     PIC 9(9)   COMP    VALUE   256.
      02    DATA5        PIC X(4)   VALUE   SPACE.
      02    DATA6        PIC X(4)   VALUE   SPACE.
      02    DATA7        PIC X(4)   VALUE   SPACE.
      02    DATA8        PIC X(4)   VALUE   SPACE.
      02    DATA9        PIC X(8)   VALUE   SPACE.
      02    DATA10       PIC X(4)   VALUE   SPACE.
      02    DATA11       PIC X(8)   VALUE   SPACE.
      02    DATA12       PIC X(4)   VALUE   SPACE.
      02    DATA13       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA13-1     PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA13-2     PIC X(1)   VALUE   SPACE.
      02    DATA13-3     PIC X(1)   VALUE   SPACE.
      02    DATA14       PIC X(14)  VALUE   LOW-VALUE.
01    RCV2.
      02    DATA15       PIC X(4)   VALUE   SPACE.
      02    RCV-TRM-NAM  PIC X(8).
      02    DATA17       PIC X(8)   VALUE   SPACE.
      02    DATA18       PIC X(8)   VALUE   SPACE.
      02    DATA20       PIC X(28)  VALUE   LOW-VALUE.
01    RCV3.
      02    DATA21       PIC 9(9)   COMP.
      02    DATA22       PIC X(8).
      02    DATA23       PIC X(1024).
01    SND1.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA24       PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA25       PIC X(4)   VALUE   SPACE.
      02    DATA26       PIC X(4)   VALUE   SPACE.
      02    DATA27       PIC 9(8).
      02    DATA28       PIC 9(8).
      02    DATA29       PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA30       PIC X(4)   VALUE   SPACE.
      02    DATA31       PIC X(4)   VALUE   SPACE.
      02    DATA32       PIC X(4)   VALUE   SPACE.
      02    DATA33       PIC X(8)   VALUE   SPACE.
      02    DATA34       PIC X(4)   VALUE   SPACE.
      02    DATA35       PIC X(8)   VALUE   SPACE.
      02    DATA36       PIC X(4)   VALUE   SPACE.
      02    DATA37       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA38       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA39       PIC X(1)   VALUE   SPACE.
      02    DATA40       PIC X(1)   VALUE   SPACE.
      02    DATA41       PIC X(14)  VALUE   LOW-VALUE.
01    SND2.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    S2-TRM-NAM   PIC X(8).
      02    DATA42       PIC X(8)   VALUE   SPACE.
      02    DATA43       PIC X(8)   VALUE   SPACE.
      02    DATA44       PIC X(28)  VALUE   LOW-VALUE.
01    SND3.
      02    DATA45       PIC 9(9)   COMP    VALUE   18.
      02    DATA46       PIC X(8).
      02    SEND-DATA.
            03    S-DATA1     PIC X(1)   VALUE   X'00'.
            03    S-DATA2     PIC X(1)   VALUE   X'0a'.
            03    S-DATA3     PIC X(4)   VALUE   'OTP1'.
            03    S-DATA4     PIC X(4)   VALUE   'BDPA'.
            03    S-DATA5     PIC X(1)   VALUE   X'00'.
            03    S-DATA6     PIC X(1)   VALUE   X'06'.
            03    S-DATA7     PIC X(1)   VALUE   X'00'.
            03    S-DATA8     PIC X(1)   VALUE   X'04'.
            03    S-DATA9     PIC X(2)   VALUE   'AC'.
            03    S-DATA10    PIC X(1)   VALUE   X'00'.
            03    S-DATA11    PIC X(1)   VALUE   X'02'.
01    RCV-S1.
      02    MSG-RCVSYNC  PIC X(8)   VALUE   'RECVSYNC'.
      02    DATA48       PIC X(5).
      02    FILLER       PIC X(3).
      02    RCV-S-SEG    PIC X(4)   VALUE   'FRST'.
      02    DATA49       PIC X(4)   VALUE   SPACE.
      02    DATA50       PIC 9(8).
      02    DATA51       PIC 9(8).
      02    RCV-S-LEG    PIC 9(9)   COMP    VALUE   256.
      02    DATA52       PIC X(4)   VALUE   SPACE.
      02    DATA53       PIC X(4)   VALUE   SPACE.
      02    DATA54       PIC X(4)   VALUE   SPACE.
      02    DATA55       PIC X(4)   VALUE   SPACE.
      02    DATA56       PIC X(8)   VALUE   SPACE.
      02    DATA57       PIC X(4)   VALUE   SPACE.
      02    DATA58       PIC X(8)   VALUE   SPACE.
      02    DATA59       PIC X(4)   VALUE   SPACE.
      02    DATA60       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA61       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA62       PIC X(1)   VALUE   SPACE.
      02    DATA63       PIC X(1)   VALUE   SPACE.
      02    DATA64       PIC X(14)  VALUE   LOW-VALUE.
01    RCV-S2.
      02    DATA65       PIC X(4)   VALUE   SPACE.
      02    R2-TRM-NAM   PIC X(8).
      02    DATA67       PIC X(8)   VALUE   SPACE.
      02    DATA68       PIC X(8)   VALUE   SPACE.
      02    DATA69       PIC X(28)  VALUE   LOW-VALUE.
01    RCV-S3.
      02    DATA70       PIC 9(9)   COMP.
      02    DATA71       PIC X(8).
      02    DATA72       PIC X(1024).
01    SND-RCV1.
      02    MSG-SNDRCV   PIC X(8)   VALUE   'SENDRECV'.
      02    DATA76       PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA77       PIC X(4)   VALUE   SPACE.
      02    DATA78       PIC X(4)   VALUE   SPACE.
      02    DATA79       PIC 9(8).
      02    DATA80       PIC 9(8).
      02    SND-RCV-LEG  PIC 9(9)   COMP    VALUE   256.
      02    SND-RCV-SEG  PIC X(4)   VALUE   'EMI '.
      02    DATA81       PIC X(4)   VALUE   SPACE.
      02    DATA82       PIC X(4)   VALUE   SPACE.
      02    DATA83       PIC X(4)   VALUE   SPACE.
      02    DATA84       PIC X(8)   VALUE   SPACE.
      02    DATA85       PIC X(4)   VALUE   SPACE.
      02    DATA86       PIC X(8)   VALUE   SPACE.
      02    DATA87       PIC X(4)   VALUE   SPACE.
      02    PRO-CD       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA88       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA88-1     PIC X(1)   VALUE   SPACE.
      02    DATA88-2     PIC X(1)   VALUE   SPACE.
      02    DATA89       PIC X(14)  VALUE   LOW-VALUE.
01    SND-RCV2.
      02    MSG          PIC X(4)   VALUE   'IO  '.
      02    SR-TRM-NAM   PIC X(8).
      02    DATA90       PIC X(8)   VALUE   SPACE.
      02    DATA91       PIC X(8)   VALUE   SPACE.
      02    DATA92       PIC X(28)  VALUE   LOW-VALUE.
01    SND-RCV3.
      02    MSG-SEG-LEG  PIC 9(9)   COMP    VALUE   18.
      02    DATA94       PIC X(8).
      02    SNDRCV-DATA.
            03    SR-DATA1    PIC X(1)   VALUE   X'00'.
            03    SR-DATA2    PIC X(1)   VALUE   X'0a'.
            03    SR-DATA3    PIC X(4)   VALUE   'OTP1'.
            03    SR-DATA4    PIC X(4)   VALUE   'HSR '.
            03    SR-DATA5    PIC X(1)   VALUE   X'00'.
            03    SR-DATA6    PIC X(1)   VALUE   X'06'.
            03    SR-DATA7    PIC X(1)   VALUE   X'00'.
            03    SR-DATA8    PIC X(1)   VALUE   X'04'.
            03    SR-DATA9    PIC X(2)   VALUE   'NR'.
            03    SR-DATA10   PIC X(1)   VALUE   X'00'.
            03    SR-DATA11   PIC X(1)   VALUE   X'02'.
01    SND-RCV4.
      02    DATA95       PIC 9(9)   COMP.
      02    DATA96-1     PIC X(7)   VALUE   SPACE.
      02    DATA96-2     PIC X(1).
      02    DATA98       PIC X(248).
01    SND4.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA100      PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA101      PIC X(4)   VALUE   SPACE.
      02    DATA102      PIC X(4)   VALUE   SPACE.
      02    DATA103      PIC 9(8).
      02    DATA104      PIC 9(8).
      02    DATA105      PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA106      PIC X(4)   VALUE   SPACE.
      02    DATA107      PIC X(4)   VALUE   SPACE.
      02    DATA108      PIC X(4)   VALUE   SPACE.
      02    DATA109      PIC X(8)   VALUE   SPACE.
      02    DATA110      PIC X(4)   VALUE   SPACE.
      02    DATA111      PIC X(8)   VALUE   SPACE.
      02    DATA112      PIC X(4)   VALUE   SPACE.
      02    DATA113      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA114      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA115      PIC X(1)   VALUE   SPACE.
      02    DATA116      PIC X(1)   VALUE   SPACE.
      02    DATA117      PIC X(14)  VALUE   LOW-VALUE.
01    SND5.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    S5-TRM-NAM   PIC X(8).
      02    DATA120      PIC X(8)   VALUE   SPACE.
      02    DATA121      PIC X(8)   VALUE   SPACE.
      02    DATA122      PIC X(28)  VALUE   LOW-VALUE.
01    SND6.
      02    DATA123      PIC 9(9)   COMP    VALUE   14.
      02    DATA124      PIC X(8).
      02    SEND-DATA.
            03    S-DATA11    PIC X(1)   VALUE   X'00'.
            03    S-DATA12    PIC X(1)   VALUE   X'0a'.
            03    S-DATA13    PIC X(4)   VALUE   'OTP1'.
            03    S-DATA14    PIC X(4)   VALUE   'EDP '.
            03    S-DATA15    PIC X(1)   VALUE   X'00'.
            03    S-DATA16    PIC X(1)   VALUE   X'02'.
            03    S-DATA17    PIC X(1)   VALUE   X'00'.
            03    S-DATA18    PIC X(1)   VALUE   X'02'.
 
PROCEDURE       DIVISION.
CALL  'CBLDCMCF'    USING  RCV1     RCV2     RCV3.
MOVE  RCV-TRM-NAM   TO     S2-TRM-NAM.
CALL  'CBLDCMCF'    USING  SND1     SND2     SND3.
MOVE  RCV-TRM-NAM   TO     R2-TRM-NAM.
CALL  'CBLDCMCF'    USING  RCV-S1   RCV-S2   RCV-S3.
MOVE  RCV-TRM-NAM   TO     SR-TRM-NAM.
CALL  'CBLDCMCF'    USING  SND-RCV1 SND-RCV2 SND-RCV3 SND-RCV4.
MOVE  RCV-TRM-NAM   TO     R2-TRM-NAM.
CALL  'CBLDCMCF'    USING  RCV-S1   RCV-S2   RCV-S3.
MOVE  RCV-TRM-NAM   TO     S5-TRM-NAM.
CALL  'CBLDCMCF'    USING  SND4     SND5     SND6.
 
EXIT    PROGRAM.

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

(a) コンテンション勝者側(SPP)

*
**************************************************************
*    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.

(b) コンテンション敗者側(MHP)

*
**************************************************************
*    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.

(4) ユーザアプリケーションプログラムのコーディング例(半二重でのC言語)

(a) コンテンション勝者側(SPP)

#include <dcmcf.h>
#include <string.h>
 
#define     WAITTIME    60
 
void    SEND01(in, in_len,  out, out_len)
 
                char         *in     ;
   unsigned     DCLONG       in_len  ;
                char         *out    ;
   unsigned     DCLONG       out_len ;
{
   /*★★引数定義★★*/             /*引数を使用している関数*/
                   /* sendsync, recvsync, sendrecv, receive */
   DCLONG   action         ;/* 0         0         0        0 */
   DCLONG   commform       ;/* 0         0         0        0 */
   char     termnam[16]    ;/* 0         0         0        0 */
   char     resv01[16]     ;/* 0         0         0        0 */
   char     senddata[256]  ;/* 0         -         0        - */
   DCLONG   sdataleng      ;/* 0         -         0        - */
   char     recvdata[256]  ;/* -         0         0        0 */
   DCLONG   rdataleng      ;/* -         0         0        0 */
   DCLONG   time           ;/* -         0         0        0 */
   DCLONG   wachtime       ;/* 0         0         0        - */
   char     resv02[16]     ;/* 0         -         -        - */
   DCLONG   opcd           ;/* 0         -         -        - */
   DCLONG   inbufleng      ;/* -         0         0        0 */
 
   /*★★変数定義 & 初期化★★*/
   int         rtn = 0x00  ;
 
   /*★★引数初期化★★*/
   action         =    NULL;
   commform       =    NULL;
   memset(termnam, 0, 16)  ;
   memset(resv01, 0, 16)   ;
   memset(senddata, 0, 256);
   sdataleng      =    NULL;
   memset(recvdata, 0, 256);
   rdataleng      =    NULL;
   time           =    NULL;
   wachtime       =    NULL;
   memset(resv02,  0, 16)  ;
   opcd           =    NULL;
   inbufleng      =    NULL;
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始要求送信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   strcpy(termnam, "otm01")         ;
   resv01[0]        =    NULL       ;
   /* senddataイニシャライズは省略 */
   sdataleng        =    54         ;
   resv02[0]        =    NULL       ;
   opcd             =    DCNOFLAGS  ;
   wachtime         =    WAITTIME   ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ;  /* レングス 01 */
   senddata[9] = 0x0a  ;  /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "BDR ")  ;
                          /* サービスプリミティブコード */
                          /* TP-BEGIN-DIALOGUE req */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x2a  ; /* パラメタ全体の長さ */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x0d  ; /* 発呼側TPSUタイトルの長さ */
 
   strcpy(senddata + 22, "PR")       ;  /* 型コード */
   strcpy(senddata + 24, "SEND_TPSU");
                          /* 発呼側TPSUタイトル(パラメタ1) */
 
   senddata[33] = 0x00  ; /* レングス 04 */
   senddata[34] = 0x02  ; /* 着呼側AP(パラメタ 2省略) */
 
   senddata[35] = 0x00  ; /* レングス 05 */
   senddata[36] = 0x0d  ; /* 着呼側TPSUタイトルの長さ */
 
   strcpy(senddata + 37, "PR")         ;  /* 型コード */
   strcpy(senddata + 39, "RECV_TPSU")  ;
                          /*着呼側TPSUタイトル(パラメタ3) */
 
   senddata[48] = 0x00  ; /* レングス 06 */
   senddata[49] = 0x04  ; /* 予備の長さ */
 
   senddata[50] = 0x88  ;
               /* 半二重&ハンドシェイク機能単位(パラメタ 4) */
   senddata[51] = 0xff  ; /* 予備 */
 
   senddata[52] = 0x00  ; /* レングス 07 */
   senddata[53] = 0x02  ; /* サービス品質(パラメタ5省略) */
 
   senddata[54] = 0x00  ; /* レングス 08 */
   senddata[55] = 0x02  ;
             /*アプリケーションコンテキスト(パラメタ6省略) */
 
   senddata[56] = 0x00  ; /* レングス 09 */
   senddata[57] = 0x04  ; /* 確認項目の長さ */
 
   strcpy(senddata + 58, "AL")    ;  /* 確認項目 */
                          /* all(同期型)(パラメタ 7) */
 
   senddata[60] = 0x00  ; /* レングス 10 */
   senddata[61] = 0x02  ; /* ユーザ情報(省略) */
 
 
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始応答受信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   /*recvdataイニシャライズは省略*/
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
 
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, & rdataleng,
                         inbufleng, & time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆          データ送信(TP-DATA)                   ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   23          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata clear ★*/
   memset(senddata, 0, 256)         ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00   ; /* レングス 01 */
   senddata[9] = 0x0a   ; /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")    ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "TDR ")  ;
                          /* サービスプリミティブコード */
                          /* TP-DATA req */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x02  ; /* パラメタ(省略) */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x0b  ; /* ユーザ情報の長さ */
 
   senddata[22] = 0x80  ; /* 連結状態 */
 
   strcpy(senddata + 23, "USERDATA")  ;  /* ユーザデータ */
 
 
   /*▼▼ データ送信(sendsync)開始 ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ データ送信(sendsync)終了 ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆      ハンドシェイク&制御権譲渡要求送信         ◆*/
/*◆    (TP-HANDSHAKE-AND-GRANT-CONTROL)            ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   18          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   memset(senddata, 0, 256);
 
   /*★ sendsync 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ; /* レングス 01 */
   senddata[9] = 0x0a  ; /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "HGR ")  ;
                          /* サービスプリミティブコード */
                          /* TP-HANDSHAKE-AND-    */
                          /*    GRANT-CONTROL req */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x06  ; /* パラメタ全体の長さ */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x04  ; /* 即時確認の長さ */
 
   strcpy(senddata+22, "UR")  ;  /* 即時確認(パラメタ 1) */
 
   senddata[24] = 0x00  ; /* レングス 04 */
   senddata[25] = 0x02  ; /* ユーザ情報(省略) */
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆      ハンドシェイク&制御権譲渡応答受信         ◆*/
/*◆    (TP-HANDSHAKE-AND-GRANT-CONTROL)            ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   /*recvdataイニシャライズは省略*/
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   memset(senddata, 0, 256);
 
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, & rdataleng,
                         inbufleng, & time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆        TP_DATA受信(TP-DATA)                    ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ recvdata clear ★★*/
   memset(recvdata, 0, 256)  ;
 
   /*▼▼ データ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, & rdataleng,
                         inbufleng, & time, wachtime );
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ データ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ終了要求受信(TP-END-DIALOGUE)       ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ recvdata clear★★*/
   memset(recvdata, 0, 256)     ;
 
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, & rdataleng,
                         inbufleng, & time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync)▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆    ダイアログ終了応答送信(TP-END-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   14          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★★ senddata clear★★*/
   memset(senddata, 0, 256)     ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ; /* レングス 01 */
   senddata[9] = 0x0a  ; /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "EDP ")  ;
                         /* サービスプリミティブコード */
                         /* TP-END-DIALOGUE rsp */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x02  ; /* パラメタ(省略) */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x02  ; /* ユーザ情報(省略) */
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
ERROR : ;
}

(b) コンテンション敗者側(MHP)

#include <dcmcf.h>
#include <string.h>
 
#define     WAITTIME    60
 
void    RECV01(in, in_len,  out, out_len)
 
                char         *in     ;
   unsigned     DCLONG       in_len  ;
                char         *out    ;
   unsigned     DCLONG       out_len ;
{
   /*★★引数定義★★*/             /*引数を使用している関数*/
                   /* sendsync, recvsync, sendrecv, receive */
   DCLONG  action        ;/*   0         0         0        0 */
   DCLONG  commform      ;/*   0         0         0        0 */
   char    termnam[16]   ;/*   0         0         0        0 */
   char    resv01[16]    ;/*   0         0         0        0 */
   char    senddata[256] ;/*   0         -         0        - */
   DCLONG  sdataleng     ;/*   0         -         0        - */
   char    recvdata[256] ;/*   -         0         0        0 */
   DCLONG  rdataleng     ;/*   -         0         0        0 */
   DCLONG  time          ;/*   -         0         0        0 */
   DCLONG  wachtime      ;/*   0         0         0        - */
   char    resv02[16]    ;/*   0         -         -        - */
   DCLONG  opcd          ;/*   0         -         -        - */
   DCLONG  inbufleng     ;/*   -         0         0        0 */
 
   /*★★変数定義 & 初期化★★*/
   int         rtn = NULL  ;
 
   /*★★引数初期化★★*/
   action         =    NULL;
   commform       =    NULL;
   memset(termnam, 0, 16)  ;
   memset(resv01, 0, 16)   ;
   memset(recvdata, 0, 256);
   sdataleng      =    NULL;
   memset(recvdata, 0, 256);
   rdataleng      =    NULL;
   time           =    NULL;
   wachtime       =    NULL;
   memset(resv02,  0, 16)  ;
   opcd           =    NULL;
   inbufleng      =    NULL;
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始要求受信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ receive引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   termnam[0]       =   NULL        ;
   /*recvdataイニシャライズは省略*/
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
 
   /*▼▼ ダイアログ開始要求受信開始(receive) ▼▼*/
 
   rtn = dc_mcf_receive(action, commform, termnam, resv01,
                        recvdata, & rdataleng, inbufleng,
                        & time);
 
   if ( rtn != DCMCFRTN_00000 )
  {
       goto ERROR;
   }
   /*▲▲ ダイアログ開始要求受信終了(receive) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ開始応答送信(TP-BEGIN-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   18          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ;  /* レングス 01 */
   senddata[9] = 0x0a  ;  /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "BDPA")  ;
                          /* サービスプリミティブコード */
                          /* TP-BEGIN-DIALOGUE rsp */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x06  ; /* パラメタ全体の長さ */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x04  ; /* 結果の長さ */
 
   strcpy(senddata + 22, "AC")  ;  /* 結果(パラメタ 1) */
 
   senddata[24] = 0x00  ; /* レングス 04 */
   senddata[25] = 0x02  ; /* ユーザ情報(省略) */
 
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆      TP_DATA受信(TP-DATA)                     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ recvdata clear ★★*/
   memset(recvdata, 0, 256)    ;
 
   /*▼▼ データ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, & rdataleng,
                         inbufleng, & time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
  {
       goto ERROR;
   }
   /*▲▲ データ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆    ハンドシェイク&制御権譲渡要求受信           ◆*/
/*◆  (TP-HANDSHAKE-AND-GRANT-CONTROL)              ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ recvsync引数設定 (初期化) ★★*/
   action           =   DCMCFFRST   ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =   WAITTIME    ;
 
   /*★★ recvdata clear ★★*/
   memset(recvdata, 0, 256)    ;
 
   /*▼▼ メッセージ受信開始(recvsync) ▼▼*/
 
   rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
                         recvdata, & rdataleng,
                         inbufleng, & time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
  {
       goto ERROR;
   }
   /*▲▲ メッセージ受信終了(recvsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆       ハンドシェイク&制御権譲渡応答送信        ◆*/
/*◆     (TP-HANDSHAKE-AND-GRANT-CONTROL)           ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   14          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata clear ★*/
   memset(senddata, 0, 256)         ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ;
   senddata[9] = 0x0a  ;
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "HGP ")  ;
                          /* サービスプリミティブコード */
                          /* TP-HANDSHAKE-AND-    */
                          /*    GRANT-CONTROL rsp */
 
   senddata[18] = 0x00  ;
   senddata[19] = 0x02  ; /* パラメタ(省略) */
 
   senddata[20] = 0x00  ;
   senddata[21] = 0x02  ; /* ユーザ情報(省略) */
 
   /*▼▼ メッセージ送信開始(sendsync) ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
  {
       goto ERROR;
   }
   /*▲▲ メッセージ送信終了(sendsync) ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆        データ送信(TP-DATA)                     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendsync引数設定 (初期化) ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCNOFLAGS   ;
   resv01[0]        =   NULL        ;
   sdataleng        =   23          ;
   resv02[0]        =   NULL        ;
   opcd             =   DCNOFLAGS   ;
   wachtime         =   WAITTIME    ;
 
   /*★ senddata clear ★*/
   memset(senddata, 0, 256)         ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ;  /* レングス 01 */
   senddata[9] = 0x0a  ;  /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "TDR ")  ;
                          /* サービスプリミティブコード */
                          /* TP_DATA req */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x02  ; /* パラメタ(省略) */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x0b  ; /* ユーザ情報の長さ */
 
   senddata[22] = 0x80  ; /* 連結状態 */
 
   strcpy(senddata + 23, "USERDATA")    ;  /* ユーザデータ */
 
 
   /*▼▼ データ送信(sendsync)開始 ▼▼*/
 
   rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
                         senddata, sdataleng, resv02, opcd,
                         wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
  {
       goto ERROR;
   }
   /*▲▲ データ送信(sendsync)終了 ▲▲*/
 
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆  ダイアログ終了要求送受信(TP-END-DIALOGUE)     ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
 
   /*★★ sendrecv引数設定 ★★*/
   action           =   DCMCFEMI    ;
   commform         =   DCMCFIO     ;
   resv01[0]        =   NULL        ;
   sdataleng        =   18          ;
   rdataleng        =   NULL        ;
   inbufleng        =   256         ;
   time             =   NULL        ;
   wachtime         =  WAITTIME     ;
 
   /*★ senddata clear ★*/
   memset(senddata, 0, 256)         ;
   memset(recvdata, 0, 256)         ;
 
   /*★ senddata 設定 ★*/
   /*★ 先頭8バイト目までは,MCFが使用する ★*/
   senddata[8] = 0x00  ;  /* レングス 01 */
   senddata[9] = 0x0a  ;  /* サービスプリミティブの長さ */
 
   strcpy(senddata + 10, "OTP1")  ;  /* 送信手順(OTP1) */
   strcpy(senddata + 14, "EDR ")  ;
                          /* サービスプリミティブコード */
                          /* TP-END-DIALOGUE req */
 
   senddata[18] = 0x00  ; /* レングス 02 */
   senddata[19] = 0x06  ; /* パラメタ全体の長さ */
 
   senddata[20] = 0x00  ; /* レングス 03 */
   senddata[21] = 0x04  ; /* 確認項目の長さ */
 
   strcpy(senddata + 22, "TR")  ;  /* 確認項目(パラメタ 1) */
 
   senddata[24] = 0x00  ; /* レングス 04 */
   senddata[25] = 0x02  ; /* ユーザ情報 */
 
   /*▼▼ メッセージ送受信開始(sendrecv) ▼▼*/
 
   rtn = dc_mcf_sendrecv(action, commform, termnam, resv01,
                         senddata, sdataleng,
                         recvdata, & rdataleng,
                         inbufleng, & time, wachtime);
 
   if ( rtn != DCMCFRTN_00000 )
   {
       goto ERROR;
   }
   /*▲▲ メッセージ送受信終了(sendrecv)▲▲*/
 
ERROR : ;
}

(5) ユーザアプリケーションプログラムのコーディング例(半二重でのCOBOL言語)

(a) コンテンション勝者側(SPP)

IDENTIFICATION  DIVISION.
PROGRAM-ID.      SEND01.
 
ENVIRONMENT     DIVISION.
 
DATA            DIVISION.
WORKING-STORAGE SECTION.
 
01    SND-S1.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA1        PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA2        PIC X(4)   VALUE   SPACE.
      02    DATA3        PIC X(4)   VALUE   SPACE.
      02    DATA4        PIC 9(8).
      02    DATA5        PIC 9(8).
      02    DATA6        PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA7        PIC X(4)   VALUE   SPACE.
      02    DATA8        PIC X(4)   VALUE   SPACE.
      02    DATA9        PIC X(4)   VALUE   SPACE.
      02    DATA10       PIC X(8)   VALUE   SPACE.
      02    DATA11       PIC X(4)   VALUE   SPACE.
      02    DATA12       PIC X(8)   VALUE   SPACE.
      02    DATA13       PIC X(4)   VALUE   SPACE.
      02    DATA14       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA15       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA16       PIC X(1)   VALUE   SPACE.
      02    DATA17       PIC X(1)   VALUE   SPACE.
      02    DATA18       PIC X(14)  VALUE   LOW-VALUE.
01    SND-S2.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA19       PIC X(8)   VALUE   SPACE.
      02    DATA20       PIC X(8)   VALUE   SPACE.
      02    DATA21       PIC X(28)  VALUE   LOW-VALUE.
01    SND-S3.
      02    DATA22       PIC 9(9)   COMP    VALUE   54.
      02    DATA23       PIC X(8).
      02    SEND-DATA.
            03    S-DATA1     PIC X(1)   VALUE   X'00'.
            03    S-DATA2     PIC X(1)   VALUE   X'0a'.
            03    S-DATA3     PIC X(4)   VALUE   'OTP1'.
            03    S-DATA4     PIC X(4)   VALUE   'BDR '.
            03    S-DATA5     PIC X(1)   VALUE   X'00'.
            03    S-DATA6     PIC X(1)   VALUE   X'2a'.
            03    S-DATA7     PIC X(1)   VALUE   X'00'.
            03    S-DATA8     PIC X(1)   VALUE   X'0d'.
            03    S-DATA8-1   PIC X(2)   VALUE   'PR'.
            03    S-DATA9     PIC X(9)   VALUE   'SEND-TPSU'.
            03    S-DATA10    PIC X(1)   VALUE   X'00'.
            03    S-DATA11    PIC X(1)   VALUE   X'02'.
            03    S-DATA12    PIC X(1)   VALUE   X'00'.
            03    S-DATA13    PIC X(1)   VALUE   X'0d'.
            03    S-DATA13-1  PIC X(2)   VALUE   'PR'.
            03    S-DATA14    PIC X(9)   VALUE   'RECV-TPSU'.
            03    S-DATA15    PIC X(1)   VALUE   X'00'.
            03    S-DATA16    PIC X(1)   VALUE   X'04'.
            03    S-DATA17    PIC X(1)   VALUE   X'88'.
            03    S-DATA18    PIC X(1)   VALUE   X'ff'.
            03    S-DATA19    PIC X(1)   VALUE   X'00'.
            03    S-DATA20    PIC X(1)   VALUE   X'02'.
            03    S-DATA21    PIC X(1)   VALUE   X'00'.
            03    S-DATA22    PIC X(1)   VALUE   X'02'.
            03    S-DATA23    PIC X(1)   VALUE   X'00'.
            03    S-DATA24    PIC X(1)   VALUE   X'04'.
            03    S-DATA25    PIC X(2)   VALUE   'AL'.
            03    S-DATA26    PIC X(1)   VALUE   X'00'.
            03    S-DATA27    PIC X(1)   VALUE   X'02'.
 
01    SND-S4.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA25       PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA26       PIC X(4)   VALUE   SPACE.
      02    DATA27       PIC X(4)   VALUE   SPACE.
      02    DATA28       PIC 9(8).
      02    DATA29       PIC 9(8).
      02    DATA30       PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA31       PIC X(4)   VALUE   SPACE.
      02    DATA32       PIC X(4)   VALUE   SPACE.
      02    DATA33       PIC X(4)   VALUE   SPACE.
      02    DATA34       PIC X(8)   VALUE   SPACE.
      02    DATA35       PIC X(4)   VALUE   SPACE.
      02    DATA36       PIC X(8)   VALUE   SPACE.
      02    DATA37       PIC X(4)   VALUE   SPACE.
      02    DATA38       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA39       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA40       PIC X(1)   VALUE   SPACE.
      02    DATA41       PIC X(1)   VALUE   SPACE.
      02    DATA42       PIC X(14)  VALUE   LOW-VALUE.
01    SND-S5.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA43       PIC X(8)   VALUE   SPACE.
      02    DATA44       PIC X(8)   VALUE   SPACE.
      02    DATA45       PIC X(28)  VALUE   LOW-VALUE.
01    SND-S6.
      02    DATA46       PIC 9(9)   COMP    VALUE   23.
      02    DATA47       PIC X(8).
      02    SEND-DATA2.
            03    S-DATA281   PIC 9(4)   COMP    VALUE   10.
            03    S-DATA282   PIC X(4)   VALUE   'OTP1'.
            03    S-DATA283   PIC X(4)   VALUE   'TDR '.
            03    S-DATA285   PIC 9(4)   COMP    VALUE   2.
 
            03    S-DATA287   PIC 9(4)   VALUE   11.
            03    S-DATA289   PIC X(1)   VALUE   X'80'.
            03    S-DATA290   PIC X(8)   VALUE   'USERDATA'.
 
01    SND-S7.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA49       PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA50       PIC X(4)   VALUE   SPACE.
      02    DATA51       PIC X(4)   VALUE   SPACE.
      02    DATA52       PIC 9(8).
      02    DATA53       PIC 9(8).
      02    DATA54       PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA55       PIC X(4)   VALUE   SPACE.
      02    DATA56       PIC X(4)   VALUE   SPACE.
      02    DATA57       PIC X(4)   VALUE   SPACE.
      02    DATA58       PIC X(8)   VALUE   SPACE.
      02    DATA59       PIC X(4)   VALUE   SPACE.
      02    DATA60       PIC X(8)   VALUE   SPACE.
      02    DATA61       PIC X(4)   VALUE   SPACE.
      02    DATA62       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA63       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA64       PIC X(1)   VALUE   SPACE.
      02    DATA65       PIC X(1)   VALUE   SPACE.
      02    DATA66       PIC X(14)  VALUE   LOW-VALUE.
01    SND-S8.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA67       PIC X(8)   VALUE   SPACE.
      02    DATA68       PIC X(8)   VALUE   SPACE.
      02    DATA69       PIC X(28)  VALUE   LOW-VALUE.
01    SND-S9.
      02    DATA70       PIC 9(9)   COMP    VALUE   18.
      02    DATA71       PIC X(8).
      02    SEND-DATA3.
            03    S-DATA329   PIC X(1)   VALUE   X'00'.
            03    S-DATA330   PIC X(1)   VALUE   X'0a'.
            03    S-DATA331   PIC X(4)   VALUE   'OTP1'.
            03    S-DATA332   PIC X(4)   VALUE   'HGR '.
            03    S-DATA333   PIC X(1)   VALUE   X'00'.
            03    S-DATA334   PIC X(1)   VALUE   X'06'.
            03    S-DATA335   PIC X(1)   VALUE   X'00'.
            03    S-DATA336   PIC X(1)   VALUE   X'04'.
            03    S-DATA337   PIC X(2)   VALUE   'UR'.
            03    S-DATA338   PIC X(1)   VALUE   X'00'.
            03    S-DATA339   PIC X(1)   VALUE   X'02'.
 
01    SND4.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA100      PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA101      PIC X(4)   VALUE   SPACE.
      02    DATA102      PIC X(4)   VALUE   SPACE.
      02    DATA103      PIC 9(8).
      02    DATA104      PIC 9(8).
      02    DATA105      PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA106      PIC X(4)   VALUE   SPACE.
      02    DATA107      PIC X(4)   VALUE   SPACE.
      02    DATA108      PIC X(4)   VALUE   SPACE.
      02    DATA109      PIC X(8)   VALUE   SPACE.
      02    DATA110      PIC X(4)   VALUE   SPACE.
      02    DATA111      PIC X(8)   VALUE   SPACE.
      02    DATA112      PIC X(4)   VALUE   SPACE.
      02    DATA113      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA114      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA115      PIC X(1)   VALUE   SPACE.
      02    DATA116      PIC X(1)   VALUE   SPACE.
      02    DATA117      PIC X(14)  VALUE   LOW-VALUE.
01    SND5.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA120      PIC X(8)   VALUE   SPACE.
      02    DATA121      PIC X(8)   VALUE   SPACE.
      02    DATA122      PIC X(28)  VALUE   LOW-VALUE.
01    SND6.
      02    DATA130      PIC 9(9)   COMP    VALUE   14.
      02    DATA131      PIC X(8).
      02    SEND-DATA.
            03    S-DATA311   PIC 9(4)   COMP    VALUE   10.
            03    S-DATA312   PIC X(4)   VALUE   'OTP1'.
            03    S-DATA313   PIC X(4)   VALUE   'EDP '.
            03    S-DATA314   PIC X(1)   VALUE   X'00'.
            03    S-DATA315   PIC X(1)   VALUE   X'02'.
            03    S-DATA316   PIC X(1)   VALUE   X'00'.
            03    S-DATA317   PIC X(1)   VALUE   X'02'.
 
01    RCV-S1.
      02    MSG-RCVSYNC  PIC X(8)   VALUE   'RECVSYNC'.
      02    DATA73       PIC X(5).
      02    FILLER       PIC X(3).
      02    RCV-S-SEG    PIC X(4)   VALUE   'FRST'.
      02    DATA74       PIC X(4)   VALUE   SPACE.
      02    DATA75       PIC 9(8).
      02    DATA76       PIC 9(8).
      02    RCV-S-LEG    PIC 9(9)   COMP    VALUE   256.
      02    DATA77       PIC X(4)   VALUE   SPACE.
      02    DATA78       PIC X(4)   VALUE   SPACE.
      02    DATA79       PIC X(4)   VALUE   SPACE.
      02    DATA80       PIC X(4)   VALUE   SPACE.
      02    DATA81       PIC X(8)   VALUE   SPACE.
      02    DATA82       PIC X(4)   VALUE   SPACE.
      02    DATA83       PIC X(8)   VALUE   SPACE.
      02    DATA84       PIC X(4)   VALUE   SPACE.
      02    DATA85       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA86       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA87       PIC X(1)   VALUE   SPACE.
      02    DATA88       PIC X(1)   VALUE   SPACE.
      02    DATA89       PIC X(14)  VALUE   LOW-VALUE.
01    RCV-S2.
      02    DATA90       PIC X(4)   VALUE   SPACE.
      02    TRM-NAME     PIC X(8)   VALUE   'otm01   '.
      02    DATA92       PIC X(8)   VALUE   SPACE.
      02    DATA93       PIC X(8)   VALUE   SPACE.
      02    DATA94       PIC X(28)  VALUE   LOW-VALUE.
01    RCV-S3.
      02    DATA95       PIC 9(9)   COMP.
      02    DATA96       PIC X(8).
      02    DATA97       PIC X(1024).
 
PROCEDURE       DIVISION.
CALL  'CBLDCMCF'    USING  SND-S1  SND-S2  SND-S3.
 
CALL  'CBLDCMCF'    USING  RCV-S1  RCV-S2  RCV-S3.
 
CALL  'CBLDCMCF'    USING  SND-S4  SND-S5  SND-S6.
 
CALL  'CBLDCMCF'    USING  SND-S7  SND-S8  SND-S9.
 
CALL  'CBLDCMCF'    USING  RCV-S1  RCV-S2  RCV-S3.
 
CALL  'CBLDCMCF'    USING  RCV-S1  RCV-S2  RCV-S3.
 
CALL  'CBLDCMCF'    USING  RCV-S1  RCV-S2  RCV-S3.
 
CALL  'CBLDCMCF'    USING  SND4    SND5    SND6.
 
EXIT    PROGRAM.

(b) コンテンション敗者側(MHP)

IDENTIFICATION  DIVISION.
PROGRAM-ID.      RECV01.
 
ENVIRONMENT     DIVISION.
 
DATA            DIVISION.
WORKING-STORAGE SECTION.
 
01    RCV1.
      02    MSG-RCV      PIC X(8)   VALUE   'RECEIVE '.
      02    DATA1        PIC X(5).
      02    FILLER       PIC X(3).
      02    SEG-CODE     PIC X(4)   VALUE   'FRST'.
      02    DATA2        PIC X(4)   VALUE   SPACE.
      02    DATA3        PIC 9(8).
      02    DATA4        PIC 9(8).
      02    SEG-LENG     PIC 9(9)   COMP    VALUE   256.
      02    DATA5        PIC X(4)   VALUE   SPACE.
      02    DATA6        PIC X(4)   VALUE   SPACE.
      02    DATA7        PIC X(4)   VALUE   SPACE.
      02    DATA8        PIC X(4)   VALUE   SPACE.
      02    DATA9        PIC X(8)   VALUE   SPACE.
      02    DATA10       PIC X(4)   VALUE   SPACE.
      02    DATA11       PIC X(8)   VALUE   SPACE.
      02    DATA12       PIC X(4)   VALUE   SPACE.
      02    DATA13       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA13-1     PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA13-2     PIC X(1)   VALUE   SPACE.
      02    DATA13-3     PIC X(1)   VALUE   SPACE.
      02    DATA14       PIC X(14)  VALUE   LOW-VALUE.
01    RCV2.
      02    DATA15       PIC X(4)   VALUE   SPACE.
      02    RCV-TRM-NAM  PIC X(8).
      02    DATA17       PIC X(8)   VALUE   SPACE.
      02    DATA18       PIC X(6)   VALUE   SPACE.
      02    DATA19       PIC X(2)   VALUE   SPACE.
      02    DATA20       PIC X(28)  VALUE   LOW-VALUE.
01    RCV3.
      02    DATA21       PIC 9(9)   COMP.
      02    DATA22       PIC X(8).
      02    DATA23       PIC X(1024).
 
01    SND1.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA24       PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA25       PIC X(4)   VALUE   SPACE.
      02    DATA26       PIC X(4)   VALUE   SPACE.
      02    DATA27       PIC 9(8).
      02    DATA28       PIC 9(8).
      02    DATA29       PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA30       PIC X(4)   VALUE   SPACE.
      02    DATA31       PIC X(4)   VALUE   SPACE.
      02    DATA32       PIC X(4)   VALUE   SPACE.
      02    DATA33       PIC X(8)   VALUE   SPACE.
      02    DATA34       PIC X(4)   VALUE   SPACE.
      02    DATA35       PIC X(8)   VALUE   SPACE.
      02    DATA36       PIC X(4)   VALUE   SPACE.
      02    DATA37       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA38       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA39       PIC X(1)   VALUE   SPACE.
      02    DATA40       PIC X(1)   VALUE   SPACE.
      02    DATA41       PIC X(14)  VALUE   LOW-VALUE.
01    SND2.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    S2-TRM-NAM   PIC X(8).
      02    DATA42       PIC X(8)   VALUE   SPACE.
      02    DATA43       PIC X(8)   VALUE   SPACE.
      02    DATA44       PIC X(28)  VALUE   LOW-VALUE.
01    SND3.
      02    DATA45       PIC 9(9)   COMP    VALUE    18.
      02    DATA46       PIC X(8).
      02    SEND-DATA.
            03    S-DATA1     PIC 9(4)   COMP    VALUE   10.
            03    S-DATA2     PIC X(4)   VALUE   'OTP1'.
            03    S-DATA3     PIC X(4)   VALUE   'BDPA'.
            03    S-DATA4     PIC 9(4)   COMP    VALUE   6.
            03    S-DATA5     PIC 9(4)   COMP    VALUE   4.
            03    S-DATA6     PIC X(2)   VALUE   'AC'.
            03    S-DATA7     PIC 9(4)   COMP    VALUE   2.
01    RCV4.
      02    MSG-RCVSYNC  PIC X(8)   VALUE   'RECVSYNC'.
      02    DATA48       PIC X(5).
      02    FILLER       PIC X(3).
      02    RCV-S-SEG    PIC X(4)   VALUE   'FRST'.
      02    DATA49       PIC X(4)   VALUE   SPACE.
      02    DATA50       PIC 9(8).
      02    DATA51       PIC 9(8).
      02    RCV-S-LEG    PIC 9(9)   COMP    VALUE   256.
      02    DATA52       PIC X(4)   VALUE   SPACE.
      02    DATA53       PIC X(4)   VALUE   SPACE.
      02    DATA54       PIC X(4)   VALUE   SPACE.
      02    DATA55       PIC X(4)   VALUE   SPACE.
      02    DATA56       PIC X(8)   VALUE   SPACE.
      02    DATA57       PIC X(4)   VALUE   SPACE.
      02    DATA58       PIC X(8)   VALUE   SPACE.
      02    DATA59       PIC X(4)   VALUE   SPACE.
      02    DATA60       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA61       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA62       PIC X(1)   VALUE   SPACE.
      02    DATA63       PIC X(1)   VALUE   SPACE.
      02    DATA64       PIC X(14)  VALUE   LOW-VALUE.
01    RCV5.
      02    DATA65       PIC X(4)   VALUE   SPACE.
      02    R5-TRM-NAM   PIC X(8).
      02    DATA67       PIC X(8)   VALUE   SPACE.
      02    DATA68       PIC X(8)   VALUE   SPACE.
      02    DATA69       PIC X(28)  VALUE   LOW-VALUE.
01    RCV6.
      02    DATA70       PIC 9(9)   COMP.
      02    DATA71       PIC X(8).
      02    DATA72       PIC X(1024).
01    SND4.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA100      PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA101      PIC X(4)   VALUE   SPACE.
      02    DATA102      PIC X(4)   VALUE   SPACE.
      02    DATA103      PIC 9(8).
      02    DATA104      PIC 9(8).
      02    DATA105      PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA106      PIC X(4)   VALUE   SPACE.
      02    DATA107      PIC X(4)   VALUE   SPACE.
      02    DATA108      PIC X(4)   VALUE   SPACE.
      02    DATA109      PIC X(8)   VALUE   SPACE.
      02    DATA110      PIC X(4)   VALUE   SPACE.
      02    DATA111      PIC X(8)   VALUE   SPACE.
      02    DATA112      PIC X(4)   VALUE   SPACE.
      02    DATA113      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA114      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA115      PIC X(1)   VALUE   SPACE.
      02    DATA116      PIC X(1)   VALUE   SPACE.
      02    DATA117      PIC X(14)  VALUE   LOW-VALUE.
01    SND5.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    S5-TRM-NAM   PIC X(8).
      02    DATA120      PIC X(8)   VALUE   SPACE.
      02    DATA121      PIC X(8)   VALUE   SPACE.
      02    DATA122      PIC X(28)  VALUE   LOW-VALUE.
01    SND6.
      02    DATA130      PIC 9(9)   COMP    VALUE   14.
      02    DATA131      PIC X(8).
      02    SEND-DATA.
            03    S-DATA11    PIC 9(4)   COMP    VALUE   10.
            03    S-DATA12    PIC X(4)   VALUE   'OTP1'.
            03    S-DATA13    PIC X(4)   VALUE   'HGP '.
            03    S-DATA14    PIC 9(4)   COMP    VALUE   2.
            03    S-DATA15    PIC 9(4)   COMP    VALUE   2.
01    SND7.
      02    MSG-SNDSYNC  PIC X(8)   VALUE   'SENDSYNC'.
      02    DATA225      PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA226      PIC X(4)   VALUE   SPACE.
      02    DATA227      PIC X(4)   VALUE   SPACE.
      02    DATA228      PIC 9(8).
      02    DATA229      PIC 9(8).
      02    DATA230      PIC 9(9)   COMP    VALUE   ZERO.
      02    SND-S-SEG    PIC X(4)   VALUE   'EMI '.
      02    DATA231      PIC X(4)   VALUE   SPACE.
      02    DATA232      PIC X(4)   VALUE   SPACE.
      02    DATA233      PIC X(4)   VALUE   SPACE.
      02    DATA234      PIC X(8)   VALUE   SPACE.
      02    DATA235      PIC X(4)   VALUE   SPACE.
      02    DATA236      PIC X(8)   VALUE   SPACE.
      02    DATA237      PIC X(4)   VALUE   SPACE.
      02    DATA238      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA239      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA240      PIC X(1)   VALUE   SPACE.
      02    DATA241      PIC X(1)   VALUE   SPACE.
      02    DATA242      PIC X(14)  VALUE   LOW-VALUE.
01    SND8.
      02    SEG-CODE     PIC X(4)   VALUE   SPACE.
      02    S8-TRM-NAM   PIC X(8).
      02    DATA243      PIC X(8)   VALUE   SPACE.
      02    DATA244      PIC X(8)   VALUE   SPACE.
      02    DATA245      PIC X(28)  VALUE   LOW-VALUE.
01    SND9.
      02    DATA246      PIC 9(9)   COMP    VALUE   23.
      02    DATA247      PIC X(8).
      02    SEND-DATA2.
            03    S-DATA281   PIC 9(4)   COMP    VALUE   10.
            03    S-DATA282   PIC X(4)   VALUE   'OTP1'.
            03    S-DATA283   PIC X(4)   VALUE   'TDR '.
            03    S-DATA284   PIC 9(4)   COMP    VALUE   2.
            03    S-DATA285   PIC 9(4)   COMP    VALUE   11.
            03    S-DATA286   PIC X(1)   VALUE   X'80'.
            03    S-DATA287   PIC X(8)   VALUE   'USERDATA'.
01    SND-RCV1.
      02    MSG-SNDRCV   PIC X(8)   VALUE   'SENDRECV'.
      02    DATA301      PIC X(5).
      02    FILLER       PIC X(3).
      02    DATA302      PIC X(4)   VALUE   SPACE.
      02    DATA303      PIC X(4)   VALUE   SPACE.
      02    DATA304      PIC 9(8).
      02    DATA305      PIC 9(8).
      02    SND-RCV-LEG  PIC 9(9)   COMP    VALUE   256.
      02    SND-RCV-SEG  PIC X(4)   VALUE   'EMI '.
      02    DATA306      PIC X(4)   VALUE   SPACE.
      02    DATA307      PIC X(4)   VALUE   SPACE.
      02    DATA308      PIC X(4)   VALUE   SPACE.
      02    DATA309      PIC X(8)   VALUE   SPACE.
      02    DATA310      PIC X(4)   VALUE   SPACE.
      02    DATA311      PIC X(8)   VALUE   SPACE.
      02    DATA312      PIC X(4)   VALUE   SPACE.
      02    PRO-CD       PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA313      PIC 9(9)   COMP    VALUE   ZERO.
      02    DATA313-1    PIC X(1)   VALUE   SPACE.
      02    DATA313-2    PIC X(1)   VALUE   SPACE.
      02    DATA314      PIC X(14)  VALUE   LOW-VALUE.
01    SND-RCV2.
      02    MSG          PIC X(4)   VALUE   'IO  '.
      02    SR-TRM-NAM   PIC X(8).
      02    DATA315      PIC X(8)   VALUE   SPACE.
      02    DATA316      PIC X(8)   VALUE   SPACE.
      02    DATA318      PIC X(28)  VALUE   LOW-VALUE.
01    SND-RCV3.
      02    MSG-SEG-LEG  PIC 9(9)   COMP    VALUE   18.
      02    DATA319      PIC X(8).
      02    SNDRCV-DATA.
            03    SR-DATA1    PIC 9(4)   COMP    VALUE   10.
            03    SR-DATA2    PIC X(4)   VALUE   'OTP1'.
            03    SR-DATA3    PIC X(4)   VALUE   'EDR '.
            03    SR-DATA4    PIC 9(4)   COMP    VALUE   6.
            03    SR-DATA5    PIC 9(4)   COMP    VALUE   4.
            03    SR-DATA6    PIC X(2)   VALUE   'TR'.
            03    SR-DATA7    PIC 9(4)   COMP    VALUE   2.
01    SND-RCV4.
      02    DATA320      PIC 9(9)   COMP.
      02    DATA321      PIC X(7)   VALUE   SPACE.
      02    DATA322      PIC X(1).
      02    DATA323      PIC X(1024).
 
PROCEDURE       DIVISION.
CALL  'CBLDCMCF'   USING  RCV1     RCV2     RCV3.
MOVE  RCV-TRM-NAM  TO     S2-TRM-NAM.
CALL  'CBLDCMCF'   USING  SND1     SND2     SND3.
MOVE  RCV-TRM-NAM  TO     R5-TRM-NAM.
CALL  'CBLDCMCF'   USING  RCV4     RCV5     RCV6.
MOVE  RCV-TRM-NAM  TO     R5-TRM-NAM.
CALL  'CBLDCMCF'   USING  RCV4     RCV5     RCV6.
MOVE  RCV-TRM-NAM  TO     S5-TRM-NAM.
CALL  'CBLDCMCF'   USING  SND4     SND5     SND6.
MOVE  RCV-TRM-NAM  TO     S8-TRM-NAM.
CALL  'CBLDCMCF'   USING  SND7     SND8     SND9.
MOVE  RCV-TRM-NAM  TO     SR-TRM-NAM.
CALL  'CBLDCMCF'   USING  SND-RCV1 SND-RCV2 SND-RCV3 SND-RCV4.
 
EXIT    PROGRAM.

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

(a) コンテンション勝者側(SPP)

*
**************************************************************
*    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.

(b) コンテンション敗者側(MHP)

*
**************************************************************
*    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.