OpenESQL

埋め込み SQL 文
  • 1 つまたは複数の特殊文字が含まれているテーブル名または列名を指定する EXEC SQL 文では、プリプロセッサ・エラーを防止するためにそのテーブル名または列名を引用符で囲む必要があります。特殊文字は、128 よりも大きい値を持つ ASCII 文字、または x"80" よりも大きい値を持つ 16 進文字です。
JDBC
  • Microsoft SQL Server の統合認証を Enterprise Developer で直接有効にすることはできません。Microsoft SQL Server の統合認証を使用する場合は、JDBC ドライバの .jar ファイルを Eclipse プロジェクトの Java ビルド・パス または CLASSPATH に直接追加してから、ネイティブ・ライブラリの場所を設定してください。
  • 次のシナリオでは、ストアド・プロシージャ呼び出しのカーソルを閉じるときに、COBOL コンパイラが出力ホスト変数の更新に失敗する可能性があります。この問題は、ストアド・プロシージャが次の 3 つの条件をすべて満たしている場合に発生します。
    • OPEN 文を使用して呼び出されている
    • 戻り値、出力パラメータ、またはその両方を返す
    • 結果セットを返す

    この失敗は、COBOL コンパイラが (可能な場合) 01 レベル・フィールドとその下位の 01 レベル FILLER フィールドを JVM タイプとしてコンパイルするために起こります。

    正常なコンパイルを保証するには、オブジェクト・タイプ (string、binary-long、BigDecimal など) ではなく従来の COBOL データ・タイプ (PIC X(n)、COMP-3 など) をホスト変数に使用して、次のいずれかを行います。

    • NOILNATIVE COBOL コンパイラ指令を使用してコンパイルする
    • FILLER 以外のレコード名を使用して、レベル 02 以上で戻り値または出力パラメータを受信するホスト変数を宣言する

    このシナリオは、CALL 文を使用して呼び出されたストアド・プロシージャには適用されません。

ODBC
  • Oracle の ODBC ドライバを使用した場合、フェッチ間で配列サイズを変更すると、配列フェッチと一部のスクロール・フェッチに不正な動作が生じる可能性があります。この問題を克服するには、SQL(NORESULTARRAY) を使用してアプリケーションをビルドします。これを設定した場合、OpenESQL は単一行フェッチを隠れて実行し、この制限を回避します。
コンパイル
  • CHECK または DB コンパイラ指令オプションを指定して、64 ビットのデータ・ソース名 (Data Source Name; DSN) を 32 ビット・プラットフォームに使用する OpenESQL アプリケーションをコンパイルするには、64 ビット DSN と同じ名前の 32 ビット DSN を明示的に作成する必要があります。これを行うには、ODBC Data Source Administrator (32 ビット) または ADO.NET 接続エディタを使用します。実行プロセスは、引き続き 64 ビット DSN を使用します。これは、Windows 環境 (ローカル開発) にのみ適用されます。
ランタイム
  • 現在、OpenESQL アプリケーションはデフォルトでパフォーマンスの最適化が行われ、OpenESQL は BEHAVIOR コンパイラ指令を暗黙的に MAINFRAME に設定します。旧製品では、BEHAVIOR コンパイラ指令は暗黙的に UNOPTIMIZED に設定されていました。この変更は、プログラムの動作に次のように影響する可能性があります。
    • SET SCROLLOPTION または SET CONCURRENCY EXEC SQL 文が含まれているプログラムはコンパイルに失敗します。影響を受けたプログラムについては、次のいずれかの操作を行ってください。
      • コンパイルする前に、BEHAVIOR コンパイラ指令を UNOPTIMIZED に設定します。これは最も単純な解決策ですが、パフォーマンスが低下する可能性があるため、この方法で解決することはお奨めしません。
      • すべての SET SCROLLOPTION および SET CONCURRENCY 文を削除し、必要であれば DECLARE CURSOR 文を変更して、同じ動作になるように適切なパラメータを含めます。例えば、SET SCROLLOPTION 文と同じ動作を引き出すには、次の DECLARE CURSOR 文を使用します。
        EXEC SQL DECLARE cursorname SCROLL LOCK CURSOR FOR…

        デフォルトでは、カーソルは順方向で読み取り専用です。これが望ましい動作である場合は、さらなる操作を必要とせずに SET 文を安全に削除できます。ただし、適切な方法として、デフォルト動作が常に明示的になるように FOR READ ONLY または FOR UPDATE をカーソル宣言に必ず含めることをお奨めします。Micro Focus では、この解決策を推奨していました。

    • MAINFRAME 設定は、未確定カーソルを更新可能にしません。そのため、埋め込み SQL のデフォルト ANSI 標準に従ってカーソルが更新可能であることを予期しているアプリケーションは影響を受けます。この場合は、BEHAVIOR コンパイラ指令オプションを ANSI に設定することをお奨めします。
    • MAINFRAME 設定は、スクロール可能なカーソルを想定していません。そのため、カーソルがスクロール可能であることを予期しているアプリケーションは影響を受けます。この場合は、上記のように DECLARE CURSOR 文を変更して補正することをお奨めします。
    重要: この暗黙動作の変更によって提供されるパフォーマンス向上を利用しない場合は、OpenESQL 構成ユーティリティを使用して、BEHAVIOR コンパイラ指令の暗黙値を UNOPTIMIZED に戻してください。