4D v16.3

EXECUTE FORMULA

ホーム

 
4D v16.3
EXECUTE FORMULA

EXECUTE FORMULA 


 

EXECUTE FORMULA ( statement ) 
引数   説明
statement  文字 in 実行するコード

説明   

EXECUTE FORMULAstatementをコードとして実行します。ステートメントの文字列は必ず1行だけです。statementに空の文字列を指定した場合、EXECUTE FORMULAコマンドは何も行いません。

statementが一行のメソッドとして実行されるかぎり、それは正しく実行される、というのが大原則です。EXECUTE FORMULA は実行速度を低下させるので、代替え手段として利用します。コンパイル済みデータベースにおいても、そのコードはコンパイルされていません。つまりstatementは実行されますが、コンパイル時にコンパイラによるチェックはされません。

注: コンパイル済みモードでのフォーミュラの実行はキャッシュを使用する事によって最適化することができます(以下のコンパイル済みモードでのフォーミュラのキャッシュを参照して下さい)。

statementには以下をの要素を含めることができます:

  • プロジェクトメソッドの呼び出し
  • 4D コマンドの呼び出し
  • 代入

フォーミュラにはプロセス変数とインタープロセス変数を含めることができます。しかしstatementは1行でなければならないため、(If, While, などの) フローコントロールを含めることはできません。

使用する4Dの言語やバージョンやに関わらず、statement が正常に評価されると言う事を保証するためには、異なるバージョン間において名前が変化する可能性のある要素(コマンド、テーブル、フィールド、定数)に対してはトークンシンタックスを使用する事が推奨されます。例えば、Current timeコマンドを挿入するためには'Current time:C178'と入力します。この点についてのより詳細な情報については、フォーミュラ内でのトークンの使用を参照して下さい。

最適化のために、EXECUTE FORMULAによってコンパイル済みモードで実行されたそれぞれのフォーミュラは、メモリ内の専用のキャッシュに保存する事が可能です。フォーミュラはトークナイズドされた形でキャッシュされます。一度キャッシュに保存されると、その後の実行はトークン化のステップをスキップするため、大幅に最適化されます。

キャッシュサイズはデフォルトではゼロです(キャッシュなし)。SET DATABASE PARAMETERコマンドを使用してキャッシュを作成または調整する必要があります。例えば:

 SET DATABASE PARAMETER(Number of formulas in cache;0) //フォーミュラのキャッシュはなし
 SET DATABASE PARAMETER(Number of formulas in cache;3) //それぞれのプロセスにおいてフォーミュラを3つまでキャッシュ可能

EXECUTE FORMULAコマンドは、コンパイルされたデータベースあるいはコンポーネントから呼び出されたときのみキャッシュを使用します。

例題  

4Dコマンドとテーブルへの呼び出しを含むフォーミュラを実行したい場合を考えます。これらの要素は改名されている可能性があるため、以下のようにトークンシンタックスを使用する事によって、アプリケーションの将来のバージョンにおいても正常な実行を保証する事ができます:

 EXECUTE FORMULA("Year of:C25 ([Products:5]Creation_Date:2])+$add")



参照 

Command name
EDIT FORMULA
SET DATABASE PARAMETER

 
プロパティ 

プロダクト: 4D
テーマ: フォーミュラ
番号: 63

 
履歴 

変更: 4D v11 SQL
変更: 4D v15 R4

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)