SQL プリプロセッサー・オプション を指定する場合、オプションのリストは引用符 で囲む必要があります (単一引用符か二重引用符を使用し、同じ種類の引用符で囲む必要があります)。 例えば、DATE(ISO) オプションを指定する場合、PP(SQL(’DATE(ISO)’))と指定する必要があります。
表 7 は、 すべての SQL プリプロセッサー・オプションの省略形 (存在する場合) を、IBM 提供のデフォルト値と共にリストします。この表では、相互排他的なオプションは縦棒 (|) によって分離されています。 また括弧 ([ ]) は、囲まれたオプションが省略可能であることを示しています。
表 7 の後の項で、これらのオプションを アルファベット順に説明しています。
これらの PL/I SQL プリプロセッサー・オプションに加えて、PP(SQL('option-list')) コンパイラー・オプションで DB2 コプロセッサー・オプションを渡すこともできます。 DB2 コプロセッサー・オプションの詳細については、「DB2 Universal Database for z/OS アプリケーション・プログラミングおよび SQL ガイド」を参照してください。
|
SQL プリプロセッサー・オプション |
省略名 |
z/OS のデフォルト値 |
|---|---|---|
|
APOSTSQL | QUOTESQL |
- |
APOSTSQL |
|
ATTACH(TSO | CAF | RRSAF) |
- |
ATTACH(TSO) |
|
CCSID0 | NOCCSID0 |
- |
CCSID0 |
|
CONNECT(2 | 1) |
CT |
CONNECT(2) |
|
DATE(ISO | USA | EUR |
JIS | LOCAL) |
- |
DB2 インストール時の「Application
Programming Defaults Panel 2」のフィールド「DATE FORMAT」の値 |
|
DEC(15 | 31) |
- |
DB2 インストール時の「Application
Programming Defaults Panel 1」のフィールド「DECIMAL ARITHMETIC」の値 |
|
FLOAT(S390 | IEEE) |
- |
FLOAT(S390) |
|
GRAPHIC | NOGRAPHIC |
- |
DB2 インストール時の「Application
Programming Defaults Panel 1」のフィールド「MIXED DATA」の値 |
|
INCONLY | NOINCONLY |
- |
NOINCONLY |
|
LEVEL[(aaaa)] |
L |
- |
|
LOB ( DB2 | PLI ) |
- |
LOB( DB2 ) |
|
NOFOR |
- |
- |
|
ONEPASS | TWOPASS |
ON | TW |
ONEPASS |
|
SCOPE | NOSCOPE |
- |
NOSCOPE |
|
SQL(ALL | DB2) |
- |
SQL(DB2) |
|
SQLFLAG(IBM |
STD[(ssname[,qualifier])]) |
- |
- |
|
STDSQL(NO | YES) |
- |
DB2 インストール時の「Application
Programming Defaults Panel 2」のフィールド「STD SQL LANGUAGE」の値 |
|
TIME(ISO | USA | EUR |
JIS | LOCAL) |
- |
DB2 インストールの「Application
Programming Defaults Panel 2」のフィールド「TIME FORMAT」の値 |
|
VERSION(aaaa | AUTO) |
- |
- |
|
XREF | NOXREF |
- |
NOXREF |
APOSTSQL オプションは、SQL ステートメント内で、アポストロフィ (') をストリング区切り文字として認識し、引用符 (") を SQL エスケープ文字として認識するように指定します。
QUOTESQL オプションは、SQL ステートメント内で、引用符 (") をストリング区切り文字として認識し、アポストロフィ (’) を SQL エスケープ文字として認識するように指定します。
.-APOSTSQL-. >>-+----------+------------------------------------------------>< '-QUOTESQL-'
DB2 プリコンパイラーを使用した、以前の PL/I プログラムとの互換性のためには、APOSTSQL を選択しなければなりません。
APOSTSQL と QUOTESQL は相互排他的なオプションです。
デフォルトは APOSTSQL です。
ATTACH オプションは、アプリケーションが DB2、TSO、CAF、および RRSAF へのアクセスに使用する接続機能を指定します。
.-TSO---. >>-ATTACH--(--+-------+--)------------------------------------->< +-CAF---+ '-RRSAF-'
接続機能をロードする アプリケーションは、ダミーの DSNHLI エントリー・ポイントをコーディングする 代わりに、このオプションを使用して適切な接続機能を指定できます。
デフォルトは ATTACH(TSO) です。
CCSID0 オプションは、PL/I SQL プリプロセッサーによってホスト変数に CCSID 値が割り当てられないことを指定します。
NOCCSID0 オプションは、PL/I SQL プリプロセッサーによってホスト変数に CCSID 値を割り当てることを許可します。
.-CCSID0---. >>-+----------+------------------------------------------------>< '-NOCCSID0-'
ご使用のプログラムが FOR BIT DATA 列を BIT データでないデータ・タイプで更新する場合は、CCSID0 を選択する必要があります。 CCSID0 は、ホスト変数が CCSID に関連しないことを DB2 に示して、割り当てを許可します。そうでなければ、BIT データではない CCSID に関連したホスト変数が FOR BIT DATA 列に割り当てられ、DB2 にエラーが発生します。
DB2 プリコンパイラーを使用した、以前の PL/I プログラムとの互換性のためには CCSID0 を選択しなければなりません。
CCSID0 と NOCCSID0 は相互排他的なオプションです。
デフォルトは CCSID0 です。
CONNECT オプションは、タイプ 1 またはタイプ 2 のどちらの CONNECT ステートメント規則を適用するかを決定します。
.-2-. >>-CONNECT(-+---+-)-------------------------------------------->< '-1-'
省略形: CT
デフォルトは CONNECT(2) です。
このオプションの詳細については、「DB2 SQL 解説書」を参照してください。
DATE オプションは、ロケーション・デフォルトとして指定された形式とは無関係に、日付の出力を常に特定の形式で返すことを指定します。 これらの形式について詳しくは、「DB2 SQL 解説書」を参照してください。
>>-+-----------------------+----------------------------------->< '-DATE--(--+-------+--)-' +-ISO---+ +-USA---+ +-EUR---+ +-JIS---+ '-LOCAL-'
日付出口ルーチンがない場合、LOCAL オプションは使用できません。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 2」のフィールド「DATE FORMAT」の値です。
DEC オプションは、10 進算術演算の最大精度を指定します。
>>-+-------------------+--------------------------------------->< | .-15-. | '-DEC--(--+----+--)-' '-31-'
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 1」のフィールド「DECIMAL ARITHMETIC」の値です。
FLOAT オプションは、浮動小数点ホスト変数の内容を System/390 16 進フォーマットにするか、IEEE フォーマットにするかを決定します。
.-S390-. >>-FLOAT--(--+------+--)--------------------------------------->< '-IEEE-'
この FLOAT オプションが PL/I コンパイラーの DEFAULT(HEXADEC|IEEE) オプション と異なる場合は、エラー・メッセージが出されます。
デフォルトは FLOAT(S390) です。
GRAPHIC オプションは、 ソース・コードが混合データを使用する場合があること、 および X'0E' と X'0F' が EBCDIC データ用の特殊制御文字 (シフトアウト およびシフトイン) であることを指示します。
NOGRAPHIC オプションは、ストリング内で X'0E' および X'0F' を制御文字ではないものとして使用することを許可します。
>>-+-----------+----------------------------------------------->< +-GRAPHIC---+ '-NOGRAPHIC-'
GRAPHIC と NOGRAPHIC は相互排他的なオプションです。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 1」のフィールド「MIXED DATA」の値です。
INCONLY オプションは、SQL プリプロセッサーが EXEC SQL INCLUDE ステートメントのみを処理することを指定します。このオプションが有効になっている場合は、SQL プリプロセッサーによってコードは生成されません。
NOINCONLY オプションは、SQL プリプロセッサーが EXEC SQL INCLUDE ステートメントだけではなく、すべてのステートメントを処理することを指定します。
.-NOINCONLY-. >>-+-----------+----------------------------------------------->< '-INCONLY---'
INCONLY オプションおよび NOINCONLY オプションは同時に指定できません。
また、互換性のため、NOINCONLY がデフォルトです。
LEVEL オプションは、モジュールのレベルを定義します。
>>-+------------------+---------------------------------------->< '-LEVEL-+--------+-' '-(aaaa)-'
省略形: L
サブオプション (aaaa) は省略できます。 作成される整合性トークンはブランクになります。
このオプションは、通常の使用にはお勧めしません。 また、「DSNH CLIST」パネルと「DB2I」パネルは、このオプションを サポートしません。
LOB オプションは、SQL プリプロセッサーによって生成される LOB (ラージ・オブジェクト) DECLARE および DEFINE ステートメントのフォーマットを決定します。
.-DB2-. >>-LOB--(--+-----+--)------------------------------------------>< '-PLI-'
LOB(DB2) を指定すると、生成される LOB DECLARE ステートメントは、DB2 プリコンパイラーが生成する形式と整合性のあるものになります。 Enterprise PL/I V3R7 以降、すべての SQL TYPE 宣言で生成されるコードは、LOCATOR、ROWID、および *LOB_FILE タイプも含め、DB2 プリコンパイラーの出力とも整合性を持つことになります。 DB2 プリコンパイラーから移行する場合は、このオプションを選択してください。
例えば、このオプションを指定すると、以下のステートメントは、
Dcl BLOB_VAR1 Sql Type Is BLOB(32000);
次のように変換されます。
DCL
/*$*$*$
Sql Type Is BLOB(32000)
$*$*$*/
1 BLOB_VAR1,
3 BLOB_VAR1_LENGTH FIXED BIN(31),
3 BLOB_VAR1_DATA CHAR(32000);
LOB(PLI) を指定すると、生成される LOB DEFINE ステートメントは、ワークステーション PL/I コンパイラーが生成する形式と整合性のあるものになります。 メインフレームとワークステーションの両方のプラットフォームで PL/I を使用する場合、プラットフォーム間の整合性を確保するには、このオプションを選択してください。
例えば、このオプションを指定すると、以下のステートメントは、
Dcl BLOB_VAR1 Sql Type Is BLOB(32000);
次のように変換されます。
DEFINE STRUCTURE
1 BLOB$$x,
2 BLOB_VAR1_LENGTH FIXED BIN(31),
2 BLOB_VAR1_DATA,
3 BLOB_VAR1_DATA1(1) CHAR(32000);
DCL BLOB_VAR1 TYPE BLOB$$x ;
デフォルトは LOB(DB2) です。
静的 SQL の場合に NOFOR を使用すると、DECLARE CURSOR ステートメント の FOR UPDATE OF 文節の FOR UPDATE が不要になります。
>>-+-------+--------------------------------------------------->< '-NOFOR-'
NOFOR を使用すると、プログラムは DB2 更新権限のある 列に対して位置決め更新を実行できます。
NOFOR を使用しない場合、プログラムが DB2 更新権限のある 列に対して位置決め更新を行うには、列リストのない FOR UPDATE を DECLARE CURSOR ステートメントに指定する必要があります。 列リストのない FOR UPDATE 文節は、静的または動的の SQL ステートメント に対して設定されます。
NOFOR の使用の有無に関係なく、列リストを付けた FOR UPDATE OF を 指定することによって、更新対象をこの文節に指定した列だけに制限でき、 また更新ロックの獲得を指定できます。
オプション STDSQL(YES) を使用すると、NOFOR が暗黙指定されます。
作成される DBRM が非常に大きい場合は、NOFOR を指定する際に 余分のストレージを用意するか、列リストのない FOR UPDATE 文節を 使用する必要があります。
ONEPASS オプションは、2 つのパスを作成するための余分な処理時間がかからないように、SQL プリプロセッサーが 1 つのパスで処理を行うことを指定します。 ONEPASS オプションを使用する場合、 宣言は SQL 参照の前になければなりません。
TWOPASS オプションは、SQL プリプロセッサーが 2 つのパスで処理を行うことを指定します。 このため、参照の前に宣言がなくても構いません。
.-ONEPASS-. >>-+---------+------------------------------------------------->< '-TWOPASS-'
省略形: ON、TW
ONEPASS と TWOPASS は相互排他的なオプションです。
デフォルトは ONEPASS です。
SCOPE オプションは、ホスト変数参照を解決するとき宣言のスコープに関する PL/I 規則を適用するかどうかを決定します。
.-NOSCOPE-. >>-+---------+------------------------------------------------->< '-SCOPE---'
SCOPE が指定されていると、ホスト変数参照を解決するとき宣言のスコープに関する PL/I 規則が適用されます。 つまり、SQL ステートメント内のホスト変数参照は、あたかも変数が他の PL/I ステートメントで使用されたかのように常に同じ方法で解決されます。
SCOPE オプションを使用する際は、以下の制約事項に注意してください。
NOSCOPE が指定されているときは、各プログラム内ですべてのホスト変数の名前が固有になるようにしてください。 ホスト変数名が 2 回以上宣言された場合は、SQL ステートメント内でのその変数の参照は最初の宣言を使用して解決されます。
デフォルトは NOSCOPE です。
SQL オプションは、DB2 for z/OS によって認識されない SQL ステートメント がソースに含まれているかどうかを指示します。
.-DB2-. >>-SQL--(--+-----+--)------------------------------------------>< '-ALL-'
データベース・サーバーが DB2 for z/OS で ある場合は、SQL(DB2) が推奨されます。
DB2 for z/OS 以外のサーバー上で、DRDA アクセスを使用 して SQL ステートメントを実行するアプリケーション・プログラムの 場合は、SQL(ALL) をお勧めします。
SQL(ALL) を指定すると、SQL ステートメント・プロセッサーは以下のアクションを行います。
デフォルトは SQL(DB2) です。
SQLFLAG オプションは、SQL ステートメントの構文検査に使用する標準を指定します。
>>-+-----------------------------------------------------+----->< '-SQLFLAG--(--+----------------------------------+--)-' +-STD-+--------------------------+-+ | '-(ssname-+------------+-)-' | | '-,qualifier-' | '-IBM------------------------------'
ステートメントが標準に準拠していない場合、SQL ステートメント・ プロセッサーは、出力リストに通知メッセージ (フラグ) を書き込みます。SQLFLAG オプションは、SQL や STDSQL など、他の SQL ステートメント・ プロセッサー・オプションからは独立しています。
STDSQL オプションは、出力ステートメントが準拠する必要がある規則を指示します。
>>-+-----------------------+----------------------------------->< | .-NO--. | '-STDSQL--(--+-----+--)-' '-YES-'
STDSQL(YES) は、NOFOR オプションを自動的に暗黙指定します。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 2」のフィールド「STD SQL LANGUAGE」の値です。
TIME オプションは、ロケーション・デフォルトとして指定された形式とは無関係に、時刻の出力を常に特定の形式で返すことを指定します。 これらの形式について詳しくは、「DB2 SQL 解説書」を参照してください。
>>-+-----------------------+----------------------------------->< '-TIME--(--+-------+--)-' +-ISO---+ +-USA---+ +-EUR---+ +-JIS---+ '-LOCAL-'
日付出口ルーチンがない場合、LOCAL オプションは使用できません。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 2」のフィールド「TIME FORMAT」の値です。
VERSION オプションは、パッケージ、プログラム、および作成される DBRM のバージョン ID を定義します。
>>-+-------------------------+--------------------------------->< '-VERSION--(--+------+--)-' +-aaaa-+ '-AUTO-'
VERSION を指定すると、SQL ステートメント・プロセッサー はプログラムと DBRM 内にバージョン ID を作成します。 この ID は、ロード・モジュールと DBRM のサイズに影響します。DBRM をプランまたはパッケージにバインドする際に、DB2 は バージョン ID を使用します。
プリコンパイル時にバージョンを指定しない場合、デフォルトのバージョン ID は 空ストリングです。
AUTO を指定すると、SQL ステートメント・プロセッサー は整合性トークンを使用してバージョン ID を生成します。 整合性トークンがタイム・スタンプである場合は、 タイム・スタンプが ISO 文字フォーマットに変換され、バージョン ID として 使用されます。使用されるタイム・スタンプは、System/370 Store Clock 値に基づいています。
DB2 V9 以降のデータベースに対して PL/I プログラムをコンパイルすると、リストに示されたオプションは、次の 2 つのカテゴリーに分けられています。
(NO)XREF オプションは、SQL ステートメントで使用される名前の相互参照テーブルが、コンパイラー・リストに含まれるかどうかを決定します。
.-NOXREF-. >>-+--------+-------------------------------------------------->< '-XREF---'
XREF オプションを指定すると、コンパイラー・リストに、以下の項目を含む相互参照テーブルが組み込まれます。
NOXREF オプションを指定すると、SQL ステートメントで使用される名前の相互参照テーブルは、コンパイラー・リストに組み込まれません。
XREF SQL プリプロセッサー・オプションを使用するには、DB2 for z/OS バージョン 10 以降が必要です。
デフォルトは NOXREF です。