Visual BasicのメインAPI共通の問題と解決策

EsbLogin()EsbAutoLogin()EsbGetString()およびEsbListDatabases()などへの呼出しによって、呼出し中のAPI関数が戻りパラメータ内に大量のデータを生成する可能性がある場合、データを受信するための十分なバッファ・スペースを予約したかどうかを確認する必要があります。

表8では、問題の認識と解決をサポートします。

表 8. Visual BasicのメインAPI共通の問題と解決策

問題

解決策

プログラムによって、保護エラーが生成されています。

Visual Basicプログラムを使用して起こった問題であれば、APIに渡されているポインタの宣言済の間接レベルを確認します。

API関数を呼び出すと、ユーザーのプログラムはEssbaseエラーを生成します。

ほとんどのEssbaseエラー・メッセージは説明を必要としません。問題がどこにあるかはかなり明白なはずです。ただし、次に注意すべきよくあるエラーをいくつか示します(%nは、コンテキストに特有の文字列と置換されるメッセージ引数を示します):

  • 「NULLの引数(%1)がESSAPI関数%2に渡されました」。このメッセージは、API関数%2に渡された1つ以上の引数がNULLだったことを示します。%1は、最初のNULL引数の数(1から始まる)を示します。

  • 「ESSAPI関数%1の呼出しシーケンスが無効です」。このメッセージは、別の関数呼出しが必要なときに、API関数(%1)への呼出しを行ったことを示します。たとえば、EsbReport()など、レポート関数を実行している場合は、NULL文字列が戻されるまでEsbGetString()を繰り返し呼び出します。または、EsbCalc()など計算関数を実行している場合、計算が完了したことを戻り値が示すまで、EsbGetProcessState()を呼び出すことにより、繰り返し計算状態を確認します。

  • 「ESSAPI関数%sではローカル演算はできません」。ローカルのコンテキスト・ハンドルを、それを許可しない関数へ渡しました。ログイン・コンテキスト・ハンドルをそのかわりに使用します。

  • 「メッセージ・データベース%sを開けません」。メッセージ・データベースが、プログラムが動作しているマシン上でアクセスできません。Essbaseが予期する場所にメッセージ・データベースがあることを確認してください。Essbaseは、最初にEsbInit()に渡された初期化構造体のMessagePathフィールドを調べます。次に、ARBORMSGPATH環境変数が指定するディレクトリおよびファイル名を調べ、最後に、$ESSBASEPATH\BINディレクトリを調べます。ここで、$ESSBASEPATHは環境変数です。メッセージ・データベースがこれらのディレクトリのいずれでも利用できない場合、Essbaseは実行時にエラー・メッセージを戻します。どの設定をEssbaseが使用するか確認し、その後、指定された場所にメッセージ・データベースがあることを確認します。Essbaseと使用中の製品との統合。を参照してください。

プログラムが確実にAPI関数からEssbaseエラーの戻りコードを受け取っていてもメッセージが表示されないか、または「メッセージ・データベース内のメッセージ#%1に対するメッセージはありません」というメッセージが生成されます。

内部APIエラーにはメッセージを表示できないものがありますが、これは通常、メッセージが発生した際にユーザーのコンテキスト情報が使用できないためです。この場合には、関数から戻されたエラー・コードを書き留めて、ヘッダー・ファイルESSERROR.Hのエラー・メッセージのリストを参照して、対応するメッセージ・テキストを見つけます。