ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

20.3.3 コンパイルとリンク

埋め込みSQLが記述されたサーバアプリケーションを、コンパイルおよびリンクする方法について説明します。
詳細については、それぞれのデータベースシステムのマニュアルを参照してください。

20.3.3.1 Symfowareを利用する場合

Symfowareを利用するサーバアプリケーションの、コンパイルおよびリンクの手順について説明します。

■プレコンパイル

サーバアプリケーションがC言語の場合はsqlpcコマンド、COBOLの場合はsqlpcobコマンドを利用して、SQL文が埋め込まれたソースファイルから、コンパイル可能なソースファイルを作成します。

注意

C言語アプリケーションを使用できるのは、同期アプリケーション連携実行基盤だけです。

以下に、サーバアプリケーションを正しく動作させるために最低限必要なオプションについて説明します。そのほかのオプションについては、Symfoware Serverのマニュアルを参照し、サーバアプリケーションに記載するSQLの仕様に合わせて適切に指定してください。

オプション

意味

-v9

64Bitモードで動作させるために指定します。

-T

スレッドモードの場合に指定します。
プロセスモードの場合は指定しません。

オプション

意味

-v9

64Bitモードで動作させるために指定します。

-T

スレッドモードの場合に指定します。
プロセスモードの場合は指定しません。

オプション

意味

-v9

64Bitモードで動作させるために指定します。

-T

必ず指定します。

プレコンパイルの例を以下に示します。

C言語の場合

埋め込みSQLが記載されたソースファイル名:serverapl.sc

sqlpc -T -v9 serverapl.sc

sqlpc -T -v9 serverapl.sc

sqlpc -T -v9 serverapl.sc

COBOLの場合

埋め込みSQLが記載されたソースファイル名:serverapl.scob

sqlpcob -T -v9 serverapl.scob

sqlpcob -T -v9 serverapl.scob

sqlpcob -T -v9 serverapl.scob

注意

sqlpcコマンド、およびsqlpcobコマンドのプレコンパイル時に、-dオプションでSQL文が操作するデータベースを指定できますが、データベースアクセス管理機能を利用する場合には、-dオプションの機能は利用できません。データベースアクセス定義、およびデータベースリソース定義に従って、SQL文の操作が行われます。

■コンパイルとリンク

以下に、埋め込みSQLが記述されたサーバアプリケーションをコンパイルおよびリンクするために必要なオプションを示します。そのほかに必要となるオプションおよび、サーバアプリケーションのコンパイルとリンクの手順については、開発言語に応じて以下を参照してください。

C言語を利用する場合

オプション

意味

-I/opt/FJSVibs/include

インクルードファイルが格納されたパスを指定します。コンパイルする場合に使用します。

-D_REENTRANT

スレッドモードで実行するサーバアプリケーションを、コンパイルする場合に使用します。

-m64

64ビットの出力ファイルを生成するために使用します。

-L/opt/FSUNrdb2b/lib
-L/opt/FJSVibs/lib

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdr
-lpthread
-lsql64drvm

スレッドモードで実行するサーバアプリケーションを、リンクする場合に指定します。

-lapfwcdr_nt
-lsql64drv

プロセスモードで実行するサーバアプリケーションを、リンクする場合に指定します。

オプション

意味

-I/opt/FJSVibs/include

インクルードファイルが格納されたパスを指定します。コンパイルする場合に使用します。

-D_REENTRANT

スレッドモードで実行するサーバアプリケーションを、コンパイルする場合に使用します。

-L/opt/FJSVrdb2b/lib
-L/opt/FJSVibs/lib

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdr
-lpthread
-lsql64drvm

スレッドモードで実行するサーバアプリケーションを、リンクする場合に指定します。

-lapfwcdr_nt
-lsql64drv

プロセスモードで実行するサーバアプリケーションを、リンクする場合に指定します。

使用する統合開発環境に従って、コンパイルおよびリンクを実行してください。コンパイルおよびリンクをする際は以下の値を使用してください。

構成プロパティ

項目

設定値

C/C++

全般

追加のインクルード ディレクトリ

  • [Interstageのインストールディレクトリ]\BAS\include

  • [Symfowareのインストールディレクトリ]\ESQL\INCLUDE

コード生成

使用するランタイム

マルチスレッド(DLL)

構造体メンバのアライメント

8バイト

言語

wchar_tをビルドイン型として扱う

いいえ

詳細

呼び出しの規約

_cdecl

リンク

全般

追加のライブラリ ディレクトリ

  • [Interstageのインストールディレクトリ]\BAS\lib

  • [Symfowareのインストールディレクトリ]\ESQL\LIB

入力

追加の依存ファイル

  • libapfwcdr.lib

  • f3cwdrvm_x64.lib

COBOLを利用する場合

オプション

意味

-I/opt/FJSVibs/copy

COBOL登録集が格納されたパスを指定します。コンパイルする場合に使用します。

