%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. すべてのサブフィールドのタイプ ("数値キー" によって指定されている数まで) は実際のキーのタイプと一致する必要があります。 長さと形式が異なる場合、 値は適切な長さと形式に変換されます。
  6. データ構造が、キーワード DIM を使用して配列データ構造として定義されている場合、データ構造に指標を提供する必要があります。
  7. キー順入出力命令コードに指定されている命令コードの拡張 H、M、または R は、キー作成域内の対応する位置への検索 引数の転送に影響を与えます。

図 205. キー順入出力命令における検索の例
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)
 ...
/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;
 /end-free