フィールドの内容の検査: FLD/VERIFY

FLD/VERIFY 呼び出しは、セグメント内の特定のフィールドの 内容をユーザーが指定した値と比較します。 FLD/VERIFY 呼び出しが 2 つの値を比較する方法は、ユーザーが 指定した演算子によって異なります。

フィールドの名前と、比較対象の値を指定する場合には、次のいずれか の方法で比較を行うことができます。

IMS™ は、ユーザーが要求した比較を行った後で、 (PCB に戻す状況コードの他に) 比較の結果を示す状況コードを戻します。

フィールドの名前、およびそのフィールド値と比較したい値は、 フィールド検索引数 (FSA) で指定します。FSA は、IMS が状況コードを戻すときにも使用されます。 FLD 呼び出しを出す前に FSA を入出力域に入れて、呼び出しの中 でその入出力域を参照します (これは、DL/I 呼び出しにおける SSA の 使用法と同じです)。FSA は、データベースからリトリーブしたい情報に関する情報を IMS に提供するために使用される点では、SSA に似ています。ただし、FSA には SSA よりも多くの情報が入ります。次の表では、FSA の構造および形式を示しています。

表 1. FSA 構造
FSA コンポーネント フィールド長
FLD 名 8
SC 1
OP 1
FLD 値 可変
CON 1
FSA には次の 5 つのフィールドがあります。
フィールド名 (FLD 名)
これは、更新するフィールドの名前です。 このフィールドは、DBD で定義されていなければなりません。
状況コード (SC)
これは、IMS がこの FSA の状況コードを戻す場所です。IMS による FSA の処理が正常に行われると、ブランクの状況コードが 戻されます。IMS は、FSA の処理に失敗すると、FSA にブランク以外の状況コードがあることを示すために PCB に FE 状況コードを戻し、ブランク以外の FSA 状況コードを戻します。IMS が FLD/VERIFY 呼び出しでユーザーに戻す可能性のある FSA 状況コードは、以下のとおりです。
B
フィールド値に指定したデータの長さが無効です。またはデータベース内のデータのセグメント長が、DBD で指定したフィールド長を格納するには十分ではありません。
D
検証チェックが正常に行われませんでした。すなわち、ユーザーの照会に対する答は NO です。
E
フィールド値に無効なデータが含まれています。ユーザーがこのフィールドに指定したデータが、このフィールドに関して DBD で 定義されているデータのタイプと異なっています。
H
セグメント内に要求されたフィールドがありません。
演算子 (OP)
これは、2 つの値を比較する方法を IMS に指示します。FLD/VERIFY 呼び出しの場合、次のように指定できます。
E
フィールド内の値が、ユーザーが FSA で指定した値と等しいかどうか検査する。
G
フィールド内の値が、ユーザーが FSA で指定した値よりも大きいかどうか検査する。
H
フィールド内の値が、ユーザーが FSA で指定した値以上かどうか検査する。
L
フィールド内の値が、ユーザーが FSA で指定した値よりも小さいかどうか検査する。
M
フィールド内の値が、ユーザーが FSA で指定した値以下かどうか検査する。
N
フィールド内の値が、ユーザーが FSA で指定した値と等しくないかどうか検査する。
フィールド値 (FLD 値)
この区域には、IMS にセグメント・フィールドの値と比較させる値が入っています。この区域に指定するデータは、FSA の最初のフィールドで名前を指定したフィールド内の データと同じタイプでなければなりません。データのタイプとしては、 16 進数、パック 10 進数、英数字 (あるいは各種のデータ・タイプの 組み合わせ)、2 進数フルワード、および 2 進数ハーフワードの 5 つ があります。この区域内のデータ長は、DBD 内のこの フィールドに対して定義される長さと同じである必要が あります。

例外:

  • 16 進データを処理するときには、FSA 内のデータは 16 進数で なければなりません。すなわち、FSA 内のデータの長さは、このデータベースのフィールド内の データの長さの 2 倍になります。IMS は、16 進数フィールドの中の文字データをデータベース形式に変換する 前に、データの妥当性をチェックします。(有効な文字は、0 から 9 までと A から F までだけです。)
  • パック 10 進数データの場合、フィールド値に先行ゼロを付ける必要はありません。 パック 10 進数データの場合、フィールド値に先行ゼロを付ける必要はありません。 すなわち、FSA 内の桁数は、対応するデータベース・フィールドの桁数より少なくても構いません。 このフィールドに指定するデータは、有効なパック 10 進数形式でなければならず、また、符号桁で終わっていなければなりません。 このフィールドに指定するデータは、有効なパック 10 進数形式でなければならず、 また、符号桁で終わっていなければなりません。

IMS は、FSA を処理するときに、英数字フィールドと 16 進数フィールドについては 論理比較を行い、パック 10 進数フィールドと 2 進数フィールドについては算術比較を行 います。

結合子 (CON)
この FSA が呼び出し内の唯一または最後の FSA である場合には、 この区域にブランクが入ります。この FSA の後に別の FSA が続く場合には、この区域にアスタリスク (*) が入ります。 FSA が参照するすべてのフィールドが同一セグメントに入っている場合には、複数の FSA を 1 つ の FLD 呼び出しに含めることができます。FLD 呼び出しに関して エラー状況コードが出された場合には、FLD 呼び出しの各 FSA の状況コードを調べ、 どこにエラーがあるかを判別してください。

データベース内のフィールドの内容を検査したあとで、同じ呼び出しの中でその フィールドの内容を変更できます。そのためには、そのフィールドに関する変更操作を指定する FSA を提供してください。