%ELEM (要素数の検索)

%ELEM(table_name)
%ELEM(array_name)
%ELEM(multiple_occurrence_data_structure_name)

%ELEM は、指定された配列、テーブル、または複数オカレンス・データ構造の中の要素の 数を戻します。 戻り値は符号なし整数形式 (タイプ U) です。 これは、数値定数が使用できる定義仕様書または拡張演算項目 2 フィールドの 式のどこにでも指定することができます。

パラメーターは、配列、テーブル、または複数オカレンス・データ構造の名前としなけれ ばなりません。

変更の始まり パラメーターに複合修飾名を指定することはできません。 複合修飾サブフィールドの要素数を知りたい場合は、必要なサブフィールドを 含んでいるデータ構造サブフィールドを定義する LIKEDS キーワードに使用されているデータ構造を 指定します。 例えば、INFO.CUST.ORDERS の要素数を知りたい場合、 データ構造 INFO の CUST サブフィールドが キーワード LIKEDS(CUST_T) で定義されているとすると、%ELEM(CUST_T.ORDERS) と指定します。 変更の終わり

詳細については、配列命令または 組み込み関数を参照してください。

図 1. %ELEM の例
 *..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++
D arr1d           S             20    DIM(10)
D table           S             10    DIM(20) ctdata
D mds             DS            20    occurs(30)
D num             S              5p 0

 * like_array will be defined with a dimension of 10.
 * array_dims will be defined with a value of 10.
D like_array      S                   like(arr1d) dim(%elem(arr1d))
D array_dims      C                   const (%elem (arr1d))

 /FREE
    num = %elem (arr1d);  // num is now 10
    num = %elem (table);  // num is now 20
    num = %elem (mds);    // num is now 30
 /END-FREE