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

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

付録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 : ;
}