データ型

<< Click to Display Table of Contents >>

マニュアル > スクリプトガイド > スクリプトVer2(SC2構文) >

データ型

データ型について

SC2構文で扱える値のデータ型は以下の5種類です。

 

データ型

説明

ブール

ブール値(T or F)です。“T”はOnの状態を表し、“F”はOffの状態を表します。

数値

数値です。小数点も扱えます。

文字

文字列です。

時刻

時刻(日時)です。

オブジェクト

オブジェクトを変数に格納することができます。

 

hint

上表以外の状態として、不定値(#N/A#)と空値(#NOTHING#)があります。詳しくは「不定値と空値について」を参照して下さい。

 

 


 

ブール型

 

T もしくは Fと記述します。TはOnの状態をあらわし、FはOffの状態を表します。TRUE もしくは FALSEと書くこともできます(※全て大文字で記述してください)。

 

例)

var a = T;
var b = F;
var d = a && b;		// dはFになります。
var e = a || b;		// eはTになります。
var f = T && F || F; 	// fはFになります。

 

 


 

数値型

 

数値です。通常の整数はもちろん倍精度浮動小数も扱えます。

 

例)

var a = 123.45;
var b = 23.45;
var d = a + b;		// d は146.9になります。
var e = 0xFF23;		// 0xを頭に付けると数値を16進数で表現できます

 

attention

16進数表記で扱える値の範囲は0x00000000 ~ 0xFFFFFFFFになります。

 

 


 

文字型

 

文字です。文字は必ず、「"」で囲みます。

 

例)

var a = "Hello";
var b = a + " " + "World";	// b は"Hello World"になります。

 

 


 

時刻型

 

時刻です。時刻の表現には時刻書式を用います。時刻書式については「時刻型の書式」を参照下さい。

 

例)

var a = #2005/1/2 3:4:5#;	//2005年1月2日3時4分5秒
var a = #2005/1/2 3:4:5.123#;	//2005年1月2日3時4分5秒123ms
var a = #now#;			//現在の時刻
var a = #now - 1D#;		//現在の時刻から1日前(24時間前)の時刻

 

 


 

オブジェクト型

 

オブジェクトを変数に格納することができます。

 

例)

var a = this;			//自分自身のオブジェクトを代入する
a.FillColor = "#FF0000";	//自分自身の背景を赤にする
a = parent;			//親オブジェクトを代入する
a.FillColor = "#00FF00";	//親の背景を緑にする

 

 

 

 

時刻型の書式

時刻型のデータでは、直接的な時刻指定のほか、例えば今現在から10分後などといった相対時刻を求めることができます。また、コントロールの中には時刻型のプロパティを持つものがあり、それらに対してスクリプトからアクセスする場合には、時刻型の変数によって行います。

 


絶対時刻による指定

 

絶対時刻で時刻表現する場合のフォーマットは以下のとおりです。

 

#yyyy/mm/dd H:M:S#

 

 

例)

#2005/1/2 3:4:5#

 

 

msまで含めたい場合は以下の書式になります。

 

#yyyy/mm/dd H:M:S.ms#

 

 

例)

#2005/1/2 3:4:5.123#

 

 


 

相対時刻による指定

 

時刻型では相対時刻表現も可能です。相対時刻とは、現在の日時を基準として1日後の日時、などの様に指定する方法です。

 

相対時刻で時刻表現する場合のフォーマットは以下のとおりです。

 

基準時刻[+時間間隔] [-時間間隔]…

 

 

フォーマットの基準時刻の部分には以下の基準時刻が指定できます。

基準時刻

説明

現在が「2016/06/15 12:12:12」(水曜)とすると

now

現在。

2016/06/15 12:12:12

year

今年。

2016/01/01 00:00:00

month

今月。

2016/06/01 00:00:00

week

今週。

2016/06/12 00:00:00

day

今日。

2016/06/15 00:00:00

hour

今の時刻(時まで有効)。

2016/06/15 12:00:00

minute

今の時刻(分まで有効)。

2016/06/15 12:12:00

future

未来。

はるか未来の時刻。

past

過去。

はるか過去の時刻。

 

時間間隔の前には「+」か「-」及び数値を必ず指定します。「+」であれば未来へ、「-」であれば過去になります。例えば「+10m」であれば基準時刻から10分後を指します。

 

時間間隔

説明

y

mo

d

w

h

m

s

 

 

例)現在が「2016/01/13 12:12:12」(水曜)の場合

#now#

現在。つまり「2016/01/13 12:12:12」。

#now#

現在-1日。つまり「2016/01/12 12:12:12」。

#now+1d#

現在+1日。つまり「2016/01/14 12:12:12」。

#now+1d#

現在-1ヶ月。つまり「2016/12/13 12:12:12」。 ※以下の注意を参照

#month#

今月。つまり「2016/01/01 00:00:00」。

#month-1d#        

先月の末日。つまり「2015/12/31 00:00:00」。

#month-1d+9h#

先月の末日の朝9時。つまり「2015/12/31 09:00:00」。

#day-1d#

昨日。つまり「2016/01/12 00:00:00」。

#day+8h+30m#

今日の8時30分。つまり「2016/01/13 08:30:00」。

#week+2d#

今週の火曜日。つまり「2016/01/12 00:00:00」。

 

attention

現在が31日の場合、NOWに対して月の引き算を含めた相対時刻(例 #NOW-1MO#等)を使用できません。理由は、31日の1ヶ月前が30日までしかない月の場合、該当する日が存在しないためエラーが発生しますので注意してください。

 

hint

時刻型の値で計算を行った場合以下のようになります。

 

var a = #2004/1/1 0:0:0#;
var b = #2004/1/1 0:1:0#;
var d = b - a;           // dは60(秒)になる。
var e = a + 10;          // eはaに10秒加算されて#2004/1/1 0:0:10#になる。

 

hint

ルートメソッド「GetRelativeTime」は、ある特定の時刻(現在の時刻ではなく、指定した時刻)を基準に相対時刻の書式を用いて、相対時刻を求めることができます。

 

例1)結果は「2002/10/9 10:10:10」になります。

var a = ::GetRelativeTime(::CTime("2002/10/10 10:10:10"), "now-1d");

 

例2)結果は「2002/10/9 0:0:0」になります。

var a = ::GetRelativeTime(::CTime("2002/10/10 10:10:10"), "day-1d");

 

 

型変換について

ルートメソッドには以下の変換メソッドが用意されており、スクリプトなどから呼び出す事で型変換を行うことができます。

 

CBool

値をブール型に変換する。

CNum

値を数値型に変換する。

CStr

値を文字列に変換する。

CTime

値を時刻型に変換する。

CNumToLocale(NL)

フォーマットに従った数値文字列を作成する。

CTimeStr (TS)

値を時刻文字列に変換する。

CNumToHex

値を16進数の文字列に変換する。

CNumToOct

値を8進数の文字列に変換する。

CNumToBin

値を2進数の文字列に変換する。

CHexToNum

16進数の文字列を値に変換する。

COctToNum

8進数の文字列を値に変換する。

CBinToNum

2進数の文字列を値に変換する。

 

例えば以下の場合、変数cには“Data1:123 Data2:456”という文字列が代入されます。

 

var a = 123;
var b = 456;
var c = "Data1:" + ::CStr(a) + " Data2:" + ::CStr(b);

 

 

hint

CNumToLocale(NL)は小数点や桁数を調整した数値文字列を生成する便利な関数です。第一引数で数値を、第二引数で小数点以下の桁数を指定します。

 

例)以下の例では、aには"12.00"という文字が代入されます。

var a = ::NL(12, 2);