4D v15.4EXECUTE FORMULA |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v15.4
EXECUTE FORMULA
|
EXECUTE FORMULA ( statement ) | ||||||||
引数 | 型 | 説明 | ||||||
statement | 文字 |
![]() |
実行するコード | |||||
EXECUTE FORMULA はstatementをコードとして実行します。ステートメントの文字列は必ず1 行だけです。statementに空の文字列を指定した場合、EXECUTE FORMULAコマンドは何も行いません。
statementが一行のメソッドとして実行されるかぎり、それは正しく実行される、というのが大原則です。EXECUTE FORMULA は実行速度を低下させるので、代替え手段として利用します。コンパイル済みデータベースにおいても、そのコードはコンパイルされていません。つまりstatementは実行されますが、コンパイル時にコンパイラによるチェックはされません。
statementには以下をの要素を含めることができます:
フォーミュラにはプロセス変数とインタープロセス変数を含めることができます。しかしstatementは1行でなければならないため、(If, While, などの) フローコントロールを含めることはできません。
使用する4Dの言語やバージョンやに関わらず、statement が正常に評価されると言う事を保証するためには、異なるバージョン間において名前が変化する可能性のある要素(コマンド、テーブル、フィールド、定数)に対してはトークンシンタックスを使用する事が推奨されます。例えば、[#cmd id="178"/]コマンドを挿入するためには'Current time:C178'と入力します。この点についてのより詳細な情報については、フォーミュラ内でのトークンの使用を参照して下さい。
リストボックスに動的なカラムを追加して型を指定したい場合を考えます:
//カラムを追加
C_POINTER($Ptr_nil)
$Txt_column:="column"
$Txt_header:="header"
LISTBOX INSERT COLUMN(*;"listbox";MAXLONG;$Txt_column;$Ptr_nil;$Txt_header;$Ptr_nil)
//カラムの型を設定、ここではARRAY OBJECTを使用
//ARRAY OBJECT((OBJECT Get pointer(Object named;$Txt_column))->;0)
EXECUTE FORMULA("ARRAY OBJECT:C1221((OBJECT Get pointer:C1124(3;\""+$Txt_column+"\"))->;0)")
4Dコマンドとテーブルへの呼び出しを含むフォーミュラを実行したい場合を考えます。これらの要素は改名されている可能性があるため、以下のようにトークンシンタックスを使用する事によって、アプリケーションの将来のバージョンにおいても正常な実行を保証する事ができます:
EXECUTE FORMULA("Year of:C25 ([Products:5]Creation_Date:2])+$add")