エラーではなく他の人が作ったプログラムコードを見ての疑問ですね。さっそく診てみましょう。。。下記の <cfoutput>タグの範囲内で変数を画面に表示しているところですね。
<cfset p1=1> <cfset p2=2> <cfset p3=3> <cfset p4=4> <cfset p5=5> <cfoutput> #Variables.p1#:#Variables.p2#:#Variables.p3#:#Variables.p4#:#Variables.p5# </cfoutput>
ColdFusionには10種類以上の変数が用意され、用途に応じてそれらを使い分けていきます。変数を呼び出す時に、“どの種類”の変数なのかを明示しておけば、.誤って別の種類の変数を呼び出してしまう事を防ぐことができます。そこで、変数名の前に変数の種類を表すスコープを指定します。
今回は「ローカル変数の」p1〜p5 を呼び出す処理をしていますが、変数名の前の「 Variables. 」の部分が「ローカル変数の」に相当します。
<cfset>タグで変数をセットする際にも、実はスコープを指定する事ができます。スコープを指定しない場合(上記の<cfset の p1〜p5>)も、実は内部で Variables.p1 〜 Variables.p5 としてセットされています。
ですので、「ローカル変数=Variables.」と覚えておきましょう。
ローカル変数を呼び出すときに Variables.変数名と書くように他の種類の変数を呼び出す時もスコープの指定をしていくようにしましょう。
自分がプログラムを書く際も、このルールを守っていくことで、ColdFusion側でも変数の種類を特定した処理を行えますし、プログラムの見た目も認識しやすくなります。
下記の情報も参考下さい
スコープ固有のビルトイン変数
ただ、Variables. という言葉自体、私たちにはなじみが薄いと思いますので、習い始めの頃や社内システムなど小規模なアプリケーションの場合は、かえって混乱を招くこともあります。不慣れな Variables という綴りを何度も記載すると誤ったスペルで記載したり、コードが見にくくなってしまいがちです。
慣れないうちは、以下のルールでプログラミングしていく事もあります。
変数の呼び出しでスコープを付けない場合、下記のページに記載されている順番で変数を探しにいきます。
スコープが指定されていない変数の評価
ローカル変数は 6番目に探しにいきますが、1〜5番目は特定の用途での処理に限って使う変数なので、(特に最初のころに)遭遇する機会もほとんど無く、ローカル変数が最初に呼び出される変数となるためです。
※逆にForm変数やCookie変数は順番が最後の方なので、スコープを付けないと、別の種類の同じ名前の変数を呼び出されてしまう危険があります。