CFScript の例

次の例では、CFScript の次の機能を使用しています。

  • 変数への代入
  • 関数呼び出し
  • For ループ
  • If-else ステートメント
  • WriteOutput 関数
  • Switch ステートメント
    この例では、cfscript 以外の ColdFusion タグをまったく使用せずに、CFScript のみを使用しています。ここでは、コースの受験者の構造体を作成します。この構造体には、合格した学生と不合格の学生の 2 つの配列が含まれています。また、不合格の学生の一部(全員ではない)について、その不合格理由を保持する構造体も作成します。そして、合格した受験者を表示した後に、不合格の学生とその不合格理由を表示します。
<head> 
<title>CFScript Example</title> 
</head> 
<body> 
<cfscript> 

// 変数を設定 

acceptedApplicants[1] = &quot;Cora Cardozo&quot;; 
acceptedApplicants[2] = &quot;Betty Bethone&quot;; 
acceptedApplicants[3] = &quot;Albert Albertson&quot;; 
rejectedApplicants[1] = &quot;Erma Erp&quot;; 
rejectedApplicants[2] = &quot;David Dalhousie&quot;; 
rejectedApplicants[3] = &quot;Franny Farkle&quot;; 
applicants.accepted=acceptedApplicants; 
applicants.rejected=rejectedApplicants; 

rejectCode=StructNew(); 
rejectCode[&quot;David Dalhousie&quot;] = &quot;score&quot;; 
rejectCode[&quot;Franny Farkle&quot;] = &quot;too late&quot;; 

// 合格した受験者をソートして表示 

ArraySort(applicants.accepted,&quot;text&quot;,&quot;asc&quot;); 
WriteOutput(&quot;The following applicants were accepted:<hr>&quot;); 
for (j=1;j lte ArrayLen(applicants.accepted);j=j+1) { 
WriteOutput(applicants.accepted[j] & &quot;<br>&quot;); 
} 
WriteOutput(&quot;<br>&quot;); 

// 不合格の受験者をソートし、理由の情報を付けて表示 

ArraySort(applicants.rejected,&quot;text&quot;,&quot;asc&quot;); 
WriteOutput(&quot;The following applicants were rejected:<hr>&quot;); 
for (j=1;j lte ArrayLen(applicants.rejected);j=j+1) { 
applicant=applicants.rejected[j]; 
WriteOutput(applicant & &quot;<br>&quot;); 
if (StructKeyExists(rejectCode,applicant)) { 
switch(rejectCode[applicant]) { 
case &quot;score&quot;: 
WriteOutput(&quot;Reject reason: Score was too low.<br>&quot;); 
break; 
case &quot;late&quot;: 
WriteOutput(&quot;Reject reason: Application was late.<br>&quot;); 
break; 
default: 
WriteOutput(&quot;Rejected with invalid reason code.<br>&quot;); 
} // switch ステートメントの終わり 
} // if ステートメントの終わり 
else { 
WriteOutput(&quot;Reject reason was not defined.<br>&quot;); 
} // else ステートメントの終わり 
WriteOutput(&quot;<br>&quot;); 
} // for ステートメントの終わり 
</cfscript>

コードの説明

このコードについて、次の表で説明します。

コード

説明

// 変数を設定 
acceptedApplicants[1] = "Cora Cardozo"; 
acceptedApplicants[2] = "Betty Bethone"; 
acceptedApplicants[3] = "Albert Albertson"; 
rejectedApplicants[1] = "Erma Erp"; 
rejectedApplicants[2] = "David Dalhousie"; 
rejectedApplicants[3] = "Franny Farkle"; 
applicants.accepted=acceptedApplicants; 
applicants.rejected=rejectedApplicants; 

rejectCode=StructNew(); 
rejectCode["David Dalhousie"] = "score"; 
rejectCode["Franny Farkle"] = "too late";

合格した受験者と不合格の受験者の 2 つの 1 次元配列を作成します。各配列のエントリは順不同になっています。構造体を作成し、構造体の要素に各配列を代入します。不合格の受験者の不合格コードを保持する構造体を作成します。rejectedCode 構造体には、すべての不合格者は含まれていません。また、あるエントリで規定外の不合格コードを代入しています。この構造体のキーにはスペースが含まれているので、連想配列表記法を使用して構造体の要素を参照しています。

WriteOutput("The following applicants were accepted:<hr>"); 
for (j=1;j lte ArrayLen(applicants.accepted);j=j+1) { 
WriteOutput(applicants.accepted[j] & "<br>"); 

WriteOutput("<br>");

合格した受験者をアルファベット順にソートします。見出しを表示します。合格した受験者を反復処理して、氏名を出力します。単一ステートメントのループなので中括弧は不要ですが、読みやすくするために付けています。合格した受験者リストの末尾に改行を付け加えます。

WriteOutput("The following applicants were rejected:<hr>");

rejectedApplicants 配列をアルファベット順にソートし、見出しを出力します。

applicant=applicants.rejected[j]; 
WriteOutput(applicant & "<br>");

不合格の受験者を反復処理します。applicant 変数に受験者名を代入します。これによって、コードが読みやすくなり、このブロックの後にある rejectCode 配列で簡単に参照できるようになります。受験者名を出力します。

switch(rejectCode[applicant]) { 
case "score": 
WriteOutput("Reject reason: Score was too low.<br>"); 
break; 
case "late": 
WriteOutput("Reject reason: Application was late.<br>"); 
break; 
default: 
WriteOutput("Rejected with invalid reason code.<br>"); 
} // switch ステートメントの終わり 
} // if ステートメントの終わり

rejectCode 構造体をチェックして、その受験者に不合格コードが設定されているか確認します。コードが設定されている場合は、switch ステートメントで不合格コードの値を調べます。規定されたコードのいずれかに不合格コードの値が一致する場合は、不合格理由の説明を表示します。それ以外の場合(default の場合)は、不合格コードが有効でないことを示すメッセージを表示します。ブロック末尾のコメントは、制御フローを明確にするためのものです。

WriteOutput("Reject reason was not defined.<br>"); 
} // else ステートメントの終わり

その受験者のエントリが rejectCode 構造体の中にない場合は、理由が定義されていないことを示すメッセージを表示します。

} // for ステートメントの終わり 
</cfscript>

それぞれの不合格者の後に、空白行を表示します。各不合格者を処理する for ループを終了します。CFScript を終了します。

 Adobe

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

新規ユーザーの場合

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン