Netcompo アプリケーション会話サービス 2.1 LU6.2会話サービス編 - Solaris -
目次 索引 前ページ

付録B サンプルプログラム

以下に、LU6.2会話サービスを使用するためのプログラム例を"図:Verbインタフェースを使用したプログラム例"に示します。

[図:Verbインタフェースを使用したプログラム例]

/********************************************************************** 
 * sample.c 
 *    Solaris  LU6.2会話サービス 2.0
 *      VERBライブラリ用  サンプルプログラム(ファイル転送)
 *
 *  [ 使い方] 
 *      コマンド  ユニークセション名  自ローカルLU名
 *
 *        作成日:1995 年12月 5日
 **********************************************************************/
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <lu62verb.h> 

#define MAX_DATA_LEN 4096               /*  最大ファイルレコード長      */

main(argc, argv)
int  argc;
char *argv[]; 

{
    int     debug_flag;                 /* DEBUG processing flag        */
    int     name_length;                /* Argument name length         */
    char    name_char;                  /* Argument name character      */
    int     name_flag;                  /* Argument name defined flag   */
    char    snd_fname[128];             /* Send file name               */
    FILE    *snd_fd;                    /* Send file stream pointer     */
                                        /*  自ローカルLU名            */
    char    local_lu_name[MAX_LU_NAME+1];
                                        /* ユニークセション名           */
    char    uniq_sess_name[MAX_UNIQUE_SESS_NAME+1];
    int     end_flag;                   /* 会話終了フラグ               */
    int     err_flag;                   /* 会話異常発生フラグ           */
    u_long  lu_id;                      /* LU識別子                   */
    u_long  conversation_id;            /* 会話識別子                   */
    u_long  listen_id;                  /* listen識別子           */
    u_long  return_code;                /* LU6. 2  バーブ復帰値     */
    int     length;                     /* ユーザデータTEXT長       */
    int     send_length;                /* 送信データ長                 */
    int     request_length;             /* 受信バッファサイズ           */
    int     received_length;            /* 受信データ長通知域           */
    u_char  snd_buf[MAX_DATA_LEN];      /* 送信データTEXTバッファ   */
    u_char  rcv_buf[MAX_DATA_LEN];      /* 受信データTEXTバッファ   */
    u_char  rcv_data_type;              /* 受信データタイプ             */
    u_char  rcv_flag_type;              /* 受信フラグタイプ             */
    int     i, j;                       /* ループカウンタ               */
    int     snd_count;                  /* 送信データカウンタ           */
    int     rcv_count;                  /* 受信データカウンタ           */
    int     conv_id[2];                 /* 会話識別子表示ワ−ク域       */
    int     buff_size;                   /* 受信バッファサイズ           */
    int     key_flag;                   /* 送受信指示キー入力迂回フラグ */
    char    keyin[128];                 /* 送受信指示キー入力域         */

    union {                            /* バーブパラメタブロック共用体 */
        APPC_OPEN     appc_open_p;      /*  appc_open  バーブ          */
        MC_ALLOCATE   mc_allocate_p;    /*  mc_allocate  バーブ        */
        APPC_LISTEN   appc_listen_p;    /*  appc_listen  バーブ        */
        APPC_ACCEPT   appc_accept_p;    /*  appc_accept  バーブ        */
        MC_CONFIRM    mc_confirm_p;     /*  mc_confirm バーブ          */
        MC_CONFIRMED  mc_confirmed_p;   /*  mc_confirmed バーブ        */
        MC_SEND_DATA  mc_send_data_p;   /*  mc_send_data  バーブ      */
                                        /*  mc_receive_and_waitバーブ */
        MC_RECEIVE_AND_WAIT mc_receive_and_wait_p;
                                        /*  mc_request_to_send  バーブ */
        MC_REQUEST_TO_SEND  mc_request_to_send_p;
        MC_DEALLOCATE mc_deallocate_p;  /*  mc_deallocate  バーブ       */
        APPC_CLOSE    appc_close_p;   /*  appc_close バーブ           */
    } parm;

    extern  char    *convert_retcode(u_long);

   /******************************************************************* 
    * コマンドパラメタの解析
    *******************************************************************/
    setbuf(stderr, 0);                  /* print文即時出力の設定        */
    name_flag = 0;                      /* 名前パラメタ検出フラグ初期化 */
    debug_flag = 0;                     /*  デバッグフラグ初期化        */

    if(argc < 3)  {
        fprintf(stderr, 
                "Usage: %s unique_session_name local_lu_name\n", argv[0]); 
        exit(1);
    }

    for(i=1; i<argc; i++) {
        if(argv[i][0] == '-') {
            switch(argv[i][1])  {
            case 'd':                   /*  デバッグ文表示指示          */
                debug_flag = 1; 
                break;
            case 'h':                   /*  コマンド使用法表示指示      */
                fprintf(stderr, 
                        "Usage: %s unique_session_name local_lu_name [-d] \n", 
                        argv[0]); 
                fprintf(stderr, 
                        "       unique_session_name : "
                        "Unique session name in LU6.2 setup \n");
                fprintf(stderr, 
                        "       local_lu_name       : "
                        "Local LU name in VCPE setup\n");
                fprintf(stderr, 
                        "       -d                  : set debugging mode\n");
                exit(1);
            default:                    /*  その他のフラグ−>エラー    */
                fprintf(stderr, 
                        "Usage: %s unique_session_name local_lu_name [-d] \n", 
                        argv[0]); 
                exit(1);
            }
    
        } else if(name_flag == 0)  {
                                 /* Unique-session-name パラメタの解析 */ 
            if( (name_length = strlen(argv[i])) == 0 )  {
                fprintf(stderr, "Unique_session_name length 0 \n");
                exit(1);
            }
            if(name_length > MAX_UNIQUE_SESS_NAME) {
                fprintf(stderr, "Unique_session_name length over %d \n", 
                        MAX_UNIQUE_SESS_NAME);
                exit(1);
            }
            for(j=0; j<name_length; j++)  {
                name_char = (unsigned int)argv[i][j];
                if((isalnum(name_char) == 0) &&
                   (isspecial(name_char) == 0))  {
                    fprintf(stderr, "Unique_session_name contains a " 
                            "invalid character( \'%c \':0x%.2x) \n", 
                            name_char, name_char);
                    exit(1);
                }
            }
            strcpy(uniq_sess_name, argv[i]); 
            name_flag++; 
        } else {                      /* Local-LU-nameパラメタの解析  */
            if( (name_length = strlen(argv[i])) == 0 )  {
                fprintf(stderr, "Local_LU_name length 0 \n");
                exit(1);
            }
            if(name_length > MAX_LU_NAME) {
                fprintf(stderr, "Local_LU_name length over %d \n", MAX_LU_NAME);
                exit(1);
            }
            for(j=0; j<name_length; j++)  {
                name_char = (unsigned int)argv[i][j];
                if(isalnum(name_char) == 0) {
                    fprintf(stderr, "Local_LU_name contains a " 
                            "invalid character( \'%c \':0x%.2x) \n", 
                            name_char, name_char);
                    exit(1);
                }
            }
            strcpy(local_lu_name,argv[i]);
            name_flag++; 
        }
    } /*** Parameter analyze while loop end ***************************/ 
    if(name_flag != 2)  {
        fprintf(stderr, "Usage: %s sym_dest_name local_lu_name\n", argv[0]); 
        exit(1);
    }

    if(debug_flag != 0)  {
        printf("DBG: local_lu_name       = %s \n", local_lu_name);
        printf("DBG: unique_session_name = %s \n", uniq_sess_name);
        printf("DBG: debugging mode      = %d \n", debug_flag);
    }

   /******************************************************************* 
    * 送信ファイルのオープン        
    *******************************************************************/
    while(1)  {
        fprintf(stderr, "Key-in send file name :"); 
        if(scanf("%s", snd_fname) != 1)  {
            fprintf(stderr, "Key-in error.\n");
            continue; 
        }  
        if(strncmp(snd_fname, "/e", 2) == 0) {
            fprintf(stderr, "File transfer end. \n");
            exit(0);
        }
        if ((snd_fd = fopen(snd_fname,"r")) == (FILE *)0) {
            fprintf(stderr, "Fopen error(file=%s, errno=%d) \n", 
                    snd_fname, errno);
            continue; 
        } else {
            break;
        }
    }

   /******************************************************************* 
    * ローカルLU名の設定(appc_openバーブ呼び出し)
    *******************************************************************/
    return_code = OK;
    if(debug_flag != 0)  {
        printf("DBG: Call appc_open()\n");
    }
    memset(&parm.appc_open_p, NULL, sizeof(APPC_OPEN)); 
    strcpy(parm.appc_open_p.local_lu_name, local_lu_name);
    return_code = appc_open(&parm.appc_open_p); 
    if(return_code != OK) {
        printf("appc_open execution failure(return_code:%d:\'%s \')\n", 
               return_code, convert_retcode(return_code)); 
        exit(-1); 
    }
    lu_id = parm.appc_open_p.lu_id; 
    if(debug_flag != 0)  {
        printf("DBG: appc_open() completed.(rtn=%d) \n",return_code);
    }

   /******************************************************************* 
    * 会話の開始(mc_allocateバーブ呼び出し)
    *******************************************************************/
    if(debug_flag != 0)  {
        printf("DBG: Call mc_allocate()\n");
    }
    memset(&parm.mc_allocate_p, NULL, sizeof(MC_ALLOCATE)); 
    parm.mc_allocate_p.lu_id = lu_id; 
    strcpy(parm.mc_allocate_p.unique_session_name, uniq_sess_name);
    parm.mc_allocate_p.tp_name_is_iso = CODE_IS_ASCII;
    strncpy(parm.mc_allocate_p.tp_name, "SAMPLE", MAX_TP_NAME);
    parm.mc_allocate_p.type = WHEN_SESSION_ALLOCATED;
    parm.mc_allocate_p.sync_level = SYNC_CONFIRM;
    return_code = mc_allocate(&parm.mc_allocate_p); 
    if(return_code != OK) {
        printf("mc_allocate execution failure(return_code:%d:\'%s \')\n", 
               return_code, convert_retcode(return_code)); 
        exit(-1); 
    }
    conversation_id = parm.mc_allocate_p.conv_id; 
    if(debug_flag != 0)  {
        printf("DBG: mc_allocate() completed.(rtn=%d) \n",return_code);
    }

   /******************************************************************* 
    * ファイルレコードの送受信繰り返し処理
    *******************************************************************/
    snd_count = 1;
    rcv_count = 1;
    err_flag = 0; 
    end_flag = 0; 
    rcv_data_type = rcv_flag_type = WR_NONE; 
    key_flag = 1; 
    
    while(1)  {
       /*=============================================================* 
        * 送受信続行/停止  キー入力処理
        * [PC停止要求  有無判定]
        *=============================================================*/
        while(key_flag) {
            fprintf(stderr, 
                    "Send & receive data ? ['y'/'n'(=quit)/'l'(=loop)] :"); 
            if(scanf("%s",keyin) != 1)  {
                fprintf(stderr, "Key-in error.\n");
                continue; 
            }  
            if((keyin[0] == 'n')  || (keyin[0] == 'N')  ||
               (keyin[0] == 'q')  || (keyin[0] == 'Q')) {
                fprintf(stderr, "File transfer end. \n");
                end_flag = 1; 
                break;
            }
            else if((keyin[0] == 'y') || (keyin[0] == 'Y')) 
                break;
            else if((keyin[0] == 'l') || (keyin[0] == 'L')) 
                key_flag = 0; 
            else
                continue; 
        }
        if(end_flag == 1)  {
            /*---------------------------------------------*/ 
            /*  会話終了送信処理                            */
            /*  (mc_deallocateバーブ呼び出し)*/
            /*---------------------------------------------*/ 
            if(debug_flag != 0)  {
                printf("DBG: Call mc_deallocate()\n");
            }
            memset(&parm.mc_deallocate_p, NULL, sizeof(MC_DEALLOCATE)); 
            parm.mc_deallocate_p.conv_id = conversation_id; 
            if(err_flag == 1)  {
                if((return_code == DEALLOCATE_ABEND)  ||
                   (return_code == DEALLOCATE_NORMAL))  {
                    parm.mc_deallocate_p.type = SUB_LOCAL;
                } else {
                    parm.mc_deallocate_p.type = SUB_ABEND;
                }
            } else {
                if(rcv_flag_type == WR_CONFIRM_DEALLOCATE) {
                    parm.mc_deallocate_p.type = SUB_LOCAL;
                } else {
                    parm.mc_deallocate_p.type = SUB_CONFIRM;
                }
            }
            return_code = mc_deallocate(&parm.mc_deallocate_p); 
            if(return_code != OK) {
                printf("mc_deallocate execution failure" 
                       "(return_code:%d:\'%s \')\n", 
                        return_code, convert_retcode(return_code)); 
                err_flag = 1; 
                break;
            }
            if(debug_flag != 0)  {
               printf("DBG: mc_deallocate() completed.(rtn=%d) \n",return_code);
            }

            break;
        }
    
       /*=============================================================* 
        * データ送信・送信確認処理
        *=============================================================*/

        /*---------------------------------------*/ 
        /*  ファイルレコード(TEXT)の読込み  */
        /*  [PIPE]                          */
        /*---------------------------------------*/ 
        if((length = fread(snd_buf, 1, MAX_DATA_LEN, snd_fd)) == 0)  {
            if(feof(snd_fd) != 0) {
                fclose( snd_fd ); 
                end_flag = 1; 
                continue; 
            } else {
                printf("Fread error(file=%s,errno=%d) \n", snd_fname, errno);
                err_flag = 1; 
                end_flag = 1; 
                continue; 
            }
        }
        if(debug_flag != 0)  {
            printf("DBG: Fread() completed.(length=%d)\n", length);
        }

        /*-------------------------------------------*/ 
        /*  データ送信                                */
        /*  (mc_send_dataバーブ呼び出し)*/
        /*-------------------------------------------*/ 
        if(debug_flag != 0)  {
            printf("DBG: Call mc_send_data()\n");
        }
        memset(&parm.mc_send_data_p, NULL, sizeof(MC_SEND_DATA)); 
        parm.mc_send_data_p.conv_id = conversation_id; 
        parm.mc_send_data_p.type = SUB_NONE; 
        parm.mc_send_data_p.nbio = BLOCKING;
        parm.mc_send_data_p.length = length;
        parm.mc_send_data_p.data = snd_buf;
        return_code = mc_send_data(&parm.mc_send_data_p); 
        if(return_code != OK) {
            printf("mc_send_data execution failure(return_code:%d:\'%s \')\n", 
                    return_code, convert_retcode(return_code)); 
            err_flag = 1; 
            end_flag = 1; 
            continue; 
        }
        if(debug_flag != 0)  {
            printf("DBG: mc_send_data() completed.(rtn=%d) \n", return_code);
            printf("DBG:     request_to_send_received=%d \n", 
                   parm.mc_send_data_p.request_to_send_received);
        }

        /*-----------------------------------------------*/ 
        /*  送信確認(mc_confirmバーブ呼び出し)*/
        /*-----------------------------------------------*/ 
        if(debug_flag != 0)  {
            printf("DBG: Call mc_confirm() \n");
        }
        memset(&parm.mc_confirm_p, NULL, sizeof(MC_CONFIRM));
        parm.mc_confirm_p.conv_id = conversation_id; 
        return_code = mc_confirm(&parm.mc_confirm_p); 
        if(return_code != OK) {
            printf("mc_confirm execution failure(return_code:%d:\'%s \')\n", 
                    return_code, convert_retcode(return_code)); 
            err_flag = 1; 
            end_flag = 1; 
            continue; 
        }
        if(debug_flag != 0)  {
            printf("DBG: mc_confirm() completed.(rtn=%d)\n", return_code);
            printf("DBG:     request_to_send received=%d\n", 
                   parm.mc_confirm_p.request_to_send_received);
        }

       /*=============================================================* 
        * データ受信・確認応答の送信処理
        * または,会話終了受信処理
        *=============================================================*/
        while(1)  {
            /*------------------------------------------------------*/
            /*  データ受信処理                                       */ 
            /*  (mc_receive_and_waitバーブ呼び出し)*/
            /*      データ・送信確認・会話終了のいずれかを受信       */ 
            /*------------------------------------------------------*/
            if(debug_flag != 0)  {
                printf("DBG: Call mc_receive_and_wait()\n");
            }
            memset(&parm.mc_receive_and_wait_p,
                   NULL, sizeof(MC_RECEIVE_AND_WAIT)); 
            parm.mc_receive_and_wait_p.conv_id = conversation_id; 
            parm.mc_receive_and_wait_p.type = SUB_NONE; 
            parm.mc_receive_and_wait_p.length = MAX_DATA_LEN;
            parm.mc_receive_and_wait_p.data = rcv_buf;
            return_code = mc_receive_and_wait(&parm.mc_receive_and_wait_p); 
            if(return_code != OK) {
                printf("mc_receive_and_wait execution failure" 
                       "(return_code:%d:\'%s \')\n", 
                        return_code, convert_retcode(return_code)); 
                err_flag = 1; 
                end_flag = 1; 
                break;
            }
            rcv_data_type = parm.mc_receive_and_wait_p.what_received_data_type; 
            rcv_flag_type = parm.mc_receive_and_wait_p.what_received_flag_type; 
            if(debug_flag != 0)  {
                printf("DBG: mc_receive_and_wait() completed.(rtn=%d) \n", 
                       return_code);
                printf("DBG:     received data type=%d\n", rcv_data_type);
                printf("DBG:     received length   =%d\n", 
                       parm.mc_receive_and_wait_p.length);
                printf("DBG:     received flag type=%d\n", rcv_flag_type);
                printf("DBG:     request_to_send received=%d\n", 
                       parm.mc_receive_and_wait_p.request_to_send_received);
            }

            /*---------------------------*/ 
            /*  データ受信時の処理        */
            /*---------------------------*/ 
            if(rcv_data_type != WR_NONE) {
                /*+++++++++++++++++++++++++++++++++++++++*/ 
                /*  受信データ(TEXT)をファイルへ格納*/
                /*  [PIPE]                          */
                /*+++++++++++++++++++++++++++++++++++++++*/ 
                /* NOP */ 
            }

            /*--------------------------------*/
            /*  送信確認受信・確認応答送信処理 */ 
            /*--------------------------------*/
            if((rcv_flag_type == WR_CONFIRM)  ||
               (rcv_flag_type == WR_CONFIRM_SEND) ||
               (rcv_flag_type == WR_CONFIRM_DEALLOCATE))  {
                /*+++++++++++++++++++++++++++++++++++++++++++*/ 
                /*  確認応答送信                              */
                /*  (mc_confirmedバーブ呼び出し)*/
                /*+++++++++++++++++++++++++++++++++++++++++++*/ 
                if(debug_flag != 0)  {
                    printf("DBG: Call mc_confirmed() \n");
                }
                memset(&parm.mc_confirmed_p, NULL, sizeof(MC_CONFIRMED));
                parm.mc_confirmed_p.conv_id = conversation_id; 
                return_code = mc_confirmed(&parm.mc_confirmed_p); 
                if(return_code != OK) {
                    printf("mc_confirmed execution failure"
                           "(return_code:%d:\'%s \')\n", 
                            return_code, convert_retcode(return_code)); 
                    err_flag = 1; 
                    end_flag = 1; 
                    break;
                }
                if(debug_flag != 0)  {
                    printf("DBG: mc_confirmed() completed.(rtn=%d)\n", 
                           return_code);
                }
            }

            /*---------------------------*/ 
            /*  送信権受信時の処理        */
            /*    −>データ送信処理へ戻る*/
            /*---------------------------*/ 
            if((rcv_flag_type == WR_SEND) ||
               (rcv_flag_type == WR_CONFIRM_SEND))  {
                end_flag = 0; 
                break;
            }

            /*--------------------------------*/
            /*  会話終了受信時の処理           */ 
            /*--------------------------------*/
            if(rcv_flag_type == WR_CONFIRM_DEALLOCATE) {
                end_flag = 1; 
                break;
            }

            /*--------------------------------------*/
            /*  送信確認処理終了・送信権要求送信処理 */ 
            /*--------------------------------------*/
            if(rcv_flag_type == WR_CONFIRM)  {
                /*++++++++++++++++++++++++++++++++++++++++++++++++++++*/
                /*  送信権要求送信                                     */ 
                /*  (MC_REQUEST_TO_SENDバーブ呼び出し)*/
                /*++++++++++++++++++++++++++++++++++++++++++++++++++++*/
                if(debug_flag != 0)  {
                    printf("DBG: Call mc_request_to_send()\n");
                }
                memset(&parm.mc_request_to_send_p,
                       NULL, sizeof(MC_REQUEST_TO_SEND)); 
                parm.mc_request_to_send_p.conv_id = conversation_id; 
                return_code = mc_request_to_send(&parm.mc_request_to_send_p); 
                if(return_code != OK) {
                    printf("mc_request_to_send execution failure" 
                           "(return_code:%d:\'%s \')\n", 
                            return_code, convert_retcode(return_code)); 
                    err_flag = 1; 
                    end_flag = 1; 
                    break;
                }
                if(debug_flag != 0)  {
                    printf("DBG: mc_request_to_send() completed.(rtn=%d) \n", 
                           return_code);
                }
            }
        } /*** Receive while loop end *********************************/ 
    } /*** Send & Receive while loop end *****************************/
    
   /******************************************************************* 
    * LU資源の解放(appc_closeバーブ呼び出し)
    *******************************************************************/
    if(debug_flag != 0)  {
        printf("DBG: Call appc_close() \n");
    }
    memset(&parm.appc_close_p, NULL, sizeof(APPC_CLOSE));
    parm.appc_close_p.lu_id = lu_id; 
    return_code = appc_close(&parm.appc_close_p); 
    if(return_code != OK) {
        printf("appc_close execution failure(return_code:%d:\'%s \')\n", 
               return_code, convert_retcode(return_code)); 
        err_flag = 1; 
    }
    if(debug_flag != 0)  {
        printf("DBG: appc_close() completed.(rtn=%d)\n", return_code);
    }

   /******************************************************************* 
    * プログラム終了処理
    *******************************************************************/
    fclose(snd_fd);

    printf("File Transfer normal end. \n");

    printf("Program stoped. \n");
    exit(0);
}


