ユーザー定義関数(UDF)は、その名の通りユーザーが作る関数です。
以下は使用例です。
●func.cfm
<cffunction name="calc" returnType="numeric">
<cfargument name="x" type="numeric" default="0">
<cfargument name="y" type="numeric" default="0">
<cfreturn arguments.x * 2 + arguments.y * 3>
</cffunction>
●test1.cfm
<cfinclude template="func.cfm">
<cfset total = 0>
<cfloop index="i" from="1" to="5">
<cfset total = total + calc(i, i+1)>
</cfloop>
<cfoutput>
total=#total#
</cfoutput>
上記の例では、関数部分をfunc.cfmに書いています。
test.cfm内で、cfincludeタグを使い、
func.cfmの内容を展開する形となります。
今回はcalc関数は短いので便利さが、わかりづらいですが、
長い処理を何回も繰り返し使う場合は便利です。
プログラムのメンテナンスもしやすくなります。
また、以下のような関数の使い方もできます。
●test2.cfm
<cfinclude template="func.cfm">
<cfset total = 0>
<cfloop index="i" from="1" to="5">
<cfset total = total + calc(y=i,x= i+1)>
</cfloop>
<cfoutput>
total=#total#
</cfoutput>
calc関数の引数名を指定して関数を呼び出す方法です。
海外のプログラムなど見ていると、
例えば、xの型をquery,yの型をstring(csvファイルの絶対パス)
ということにして、
xに値がセットされた場合は、そのまま処理、
yに値がセットされた場合は、queryに変換して処理、
という使い方もあるようです。
いずれにしても、関数を作って処理を見やすくすると
メンテナンスもしやすくなりますね。