例外情報は構造体で宣言されます。ユーザ例外を設定する際には、業務処理および各出口関数内で、例外情報の領域を獲得して使用してください。
なお、例外情報を返却する際には、処理結果情報に異常または例外(APFW_RTN_ERROR)、またはリトライ(APFW_RTN_RETRY)を設定してください。
module apfwmod {
interface apfwinf {
long server_apl(
in long param_in, /* INパラメタ */
out long param_out /* OUTパラメタ */
);
};
}; |
int server_apl( int param_in, /* INパラメタ */ int *param_out, /* OUTパラメタ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ); /* 例外情報 */ |
パラメタ | アプリケーション連携実行基盤から | アプリケーション連携実行基盤へ |
|---|---|---|
例外 | - |
|
|
#include "apfwcom.h"
#include "apfw_cdr_lib.h"
#include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */
int
server_apl(
int param_in, /* INパラメタ */
int *param_out, /* OUTパラメタ */
int *rtn, /* 処理結果情報 */
apfwExcept *apfw_env ) /* 例外情報 */
{
int apfw_result = 0; /* アプリケーションの復帰値 */
int data = 100;/* OUTパラメタ */ *param_out = 0; /* 復帰情報 */ apfw_result = 0; *rtn = APFW_RTN_ERROR; /* 処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */
/* 例外情報 */
/* 例外情報のエラーコードに値を設定(値は任意) */
apfw_env->errcode = -1;
/* 例外情報のメッセージに値を設定(値は任意、省略する場合NULLを設定) */
apfw_env->errmessage = apfw_c_alloc(14);
if( apfw_env->errmessage == NULL ){
apfw_env->errcode = -1;
*rtn = APFW_RTN_ERROR; /*処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */
return;
}
strcpy(apfw_env->errmessage, "error message" );
/* 例外情報のデータに値を設定 */
/* (値は任意、省略する場合errdata.vallenに0を、errdata.valにNULLを設定) */
apfw_env->errdata.arealen = 100;
apfw_env->errdata.val = apfw_c_alloc(apfw_env->errdata.arealen);
if( apfw_env->errdata.val == NULL ){
apfw_env->errcode = -1;
*rtn = APFW_RTN_ERROR; /*処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */
return;
}
apfw_env->errdata.vallen = 4;
memcpy(apfw_env->errdata.val, &data, sizeof(int) );
return( apfw_result );
} |