ColdFusion の式の要素

ColdFusion の式はオペランドおよび演算子で構成されています。オペランドは定数および変数で構成されています。演算子はオペランドで動作する動詞で、関数は演算子の 1 つの形です。この章では、まず最初にオペランドについて説明し、次に演算子について説明します。

オペランド (データ タイプ、定数、および変数)

この節では、次の項目の内容について詳細に説明します。

定数および変数のデータ タイプ

ColdFusion において、定数および変数には暗黙のデータ タイプがあります。ここで 「暗黙」という言葉が用いられている理由は、Pascal のようにスタティックに記述された言語で見られるような、変数のスカラ データ タイプを定義する変数の宣言がないためです。定数を使用したり、変数の値を設定したりするときはいつでも、使用するその値は、整数、実数、および文字列などのタイプを持ちます。たとえば、cfset を使用して AGE 変数を作成して、その値を 62 に設定する場合、暗黙のデータ タイプは整数です。これらのスカラ タイプだけではなく、ColdFusion ではリスト、配列、および連想配列もサポートしています。次の表は、ColdFusion のアプリケーション ページで使用できる変数および定数のタイプを示します。
タイプ
説明
整数
小数点の付かない数値。符号付き整数の下限は -2,147,483,648 で、上限は 2,147,483,647 です。
制限を超えて整数を指定すると、ColdFusion ではオーバフローを避けるためにその整数を浮動小数点値に変換します。この処理を行うことで、ColdFusion でその数の大きさが保存されます。ただし、浮動小数点へ変換することで、精度は失われます。それは、ColdFusion では固定数のビットしか利用できないからです。
実数
小数点部分のある数値。実数は、浮動小数点数とも呼ばれます。
ColdFusion の数値の範囲は約 ±10300です。ほとんどの演算では、小数点以下 12 桁まで正確に計算することができます。
ColdFusion では科学表記法がサポートされています。つまり、3 E 16 形式で数字を入力して、計算することができます。
文字列
両側が単一引用符 (') または二重引用符 (") で囲まれたテキスト値。文字列のサイズは自由であり、ColdFusion Server で使用可能なメモリによってのみ制限されます。
単一引用符で引用される文字列内で単一引用符を使用するには、2 つの単一引用符を使ってその単一引用符をエスケープ処理 (2 つ続けて入力) します。たとえば、次のとおりです。
'the ''best'' software'
 
二重引用符で囲まれた文字列内の二重引用符も同様にエスケープ処理することができます。
# 記号を文字列に挿入するには、その # 記号をエスケープ処理 (2 つ続けて入力) する必要があります。たとえば、次のとおりです。
"enter a pound sign (##) here"
 
ブール値
論理演算の結果。値は TRUE または FALSE です。TRUE の数値は 1 で、FALSE の数値は 0 です。TRUE の文字列値は "YES" で、FALSE は "NO" です。
日付値
日付時刻値によって、西暦 100 年から 9999 年の日付と時刻を識別することができます。時刻部分が指定されない場合は、時刻が 00:00:00 に設定されます。
次のような書式を使って、日付オブジェクトを直接入力することもできます。
"1999 年 10 月 30 日"
"1999/10/30"
"99/10/30"
"1999-10-30"
 
時刻値
次のような書式を使って、日付時刻オブジェクトを直接入力することができます。
"1999 年 10 月 30 日 02 時 34 分 午前"
"1999/10/30 2 時 34 分 午前"
"1999 年 10 月 30 日 02:34:00"
"1999/10/30 14:34:00"
"1999 年 10 月 30 日 2 時 午前"
 
オブジェクトの時刻部分は、秒単位まで正確です。
配列
配列は、インデックスで指定できるオブジェクトまたはデータのテーブルです。ArrayNew 関数は、3 次元配列まで作成することができ、配列の大きさには制限がありません。
配列に格納された要素は、次のように呼ばれます。
<cfset myarray[1][2] = Now()>
 
詳細は、『ColdFusion アプリケーション開発ガイド』 を参照してください。
連想配列
連想配列を使って、キーと値の組み合わせを作成し、保持することができます。また、個別にではなく 1 つの単位で関連文字列値を参照したり、結合配列を作成したりすることができます。
詳細は、『ColdFusion アプリケーション開発ガイド』 を参照してください。
リスト
リストは特殊な文字列であり、区切り文字で区切られた要素から構成されています。
リスト処理関数で使われる既定の区切り文字はカンマ "," です。リストには 1 つ以上の区切り文字を使うことができます。ColdFusion リスト処理関数の delimiters パラメータで、リストで使用可能な区切り文字を指定します
空白は、区切り文字と見なされません。ただし、要素が空白や他の区切り文字によって区切られているリストを使うときは、空白文字を区切り文字に追加してください。最初の要素の前の区切り文字と、最後の要素の後ろの区切り文字は、無視されます。
リストを他のリストにネストすることはできません。また、リストには「空」の要素がありません。しかし、リスト全体が空になることはあります。空のリストは、空の文字列 "" と同じです。
クエリ
ColdFusion クエリは、変数に割り当てることによって、オブジェクトとして参照することができます。
<cfquery name = "myquery"
  datasource = "mydata"
  SELECT * FROM CUSTOMERS
</cfquery>

<cfset myquery2 = myquery>
 
この場合、クエリはコピーされません。その代わり、両方の名前がレコード セットのデータを指しており、クエリ内で参照されているテーブルを変更すると、元のクエリとクエリ オブジェクト myquery2 の両方がその変更を反映できるようになります。この処理を配列で行うと、その配列はコピーされます。
クエリと変数は、同じアプリケーション ページ内で同時に同じ名前を持つことはできません。
COM オブジェクト
COM (Component Object Model) オブジェクトは、アプリケーション ページ内で呼び出すことができる機能をカプセル化した見えないコンポーネントです。ActiveX、OCX、CORBA、ADO オブジェクトなどが COM オブジェクトの例です。
COM オブジェクトには、一般的に特定の演算を実行するために使用できるメソッドが含まれています。メソッドとは、関数のようなものです。
<cfset temp = Mailer.SendMail()>
 
また、COM オブジェクトには、一般的に、ColdFusion 変数を使って読み書きができるプロパティも含まれています。
<cfset Mailer.FromName = Form.fromname>
 
プロパティは、割り当てのいずれの辺でも呼び出すことができます。
詳細は、『ColdFusion アプリケーション開発ガイド』を参照してください。

日付と時刻値に関する注意点

この節では、ColdFusion により日付と時刻が処理される方法について説明します。

日付と時刻値の格納方法

ColdFusion の内部では、日付時刻値が、実数のサブセットとして時刻行に表現されます。この表現は評価の効率を高めるため、またよく知られているデータベース システムで使われるメソッドであるため、最適化されています。このモデルでは、1 日は、2 つの連続した整数の差になります。日付時刻値の時刻部分は、実数の小数部分に格納されます。

このように、算術演算を行って日付時刻値を操作することができます。たとえば、 Now() + 1 は明日の同時刻になります。ただし、ColdFusion を使って開発する場合は、このように日付時刻オブジェクトを操作する方法では問題が発生しやすいため、できるだけ使わないようにしてください。その代わりに、日付時刻操作関数を使用してください。

21 世紀の日付

00 から 29 の 2 桁の年は、21 世紀の日付として扱われます。30 から 99 は、20 世紀の日付として扱われます。したがって、次の日付は同等のものです。

"2015/10/30"
"15/10/30"

定数

定数値は、プログラムの実行中には変更しません。定数は、式や関数内で使用できる簡単なスカラ値です。定数には、整数、実数、日付時刻値、ブール値、文字列値、およびリストが含まれます。