%KDS (データ構造の検索引数)

%KDS(data-structure-name{:num-keys})

%KDS は、自由形式グループでコーディングされているキー順入出力命令 (CHAIN、DELETE、READE、READPE、SETGT、SETLL) の検索引数として 使用することができます。 検索引数は、組み込み関数の最初の引数としてコーディングされているデータ構造名のサブフィールドによって 指定されます。 キーのデータ構造は、キーワード EXTNAME(...:*KEY) または LIKEREC(...:*KEY) を指定した外部記述データ構造にすることができます (ただし 、これに 限定されません)。

注:
  1. 最初の引数は、データ構造名にする必要があります。 これには、キーワード LIKEDS または LIKEREC を定義したサブフィールドが含まれます。
  2. 2 番目の引数は、検索引数として使用するサブフィールド数を指定します。

    これには、定数、変数、または式を指定できます。

  3. 複合キーの個々のキー値は、データ構造内の最上位のサブフィールドから取得されます。 LIKEDS が定義されたサブフィールドは、 文字データと見なされます。
  4. 複合キーの構成に用いられるサブフィールドには、配列は使用できません。
  5. すべてのサブフィールドのタイプ ("数値キー" によって指定されている数まで) は実際のキーのタイプと一致する必要があります。 長さ、形式、および CCSID が異なっている場合、 値は変換されます。

    制御キーワード EXPROPTS (*STRICTKEYS) が %KDS でキーを指定する際の規則に与える影響については、 *STRICTKEYS を参照してください。

  6. データ構造が、キーワード DIM を使用して配列データ構造として定義されている場合、データ構造に指標を提供する必要があります。
  7. キー順入出力命令コードに指定されている命令コードの拡張 H、M、または R は、キー作成域内の対応する位置への検索 引数の転送に影響を与えます。

Example:

図 1. キー順入出力命令における検索の例
A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++
A          R CUSTR
A            NAME         100A
A            ZIP           10A
A            ADDR         100A
A          K NAME
A          K ZIP
FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++
Fcustfile  if   e           k disk    rename(CUSTR:custRec)
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++
D custRecKeys     ds                  likerec(custRec : *key)
D numKeys         s             10i 0
 ...
 /free
         // custRecKeys is a qualified data structure
         custRecKeys.name = customer;
         custRecKeys.zip = zipcode;
         // The *KEY data structure is used as the search argument for CHAIN
         chain %kds(custRecKeys) custRec;
         // The number of keys can be a constant
         chain %kds(custRecKeys : 2) custRec;
         // The number of keys can be a variable or an expression
         numKeys = 1;
         chain %kds(custRecKeys : numKeys) custRec;
         chain %kds(custRecKeys : numKeys + 1) custRec;
 /end-free