ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

16.6.2 例外処理について

業務共通制御の例外情報は構造体で宣言されます。業務共通制御の例外を設定する際には、各業務共通制御内で、例外情報の領域を獲得して使用してください。

なお、例外情報を返却する際には、業務共通制御の復帰値に異常(APFW_CTRL_ERROR)を設定してください。

IDLファイル定義例
module apfwctrlmod {
    interface apfwctrlinf {
        long ctrl_apl(
             inout long ctrl_param,        /* INOUTパラメタ */
        );
    };
};
業務共通制御インタフェース定義例(振分け制御の例)
int
APFW_SET_TARGET(
  int                 *ctrl_param,         /* INパラメタ *//
  apfwControlExcept   *apfw_ctrlenv );       /* 制御の例外情報 */
パラメタの扱い

パラメタ

アプリケーション連携実行基盤から
渡されたパラメタ

アプリケーション連携実行基盤へ
渡すパラメタ

例外

  • 例外情報を設定しない場合
    エラーコードに0を設定してください。

  • 例外情報を設定する場合
    渡された領域をそのまま使用してください。
    例外領域内に任意のバイナリ情報を設定する場合には設定する領域をapfw_c_alloc()で領域を獲得して使用してください。
    なお、獲得した例外領域は業務共通制御実行基盤インタフェースで自動的に解放されます。

    エラーメッセージ文字列には、JIS非漢字およびJIS漢字範囲の文字を使用してください。範囲外の文字を使用した場合は文字コード変換エラーになる場合があります。

業務共通制御の記述例(振分け制御の例)
#include "apfwcom.h"
#include "apfw_cdr_lib.h"
#include "apfwsctrl.h"

#include "APFW_SET_TARGET_apfw.h" /* 業務共通制御実行基盤インタフェース生成ツールより生成されるヘッダファイル */

int
APFW_SET_TARGET(
  int                *ctrl_param,          /* INOUTパラメタ */
  apfwControlExcept  *apfw_ctrlenv )         /* 制御の例外情報 */
{
  int    data = 100;
/* INOUTパラメタ */
  *ctrl_param = 0;

/* 業務共通制御の例外情報 */
  /* 例外情報のエラーコードに値を設定(値は任意) */
  apfw_ctrlenv->errcode = -1;
  /* 例外情報のメッセージに値を設定(値は任意、省略する場合NULLを設定) */
  apfw_ctrlenv->errmessage = apfw_c_alloc(14);
  if( apfw_ctrlenv->errmessage == NULL ){
     apfw_ctrlenv->errcode = -1;
     return APFW_CTRL_ERROR;
  }
  strcpy(apfw_ctrlenv->errmessage, "error message" );
  /* 例外情報のデータに値を設定 */
  /* (値は任意、省略する場合errdata.vallenに0を、errdata.valにNULLを設定) */
  apfw_ctrlenv->errdata.arealen = 100;
  apfw_ctrlenv->errdata.val = apfw_c_alloc(apfw_ctrlenv->errdata.arealen);

  if( apfw_ctrlenv->errdata.val == NULL ){
     apfw_ctrlenv->errcode = -1;
     return APFW_CTRL_ERROR;
  }
  apfw_ctrlenv->errdata.vallen = sizeof(data);
  memcpy(apfw_ctrlenv->errdata.val, &data, sizeof(data) );

  return( APFW_CTRL_ERROR );
}