ページの先頭行へ戻る
Interstage Application Server V12.3.0 OLTPサーバ運用ガイド
FUJITSU Software

4.5.3 運用操作API群の使用例

Interstage運用APIは、環境の初期化、回収の間に実行します。環境の初期化が失敗した場合は、回収処理を行う必要はありません。


#include 「ISOP.h」
~
ISOP_CTRL env;
/* 環境の初期化 */
memset( (char *)&env, 0x0, sizeof( ISOP_CTRL ) );
env.request = ISOP_RINIENV;
env.pktvl = ISOP_006;
ISOPenv( (char *)&env );
if( env.result == -1 ){
    /* 異常終了 環境の回収は不要*/
    /* エラー処理 */
}
~
/* 運用APIの実行 */
/* 環境の回収 */
memset( (char *)&env, 0x0, sizeof( ISOP_CTRL ) );
env.request = ISOP_RTRMENV;
env.pktvl = ISOP_006;
ISOPenv( (char *)&env );
if( env.result == -1 ){
    /* 異常終了 */
    /* エラー処理 */
}

ワークユニット名、オブジェクト名通知APIで複数の名前を獲得する場合は、前回復帰した制御表をそのまま指定します。そのまま指定することにより取得済みのワークユニット名、オブジェクト名数がカウントアップされます。全部の名前を取り出した場合、resultは“0”で復帰します。

~
ISOP_LSTWU lstwu;
~
memset( (char *)&lstwu, 0x0, sizeof( ISOP_LSTWU ) );
/* 最初の名前を獲得するための設定 */
lstwu.opctrl.request = ISOP_RLSTWU;
lstwu.opctrl.pktvl = ISOP_006;
lstwu.checknum = 0;
do{ /* このループですべての名前を取り出す */
    ISOPnotify( (char *)&lstwu );
    if( lstwu.opctrl.result == -1 ){
        /* エラー処理 */
        /* ワークユニットが一つも存在しない場合もここで処理する */
        break;
    }
    ~ /* それぞれの処理 */
}while( lstwu.opctrl. result == 1 );

#include 「ISOP.h」
#define DEF_ISOPENV "ISOPenv"
~
ISOP_CTRL env;
void *handle;
void ( *ISOPENV )( char * );
int rtncode;
/* ライブラリのオープン */
handle = dlopen( "/opt/FJSVtd/lib/libistage.so", RTLD_LAZY );
if( handle == NULL ){
    /* 異常終了 */
    /* エラー処理 */
}
/* 関数のアドレス取得 */
ISOPENV = (void (*)(char *))dlsym( handle, DEF_ISOPENV );
if( ISOPENV == NULL ){
    /* 異常終了 */
    /* エラー処理 */
}
/* 環境の初期化 */
memset( (char *)&env, 0x0, sizeof( ISOP_CTRL ) );
env.request = ISOP_RINIENV;
env.pktvl = ISOP_006;
(*ISOPENV)( (char *)&env );
if( env.result == -1 ){
    /* 異常終了 環境の回収は不要*/
    /* エラー処理 */
}
~ /* 運用APIの実行 */
/* 環境の回収 */
memset( (char *)&env, 0x0, sizeof( ISOP_CTRL ) );
env.request = ISOP_RTRMENV;
env.pktvl = ISOP_006;
(*ISOPENV)( (char *)&env );
if( env.result == -1 ){
    /* 異常終了 */
    /* エラー処理 */
}
/* ライブラリのクローズ */
rtncode = dlclose( handle );
if( rtncode != 0 ){
    /* 異常終了 */
    /* エラー処理 */
}

ワークユニット名、オブジェクト名通知APIで複数の名前を獲得する場合は前回復帰した制御表をそのまま指定します。そのまま指定することにより取得済みワークユニット名、オブジェクト名数がカウントアップされます。全部の名前を取り出した場合はresultが0で復帰します。

~
ISOP_LSTWU lstwu;
void ( *ISOPNOTIFY )( char * );
~
memset( (char *)&lstwu, 0x0, sizeof( ISOP_LSTWU ) );
/* 最初の名前を獲得するための設定 */
lstwu.opctrl.request = ISOP_RLSTWU;
lstwu.pktvl = ISOP_006;
lstwu.checknum = 0;
do{ /* このループですべての名前を取り出す */
    (*ISOPNOTIFY)( (char *)&lstwu );
    if( lstwu.result == -1 ){
        /* エラー処理 */
        /* ワークユニットが一つも存在しない場合もここで処理する */
        break;
    }
    ~ /* それぞれの処理 */
}while( lstwu.result == 1 );