/***********************************************************************
 * isspecial : Check a character as special characters
 **********************************************************************/
int isspecial(c)
int     c;
{
static
char special[] =  {'.', '<', '(', '+', '&', '*', ')', ';', ' `', '/', 
                  ',', '%', '_', '>', '?', ':', '=', '"', ' \''}; 
    int  i; 

    for(i=0; i<19; i++) 
        {
        if( c == (unsigned int)special[i])
            return(1);                  /* isspecial() TRUE           */
        }

    return(0);                          /* isspecial() FLASE          */
}

#define MAX_RET 40
/***********************************************************************
 * convert_retcode : Convert return_code to a symbolic character
 **********************************************************************/
char *convert_retcode(return_code) 
u_long return_code; 
{
    int     i;
    static  struct  return_symbol  {
        char    strings[64];
        u_long  ret_value;
    } RET_SYMBOL[] =  {
        {"OK",                               0x00000000}, 
        {"ALLOCATION_FAILURE_NO_RETRY",      0x00040003 }, 
        {"ALLOCATION_FAILURE_CONV_MISM",     0x00040009 }, 
        {"ALLOCATION_FAILURE_SYNC_LEV",      0x0004000A }, 
        {"ALLOCATION_FAILURE_SESSION_LIMIT", 0x0004000E}, 
        {"PROG_ERROR_NO_TRUNC",              0x00050001 }, 
        {"PROG_ERROR_TRUNC",                 0x00050002}, 
        {"PROG_ERROR_PURGING",               0x00050003}, 
        {"INVALID_SUB_VERB_TYPE",            0x00070001}, 
        {"DEALLOCATE_ABEND",                 0x00080001}, 
        {"DEALLOCATE_NORMAL",                0x00080005}, 
        {"PARAMETER_ERROR",                  0x000A0000 }, 
        {"BAD_LU_NAME",                      0x000A0003}, 
        {"BAD_CONV_ID",                      0x000A0008}, 
        {"INVALID_CONV_TYPE",                0x000A0020}, 
        {"SYNC_LEVEL_NOT_SUPPORTED_BY_CONV", 0x000A0032 }, 
        {"BAD_MODE_NAME",                    0x000A0101}, 
        {"BAD_TP_NAME",                      0x000A0102}, 
        {"RESOURCE_FAILURE_NO_RETRY",        0x000E0001 }, 
        {"STATE_CHECK_BAD_STATE",            0x00100001 }, 
        {"UNSUCCESSFUL_RETRY",               0x00110001}, 
        {"FD_FAILURE",                       0x00FF0001}, 
        {"SHM_FAILURE",                      0x00FF0003 }, 
        {"SESSION_DEACTIVATED",              0x00FF0005 }, 
        {"RTR_RECEIVED",                     0x00FF0006 }, 
        {"LU62_DEACTIVATE",                  0x00FF0007}, 
        {"INCONSISTENCY_IN_LU62",            0x00FF0008}, 
        {"SYSTEM_ERROR_NO_RETRY",            0x00FF0009 }, 
        {"WAIT_UNTIL_RTR",                   0x00FF000A}, 
        {"VCP_ERROR_NO_RETRY",               0x00FF000C}, 
        {"VCP_DEACTIVATE",                   0x00FF000D }, 
        {"ENVIRONMENT_ERROR_NO_RETRY",       0x00FF000F}, 
        {"<< Undefined Error >>",            0xFFFFFFFF}
    }; 

    for(i = 0; RET_SYMBOL[i].ret_value != 0xFFFFFFFF; i++) {
        if(return_code == RET_SYMBOL[i].ret_value)  {
            break;
        }
    }

    return(RET_SYMBOL[i].strings); 
}

目次 索引 前ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2002