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)”を参照してください。
また、共有ライブラリを利用する場合、“A.6 共有ライブラリを利用するアプリケーションのビルド・実行方法”を参照してください。
COBOLコンパイラは、様々なライブラリのリンク方法を提供しているので、パスやライブラリの指定方法は、使用するコンパイラの仕様に従ってください。
動的プログラム構造を利用してECPGライブラリを利用する場合には、以下に格納されているエントリ情報を複写してください。詳細は、使用するコンパイラの仕様に従ってください。
<Fujitsu Enterprise Postgres クライアント機能のインストールディレクトリ>/share/cobol_entry.info
<Fujitsu Enterprise Postgres クライアント機能のインストールディレクトリ>\share\cobol_entry.info
例
COBOL言語ライブラリを動的リンクするアプリケーションのコンパイル例を説明します。
なお、“<x>”は製品のバージョンを示します。
Linux 64ビット版アプリケーションの場合
cobol -M -o testproc -I/opt/fsepv<x>client64/include -L/opt/fsepv<x>client64/lib -lecpg -lpq testproc.cob
Linux 64ビット版アプリケーションの場合(DT_RUNPATHを設定する場合)
cobol -c -M -o testproc.o -I/opt/fsepv<x>client64/include testproc.cob ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -rpath /opt/fsepv<x>client64/lib --enable-new-dtags -o testproc /usr/lib64/crti.o /usr/lib64/crt1.o /usr/lib64/crtn.o testproc.o -L/opt/fsepv<x>client64/lib -lecpg -lpq -Bdynamic -L/opt/FJSVcbl64/lib -lrcobol -ldl -lc
64ビット版のオペレーティングシステムでコンパイルする例です。
64ビット版アプリケーションの場合
> SET LIB=%ProgramFiles%\Fujitsu\fsepv<x>client64\lib;%LIB% > cobol -I "%ProgramFiles%\Fujitsu\fsepv<x>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<x>client32\lib;%LIB% > cobol32 -I "%ProgramFiles(x86)%\Fujitsu\fsepv<x>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<x>client32\lib;%LIB% > cobol32 -I "%ProgramFiles(x86)%\Fujitsu\fsepv<x>client32\include" -M testproc.cob > link testproc.obj MSVCRT.LIB F3BICIMP.LIB LIBECPG.LIB LIBPQ.LIB /OUT:testproc.exe