標識変数、配列、および構造
標識変数は、特定のホスト変数に関連しています。 それぞれの標識変数は、関連したホスト変数に関する情報を示す短精度整数値を格納します。 標識配列および構造体は、ホスト変数配列および構造体に同じ目的を果たします。
標識変数を使用して、次のアクションを実行できます。
- 関連する出力ホスト変数の値が NULL かどうかを判別するか、 入力ホスト変数の値が NULL であることを示す
- ホスト変数への割り当て時に切り捨てられた文字ストリングの元の長さを判別する
- ホスト変数への割り当て時に、文字の値が変換できなかったことを判別する
- ホスト変数への割り当て時に切り捨てられた時刻値の秒の部分を判別する
- ホスト変数のターゲット列が定義済み DEFAULT 値に設定されることを示すか、またはホスト変数の値が UNASSIGNED であり、ホスト変数がステートメントに現れなかったかのようにターゲット列が扱われることを示す。
標識変数配列および標識構造を使用して、ホスト・データ配列および構造内の個々の項目に対して、これらと同じアクションを実行できます。
変数Xにインジケーター変数を指定した場合、Db2Xの値を取得すると、インジケーター変数に負の値が設定され、Xは更新されません。 Xを使用する前に、プログラムで標識変数を検査してください。 インジケーター変数が負の場合、Xがnullであり、Xの検出値は無関係であることがわかります。 プログラムが変数 X を使用して、NULL 値を列に割り当てるとき、 このプログラムによって標識変数は負の数に設定されなければなりません。 Db2 次に、その列にNULL値を割り当て、Xの値を無視します。
標識変数配列には、一連の短精度整数が含まれ、ホスト・データ配列内の対応する項目に関連する情報を判別するのに役立ちます。 ホスト変数配列にデータを取得する場合、関連するインジケーター配列の値を確認して、各データ項目の処理方法を決定できます。 関連するインジケーター配列の値が負の場合、ホスト変数配列の対応する要素の内容を無視できます。 標識配列の値の意味は、以下のとおりです。
アプリケーションへの出力時に、正常標識変数には以下のような値が含まれています。
- 0
- 標識変数の 0 (ゼロ) または正の値は、最初のホスト ID がこのホスト変数参照の値を提供することを指定します。
- -1
- 値 -1 は、選択された値が NULL 値であることを示します。
- -2
- 標識変数の値 -2 は、数値変換エラー (0 での除算やオーバーフローなど) が発生したことを示します。 または、文字ストリング変換の警告による NULL 結果を示します。
- -3
- 標識変数の値 -3 は、値が返されなかったことを示します。 標識変数の値 -3 も、カーソルの現在行が複数行 FETCH で検出されたホール上にあることによる NULL 結果を示します。
- 正整数
- 標識変数に正整数が含まれる場合、取得された値は切り捨てられています。また、この整数はストリングの元の長さです。
- 正整数
- ホスト変数への割り当て時に時刻が切り捨てられた場合の、時刻の秒の部分です。
Db2への入力時に、通常のインジケーター変数または拡張インジケーター変数に次の値を含められます。
- 0、または正整数
- 非 NULL 値を指定します。 標識変数の 0 (ゼロ) または正の値は、最初のホスト ID がこのホスト変数参照の値を提供することを指定します。
- -1, -2, -3, -4, -6
- NULL 値を指定します。
- -5
- 拡張インジケータ変数が有効になっていない場合、 -5 の値はNULL値を指定します。
- 拡張インジケータ変数が有効になっている場合、 -5 の値はDEFAULT値を指定します。 値 -5 は、このホスト変数のターゲット列がその DEFAULT 値に設定されることを指定します。
- -7
- 拡張インジケータ変数が有効になっていない場合、 -7 の値はNULL値を指定します。
- 拡張インジケータ変数が有効になっている場合、 -7 の値はUNASSIGNEDの値を指定します。 -7 の値は、このホスト変数のターゲット列が、ステートメント内で指定されていないかのように扱われることを指定します。
標識構造 は、指定されたホスト構造をサポートするハーフワード整変数の配列です。 プログラムによって取り出され、ホスト構造に入れられた列の値が NULL になる可能性がある場合、標識構造名をホスト構造名に付加することができます。 この名前を使うと、 Db2ホスト構造内のホスト変数に返される各null値について、プログラムに通知できます。