CFScript example
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.
<html>
<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.
|