第5章 アプリケーションのコンパイル・リンク
5.1 UNIX系を使用した場合のアプリケーションのコンパイル・リンク
5.1.2 コンパイル・リンクのための環境設定
表5.1 アプリケーションをコンパイル・リンクする場合に必要な環境変数
環境変数名 意味
LANG(必 須項目)
アプリケーションのロケールを指定します。アプリケーションの言 語や文字コード系に何を使いたいかによってロケールを決めま す。ロケールは具体的には、以下に影響を与えます。
アプリケーションのソースコード アプリケーションの入出力ファイル クライアント用の動作環境ファイル SQLメッセージ(SQLMSG)
SQLメッセージは、以下の環境変数の強度にしたがってロケー ルが決まります。
(強い)LC_ALL > LC_MESSAGE > LANG(弱い)
Symfoware/RDBは、ロケールの言語がjaで始まる場合は日本語 のメッセージを出力し、それ以外のロケール(Cロケールなど)の 場合は英語でメッセージを出力します。
環境変数“LANG”の設定の例を以下に示します。
[Cシェルの場合]
setenv LANG ja
[bash、Bシェル、Kシェルの場合] LANG=ja; export LANG
アプリケーションのロケールと文字コード系の関係を示します。
表5.2 アプリケーションのロケールと文字コード系の関係
対象OS 文字コード系 ロケールSolaris EUCコード ja
シフトJISコード ja_JP.PCK
UNICODE ja_JP.UTF-8
Linux UNICODE ja_JP.UTF-8
備考) メッセージを英語で出力したい場合は、ロケールにCを指定してください。その際の文字コード系の指定について は、“2.5.1 文字コード系の決定”を参照してください。
アプリケーションをコンパイルするときに必要に応じて設定する環境変数を以下に示します。これらの環境変数を設定し ておくことにより、コンパイル時にsqlcc、sqlfccまたはsqlcobolでオプションを指定する必要がなくなります。
表5.3 アプリケーションをコンパイル・リンクする場合に必要に応じて設定する環境変数
環境変数名 意味
RDBDB
アプリケーションで指定するデータベース名を指定します。
環境変数“RDBDB”の設定の例を以下に示します。
[Cシェルの場合] setenv RDBDB DB1
[bash、Bシェル、Kシェルの場合]
RDBDB=DB1; export RDBDB SQLPC
(Cプログラ ム時)
コンパイル時の起動オプションを指定します。起動オプションに は、以下のものがあります。
・
-I:インクルードファイルのディレクトリ環境変数名 意味
・
-d:データベース名・
-R:SQL文の予約語をSQL88でコンパイルする場合に指定・
-W:SQL文の予約語の種別を指定-
-W95:プロシジャルーチン(条件宣言、ハンドラ宣言、SIGNAL文およびRESIGNAL文は除く)を利用する場合に 指定
-
-W96:プロシジャルーチン(条件宣言、ハンドラ宣言、SIGNAL文およびRESIGNAL文は除く)、トリガ、行識別子
または並列指定を利用する場合に指定
-
-W2000:プロシジャルーチン、トリガ、行識別子、並列指定、ロールまたはファンクションルーチンを利用する場合 に指定
・
-C:固定長文字列型のホスト変数に対してアプリケーションの実行時に、NULL文字(¥0)を意識した処理をする場合に指定
・
-v9:64ビットで実行するSQL埋込みCプログラムをコンパイルする場合に指定
・
-T:マルチスレッド環境で動作するまたはセションを操作する関数を利用するSQL埋込みCプログラムをコンパイルする場合 に指定
・
-K:選択リストに“*”を指定したカーソル宣言または単一行SELECT文や、挿入列リストを省略したINSERT文が、アプリ ケーションに記述されていないかチェックする場合に指定 環境変数“SQLPC”の設定の例を以下に示します。
[Cシェルの場合]
setenv SQLPC '-I /sqlapp/include ' [bash、Bシェル、Kシェルの場合]
SQLPC='-I /sqlapp/include '; export SQLPC
SQLPCOB (COBOLプ ログラム時)
コンパイル時の起動オプションを指定します。起動オプションに は、以下のものがあります。
・
-I:インクルードファイルのディレクトリ・
-d:データベース名・
-R:SQL文の予約語をSQL88でコンパイルする場合に指定・
-W:SQL文の予約語の種別を指定-
-W95:プロシジャルーチン(条件宣言、ハンドラ宣言、SIGNAL文およびRESIGNAL文は除く)を利用する場合に 指定
-
-W96:プロシジャルーチン(条件宣言、ハンドラ宣言、SIGNAL文およびRESIGNAL文は除く)、トリガ、行識別子 または並列指定を利用する場合に指定
-
-W2000:プロシジャルーチン、トリガ、行識別子、並列指定、ロールまたはファンクションルーチンを利用する場合 に指定
・
-Z:COBOLソース単位がクラス定義(オブジェクト指向プログラミング機能)の場合に指定
環境変数名 意味
・
-A:SQL埋込みCOBOLプログラム中に単一の引用符を記述する場合に指定
・
-f:SQL埋込みCOBOLプログラムが固定形式の場合に指定・
-n:SQL埋込みCOBOLプログラム中の英小文字を英大文字として扱わない場合に指定
・
-G:SQL埋込みCOBOLプログラム中に集団項目を使用する場合に指定
・
-E1:SQL埋込みCOBOLプログラム中に集団項目繰り返しを使用する場合に指定
・
-g:エラーメッセージにSQL埋込みプログラムの行番号を出力 する場合に指定・
-T:マルチスレッド環境で動作するSQL埋込みCOBOLプログ ラムをコンパイルする場合に指定・
-K:選択リストに“*”を指定したカーソル宣言または単一行SELECT文や、挿入列リストを省略したINSERT文が、アプリ
ケーションに記述されていないかチェックする場合に指定
・
-v9:64ビットで実行するSQL埋込みCOBOLプログラムをコンパイルする場合に指定 Linux
・
-RCS:アプリケーションの文字コード系がUNICODEの場合に、日本語項目の表現形式を指定
-
-RCS BE:日本語項目の表現形式をUCS-2のビッグエンディアン形式とする場合に指定
-
-RCS LE:日本語項目の表現形式をUCS-2のリトルエンディアン形式とする場合に指定
本オプションは、アプリケーションの文字コード系がUNICODEの 場合のみ指定できます。本オプションを省略した場合は、UCS-2 のリトルエンディアン形式でコンパイルします。
環境変数“SQLPCOB”の設定の例を以下に示します。
[Cシェルの場合]
setenv SQLPCOB '-I /sqlapp/include ' [bash、Bシェル、Kシェルの場合]
SQLPCOB='-I /sqlapp/include '; export SQLPCOB
INCDIR
インクルードファイルのディレクトリを指定します。
環境変数“INCDIR”は、アプリケーション中にINCLUDE文を記述 した場合に、Cプログラムの場合は環境変数“SQLPC”と、COBOL プログラムの場合は環境変数“SQLPCOB”と併用して設定できま す。環境変数の指定がない場合は、Cプログラム時は環境変 数“SQLPC”およびコンパイル時のみ有効となり、COBOLプログラ ム時は環境変数“SQLPCOB”およびコンパイル時のみ有効となり ます。
環境変数“INCDIR”の設定の例を以下に示します。
[Cシェルの場合]
setenv INCDIR /sqlapp/include:/splapp2/include:/use/include
環境変数名 意味 [bash、Bシェル、Kシェルの場合]
INCDIR=/sqlapp/include:/splapp2/include:/use/include;
export INCDIR
ただし、環境変数RDBDBを指定した場合、またはSQLPCおよびSQLPCOBでコンパイル時の起動オプションに-dを指定 した場合、そのアプリケーションからCONNECT文を実行することはできません。
アプリケーションをCOBOLで作成する場合は、COBOLプログラムのコンパイルのための環境変数の定義も必要となりま す。
参照
COBOLプ ロ グ ラ ム の コ ン パ イ ル の た め に 必 要 な 環 境 変 数 の 定 義 に つ い て は 、 “Sun日 本 語COBOL使 用 手 引 書”、“NetCOBOL使用手引書”または“COBOL97使用手引書”を参照してください。
作業用のディレクトリ構成
アプリケーションのコンパイル・リンクで参照あるいは作成するファイルを格納するための、作業用のディレクトリ構成を決 めます。ディレクトリ構成は、開発および保守のしやすさを考慮して作成してください。
本章でアプリケーションのコンパイル・リンクの例を示す場合、作業用のディレクトリは以下の構成で作成されているもの とします。