COBOL言語による埋め込みSQLソースファイルの名前には拡張子pcoを付けてください。
pcoファイルをecobpgコマンドでプレコンパイルするとCOBOL言語のソースファイルが作成されるので、COBOLコンパイラを使用してコンパイルしてください。
ecobpg testproc.pco
ecobpgコマンドのオプションにCOBOLコードの記法として、固定形式または可変形式を指定することができます。デフォルトは固定形式となります。
COBOLコードの記法およびオプションの指定方法については、“D.1 機能と操作における注意事項”と“D.12.1 ecobpg”を参照してください。
SQL文に対して、オプティマイザヒントのブロックコメントを指定している場合は、ecobpgコマンドに以下のオプションを指定します。
オプティマイザヒントのブロックコメント(以降、ヒント句と呼びます)を有効にします。本オプションを指定しない場合、ecobpgのプレコンパイルによりヒント句が取り除かれ、ヒント句が無効となります。
ヒント句が指定可能なSQL文は、SELECT、INSERT、UPDATEおよびDELETEです。
ヒント句が指定可能な位置は、SELECT、INSERT、 UPDATE、DELETEまたはWITHのいずれかのキーワードの直後のみです。それ以外の場所に指定した場合は、構文エラーとなります。
EXEC SQL SELECT /*+ IndexScan(prod ix01) */ name_id INTO :name_id FROM prod WHERE id = 1 END-EXEC.
オプティマイザヒントの詳細については、“11.1.1 オプティマイザヒント”を参照してください。
埋め込みSQLのソースファイルのエンコードと、プレコンパイル実行時のロケールが異なる場合は、ecobpgコマンドに以下のオプションを指定して、埋め込みSQLのソースファイルのエンコードを指定します。
エンコードは“UTF8”、“SJIS”、“EUC_JP”のいずれかを設定することができます。
本オプションを省略した場合はロケールで処理します。
ecobpgコマンドはエラーを取り扱うための集団項目sqlca_tを定義しており、以下のパスに格納された登録集ファイルに定義されています。
登録集ファイルの名前 | 登録集ファイルの格納先 |
---|---|
SQLCA-COBOL.cob | <FUJITSU Enterprise Postgresクライアント機能のインストールディレクトリ>/include |
登録集ファイルの名前 | 登録集ファイルの格納先 |
---|---|
SQLCA-COBOL.cob | <FUJITSU Enterprise Postgresクライアント機能のインストールディレクトリ>\include |
ecobpgコマンドはCOBOLファイルを生成するときに、この登録集ファイルを複写するために、オプションを付けないCOPY文を挿入します。そのため、コンパイルするときに登録集ファイルの格納先のパスを指定してください。パスの指定方法は、使用するコンパイラの仕様に従ってください。
なお、拡張子cobが付かない同じ内容の登録集ファイルも用意されています。
参考
sqlca_tの詳細は、“D.7.2 sqlca”を参照してください。
ecobpgによって生成されたアプリケーションは、ECPGのライブラリを介してPostgreSQLに接続します。ECPGのライブラリは、内部でlibpqのライブラリをロードします。
ECPGライブラリの場所と名前は、“6.4.2 アプリケーションのコンパイル”、libpqライブラリの場所と名前は、“第5章 C言語用ライブラリ(libpq)”を参照してください。
COBOLコンパイラは、様々なライブラリのリンク方法を提供しているので、パスやライブラリの指定方法は、使用するコンパイラの仕様に従ってください。
動的プログラム構造を利用してECPGライブラリを利用する場合には、以下のエントリ情報を追記してください。詳細は、使用するコンパイラの仕様に従ってください。
エントリ情報 |
---|
sqlprint=libecpg.so ECOBPGPrepareCall=libecpg.so ECOBPGAddArgInt=libecpg.so ECOBPGset_sqlca=libecpg.so ECOBPGsetcommit_Call=libecpg.so ECOBPGsetconn_Call=libecpg.so ECOBPGconnect_Call=libecpg.so ECOBPGdisconnect_Call=libecpg.so ECOBPGget_desc_header_Call=libecpg.so ECOBPGget_desc_Call=libecpg.so ECOBPGset_desc_header_Call=libecpg.so ECOBPGset_desc_Call=libecpg.so ECOBPGdeallocate_desc_Call=libecpg.so ECOBPGallocate_desc_Call=libecpg.so ECOBPGdescribe_Call=libecpg.so ECOBPGdo_Call=libecpg.so ECOBPGtrans_Call=libecpg.so ECOBPGprepare_Call=libecpg.so ECOBPGdeallocate_Call=libecpg.so ECOBPGdeallocate_all_Call=libecpg.so ECOBPGdeclare_Call=libecpg.so ECOBPGopen_Call=libecpg.so ECOBPGfetch_Call=libecpg.so ECOBPGclose_Call=libecpg.so ECOBPGAddQuery=libecpg.so ECOBPGAddVariable=libecpg.so ECOBPGAddVariableConst=libecpg.so SQLPRINT=libecpg.so ECOBPGPREPARECALL=libecpg.so ECOBPGADDARGINT=libecpg.so ECOBPGSET_SQLCA=libecpg.so ECOBPGSETCOMMIT_CALL=libecpg.so ECOBPGSETCONN_CALL=libecpg.so ECOBPGCONNECT_CALL=libecpg.so ECOBPGDISCONNECT_CALL=libecpg.so ECOBPGGET_DESC_HEADER_CALL=libecpg.so ECOBPGGET_DESC_CALL=libecpg.so ECOBPGSET_DESC_HEADER_CALL=libecpg.so ECOBPGSET_DESC_CALL=libecpg.so ECOBPGDEALLOCATE_DESC_CALL=libecpg.so ECOBPGALLOCATE_DESC_CALL=libecpg.so ECOBPGDESCRIBE_CALL=libecpg.so ECOBPGDO_CALL=libecpg.so ECOBPGTRANS_CALL=libecpg.so ECOBPGPREPARE_CALL=libecpg.so ECOBPGDEALLOCATE_CALL=libecpg.so ECOBPGDEALLOCATE_ALL_CALL=libecpg.so ECOBPGDECLARE_CALL=libecpg.so ECOBPGOPEN_CALL=libecpg.so ECOBPGFETCH_CALL=libecpg.so ECOBPGCLOSE_CALL=libecpg.so ECOBPGADDQUERY=libecpg.so ECOBPGADDVARIABLE=libecpg.so ECOBPGADDVARIABLECONST=libecpg.so |
エントリ情報 |
---|
sqlprint=libecpg.dll ECOBPGPrepareCall=libecpg.dll ECOBPGAddArgInt=libecpg.dll ECOBPGset_sqlca=libecpg.dll ECOBPGsetcommit_Call=libecpg.dll ECOBPGsetconn_Call=libecpg.dll ECOBPGconnect_Call=libecpg.dll ECOBPGdisconnect_Call=libecpg.dll ECOBPGget_desc_header_Call=libecpg.dll ECOBPGget_desc_Call=libecpg.dll ECOBPGset_desc_header_Call=libecpg.dll ECOBPGset_desc_Call=libecpg.dll ECOBPGdeallocate_desc_Call=libecpg.dll ECOBPGallocate_desc_Call=libecpg.dll ECOBPGdescribe_Call=libecpg.dll ECOBPGdo_Call=libecpg.dll ECOBPGtrans_Call=libecpg.dll ECOBPGprepare_Call=libecpg.dll ECOBPGdeallocate_Call=libecpg.dll ECOBPGdeallocate_all_Call=libecpg.dll ECOBPGdeclare_Call=libecpg.dll ECOBPGopen_Call=libecpg.dll ECOBPGfetch_Call=libecpg.dll ECOBPGclose_Call=libecpg.dll ECOBPGAddQuery=libecpg.dll ECOBPGAddVariable=libecpg.dll ECOBPGAddVariableConst=libecpg.dll SQLPRINT=libecpg.dll ECOBPGPREPARECALL=libecpg.dll ECOBPGADDARGINT=libecpg.dll ECOBPGSET_SQLCA=libecpg.dll ECOBPGSETCOMMIT_CALL=libecpg.dll ECOBPGSETCONN_CALL=libecpg.dll ECOBPGCONNECT_CALL=libecpg.dll ECOBPGDISCONNECT_CALL=libecpg.dll ECOBPGGET_DESC_HEADER_CALL=libecpg.dll ECOBPGGET_DESC_CALL=libecpg.dll ECOBPGSET_DESC_HEADER_CALL=libecpg.dll ECOBPGSET_DESC_CALL=libecpg.dll ECOBPGDEALLOCATE_DESC_CALL=libecpg.dll ECOBPGALLOCATE_DESC_CALL=libecpg.dll ECOBPGDESCRIBE_CALL=libecpg.dll ECOBPGDO_CALL=libecpg.dll ECOBPGTRANS_CALL=libecpg.dll ECOBPGPREPARE_CALL=libecpg.dll ECOBPGDEALLOCATE_CALL=libecpg.dll ECOBPGDEALLOCATE_ALL_CALL=libecpg.dll ECOBPGDECLARE_CALL=libecpg.dll ECOBPGOPEN_CALL=libecpg.dll ECOBPGFETCH_CALL=libecpg.dll ECOBPGCLOSE_CALL=libecpg.dll ECOBPGADDQUERY=libecpg.dll ECOBPGADDVARIABLE=libecpg.dll ECOBPGADDVARIABLECONST=libecpg.dll |
例
COBOL言語ライブラリを動的リンクするアプリケーションのコンパイル例を説明します。
なお、“<xy>”は製品のバージョンレベルを示します。
Linux 64ビット版アプリケーションの場合
cobol -M -o testproc -I/opt/fsepv<xy>client64/include -L/opt/fsepv<xy>client64/lib -lecpg -lpq testproc.cob
Linux 32ビット版アプリケーションの場合
cobol -M -o testproc -I/opt/fsepv<xy>client32/include -L/opt/fsepv<xy>client32/lib -lecpg -lpq testproc.cob
Solaris 64ビット版アプリケーションの場合
cobol -M -o testproc -I/opt/fsepv<xy>client64/include -L/opt/fsepv<xy>client64/lib -lecpg -lpq testproc.cob
Solaris 32ビット版アプリケーションの場合
cobol -M -o testproc -I/opt/fsepv<xy>client32/include -L/opt/fsepv<xy>client32/lib -lecpg -lpq testproc.cob
64ビット版のオペレーティングシステムでコンパイルする例です。
64ビット版アプリケーションの場合
> SET LIB=%ProgramFiles%\Fujitsu\fsepv<xy>client64\lib;%LIB% > cobol -I "%ProgramFiles%\Fujitsu\fsepv<xy>client64\include" -M testproc.cob > link testproc.obj F4AGCIMP.LIB LIBCMT.LIB LIBECPG.LIB LIBPQ.LIB /OUT:testproc.exe
32ビット版アプリケーションの場合
[NetCOBOL V10.5以前の場合]
> SET LIB=%ProgramFiles(x86)%\Fujitsu\fsepv<xy>client32\lib;%LIB% > cobol32 -I "%ProgramFiles(x86)%\Fujitsu\fsepv<xy>client32\include" -M testproc.cob > link testproc.obj LIBC.LIB F3BICIMP.LIB LIBECPG.LIB LIBPQ.LIB /OUT:testproc.exe
[NetCOBOL V11.0以降の場合]
> SET LIB=%ProgramFiles(x86)%\Fujitsu\fsepv<xy>client32\lib;%LIB% > cobol32 -I "%ProgramFiles(x86)%\Fujitsu\fsepv<xy>client32\include" -M testproc.cob > link testproc.obj MSVCRT.LIB F3BICIMP.LIB LIBECPG.LIB LIBPQ.LIB /OUT:testproc.exe