配列宣言コマンドはそれぞれ、1次元または2次元の配列を作成またはサイズ変更ができます。次に例を示します:
ARRAY TEXT(atTopics;100;50)
2次元配列は、本質的にはランゲージオブジェクトなため、表示も印刷もできません。
この例で、
- atTopicsは、2次元配列です。
- atTopics{8}{5}は、8行5列目の要素です。
- atTopics{20}は、20行目でそれ自身は1次元配列です。
- Size of array(atTopics)は、行数の100を返します。
- Size of array(atTopics{17})は、17行目の列数である50を返します。
以下の例では、データベースの各テーブルの各フィールドへのポインタが2次元配列に格納されます:
C_LONGINT($vlLastTable;$vlLastField)
C_LONGINT($vlFieldNumber)
$vlLastTable:=Get last table number
ARRAY POINTER(<>apFields;$vlLastTable;0)
For($vlTable;1;$vlLastTable)
If(Is table number valid($vlTable))
$vlLastField:=Get last field number($vlTable)
$vlColumnNumber:=0
For($vlField;1;$vlLastField)
If(Is field number valid($vlTable;$vlField))
$vlColumnNumber:=$vlColumnNumber+1
INSERT IN ARRAY(<>apFields{$vlTable};$vlColumnNumber;1)
<>apFields{$vlTable}{$vlColumnNumber}:=Field($vlTable;$vlField)
End if
End for
End if
End for
この2次元配列が初期化されたあと、以下の方法で特定のテーブルのフィールドへのポインタを取得できます:
COPY ARRAY(<>apFields{Table(Current form table)};$apTheFieldsIamWorkingOn)
For($vlElem;1;Size of array($apTheFieldsIamWorkingOn))
Case of
:(Type($apTheFieldsIamWorkingOn{$vlElem}->)=Is date)
$apTheFieldsIamWorkingOn{$vlElem}->:=Current date
:(Type($apTheFieldsIamWorkingOn{$vlElem}->)=Is Boolean)
$apTheFieldsIamWorkingOn{$vlElem}->:=True
End case
End for
Note: この例でわかるように、2次元配列の行のそれぞれの列数は同じサイズでも異なるサイズでも構いません。