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

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

(1) コンテンション勝者側(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 : ;
}

(2) コンテンション敗者側(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 : ;
}