配列を引数として4Dコマンドや4Dプラグインのルーチンに渡すことができます。しかし、配列を引数としてメソッドに渡すことはできません。代わりに、配列へのポインタを引数としてメソッドに渡すことはできます。
インタープロセス、プロセス、およびローカル配列のポインタを引数として渡すことができます。
次にいくつかの例を示します。
以下の例で:
If((0<atNames)&(atNames<Size of array(atNames))
atNames:=atNames+1
End if
異なるフォームの50の異なる配列に同じ処理を実行する場合、次のプロジェクトメソッドを使用すると50回同じことを書かずにすみます:
C_POINTER($1)
If((0<$1->)&($1-><Size of array($1->))
$1->:=$1->+1
End if
これは以下のように使用します:
SELECT NEXT ELEMENT(->atNames)
SELECT NEXT ELEMENT(->asZipCodes)
SELECT NEXT ELEMENT(->alRecordIDs)
次のプロジェクトメソッドは、数値配列(整数、倍長整数または実数)のすべての要素の合計を返します:
C_REAL($0)
$0:=0
For($vlElem;1;Size of array($1->))
$0:=$0+$1->{$vlElem}
End for
注: 4D v13以降、数値配列の要素の総和を計算するためには Sum 関数を使えば簡単に計算できます。
これは以下のように使用します:
$vlSum:=Array sum(->arSalaries)
$vlSum:=Array sum(->aiDefectCounts)
$vlSum:=Array sum(->alPopulations)
次のプロジェクトメソッドは、文字列またはテキスト配列のすべての要素を英大文字に変換します:
For($vlElem;1;Size of array($1->))
If($1->{$vlElem}#"")
$1->{$vlElem}:=Uppercase($1->{$vlElem}[[1]])+Lowercase(Substring($1->{$vlElem};2))
End if
End for
これは以下のように使用します:
CAPITALIZE ARRAY(->atSubjects)
CAPITALIZE ARRAY(->asLastNames)
配列、ポインタ、およびループ構造(等)を組み合わせることにより、配列を扱うための短くて便利なプロジェクトメソッドを作成できます。