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 から次の手順を実行します。
コンパイル後に、コマンド プロンプトから次の手順を実行します。
set lib=installDir\lib;%lib% cbllink myapp.obj oesqlebc.libここで、installDir は Visual 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 プログラム ファイルの名前です。
1 つまたは複数の特殊文字が含まれているテーブル名または列名を指定する EXEC SQL 文では、プリプロセッサ エラーを防止するためにそのテーブル名または列名を引用符で囲む必要があります。特殊文字は、128 よりも大きい値を持つ ASCII 文字、または x"80" よりも大きい値を持つ 16 進文字です。
Oracle の ODBC ドライバーを使用しているときに、配列フェッチといくつかのスクロール フェッチで、フェッチ操作間に配列サイズを変更すると不一致が発生することがあります。この問題を克服するには、SQL(NORESULTARRAY) を使用してアプリケーションをビルドします。これを設定した場合、OpenESQL は単一行フェッチを隠れて実行し、この制限を回避します。
現在は、OpenESQL で BEHAVIOR コンパイラ指令が暗黙的に OPTIMIZED に設定されるようになったため、OpenESQL アプリケーションはデフォルトでパフォーマンスの最適化が行われます。旧製品では、BEHAVIOR コンパイラ指令は暗黙的に UNOPTIMIZED に設定されていました。この変更は、プログラムの動作に次のように影響する可能性があります。
EXEC SQL DECLARE cursorname SCROLL LOCK CURSOR FOR…
デフォルトでは、カーソルは順方向で読み取り専用です。これが望ましい動作である場合は、別途の処理なしで SET 文を安全に削除できます。ただし、適切な方法として、デフォルト動作が常に明示的になるように FOR READ ONLY または FOR UPDATE をカーソル宣言に含めるようにすることをお勧めします。Micro Focus では、この解決策をお勧めしていました。
この問題を回避するには、psqlODBC ドライバーの構成オプションを変更することを検討してください。これを行うには、次の手順を使用します。