4D v14 R4から導入
4D 変換タグ(以前の名前は
4D HTML タグ)は拡張されました:
- 新しい4DEVAL タグが追加されました。
- 4DLOOP タグは引数として4D式と配列へのポインターを受け取れるようになりました。
注: PROCESS 4D TAGS コマンドも拡張されています。詳細な情報に関しては、PROCESS 4D TAGS の章を参照して下さい。
シンタックス: <!--#4DEVAL VarName--> または <!--#4DEVAL 4DExpression-->
新しい4DEVALを使用すると、変数や4D式を挿入できます。
既存の4DHTMLタグのように、4DEVALタグはテキストを返す際にHTML特殊 文字をエスケープしません。しかしながら、4DHTMLや4DTEXTと異なり、4DEVALは有効な4D宣言であればどれでも実行することができます (値を返さない割り当てや式も含まれます)。
例えば、以下の様なコードを実行することができます:
$input:="<!--#4DEVAL a:=42-->"
$input:=$input+"<!--#4DEVAL a+1-->"
PROCESS 4D TAGS($input;$output)
4Dコマンドやファンクションを、式として直接使用することができます。この場合、4DExpression 引数にコマンド番号エスケープコードを渡すことが推奨されます。これによってどの言語版の4Dを使用しても、また将来の4Dリリースにおいてコマンド名が変わっても式は正常に評価されるからです。その際使用すべきシンタックスは、"<command_name>:C<command_number> です。例えば、現在時刻Current timeを呼び出したいときには、"Current time:C178"と表記します。
注: コマンド番号はエクスプローラーのコマンドページにて表記があります:

評価エラーの場合、挿入されたテキストは“<!--#4DEVAL expression--> : ## error # error code” の形式になります。
注: Webリクエスト経由で4Dメソッドに4DEVALを用いる場合には、メソッドプロパティにて"4D タグやURL(4DACTION...)からの利用を許可"オプションがチェックされている必要があります。この点についてのより詳細な説明は、Connection Security の章を参照して下さい。
4DLOOP タグは、二つの新しい条件を受け取れるようになりました(他はtable、array そしてmethod です): それは4D 式と ポインター配列です。
- <!--#4DLOOP 4DExpression-->
このシンタックスを使用すると、4DLOOPタグは4D式がTrueを返すまでループを繰り返します。式部分には、無限ループを避けるために毎ループに評価されるべき変数部分を含んだ、有効なブール式が必要です。
例えば、以下のコードは:
<!--#4DEVAL $i:=0-->
<!--#4DLOOP ($i<4)-->
<!--#4DEVAL $i-->
<!--#4DEVAL $i:=$i+1-->
<!--#4DENDLOOP-->
以下の結果を生成します:
0
1
2
3
- <!--#4DLOOP pointerArray-->
この場合、4DLOOPタグは配列に対して用いたのと同様に振る舞います: 配列の各要素ごとにループを作成します。カレントの配列の要素はコードの一部が繰り返されるたびに増加していきます。
このシンタックスは、配列ポインターをPROCESS 4D TAGS コマンドの引数として渡す場合に有効です。
例:
ARRAY TEXT($array;2)
$array{1}:="hello"
$array{2}:="world"
$input:="<!--#4DEVAL $1-->"
$input:=$input+"<!--#4DLOOP $2-->"
$input:=$input+"<!--#4DEVAL $2->{$2->}--> "
$input:=$input+"<!--#4DENDLOOP-->"
PROCESS 4D TAGS($input;$output;"elements = ";->$array)