OpenESQL

コンパイル

CHECK または DB コンパイラ指令オプションを指定して、64 ビットのデータ ソース名 (Data Source Name; DSN) を 32 ビット プラットフォームに使用する OpenESQL アプリケーションをコンパイルするには、64 ビット DSN と同じ名前の 32 ビット DSN を明示的に作成する必要があります。これを行うには、ODBC Data Source Administrator (32 ビット) を使用します。実行プロセスは、引き続き 64 ビット DSN を使用します。これは、Windows 環境 (ローカル開発) にのみ該当します。

リンク

表示数値型がXXXXXXとして定義されている SQL ホスト変数を含む COBOL コードのコンパイル時に CHARSET(EBCDIC) を使用する場合は、リンク エラーを防止するためにoesqlebcライブラリにリンクする必要があります。

Windows:

リンクを IDE から設定して再コンパイルするか、コンパイル後にコマンド プロンプトから必要なコマンドを実行することができます。

コンパイルまたは再コンパイル前に、IDE から次の手順を実行します。

  1. Team Developer Tree View でプロジェクトを右クリックし、コンテキスト メニューで [Properties] を選択します。
  2. [Micro Focus > Build Configurations > Link] を展開し、[Additional Link Files] をクリックします。
  3. [Add External Files] をクリックします。
  4. installDir\lib (32 ビットの場合) または installDir\lib64 (64 ビットの場合) ディレクトリをブラウズします。ここで、installDirVisual COBOL のインストール場所のパスで、デフォルトでは %ProgramFiles(x86)%\Micro Focus\Enterprise Developer です。
  5. oesqlebc.lib をダブルクリックして選択し、リストに追加して、[OK] をクリックします。

コンパイル後に、コマンド プロンプトから次の手順を実行します。

  1. [Start > All Programs > Micro Focus Visual COBOL > Tools > Visual COBOL Command Prompt] をクリックします。
  2. コマンド プロンプトで、COBOL コードが格納されているディレクトリに切り替えます。
  3. 次のコマンドを連続して入力します。
     set lib=installDir\lib;%lib%
    cbllink myapp.obj oesqlebc.lib
    ここで、installDirVisual COBOL のインストール場所のパスで、デフォルトでは %ProgramFiles(x86)%\Micro Focus\Enterprise Developer です。myapp は COBOL オブジェクト ファイルの名前です。

UNIX:

UNIX/Linux では、シンボルoesqleb2が共有オブジェクト coboesqlebc.so (32 ビット) および coboesqlebc64.so (64 ビット) で定義されています。リンク エラーを解決するには、次のように-d フラグを使用してコンパイルします。

cob -x program.cbl -d {oesqleb2@coboesqlebc.so | oesqleb2@coboesqlebc64.so}

ここで、program.cbl は COBOL プログラム ファイルの名前です。

埋め込み SQL 文

1 つまたは複数の特殊文字が含まれているテーブル名または列名を指定する EXEC SQL 文では、プリプロセッサ エラーを防止するためにそのテーブル名または列名を引用符で囲む必要があります。特殊文字は、128 よりも大きい値を持つ ASCII 文字、または x"80" よりも大きい値を持つ 16 進文字です。

ODBC

Oracle の ODBC ドライバーを使用しているときに、配列フェッチといくつかのスクロールフェッチで、フェッチ操作間に配列サイズを変更すると不一致が発生することがあります。この問題を克服するには、SQL(NORESULTARRAY) を使用してアプリケーションをビルドします。これを設定した場合、OpenESQL は単一行フェッチを隠れて実行し、この制限を回避します。

OpenESQL ODBC ネイティブ ランタイム

現在は、OpenESQL で BEHAVIOR コンパイラ指令が暗黙的に OPTIMIZED に設定されるようになったため、OpenESQL アプリケーションはデフォルトでパフォーマンスの最適化が行われます。旧製品では、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 カーソルの動作とパフォーマンス」を参照してください。

PostgreSQL に関する推奨事項

  • PostgreSQL は、PIC X ホスト変数の NULL の date、time、または timestamp 値を受け付けません。SQL で CAST(:hostvar as TIMESTAMP) を使用するか、アプリケーションで SQL TYPE TIMESTAMP を使用する必要があります。
  • PostgreSQL では、埋め込み NULL 文字は binary 列でのみサポートされ、character 列ではサポートされません。
  • PostgreSQL と ODBC を併用する場合に、呼び出し元アプリケーションに負の SQL コードが返された際は、ODBC ドライバーのデフォルトの動作を変更しない限り、PostgreSQL によってトランザクションが暗黙的に中止されます。この問題を回避するには、psqlODBC ドライバーの構成オプションを次のように変更することを検討してください。
    • [Advanced Options] の 1 ページ目で、[Use Declare/Fetch] をオンにします。
    • [Advanced Options] の 2 ページ目で、[Level of rollback on errors] オプションを [Statement] に設定します。

プログラミング

OpenESQL を使用するプログラムの名前は 30 文字に制限されています。これにより、カーソルを作成元のプログラムに常に正しく関連付けることができます。