OpenESQL

JDBC

  • Visual COBOL において、Microsoft SQL Server のための統合認証を直接有効にすることはできません。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 文を使用して呼び出されたストアド プロシージャには適用されません。

OpenESQL JVM Managed Runtime

現在、OpenESQL アプリケーションはデフォルトでパフォーマンスの最適化が行われ、OpenESQL は BEHAVIOR コンパイラ指令を暗黙的に OPTIMIZED に設定します。旧製品では、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 では、この解決策をお勧めしていました。

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