SQL プリプロセッサー・オプション を指定する場合、オプションのリストは引用符 で囲む必要があります (単一引用符か二重引用符を使用し、同じ種類の引用符で囲む必要があります)。 例えば、DATE(ISO) オプションを指定する場合、PP(SQL(’DATE(ISO)’)) と指定する必要があります。
次の構文図は、SQL プリプロセッサーによってサポートされるオプション をすべて示しています。
.-APOSTSQL-. >>---PP----(----SQL----(--'--+----------+-----------------------> '-QUOTESQL-' .-CCSID0---. >--+-------------------------+--+----------+--------------------> | .-TSO---. | '-NOCCSID0-' '-ATTACH--(--+-------+--)-' +-CAF---+ '-RRSAF-' >--+------------------+--+-----------------------+--------------> | .-2-. | '-DATE--(--+-------+--)-' '-CONNECT(-+---+-)-' +-ISO---+ '-1-' +-USA---+ +-EUR---+ +-JIS---+ '-LOCAL-' >--+-------------------+--+-----------------------+-------------> | .-15-. | | .-S390-. | '-DEC--(--+----+--)-' '-FLOAT--(--+------+--)-' '-31-' '-IEEE-' .-NOINCONLY-. .-ONEPASS-. >--+-----------+--+---------+--+------------------+-------------> '-INCONLY---' '-TWOPASS-' '-LEVEL-+--------+-' '-(aaaa)-' .-OPTIONS---. >--+--------------------+--+-------+--+-----------+-------------> | .-DB2-. | '-NOFOR-' '-NOOPTIONS-' '-LOB--(--+-----+--)-' '-PLI-' >--+-----------------------------------------------------+------> '-SQLFLAG--(--+----------------------------------+--)-' +-STD-+--------------------------+-+ | '-(ssname-+------------+-)-' | | '-,qualifier-' | '-IBM------------------------------' >--+-----------------------+--+-----------------------+---------> | .-NO--. | '-TIME--(--+-------+--)-' '-STDSQL--(--+-----+--)-' +-ISO---+ '-YES-' +-USA---+ +-EUR---+ +-JIS---+ '-LOCAL-' >--+--------------------+--+-------------------------+--'--)----> | .-DB2-. | '-VERSION--(--+------+--)-' '-SQL--(--+-----+--)-' +-aaaa-+ '-ALL-' '-AUTO-' >--)-----------------------------------------------------------><
これらの PL/I SQL プリプロセッサー・オプションに加えて、PP(SQL('options')) コンパイラー・オプションに関係する DB2 コプロセッサー・オプションを渡すこともできます。 DB2 コプロセッサー・オプションの詳細については、「DB2 Universal Database for z/OS アプリケーション・プログラミングおよび SQL ガイド」を参照してください。
この表では、相互排他的なオプションは縦棒 (|) によって分離されています。 また括弧 ([ ]) は、囲まれたオプションが省略可能で あることを示しています。
DB2 プリコンパイラーを使用した、以前の PL/I プログラムとの 互換性のためには、APOSTSQL を選択しなければなりません。
APOSTSQL と QUOTESQL は相互排他的なオプションです。
デフォルト設定は APOSTSQL です。
デフォルトは ATTACH(TSO) です。
ご使用のプログラムが FOR BIT DATA 列を BIT データでないデータ・タイプで更新する場合は、CCSID0 を選択する必要があります。 CCSID0 は、ホスト変数が CCSID に関連しないことを DB2 に示して、割り当てを許可します。そうでなければ、BIT データではない CCSID に関連したホスト変数が FOR BIT DATA 列に割り当てられ、DB2 にエラーが発生します。
DB2 プリコンパイラーを使用した、以前の PL/I プログラムとの互換性のためには CCSID0 を選択しなければなりません。
CCSID0 と NOCCSID0 は相互排他的なオプションです。
デフォルト設定は CCSID0 です。
デフォルトは CONNECT(2) です。
このオプションの詳細については、「DB2 SQL 解説書」を参照してください。
CONNECT オプションの省略形は CT です。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 2」のフィールド「DATE FORMAT」の値です。
日付出口ルーチンがない場合、LOCAL オプションは使用できません。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 1」のフィールド「DECIMAL ARITHMETIC」の値です。
デフォルト設定は FLOAT(S390) です。
GRAPHIC と NOGRAPHIC は相互排他的なオプションです。 デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 1」のフィールド「MIXED DATA」の値です。
サブオプション (aaaa) は省略できます。 作成される整合性トークンはブランクになります。
LEVEL オプションの省略形は L です。
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) です。
ご使用のプログラムが FOR BIT DATA 列を BIT データでないデータ・タイプで更新する場合は、CCSID0 を選択する必要があります。 CCSID0 は、ホスト変数が CCSID に関連しないことを DB2 に示して、割り当てを許可します。そうでなければ、BIT データではない CCSID に関連したホスト変数が FOR BIT DATA 列に割り当てられ、DB2 にエラーが発生します。
DB2 プリコンパイラーを使用した、以前の PL/I プログラムとの互換性のためには CCSID0 を選択しなければなりません。
NOCCSID0 と CCSID0 は相互排他的なオプションです。
デフォルト設定は CCSID0 です。
NOFOR を使用しない場合、プログラムが DB2 更新権限のある 列に対して位置決め更新を行うには、列リストのない FOR UPDATE を DECLARE CURSOR ステートメントに指定する必要があります。 列リストのない FOR UPDATE 文節は、静的または動的の SQL ステートメント に対して設定されます。
NOFOR の使用の有無に関係なく、列リストを付けた FOR UPDATE OF を 指定することによって、更新対象をこの文節に指定した列だけに制限でき、 また更新ロックの獲得を指定できます。
オプション STDSQL(YES) を使用すると、NOFOR が暗黙指定されます。
作成される DBRM が非常に大きい場合は、NOFOR を指定する際に 余分のストレージを用意するか、列リストのない FOR UPDATE 文節を 使用する必要があります。
GRAPHIC と NOGRAPHIC は相互排他的なオプションです。 デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 1」のフィールド「MIXED DATA」の値です。
NOOPTIONS オプションの省略形は NOOPTN です。
ONEPASS と TWOPASS は相互排他的なオプションです。
デフォルトは ONEPASS です。
ONEPASS オプションの省略形は ON です。
デフォルトは OPTIONS です。
OPTIONS オプションの省略形は OPTN です。
DB2 プリコンパイラーを使用した、以前の PL/I プログラムとの互換性のためには、APOSTSQL を選択しなければなりません。
QUOTESQL と APOSTSQL は相互排他的なオプションです。
デフォルト設定は APOSTSQL です。
DB2 for z/OS 以外のサーバー上で、DRDA アクセスを使用 して SQL ステートメントを実行するアプリケーション・プログラムの 場合は、SQL(ALL) をお勧めします。SQL(ALL) は、プログラム内の SQL ステートメント が DB2 for z/OS 用のものとは限らないことを指定します。したがって、SQL ステートメント・プロセッサーは DB2 構文規則 に準拠しないステートメントを受け入れます。SQL ステートメント・プロセッサーは、分散リレーショナル・データベース・ アーキテクチャー (DRDA) 規則に従って SQL ステートメントを解釈し、 処理します。プログラムが通常 ID として IBM SQL 予約語の使用を試みた 場合、SQL ステートメント・プロセッサーは通知メッセージを出します。SQL(ALL) は、SQL ステートメント・プロセッサーの制限に 影響を与えません。
デフォルトの SQL(DB2) を指定すると、SQL ステートメントが解釈され、 構文が DB2 for z/OS による使用に適しているかどうか 検査されます。データベース・サーバーが DB2 for z/OS で ある場合は、SQL(DB2) が推奨されます。
IBM は、SQL ステートメントを IBM SQL バージョン 1 の構文と 突き合わせて検査します。
STD は、SQL ステートメントを 1992 年 ANSI/ISO SQL 標準の エントリー・レベルの構文と突き合わせて検査します。 バージョン 7 より前のリリースでは、オプションとして 86 を使用できます。
ssname は、セマンティクス検査を要求し、 指定の DB2 サブシステム名をカタログへのアクセスに使用します。ssname を指定しない場合、SQL ステートメント・プロセッサー は構文だけを検査します。
qualifier は、フラグに使用する修飾子を指定します。qualifier を指定する場合は、まず ssname を 必ず指定する必要があります。qualifier を指定しない 場合 のデフォルトは、SQL ステートメント・プロセッサーを開始したプロセスの 許可 ID です。
STDSQL(YES) は、プリコンパイルされるソース・プログラム内の SQL ステートメ ントが、SQL 標準の特定規則に準拠する必要があることを指示します。 STDSQL(NO) は、DB2 規則への準拠を指示します。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 2」のフィールド「STD SQL LANGUAGE」の値です。
STDSQL(YES) は、NOFOR オプションを自動的に暗黙指定します。
デフォルトは、DB2 のインストール時に指定した「Application Programming Defaults Panel 2」のフィールド「TIME FORMAT」の値です。
日付出口ルーチンがない場合、LOCAL オプションは使用できません。
ONEPASS と TWOPASS は相互排他的なオプションです。
デフォルトは ONEPASS です。
TWOPASS オプションの省略形は TW です。
プリコンパイル時にバージョンを指定しない場合、デフォルトのバージョン ID は 空ストリングです。AUTO を指定すると、SQL ステートメント・プロセッサー は整合性トークンを使用してバージョン ID を生成します。 整合性トークンがタイム・スタンプである場合は、 タイム・スタンプが ISO 文字フォーマットに変換され、バージョン ID として 使用されます。使用されるタイム・スタンプは、System/370 Store Clock 値に基づいています。
DB2 V9 以降のデータベースに対して PL/I プログラムをコンパイルすると、リストに示されたオプションは、次の 2 つのカテゴリーに分けられています。