Reviewing the code
The following table describes the code that has been changed or added to the previous version of
this example. For a description of the initial code, see
on page
204.
Code
function
TotalInterest(principal,
annualPercent, months,
status)
if ((principal LE 0) OR
(annualPercent LE 0) OR
(months LE 0)) {
Status.errorMsg = "All values
must be greater than 0";
Return -1;
}
Calling the function
The code that calls the function now looks like the following. Code that is changed from the
example in
"A User-defined function example" on page 204
<cfset status = StructNew()>
<cfset myInterest = TotalInterest(Form.Principal,
Form.AnnualPercent,Form.Months, status)>
<cfif myInterest EQ -1>
<cfoutput>
ERROR: #status.errorMsg#<br>
</cfoutput>
<cfelse>
<cfoutput>
Loan amount: #Form.Principal#<br>
Annual percentage rate:
#Form.AnnualPercent#<br>
Loan duration: #Form.Months# months<br>
TOTAL INTEREST: #myInterest#<br>
</cfoutput>
</cfif>
Reviewing the code
The following table describes the code that has been changed or added:
Code
<cfset status = StructNew()>
<cfset myInterest = TotalInterest
(Form.Principal, Form.AnnualPercent,
Form.Months, status)>
"A User-defined function example"
Description
The function now takes an additional argument, a status
structure. Uses a structure for the status variable so that
changes that the function makes affect the status structure in
the caller.
Checks to make sure the principal, percent rate, and duration
are all greater than zero.
If any is not, sets the errorMsg key (the only key) in the Status
structure to a descriptive string. Also, returns -1 to the caller
and exits the function without processing further.
Description
Creates a structure to hold the function status.
Calls the function. This time, the function requires
four arguments, including the status variable.
is in bold.
Using UDFs effectively
215
Need help?
Do you have a question about the COLDFUSION MX 61-DEVELOPING COLDFUSION MX and is the answer not in the manual?
Questions and answers