-Tm

スレッドモードで実行するサーバアプリケーションを、コンパイルおよびリンクする場合に使用します。

-L/opt/FSUNrdb2b/lib
-L/opt/FJSVibs/lib

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdrcobol
-lsql64drvm
-lpthread

スレッドモードで実行するサーバアプリケーションを、リンクする場合に指定します。

-lapfwcdrcobol_nt
-lsql64drv

プロセスモードで実行するサーバアプリケーションを、リンクする場合に指定します。

オプション

意味

-I/opt/FJSVibs/copy

COBOL登録集が格納されたパスを指定します。コンパイルする場合に使用します。

-Tm

スレッドモードで実行するサーバアプリケーションを、コンパイルおよびリンクする場合に使用します。

-L/opt/FJSVrdb2b/lib
-L/opt/FJSVibs/lib

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdrcobol
-lsql64drvm
-lpthread

スレッドモードで実行するサーバアプリケーションを、リンクする場合に指定します。

-lapfwcdrcobol_nt
-lsql64drv

プロセスモードで実行するサーバアプリケーションを、リンクする場合に指定します。

使用する統合開発環境に従って、以下の値を使用して、コンパイルおよびリンクを実行してください。

COBOL登録集ファイルの格納先フォルダ

  • [Interstageのインストールディレクトリ]\BAS\copy

ライブラリの格納先フォルダ

  • [Interstageのインストールディレクトリ]\BAS\lib\x64

  • [Symfowareのインストールディレクトリ]\ESQL\LIB

ライブラリ

  • libapfwcdrcobol.lib

  • libapfwcblconv.lib

  • f3cwdrvm_x64.lib

翻訳オプション

  • スレッドモードの場合のみ次を指定します。

  • THREAD(MULTI)

20.3.3.2 Oracleを利用する場合

Oracleを利用するサーバアプリケーションの、コンパイルおよびリンクの手順について説明します。

Oracleを利用するサーバアプリケーションのコンパイルおよびリンクには、Oracle Clientが必要です。

■プレコンパイル

サーバアプリケーションがC言語の場合はprocコマンド、COBOLの場合はprocobコマンドを利用して、SQL文が埋め込まれたソースファイルから、コンパイル可能なソースファイルを作成します。

以下に、サーバアプリケーションを正しく動作させるために最低限必要なオプションについて説明します。そのほかのオプションについては、Oracleのマニュアルを参照し、サーバアプリケーションに記載するSQLの仕様に合わせて適切に指定してください。

オプション

意味

Maxliteral

プレコンパイルが展開するソースコードの"定数"の最大長です。
COBOLの場合には必ず160を指定します。

Threads

C言語を利用する場合、スレッドモードの場合には“yes”、プロセスモードの場合は“no”を指定します。
COBOLを利用する場合、必ず“no”を指定します。(注)

注)次の条件の場合には、ワークユニットのスレッド多重度を1で運用する必要があります。

プレコンパイルの例を以下に示します。

C言語の場合

埋め込みSQLが記載されたソースファイル名:serverapl.pc

proc threads=yes mode=ansi include=${ORACLE_HOME}/rdbms/public/ serverapl.pc

備考.${ORACLE_HOME}には、Oracleのホームディレクトリを指定します。

proc threads=yes mode=ansi include=[Oracleのホームディレクトリ]\precomp\public serverapl.pc

備考.[Oracleのホームディレクトリ]には、Oracleのホームディレクトリを指定します。

COBOLの場合

埋め込みSQLが記載されたソースファイル名:serverapl.pcob

procob  maxliteral=160 threads=no mode=ansi serverapl.pcob

procob  maxliteral=160 threads=no comp5=yes mode=ansi serverapl.pcob

procob  maxliteral=160 threads=no mode=ansi serverapl.pcob

注意

プレコンパイル時に、AUTO_CONNECTオプションでSQL文が操作するデータベースを指定できますが、データベースアクセス管理機能を利用する場合には、AUTO_CONNECTオプションの機能は利用できません。データベースアクセス定義、およびデータベースリソース定義に従って、SQL文の操作が行われます。

■コンパイルとリンク

以下に、埋め込みSQLが記述されたサーバアプリケーションを、コンパイルおよびリンクするために必要なオプションを示します。そのほかに必要となるオプションおよび、サーバアプリケーションのコンパイルとリンクの手順については、開発言語に応じて以下を参照してください。

C言語を利用する場合

${ORACLE_HOME}には、Oracleのホームディレクトリを指定します。

オプション

意味

-I/opt/FJSVibs/include

インクルードファイルが格納されたパスを指定します。コンパイルする場合に使用します。

-D_REENTRANT

スレッドモードで実行するサーバアプリケーションを、コンパイルする場合に使用します。

-m64

64ビットの出力ファイルを生成するために使用します。

-L${ORACLE_HOME}/lib
-L/opt/FJSVibs/lib(注)

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdr
-lapfwdbalib
-lclntsh
-lpthread

