変数
4D のデータは、根本的に異なっている 2つの方法で保持されます。 フィールド はディスクに永続的にデータを保存するのに対し、変数 はメモリ上に一時的にデータを格納します。
データベースを作成する際には、フィールドに名前とデータタイプを指定します。 同様に、変数にも名前と データタイプ を指定します。
いったん作成された変数は、アプリケーションで必要とされる場所に使用できます。 たとえば、テキスト変数を同じタイプのフィールドに格納するには次のように書きます:
[MyTable]MyField:=MyText
変数はランゲージの要素です。画面上に表示されることのない、裏方に徹した変数を作成・利用することができます。 もちろん、フォーム上に変数の値を表示することもできます (ポインターやBLOBを除く)。また、変数に値を入力したり、変数の値をレポートに印刷したりすることも可能です。 このとき、入力可や入力不可の変数オブジェクトはフィールドオブジェクトと同様に振舞い、提供されるコントロールも類似しています。 フォーム上のボタン、リストボックス、スクロールエリア、ピクチャーボタンなどのオブジェクトも変数を使って制御することができるほか、保存不要な計算結果を表示させることもできます。
変数の宣言
変数の作成は通常、宣言によっておこないます。 4D ランゲージでは、変数の宣言方法は2つあります:
var
キーワードを使った宣言 (推奨、とくにオブジェクトやクラスをコードで使用する場合)- "コンパイラー" や "配列" テーマの 4D ランゲージコマンドを使った宣言 (旧シンタックス)。
変数は宣言されると、その型に対応するデフォルト値 に初期化されます。別の値が 代入 されない限り、セッション中はこの値が保持されます。
この方法は推奨されませんが、ただ "使用する" ことによって変数を宣言することもできます。 正式にそれらを宣言することは必須ではありません。 たとえば、今日の日付に30日足した値を格納した変数を作成するには、次のように書くことができます:
MyDate:=Current date+30 // MyDateを作成します
// これは日付型の変数であると 4D は推測します
// 30日後の日付が代入されます
宣言前に変数が作成された場合、宣言による初期化はおこなわれません。
var
キーワードによる宣言
オブジェクト変数をクラスに紐づけることができるため、var
キーワードを使った変数宣言が推奨されます。 このシンタックスはコードエディ ターの自動補完機能を強化します。
var
キーワードを使って変数を宣言するには、次のシンタックスを用います:
var <varName>{; <varName2>;...}{ : <varType>}
例:
var $myText : Text // テキスト変数
var myDate1; myDate2 : Date // 複数の日付変数
var $myFile : 4D.File // File クラスオブジェクト変数
var $myVar // バリアント型変数
varName
に指定する変数名は 4Dの 識別子の命名規則 に従う必要があります。
このシンタックスは ローカル変数とプロセス変数 の宣言のみサポートしています。インタープロセス変数 および 配列 には使用できません。
varType
には次が指定できます:
varType
を省略すると、variant 型の変数が作成されます。
サポートされている varType
値の一覧です:
varType | 内容 |
---|---|
Text | テキスト値 |
Date | 日付値 |
Time | 時間値 |
Boolean | ブール値 |
Integer | 倍長整数値 |
Real | 実数値 |
Pointer | ポインター値 |
Picture | ピクチャー値 |
BLOB | BLOB値 |
Collection | コレクション値 |
Variant | バリアント値 |
Object | デフォルトクラス (4D.Object ) のオブジェクト |
4D.<className> | 4Dクラス名のオブジェクト |
cs.<className> | ユーザークラス名のオブジェクト |
例題
- 基本のデータ型の、ローカル変数およびプロセス変数の宣言:
var $myText; myText; $vt : Text
var myVar //variant
var $o : Object
// 次と同義です:
var $o : 4D.Object
// C_OBJECT($o) とも同義です
- 4Dクラス型のオブジェクト変数の宣言:
var $myFolder : 4D.Folder
var $myFile : 4D.File
- ユーザークラス型のオブジェクト変数の宣言:
var $myClass : cs.MyClass
var $dataclass : cs.Employee
var $entity : cs.EmployeeEntity
C_ 指示子による宣言
互換性に関する注記: メソッド内で変数を宣言するにあたって、この方法は推奨されません。 var キーワードの使用が推奨されます。
"コンパイラー" テーマコマンドの指示子を使って、基本のデータ型の変数を宣言することができます。
たとえば、テキスト変数を宣言するには次のように書きます:
C_TEXT(myText)
いくつかの基本的な変数宣言の例です:
C_BLOB(vxMyBlob) // プロセス変数 vxMyBlob を BLOB型として宣言します
C_DATE($vdCurDate) // ローカル変数 $vdCurDate を日付型として宣言します
C_LONGINT(vg1;vg2;vg3) // 3つのプロセス変数 vg1, vg2, vg3 を倍長整数型として宣言します
C_OBJECT($vObj) // ローカル変数 $vObj をオブジェクト型として宣言します
C_COLLECTION($vCol) // ローカル変数 $vCol をコレクション型として宣言します