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;   
   ...

  }