スレッドモードで実行するサーバアプリケーションを、リンクする場合に使用します。

-lapfwcdr_nt
-lclntsh

プロセスモードで実行するサーバアプリケーションを、リンクする場合に使用します。

注)${ORACLE_HOME}には、Oracleのホームディレクトリを指定します。

オプション

意味

-I/opt/FJSVibs/include

インクルードファイルが格納されたパスを指定します。コンパイルする場合に使用します。

-D_REENTRANT

スレッドモードで実行するサーバアプリケーションを、コンパイルする場合に使用します。

-L${ORACLE_HOME}/lib
-L/opt/FJSVibs/lib(注)

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdr
-lapfwdbalib
-lclntsh
-lpthread

スレッドモードで実行するサーバアプリケーションを、リンクする場合に使用します。

-lapfwcdr_nt
-lclntsh

プロセスモードで実行するサーバアプリケーションを、リンクする場合に使用します。

注)${ORACLE_HOME}には、Oracleのホームディレクトリを指定します。

使用する統合開発環境に従って、コンパイルおよびリンクを実行してください。コンパイルおよびリンクをする際は以下の値を使用してください。

構成プロパティ

項目

設定値

C/C++

全般

追加のインクルード ディレクトリ

  • [Interstageのインストールディレクトリ]\BAS\include

  • [Oracleのホームディレクトリ]\OCI\include

  • [Oracleのホームディレクトリ]\precomp\public

コード生成

使用するランタイム

マルチスレッド(DLL)

構造体メンバのアライメント

8バイト

言語

wchar_tをビルドイン型として扱う

いいえ

詳細

呼び出しの規約

_cdecl

リンク

全般

追加のライブラリ ディレクトリ

  • [Interstageのインストールディレクトリ]\BAS\lib

  • [Oracleのホームディレクトリ]\OCI\lib\MSVC

  • [Oracleのホームディレクトリ]\precomp\LIB

入力

追加の依存ファイル

  • libapfwcdr.lib

  • libapfwdbalib.lib

  • oci.lib

また、Oracleのバージョンに応じて以下を追加してください。

  • Oracle11gの場合

    • orasql11.lib

COBOLを利用する場合

オプション

意味

-I/opt/FJSVibs/copy

COBOL登録集が格納されたパスを指定します。コンパイルする場合に使用します。

-Tm

スレッドモードで実行するサーバアプリケーションを、コンパイルおよびリンクする場合に使用します。

-L${ORACLE_HOME}/lib
-L/opt/FJSVibs/lib(注)

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdrcobol
-lclntsh
-lpthread
${ORACLE_HOME}/precomp/lib/cobsqlintf.o

スレッドモードで実行するサーバアプリケーションを、リンクする場合に使用します。

-lapfwcdrcobol_nt
-lclntsh
${ORACLE_HOME}/precomp/lib/cobsqlintf.o

プロセスモードで実行するサーバアプリケーションを、リンクする場合に使用します。

注)${ORACLE_HOME}には、Oracleのホームディレクトリを指定します。

オプション

意味

-I/opt/FJSVibs/copy

COBOL登録集が格納されたパスを指定します。コンパイルする場合に使用します。

-Tm

スレッドモードで実行するサーバアプリケーションを、コンパイルおよびリンクする場合に使用します。

-L${ORACLE_HOME}/lib
-L/opt/FJSVibs/lib(注)

ライブラリが格納されたパスを指定します。リンクする場合に使用します。

-lapfwcdrcobol
-lclntsh
-lpthread
${ORACLE_HOME}/precomp/lib/cobsqlintf.o

スレッドモードで実行するサーバアプリケーションを、リンクする場合に使用します。

-lapfwcdrcobol_nt
-lclntsh
${ORACLE_HOME}/precomp/lib/cobsqlintf.o

プロセスモードで実行するサーバアプリケーションを、リンクする場合に使用します。

注)${ORACLE_HOME}には、Oracleのホームディレクトリを指定します。

使用する統合開発環境に従って、以下の値を使用して、コンパイルおよびリンクを実行してください。

COBOL登録集ファイルの格納先フォルダ

  • [Interstageのインストールディレクトリ]\BAS\copy

  • [Oracleのホームディレクトリ]\OCI\include

  • [Oracleのホームディレクトリ]\precomp\public

ライブラリの格納先フォルダ

  • [Interstageのインストールディレクトリ]\BAS\lib\x64

  • [Oracleのホームディレクトリ]\OCI\lib\MSVC

  • [Oracleのホームディレクトリ]\precomp\LIB\

ライブラリ

  • libapfwcdrcobol.lib

  • libapfwcblconv.lib

  • oci.lib

また、Oracleのバージョンに応じて以下を追加してください。

  • Oracle11gの場合

    • orasql11.lib

翻訳オプション

  • THREAD(MULTI)