Cプログラムのカスタム・メッセージ関数の定義

C APIでは、APIによって処理される前に、エラー・メッセージをトラップするのに使用できる、カスタム・メッセージ処理関数を提供できます。カスタム・メッセージ処理関数をコーディングして、特定のエラー状態をトラップしたり、プログラム全体にわたりすべてのユーザー・メッセージを同じように処理および表示できます。カスタム・メッセージ関数を提供しない場合は、メッセージ処理はすべて、APIのデフォルトのメッセージ・ハンドラによって処理されます。

プログラムでカスタム・メッセージ関数を定義するには、最初に関数を作成し、EssInit()呼出しの前に、API初期化構造体のフィールドMessageFuncがカスタム関数を参照するように設定します。

カスタム・メッセージ処理関数のコーディング

カスタム・メッセージ処理関数とその引数には任意の名前を付けられますが、宣言する場合には次の形式を使用する必要があります:

      ESS_FUNC_M      CustomMessage (
ESS_PVOID_T     UserContext,     /* user context pointer */
ESS_LONG_T      MessageNumber,   /* Essbase message number */
ESS_USHORT_ T   Level,           /* message level */
ESS_STR_T       LogString,       /* message log string */
ESS_STR_T       MessageString    /* message string */
);
   

このコードでは、フィールドは次のように定義されています:

関数をポイントするようにMessageFuncフィールドを設定

カスタム・メッセージ関数へのポインタは、EssInit()関数に渡される初期化構造体のMessageFuncフィールドに割り当てる必要があります(CのメインAPIの初期化を参照)。

カスタム関数を使用したメッセージ処理のコントロール

カスタム・メッセージ関数が呼び出されてから、Essbaseサーバーがメッセージを戻すか、EssbaseAPIがエラーを戻します。関数が呼び出されると、渡された引数には、そのメッセージのメッセージ番号、メッセージ・レベル、ログ文字列およびエラー文字列が含まれています。各メッセージについて、関数は、これらの引数値を使用して、メッセージを処理するか、無視するか、またはデフォルト処理のためにAPIにそれを戻すかを決めます: