The following example uses these CFScript features:

  • Variable assignment
  • Function calls
  • For loops
  • If-else statements
  • WriteOutput functions
  • Switch statements
    The example uses CFScript without any other ColdFusion tags. It creates a structure of course applicants. This structure contains two arrays; the first has accepted students, the second has rejected students. The script also creates a structure with rejection reasons for some (but not all) rejected students. It then displays the accepted applicants followed by the rejected students and their rejection reasons.
<head> 
<title>CFScript Example</title> 
</head> 
<body> 
<cfscript> 

//Set the variables 

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"; 

//Sort and display accepted applicants 

ArraySort(applicants.accepted,"text","asc"); 
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>"); 

//sort and display rejected applicants with reasons information 

ArraySort(applicants.rejected,"text","asc"); 
WriteOutput("The following applicants were rejected:<hr>"); 
for (j=1;j lte ArrayLen(applicants.rejected);j=j+1) { 
applicant=applicants.rejected[j]; 
WriteOutput(applicant & "<br>"); 
if (StructKeyExists(rejectCode,applicant)) { 
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>"); 
} //end switch 
} //end if 
else { 
WriteOutput("Reject reason was not defined.<br>"); 
} //end else 
WriteOutput("<br>"); 
} //end for 
</cfscript>

Reviewing the code

The following table describes the code:

Code Description

 

<cfscript> 
//Set the variables 
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";

 

Creates two one-dimensional arrays, one with the accepted applicants and another with the rejected applicants. The entries in each array are in random order.Creates a structure and assign each array to an element of the structure.Creates a structure with rejection codes for rejected applicants. The rejectedCode structure does not have entries for all rejected applicants, and one of its values does not match a valid code. The structure element references use associative array notation in order to use key names that contain spaces.

 

ArraySort(applicants.accepted,"text","asc");
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>");

 

Sorts the accepted applicants alphabetically.Displays a heading.Loops through the accepted applicants and writes their names. Curly brackets enhance clarity, although they are not needed for a single statement loop.Writes an additional line break at the end of the list of accepted applicants.

 

ArraySort(applicants.rejected,"text","asc");
WriteOutput("The following applicants were rejected:<hr>");

 

Sorts rejectedApplicants array alphabetically and writes a heading.

 

for (j=1;j lte ArrayLen(applicants.rejected);j=j+1) { 
applicant=applicants.rejected[j]; 
WriteOutput(applicant & "<br>");

 

Loops through the rejected applicants.Sets the applicant variable to the applicant name. This makes the code clearer and enables you to easily reference the rejectCode array later in the block.Writes the applicant name.

 

if (StructKeyExists(rejectCode,applicant)) {
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>"); 
} //end switch 
} //end if

 

Checks the rejectCode structure for a rejection code for the applicant. If a code exists, enters a switch statement that examines the rejection code value. If the rejection code value matches one of the known codes, displays an expanded explanation of the meaning. Otherwise (the default case), displays an indication that the rejection code is not valid.Comments at the end of blocks help clarify the control flow.

 

else { 
WriteOutput("Reject reason was not defined.<br>"); 
} //end else

 

If there is no entry for the applicant in the rejectCode structure, displays a message indicating that the reason was not defined.

 

WriteOutput("<br>"); 
} //end for 
</cfscript>

 

Displays a blank line after each rejected applicant.Ends the for loop that handles each rejected applicant.Ends the CFScript.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy