DECLARE VARIABLE
DECLARE VARIABLE ステートメントは、ホスト変数に対して、デフォルト値以外のサブタイプまたは CCSID を割り当てるのに使用します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込んで使用します。それ以外の使用法はありません。 このステートメントは、実行可能ステートメントではありません。Java™ および REXX では指定できません。
権限
権限は不要です。
構文
.-,-------------. V | >>-DECLARE----host-variable-+--VARIABLE-------------------------> >--+--------------------+-------------------------------------->< +-+-FOR SBCS DATA--+-+ | +-FOR MIXED DATA-+ | | +-CCSID--integer-+ | | '-FOR BIT DATA---' | '-+-DATE------+------' +-TIME------+ '-TIMESTAMP-'
説明
- host-variable
- 該当のプログラムで定義されている文字、グラフィック、または XML ストリングのホスト変数の名前を指定します。このホスト変数には、標識変数は指定できません。 そのホスト変数の定義は、その変数を参照する DECLARE VARIABLE ステートメントの前でも後でも構いません。
- FOR BIT DATA
- ホスト変数の値が、コード化文字セットに関連付けられていないこと を指定します。したがって、変換は行われません。 FOR BIT DATA が指定されたホスト変数の CCSID は 65535 です。 FOR BIT DATA は、グラフィックまたは XML のホスト変数には指定できません。
- FOR SBCS DATA
- ホスト変数の値に、SBCS (1 バイト文字セット) データが入ることを指定します。 アプリケーション・リクエスターにおけるジョブの CCSID 属性が DBCS 対応でない場合や、ホスト変数の長さが 4 より小さい場合は、FOR SBCS DATA がデフォルト値となります。FOR SBCS DATA の CCSID は、アプリケーション・リクエスターにおけるジョブの CCSID 属性によって決まります。 FOR SBCS DATA は、グラフィックまたは XML のホスト変数には指定できません。
- FOR MIXED DATA
- ホスト変数の値に、SBCS データと DBCS データが両方とも入るように指示します。 アプリケーション・リクエスターにおけるジョブの CCSID 属性が DBCS 対応であり、ホスト変数の長さが 3 より大きい場合は、FOR MIXED DATA がデフォルト値となります。FOR DBCS DATA の CCSID は、アプリケーション・リクエスターにおけるジョブの CCSID 属性によって決まります。FOR MIXED DATA は、グラフィックまたは XML のホスト変数には指定できません。
- CCSID 整数
- ホスト変数の値に、CCSID 整数のデータが入ることを指定します。
この整数が SBCS の CCSID である場合は、ホスト変数は SBCS データです。
この整数が混合データの CCSID である場合は、ホスト変数は混合データです。
文字ホスト変数の場合は、指定する CCSID は SBCS または混合 CCSID でなければなりません。
この変数がグラフィック・ストリング・データ・タイプのものである場合は、 指定する CCSID は、DBCS、UTF-16、または UCS-2 の CCSID でなければなりません。 有効な CCSID のリストについては、CCSID の値の項を参照してください。 UTF-16 または UCS-2 データを表すには、CCSID 1200 または 13488 を指定することを考慮してください。 CCSID が指定されていない場合は、グラフィック・ストリング変数の CCSID は、そのジョブに関連付けられている DBCS CCSID です。
この変数が XML データ・タイプのものである場合は、指定する CCSID は、SBCS、混合 CCSID、または Unicode CCSID でなければなりません。その CCSID は、XML AS データ・タイプとの互換性がある値でなければなりません。CCSID を指定しない場合は、SQL_XML_DATA_CCSID QAQQINI 設定で指定されている CCSID 値が使用されます。詳しくは、XML 値を参照してください。
ファイル参照変数の場合、CCSID はファイル内のデータではなく CCSID のパスおよびファイル名を指定します。
- DATE
- このホスト変数の値に、日付を示すデータが入ることを指定します。
- TIME
- このホスト変数の値に、時刻を示すデータが入ることを指定します。
- TIMESTAMP
- このホスト変数の値に、タイム・スタンプを示すデータが入ることを指定します。
注
配置制限: DECLARE VARIABLE ステートメントは、アプリケーションのうち、 SQL ステートメントが有効であればどの位置にでも指定することができます。 ただし、次のような例外があります。
- ホスト言語が COBOL または RPG の場合は、DECLARE VARIABLE ステートメントは、その DECLARE VARIABLE ステートメントで指定されるホスト変数を参照する SQL ステートメントより前でなければなりません。
- DATE、TIME、または TIMESTAMP を NULL 文字で終了する文字ストリングに対 して C で指定すると、その C 宣言の長さは 1 だけ減らされます。
プリコンパイラー規則: 以下の場合は、プリコンパイル時にエラー・メッセージが出されます。
- 存在しないホスト変数を参照している。
- 数値変数が参照されている。
- 既に参照されている変数を参照している。
- 固有でないホスト変数が参照されている。
- UCS-2 として定義される ILE RPG 変数が参照されている。
- NATIONAL として定義される ILE COBOL 変数が参照されている。
- SQL ステートメントと DECLARE VARIABLE ステートメントが同一のホスト変数を参照しているときに、DECLARE VARIABLE ステートメントの方がその SQL ステートメントより後に置かれている。
- グラフィックまたは XML のホスト変数に関して、FOR BIT DATA、FOR SBCS DATA、または FOR MIXED DATA 文節が指定されている。
- グラフィックのホスト変数に関して、SBCS または混合の CCSID が指定されている。
- 文字ホスト変数に関して、DBCS、UTF-16、または UCS-2 の CCSID が指定されている。
- XML ホスト変数で DBCS CCSID が指定されている。
- DATE、TIME、または TIMESTAMP が文字でないホスト変数に対して指定されている。
- DATE、TIME、または TIMESTAMP に使用されるホスト変数の長さが不足していて、最小の日付、時刻、またはタイム・スタンプの値を指定することができない。
例
この例では、C プログラムの変数 fred および pete を混合データとして、また jean および dave を CCSID が 37 の SBCS データとして宣言しています。
void main ()
{
EXEC SQL BEGIN DECLARE SECTION;
char fred[10];
EXEC SQL DECLARE :fred VARIABLE FOR MIXED DATA;
decimal(6,0) mary;
char pete[4];
EXEC SQL DECLARE :pete VARIABLE FOR MIXED DATA;
char jean[30];
char dave[9];
EXEC SQL DECLARE :jean, :dave VARIABLE CCSID 37;
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA;
...
}