ColdFusionカフェテリア
SAMURAIZ
| ↑一覧へ戻る |
ColdFusionクリニックへようこそ
さて、、次のモヤモヤされている方は

変数をセットしようとしたら、エラーが出て上手くいかないんです

作成日: 2015年8月
最終更新日: 2015年8月

ほほう。それはどんなエラーですか?

次の情報は、Web サイト開発者のデバッグに役立ちます。
リクエストを処理する際に、エラーが発生しました。

列 8、行 2 の 1b は有効な識別子名ではありません。

CFML コンパイラが処理中でした :

  • 列 2、行 2 から始まる cfset tag 。
エラーの発生位置 C:/ColdFusion11/cfusion/wwwroot/local_link/error100/002_aa.cfm: line 2
1 : <cfset a1=1>
2 : <cfset 1b=2>
スタックトレース
coldfusion.compiler.ASTsimpleVariableReference$InvalidIdentifierException: 列 8、行 2 の 1b は有効な識別子名ではありません。
	at coldfusion.compiler.ASTsimpleVariableReference.init(ASTsimpleVariableReference.java:78)
	at coldfusion.compiler.ASTsimpleVariableReference.<init>(ASTsimpleVariableReference.java:70)
	at coldfusion.compiler.VariableReference.resolveStructOperators(VariableReference.java:169)
	at coldfusion.compiler.VariableReference.createSimpleReference(VariableReference.java:87)
	at coldfusion.compiler.cfml40.ComplexReference(cfml40.java:6602)
	at coldfusion.compiler.cfml40.VariableReference(cfml40.java:6510)
	at coldfusion.compiler.cfml40.cfScriptLvar(cfml40.java:2754)
	at coldfusion.compiler.cfml40.SimpleStatement(cfml40.java:623)
	at coldfusion.compiler.cfml40.cfsetstatement(cfml40.java:505)
	at coldfusion.compiler.cfml40.cfset(cfml40.java:477)
	at coldfusion.compiler.cfml40.cfml(cfml40.java:4726)
	at coldfusion.compiler.cfml40.start(cfml40.java:5178)
	at coldfusion.compiler.NeoTranslator.parsePage(NeoTranslator.java:620)
	at coldfusion.compiler.NeoTranslator.parsePage(NeoTranslator.java:601)
	at coldfusion.compiler.NeoTranslator.parseAndTransform(NeoTranslator.java:441)
	at coldfusion.compiler.NeoTranslator.translateJava(NeoTranslator.java:391)
	at coldfusion.compiler.NeoTranslator.translateJava(NeoTranslator.java:160)
	at coldfusion.runtime.TemplateClassLoader$TemplateCache$1.fetch(TemplateClassLoader.java:461)
	at coldfusion.util.LruCache.get(LruCache.java:180)

...

■検診の結果

エラーの発生位置を見ると 2行目の <cfset> で変数の名前を 1b と名付けていますが、「1b は有効な識別子名ではない」というメッセージのとおり、1bを変数の名前に使用できない事がエラーの原因ですね。

■治療法は?

変数の名前に使用できる文字には制限があります。以下の規則に沿った変数名を付けるようにしましょう。
  • 半角の英文字、数字、下線(_)のみ使いましょう
  • ただし、変数名の最初の文字に数字を使ってはいけません
  • 特殊文字やスペースも使用禁止です
  • 変数の名前に日本語も使わないようにしましょう
  • 大文字小文字は区別されません
    (変数名 abc も ABC も同じ変数として扱われます)

(参考)
変数のネーミング規則
※通貨記号も名前に使用できると書かれていますが、日本語の円マーク(\)は、バックスラッシュに解釈されるためセットする事ができません。

また、予めColdFusion内で使用されている言葉(Error, File, For 他)も「予約語」として使用することができません。下記に紹介されている言葉を変数名に使用しないようにご注意ください。
予約語

■今後の予防

上記の規則に加えて、変数の名前を付ける際、一定のルールを決めておくことで、エラーを防ぐとともにプログラムのメンテナンス性も向上します。

例として、苗字をセットする変数の名前を考えてみます。英語の単語(Last Name)を以下のどれかで組み合わせて名前を付けます

  • 単語と単語の区切りをどうするか(Last_Name や LastName)
  • 大文字と小文字を組み合わせるかどちらかのみ使用するか(LastName や lastName や LASTNAME や lastname)

■おくすり出しておきますね〜(まめ知識)

ColdFusion Builderでプログラミングを行うと、コーディングの時点で問題を検知して通知を表示してくれて便利です。

お大事に〜
ColdFusionの各種情報の配信


最新情報
■2017/6/26
『ColdFusion 実験室』
実験6

■2017/3/27
ColdFusion 2016 対応
インストール セットアップ情報
CFサーバーのインストール
CFビルダーのインストール

■2016/9/20
『ColdFusion 2016 リリース
Enterprise Edition 活用資料』
記事一覧

■2016/3/30
『ColdFusion 実験室』
実験4、実験5

■2015/8/10 〜
『ColdFusion クリニック』
記事一覧(随時更新中)

■2015/4/8
『JasperReportsによる帳票出力』
2. JasperReportsによる帳票出力【後編】

■2015/3/12
アップクロス株式会社
西元 貞昭様
『JasperReportsによる帳票出力』
1. JasperReportsによる帳票出力【前編】


■2015/2/25
『ColdFusionでエクセルを使いこなそう!』
4. 【上級】ColdFusionのエクセル機能を利用したPDF帳票の紹介

ColdFusionトレーニング


ColdFusionユーザーグループ
ColdFusionユーザーグループ
Copyright 2012 Samuraiz Corporation. All Rights Reserved.