データタイプの概要
4D においてデータは、主にデータベースフィールドと 4D ランゲージという2つの場所で、そのタイプに応じて扱われます。
この2つはおおよそ同じものですが、データベースレベルで提供されているいくつかのデータタイプはランゲージにおいては直接利用可能ではなく、自動的に適宜変換されます。 同様に、いくつかのデータタイプはランゲージでしか利用できません。 各場所で利用可能なデータタイプと、ランゲージでの宣言の仕方の一覧です:
| データタイプ | データベース | ランゲージ | var 宣言 | C_ または ARRAY 宣言 | 
|---|---|---|---|---|
| 文字列 | ◯ | テキストに変換 | - | - | 
| Text | ◯ | ◯ | Text | C_TEXT, ARRAY TEXT | 
| Date | ◯ | ◯ | Date | C_DATE, ARRAY DATE | 
| Time | ◯ | ◯ | Time | C_TIME, ARRAY TIME | 
| Boolean | ◯ | ◯ | Boolean | C_BOOLEAN, ARRAY BOOLEAN | 
| Integer | ◯ | 倍長整数 に変換 | Integer | ARRAY INTEGER | 
| 倍長整数 | ◯ | ◯ | Integer | C_LONGINT, ARRAY LONGINT | 
| 64ビット整数 | ◯ (SQL) | 実数に変換 | - | - | 
| Real | ◯ | ◯ | Real | C_REAL, ARRAY REAL | 
| 未定義 | - | ◯ | - | - | 
| Null | - | ◯ | - | - | 
| Pointer | - | ◯ | Pointer | C_POINTER, ARRAY POINTER | 
| Picture | ◯ | ◯ | Picture | C_PICTURE, ARRAY PICTURE | 
| BLOB | ◯ | ◯ | BLOB | C_BLOB, ARRAY BLOB | 
| Object | ◯ | ◯ | Object | C_OBJECT, ARRAY OBJECT | 
| Collection | - | ◯ | Collection | C_COLLECTION | 
| バリアント(2) | - | ◯ | Variant | C_VARIANT | 
(1) ORDA では、オブジェクト (エンティティ) を介してデータベースフィールドを扱うため、オブジェクトにおいて利用可能なデータタイプのみがサポートされます。 詳細については オブジェクト のデータタイプの説明を参照ください。
(2) バリアントは実際のところ データ タイプではなく、あらゆるデータタイプの値を格納することのできる 変数 タイプです。
デフォルト値
明示的な宣言 によって 変数 または 引数 の型が決まるとき、変数はデフォルトの値を受け取り、割り当てがされない限りセッション中はその値を保ち続けます。
デフォルト値は変数の型に依存します:
| 型 | デフォルト値 | 
|---|---|
| ブール | false | 
| Date | 00-00-00 | 
| Integer | 0 | 
| Time | 00:00:00 | 
| Picture | ピクチャーサイズ=0 | 
| Real | 0 | 
| Pointer | Nil=true | 
| Text | "" | 
| BLOB | BLOB サイズ=0 | 
| Object | null | 
| Collection | null | 
| Variant | undefined | 
データタイプの変換
4D ランゲージには、データタイプ間の変換をおこなう演算子やコマンドがあります。 4D ランゲージはデータタイプをチェックします。 たとえば、"abc"+0.5+!12/25/96!-?00:30:45?のように記述することはできません。 これは、シンタックス (構文) エラーになります。
次の表は、基本のデータタイプ、変換できるデータタイプ、それを実行する際に使用するコマンドを示しています:
| データタイプ | 文字列に変換 | 数値に変換 | 日付に変換 | 時間に変換 | ブールに変換 | 
|---|---|---|---|---|---|
| 文字列 (1) | Num | Date | Time | Bool | |
| 数値 (2) | Text | Bool | |||
| Date | Text | Bool | |||
| Time | Text | Bool | |||
| Boolean | Num | 
(1) JSON形式の文字列は JSON Parse コマンドを使ってスカラーデータ、オブジェクト、あるいはコレクションに変換することができます。
(2) 時間は数値として扱うことができます。
注: この表に示すデータ変換の他に、演算子と他のコマンドを組み合せることで、より洗練されたデータ変換を実行することができます。