Netcompo アプリケーション会話サービス 2.1.1 LU0会話サービス編 - Solaris OE -
|
目次
索引

|
付録A アプリケーションプログラム例
以下に、LU0会話サービスを使用するアプリケーションプログラムの、プログラム例を示します。
/*====================================================================*
* アプリケーションプログラム例 1 *
* *
* (1) main : メイン処理(同期型) *
* (2) procend : プロセス終了処理 *
* *
*====================================================================*/
#include <sys/types.h>
#include <stdio.h>
#include <memory.h>
#include <errno.h>
#include "lu0.h"
/*---------------------------------------------*/
/* エントリーモジュール */
/*---------------------------------------------*/
void main(int, char **);
void procend(struct lu0rb *, int);
/*---------------------------------------------*/
/* グローバル変数 */
/*---------------------------------------------*/
char *luname = "lu02"; /* LU名 */
char *wbufp; /* 送信バッファポインタ */
char *rbufp; /* 受信バッファポインタ */
/*---------------------------------------------*/
/* ローカル定義 */
/*---------------------------------------------*/
#define NORMAL 0 /* マクロ命令復帰値正常 */
/*====================================================================*
* function name : (1) main *
* function : メイン処理(同期型) *
*====================================================================*/
void
main
(
int argc,
char **argv
)
{
struct lu0rb rcb; /* rcb */
struct lu0rb *rcbp; /* rcbポインタ */
int status; /* 状態 */
int dc; /* 送信データ作成用 */
/*=============================================*/
/* rcbの初期化 */
/*=============================================*
rcbp = &rcb; /* rcbアドレス設定 */
/*=============================================*/
/* 内部状態の初期化 */
/*=============================================*/
status = 0; /*状態:初期状態 */
/*=============================================*/
/* lu0open1 マクロ処理 */
/* <<< アプリ登録 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0open1( rcbp ) != NORMAL ) /* lu0open1正常? */
{ /* no ---> */
printf( "lu0open1 NG %d, %d \n", rcbp->l_cplt, rcbp->l_errdtl);
return; /* < 異常終了 > */
} /* */
printf( "lu0open1 OK %d \n", rcbp->l_cplt);
status = 1; /* 状態:lu0open1済 */
/*=============================================*/
/* lu0getbマクロ処理 */
/* <<< 送信バッファ獲得 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bfsiz = 12288; /* 獲得サイズ設定 (12K) */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0getb( rcbp ) != NORMAL ) /* lu0getb正常? */
{ /* no ---> */
printf( "lu0getb NG %d, %d \n", rcbp->l_cplt, rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
wbufp = rcbp->l_bufadr; /* バッファアドレス退避 */
printf( "lu0getb OK %d \n", rcbp->l_cplt);
status = 2; /*状態:送信バッファ獲得済 */
/*=============================================*/
/* lu0getbマクロ処理 */
/* <<< 受信バッファ獲得 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bfsiz = 12288; /* 獲得サイズ設定 (12K) */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0getb( rcbp ) != NORMAL ) /* lu0getb正常? */
{ /* no ---> */
printf( "lu0getb NG %d, %d \n", rcbp->l_cplt, rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
rbufp = rcbp->l_bufadr; /* バッファアドレス退避 */
printf( "lu0getb OK %d \n", rcbp->l_cplt);
status = 3; /*状態:受信バッファ獲得済 */
/*=============================================*/
/* lu0cnctマクロ処理 */
/* <<< セション確立 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_mode = LU0CACC; /* ホスト主導型 */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_cpltmd = LU0SYNC; /* 同期型 */
rcbp->l_rbfp = rbufp; /* 受信バッファアドレス */
rcbp->l_time = 60; /* タイマ60秒 */
rcbp->l_amode = CTLCD; /* 送信権獲得制御あり */
rcbp->l_cmd1 = SSCPNTC; /* SSCPデータ通知有 */
rcbp->l_cmd2 = RESPRQT1; /* タイプ1 応答要求 */
rcbp->l_aplmx = 12288; /* 最大利用者データ長12K */
if( lu0cnct( rcbp ) != NORMAL ) /* lu0cnct正常? */
{ /* no ---> */
printf( "lu0cnct NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0cnct OK %d \n", rcbp->l_cplt);
status = 4; /* 状態:セション確立済 */
do {
/*=============================================*/
/* lu0chekマクロ処理 */
/* <<< 受信状態の問い合わせ >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0check( rcbp ) != NORMAL ) /* lu0check正常? */
{ /* no ---> */
printf( "lu0chek NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0chek OK %d \n", rcbp->l_cplt);
if( rcbp->l_cplt == ELU0NRCV ) /* データ受信なし */
{ /* yes ---> */
sleep(1); /* データ受信待ち */
}
} while( rcbp->l_cplt == ELU0NRCV ); /* データ受信待ちループ */
/*=============================================*/
/* lu0readマクロ処理 */
/* <<< データ受信 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_mode = LU0NML; /* 通常のデータ受信 */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_cpltmd = LU0SYNC; /* 同期型 */
rcbp->l_rbfp = rbufp; /* 受信バッファアドレス */
rcbp->l_time = 60; /* タイマ値設定 */
if( lu0read( rcbp ) != NORMAL ) /* lu0read 正常? */
{ /* */
printf( "lu0read NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* no ---> 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0read OK %d \n", rcbp->l_cplt);
/*=============================================*/
/* lu0writeマクロ処理 */
/* <<< データ送信 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_wcmd = L_DATA; /* データ送信指定 */
rcbp->l_cpltmd = LU0SYNC; /* 同期型 */
rcbp->l_wlng = 512; /* 送信データ長設定 */
rcbp->l_wbfp = wbufp; /* 送信バッファアドレス */
rcbp->l_wrmd1 = CD; /* 送信権譲渡 */
for( dc = 0 ; dc < 512 ; dc++) /* A */
{ /* | 送信データ設定 */
wbufp[dc] = 0x31; /* V */
} /* */
if( lu0write( rcbp ) != NORMAL ) /* lu0write正常? */
{ /* no ---> */
printf( "lu0write NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0write OK %d \n", rcbp->l_cplt);
/*=============================================*/
/* 終了処理 */
/*=============================================*/
procend( rcbp, status ); /* 終了処理 */
return;
}
/*====================================================================*
* function name : (2) procend *
* function : プロセス終了処理 *
*====================================================================*/
void
procend
(
struct lu0rb *rcbp,
int status
)
{ /* */
if( status == 4 ) /* セション確立済? */
{ /* yes ---> */
/*=============================================*/
/* lu0discマクロ処理 */
/* <<< セション解放 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_mode = LU0FRC; /* 強制終了 */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_cpltmd = LU0SYNC; /* 同期型 */
if( lu0disc( rcbp ) != NORMAL ) /* lu0disc 正常? */
{ /* no ---> */
printf( "lu0disc NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 1; /* < 異常終了 > */
} else { /*状態:lu0open1済 */
printf( "lu0disc OK %d \n", rcbp->l_cplt);
status = 3; /*状態:受信バッファ獲得済 */
}
}
if( status == 3 ) /* 受信バッファ獲得済? */
{ /* yes ---> */
/*=============================================*/
/* lu0frebマクロ処理 */
/* <<< 受信バッファ解放 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bufadr = rbufp; /* 受信バッファアドレス */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0freb( rcbp ) != NORMAL ) /* lu0freb 正常? */
{ /* no ---> */
printf( "lu0freb NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 1; /* < 異常終了 > */
} else { /*状態:lu0open1済 */
printf( "lu0freb OK %d \n", rcbp->l_cplt);
status = 2; /*状態:送信バッファ獲得済*/
}
}
if( status == 2 ) /* 送信バッファ獲得済? */
{ /* yes ---> */
/*=============================================*/
/* lu0frebマクロ処理 */
/* <<< 送信バッファ解放 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bufadr = wbufp; /* 送信バッファアドレス */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0freb( rcbp ) != NORMAL ) /* lu0freb 正常? */
{ /* no ---> */
printf( "lu0freb NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 1; /* < 異常終了 > */
} else { /*状態:lu0open1済 */
printf( "lu0freb OK %d \n", rcbp->l_cplt);
status = 1; /*状態:lu0open1済 */
}
}
if( status == 1 ) /* lu0open1済? */
{ /* yes ---> */
/*=============================================*/
/* lu0closeマクロ処理 */
/* <<< アプリ登録抹消 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0close( rcbp ) != NORMAL ) /* lu0close 正常? */
{ /* no ---> */
printf( "lu0close NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 0; /*状態:初期状態 */
} else { /* yes --> */
printf( "lu0close OK %d \n", rcbp->l_cplt);
status = 0; /*状態:初期状態 */
}
}
return; /* < 正常終了 > */
} /* */
/*====================================================================*
* アプリケーションプログラム例 2 *
* *
* (1) main : メイン処理(非同期型) *
* (2) comprcv : 完了受信処理 *
* (3) procend : プロセス終了処理 *
* *
*====================================================================*/
#include <sys/types.h>
#include <stdio.h>
#include <memory.h>
#include <errno.h>
#include <fcntl.h>
#include <stropts.h>
#include <poll.h>
#include "lu0.h"
/*---------------------------------------------*/
/* エントリーモジュール */
/*---------------------------------------------*/
void main(int, char **);
int comprcv(struct lu0rb *);
void procend(struct lu0rb *, int);
/*---------------------------------------------*/
/* グローバル変数 */
/*---------------------------------------------*/
char *luname = "lu01"; /* LU名 */
int rcvdfd; /* 受信用パイプfd退避域 */
char *wbufp; /* 送信バッファポインタ */
char *rbufp; /* 受信バッファポインタ */
/*---------------------------------------------*/
/* ローカル定義 */
/*---------------------------------------------*/
#define NORMAL 0 /* マクロ命令復帰値正常 */
/*====================================================================*
* function name : (1) main *
* function : メイン処理(非同期型) *
*====================================================================*/
void
main
(
int argc,
char **argv
)
{
struct lu0rb rcb; /* rcb */
struct lu0rb *rcbp; /* rcbポインタ */
int rtnc; /* 復帰値 */
int status; /* 状態 */
int dc; /* 送信データ作成用 */
/*=============================================*/
/* rcbの初期化 */
/*=============================================*/
rcbp = &rcb; /* rcbアドレス設定 */
/*=============================================*/
/* lu0open1マクロ処理 */
/* <<< アプリ登録 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0open1( rcbp ) != NORMAL ) /* lu0open1正常? */
{ /* no ---> */
printf( "lu0open1 NG %d, %d \n", rcbp->l_cplt, rcbp->l_errdtl);
return; /* < 異常終了 > */
} /* */
rcvdfd = rcbp->l_pipfd; /* 受信用パイプfd退避 */
printf( "lu0open1 OK %d \n", rcbp->l_cplt);
status = 1; /* 状態:lu0open1済 */
/*=============================================*/
/* lu0getbマクロ処理 */
/* <<< 送信バッファ獲得 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bfsiz = 12288; /* 獲得サイズ設定 (12K) */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0getb( rcbp ) != NORMAL ) /* lu0getb正常? */
{ /* no ---> */
printf( "lu0getb NG %d, %d \n", rcbp->l_cplt, rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
wbufp = rcbp->l_bufadr; /* バッファアドレス退避 */
printf( "lu0getb OK %d \n", rcbp->l_cplt);
status = 2; /*状態:送信バッファ獲得済 */
/*=============================================*/
/* lu0getbマクロ処理 */
/* <<< 受信バッファ獲得 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bfsiz = 12288; /* 獲得サイズ設定 (12K) */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0getb( rcbp ) != NORMAL ) /* lu0getb正常? */
{ /* no ---> */
printf( "lu0getb NG %d, %d \n", rcbp->l_cplt, rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
rbufp = rcbp->l_bufadr; /* バッファアドレス退避 */
printf( "lu0getb OK %d \n", rcbp->l_cplt);
status = 3; /*状態:受信バッファ獲得済 */
/*=============================================*/
/* lu0cnctマクロ処理 */
/* <<< セション確立 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_mode = LU0CACC; /* ホスト主導型 */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_cpltmd = LU0ASYN; /* 非同期型完了 */
rcbp->l_rbfp = rbufp; /* 受信バッファアドレス */
rcbp->l_amode = CTLCD; /* 送信権獲得制御あり */
rcbp->l_cmd1 = SSCPNTC; /* SSCPデータ通知有 */
rcbp->l_cmd2 = RESPRQT1; /* タイプ1応答要求 */
rcbp->l_aplmx = 12288; /* 最大利用者データ長12K */
if( lu0cnct( rcbp ) != NORMAL ) /* lu0cnct正常? */
{ /* no ---> */
printf( "lu0cnct NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0cnct OK %d \n", rcbp->l_cplt);
status = 4; /* 状態:セション確立済 */
rtnc = comprcv( rcbp ); /* 完了受信待ち合わせ */
if( rtnc != 0 ) /* 完了受信正常? */
{ /* no ---> */
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
if( rcbp->l_cplt != ELU0OK ) /* lu0cnct正常完了? */
{ /* no ---> */
printf( "lu0rcv(lu0cnct) NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0rcv(lu0cnct) OK %d \n", rcbp->l_cplt);
/*=============================================*/
/* lu0readマクロ処理 */
/* <<< データ受信 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_mode = LU0NML; /* 通常のデータ受信 */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_cpltmd = LU0ASYN; /* 非同期型完了 */
rcbp->l_rbfp = rbufp; /* 受信バッファアドレス */
if( lu0read( rcbp ) != NORMAL ) /* lu0read正常? */
{ /* no ---> */
printf( "lu0read NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0read OK %d \n", rcbp->l_cplt);
rtnc = comprcv( rcbp ); /* 完了受信待ち合わせ */
if( rtnc != 0 ) /* 完了受信正常? */
{ /* no ---> */
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
if( rcbp->l_cplt != ELU0OK ) /* lu0read正常完了? */
{ /* no ---> */
printf( "lu0rcv(lu0read) NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0rcv(lu0read) OK %d \n", rcbp->l_cplt);
/*=============================================*/
/* lu0writeマクロ処理 */
/* <<< データ送信 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_wcmd = L_DATA; /* データ送信指定 */
rcbp->l_cpltmd = LU0ASYN; /* 非同期型完了 */
rcbp->l_wlng = 512; /* 送信データ長設定 */
rcbp->l_wbfp = wbufp; /* 送信バッファアドレス */
rcbp->l_wrmd1 = CD; /* 送信権譲渡 */
for( dc = 0 ; dc < 512 ; dc++) /* A */
{ /* | 送信データ設定 */
wbufp[dc] = 0x31; /* V */
} /* */
if( lu0write( rcbp ) != NORMAL ) /* lu0write正常? */
{ /* no ---> */
printf( "lu0write NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0write OK %d \n", rcbp->l_cplt);
rtnc = comprcv( rcbp ); /* 完了受信待ち合わせ */
if( rtnc != 0 ) /* 完了受信正常? */
{ /* no ---> */
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
if( rcbp->l_cplt != ELU0OK ) /* lu0write正常完了? */
{ /* no ---> */
printf( "lu0rcv(lu0write) NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
procend( rcbp, status ); /* 終了処理 */
return; /* < 異常終了 > */
} /* */
printf( "lu0rcv(lu0write) OK %d \n", rcbp->l_cplt);
/*=============================================*/
/* 終了処理 */
/*=============================================*/
procend( rcbp, status ); /* 終了処理 */
return;
}
/*====================================================================*
* function name : (2) comprcv *
* function : 完了受信処理 *
*====================================================================*/
int
comprcv
(
struct lu0rb *rcbp
)
{
struct pollfd pfd; /* */
int event; /* */
pfd.fd = rcvdfd; /* 受信用パイプfd設定 */
pfd.events = POLLIN; /* */
pfd.revents = 0; /* */
event = poll( &pfd, 1, 30000 ); /* 事象待ち合わせ(30秒) */
if( event == -1 ) /* poll(2)異常復帰 */
{
printf( "poll NG %d \n", errno );
return(-1); /* エラー復帰 */
}
if( event == 0 ) /* poll(2)タイムアウト */
{
printf( "poll timeout \n" );
return(-1); /* エラー復帰 */
}
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
lu0rcv( rcbp );
switch( rcbp->l_cmcode ) /* */
{
case LU0CNCT : return(0); /* lu0cnct完了正常復帰 */
case LU0DISC : return(0); /* lu0disc完了正常復帰 */
case LU0READ : return(0); /* lu0read完了正常復帰 */
case LU0WRITE : return(0); /* lu0write完了正常復帰 */
default : /* その他 */
printf
(
"lu0rcv(%d) NG %d, %d \n",
rcbp->l_cmcode,rcbp->l_cplt,
rcbp->l_errdtl
);
return(-1); /* 異常復帰 */
} /* */
} /* */
/*====================================================================*
* function name : (3) procend *
* function : プロセス終了処理 *
*====================================================================*/
void
procend
(
struct lu0rb *rcbp,
int status
)
{
int rtnc; /* 復帰値 */
if( status == 4 ) /* セション確立済? */
{ /* yes ---> */
/*=============================================*/
/* lu0discマクロ処理 */
/* <<< セション解放 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_mode = LU0FRC; /* 強制終了 */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
rcbp->l_cpltmd = LU0ASYN; /* 非同期型完了 */
if( lu0disc( rcbp ) != NORMAL ) /* lu0disc 正常? */
{ /* no ---> */
printf( "lu0disc NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 1; /*状態:lu0open1済 */
} /* */
else
{ /* yes --> */
printf( "lu0disc OK %d \n", rcbp->l_cplt);
status = 3; /*状態:受信バッファ獲得済 */
}
/*=============================================*/
/* lu0discマクロ命令の完了を待つ */
/*=============================================*/
do
{
rtnc = comprcv( rcbp ); /* 完了受信待ち合わせ */
if( rtnc != 0 ) /* 完了受信正常? */
{ /* no ---> */
status = 1; /*状態:lu0open1済 */
break; /* < 異常終了 > */
} /* */
if( rcbp->l_cmcode != LU0DISC ) /* lu0disc完了? */
{ /* no ---> */
printf
(
"lu0rcv(%d) NG %d, %d \n",
rcbp->l_cmcode,
rcbp->l_cplt,
rcbp->l_errdtl
);
continue; /* 再度待ち合わせる */
} /* */
else if( rcbp->l_cplt != ELU0OK )/* lu0disc 正常完了? */
{ /* no ---> */
printf
(
"lu0rcv(lu0disc) NG %d, %d \n",
rcbp->l_cplt,
rcbp->l_errdtl
);
status = 1; /*状態:lu0open1済 */
} /* */
else /* yes --> */
{
printf( "lu0rcv(lu0disc) OK %d \n", rcbp->l_cplt);
}
} while( rcbp->l_cmcode != LU0DISC );
}
if( status == 3 ) /* 受信バッファ獲得済? */
{ /* yes ---> */
/*=============================================*/
/* lu0frebマクロ処理 */
/* <<< 受信バッファ解放 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bufadr = rbufp; /* 受信バッファアドレス */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0freb( rcbp ) != NORMAL ) /* lu0freb 正常? */
{ /* no ---> */
printf( "lu0freb NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 1; /* < 異常終了 > */
} else { /*状態:lu0open1済 */
printf( "lu0freb OK %d \n", rcbp->l_cplt);
status = 2; /*状態:送信バッファ獲得済*/
}
}
if( status == 2 ) /* 送信バッファ獲得済? */
{ /* yes ---> */
/*=============================================*/
/* lu0frebマクロ処理 */
/* <<< 送信バッファ解放 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
rcbp->l_bufadr = wbufp; /* 送信バッファアドレス */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0freb( rcbp ) != NORMAL ) /* lu0freb 正常? */
{ /* no ---> */
printf( "lu0freb NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 1; /* < 異常終了 > */
} else { /*状態:lu0open1済 */
printf( "lu0freb OK %d \n", rcbp->l_cplt);
status = 1; /*状態:lu0open1済 */
}
}
if( status == 1 ) /* lu0open1済? */
{ /* yes ---> */
/*=============================================*/
/* lu0closeマクロ処理 */
/* <<< アプリ登録抹消 >>> */
/*=============================================*/
memset( rcbp, 0, sizeof(*rcbp) ); /* rcb域クリア */
strcpy( rcbp->l_unit, luname ); /* LU名設定 */
if( lu0close( rcbp ) != NORMAL ) /* lu0close 正常? */
{ /* no ---> */
printf( "lu0close NG %d, %d \n", rcbp->l_cplt,rcbp->l_errdtl);
status = 0; /*状態:初期状態 */
} else { /* yes --> */
printf( "lu0close OK %d \n", rcbp->l_cplt);
status = 0; /*状態:初期状態 */
}
}
return; /* < 正常終了 > */
} /* */
All Rights Reserved, Copyright(C) 富士通株式会社 2004