フロー制御

ColdFusion には、ページの実行方法を制御するためのタグが用意されています。これらのタグは、if、then、else などのプログラミング言語のフロー制御ステートメントに対応します。ColdFusion のフロー制御タグには次のものがあります。

タグ

用途

cfif 、 cfelseif 、cfelse

式が True であるか False であるかに基づいて、実行するコードセクションを選択します。

cfswitch 、 cfcase 、cfdefaultcase

式の値に基づいて、実行するコードセクションを選択します。case では、True、False 以外の条件判断も行うことができます。

cfloop 、cfbreak

リストのエントリ、構造体または外部オブジェクトのキー、クエリ列のエントリ、インデックス、条件式の値などに基づいて、コードをループします。

cfabort 、cfexit

ColdFusion ページまたはカスタムタグの処理を終了します。

CFScript にも一連のフロー制御ステートメントが用意されています。CFScript でのフロー制御ステートメントの使用については、CFML スクリプト言語による ColdFusion ページの拡張を参照してください。フロー制御タグの使用について詳しくは、『CFML リファレンス』の該当するタグに関するリファレンスページを参照してください。

cfif、cfelseif および cfelse

cfif cfelseif cfelse タグでは、次のように if-then-else 条件が処理されます。

  1. cfif タグで条件がテストされ、True の場合は本文が実行されます。

  2. 前の cfif  (または cfelseif )のテスト条件が False であった場合は、 cfelseif  タグで別の条件がテストされ、その条件が True の場合はその本文が実行されます。

  3. cfelse タグはオプションで、cfif タグおよび 0 個以上の cfelseif タグの後に記述します。前にあるタグのテスト条件がすべて False であった場合に、その本文が実行されます。次の例に、cfif、cfelseif および cfelse タグの使用方法を示します。type 変数の値が "Date" の場合は日付が表示されます。"Time" の場合は時刻が表示されます。それ以外の場合は時刻と日付の両方が表示されます。

<cfoutput>#DateFormat(Now())#</cfoutput>
<cfelseif type IS &quot;Time&quot;>
<cfoutput>#TimeFormat(Now())#</cfoutput>
<cfelse>
<cfoutput>#TimeFormat(Now())#, #DateFormat(Now())#</cfoutput>
</cfif>

cfswitch、cfcase および cfdefaultcase

cfswitchcfcase および cfdefaultcase タグを使用すると、式の値に基づいて様々なコードブロックを選択できます。これらのタグは次のように処理されます。

  1. まず、 cfswitch  タグによって式が評価されます。この cfswitch  タグの本文には、1 つまたは複数の cfcase  タグが含まれ、オプションで cfdefaultcase タグで使用)

  2. cfswitch タグ本文のそれぞれの cfcase タグを では、  1 つまたは一連の値が指定されています。cfswitch タグの式の評価値 に  一致する値が指定されている cfcase  タグの本文コードが実行されたあと、 cfswitch  タグが終了します。2 つの cfcase  タグで同じ条件が指定されている場合は、エラーが発生します。

  3. cfswitch タグの 評価値に  一致する cfcase タグが なく、  cfswitch タグの 本文に cfdefaultcase タグが  含まれている 場合は、  cfdefaultcase タグ 本文のコードが  実行されます。

メモ

cfdefaultcase タグは常に必要なわけではありませんが、 cfcase タグを使用するときは cfswitch ステートメントの最後に このタグを記述するのが よいプログラミングスタイルと言えます。

cfif タグで複数の cfelseif タグを指定するよりも、cfswitch タグを使用する方がパフォーマンスが良く、わかりやすさの点でも優れています。switch 処理は通常、月やリクエスト識別子などの文字列変数に基づいてアクションを選択する場合に使用します。
switch 処理の例を次に示します。

<cfswitch expression = #Department#>
<cfcase value = &quot;Sales&quot;>
#FirstName# #LastName# is in <b>Sales</b><br><br>
</cfcase>
<cfcase value = &quot;Accounting&quot;>
#FirstName# #LastName# is in <b>Accounting</b><br><br>
</cfcase>
<cfcase value = &quot;Administration&quot;>
#FirstName# #LastName# is in <b>Administration</b><br><br>
</cfcase>
<cfdefaultcase>#FirstName# #LastName# is not in Sales,
Accounting, or Administration.<br>
</cfdefaultcase>
</cfswitch>
</cfoutput>

cfloop と cfbreak

cfloop タグは、タグの属性で指定された条件に基づいてタグ本文を 0 回以上ループします。 cfbreak タグは cfloop タグで使用)

cfloop

cfloop タグには次のタイプのループがあります。

ループタイプ

説明

インデックス

タグ本文をループし、ループするたびに指定の数だけカウンタ変数をインクリメントして、カウンタが指定の値になるまで続行します。

条件

条件を確認して、条件が True の場合にタグ本文を実行します。

クエリ

クエリ内の行ごとにタグ本文を 1 回ループします。

リスト、ファイル、または配列

リストのエントリ、ファイルの行、または配列の項目ごとにタグ本文を 1 回ループします。

コレクション

ColdFusion 構造体内のキーまたは COM/DCOM オブジェクト内の項目ごとにタグ本文を 1 回ループします。

簡単なインデックスループの例を次に示します。

The loop index is <cfoutput>#LoopCount#</cfoutput>.<br>
</cfloop>

簡単な条件ループの例を次に示します。このコードは次の操作を行います。

  1. 4 番目のエントリに「kumquats」という単語が含まれている 10 要素からなる配列を設定します。

  2. 「kumquats」が含まれている配列要素を検出するか配列の最後に到達するまで、配列をループします。

  3. kumquats 」を検出したかどうかを示すブール変数の値と、 ループを終了したときの配列インデックスを出力します。

メモ

終了条件を指定しないと、無限条件ループに陥ります。この例では、<cfset i = i + 1> ステートメントがないと無限ループになります。無限ループを終了するには、ColdFusion アプリケーションサーバーを停止する必要があります。

cfbreak

cfbreak タグは cfloop  タグを終了します。特定の条件が満たされたときにループを終了するには、通常、 cfif  タグの中でこのタグを使用します。クエリループでの cfbreak  タグの使用例を次に示します。

<cfif fruit IS &quot;kumquat&quot;>
<cfoutput>You cannot order kumquats! <br></cfoutput>
<cfbreak>
</cfif>
<cfoutput>You have ordered #quantity# #fruit#.<br></cfoutput>
</cfloop>

cfabort と cfexit

cfabort タグは、そのタグの位置で現在のページの処理を停止します。cfabort タグの前までに処理されたすべての内容が、ユーザーまたは呼び出し元のタグに返されます。表示するエラーメッセージを指定することもできます。特定の状態(エラーなど)が発生した場合にページの処理を停止するには、cfif タグの本文に cfabort タグを記述します。

cfexit タグは、カスタムタグの処理を制御します。このタグは、ColdFusion カスタムタグの中でのみ使用できます。詳しくは、カスタムタグの実行の「タグ実行の終了」および『CFML リファレンス』を参照してください。

Adobe, Inc.

ヘルプをすばやく簡単に入手

新規ユーザーの場合