メインコンテンツまでスキップ
バージョン: 20 R7 BETA

データタイプの概要

4D においてデータは、主にデータベースフィールドと 4D ランゲージという2つの場所で、そのタイプに応じて扱われます。

この2つはおおよそ同じものですが、データベースレベルで提供されているいくつかのデータタイプはランゲージにおいては直接利用可能ではなく、自動的に適宜変換されます。 同様に、いくつかのデータタイプはランゲージでしか利用できません。 各場所で利用可能なデータタイプと、ランゲージでの宣言の仕方の一覧です:

データタイプデータベースランゲージvar 宣言ARRAY 宣言
文字列テキストに変換--
テキストTextARRAY TEXT
日付DateARRAY DATE
時間TimeARRAY TIME
ブールBooleanARRAY BOOLEAN
整数倍長整数に変換IntegerARRAY INTEGER
倍長整数IntegerARRAY LONGINT
64ビット整数◯ (SQL)実数に変換--
実数RealARRAY REAL
未定義---
Null---
ポインター-PointerARRAY POINTER
ピクチャーPictureARRAY PICTURE
BLOBBlob, 4D.BlobARRAY BLOB
オブジェクトObjectARRAY OBJECT
コレクション-Collection
バリアント(2)-Variant

(1) ORDA では、オブジェクト (エンティティ) を介してデータベースフィールドを扱うため、オブジェクトにおいて利用可能なデータタイプのみがサポートされます。 詳細については オブジェクト のデータタイプの説明を参照ください。

(2) バリアントは実際のところ データ タイプではなく、あらゆるデータタイプの値を格納することのできる 変数 タイプです。

デフォルト値

明示的な宣言 によって 変数 または 引数 の型が決まるとき、変数はデフォルトの値を受け取り、割り当てがされない限りセッション中はその値を保ち続けます。

デフォルト値は変数の型に依存します:

デフォルト値
ブールfalse
日付00-00-00
倍長整数0
時間00:00:00
ピクチャーピクチャーサイズ=0
実数0
ポインターNil=true
テキスト""
BLOBBLOB サイズ=0
オブジェクトnull
コレクションnull
バリアントundefined

デフォルト値としての Null

Object型、Collection型、Pointer型、Picture型の変数は、デフォルト値として null を持ちますが、実際には宣言後で割り当て前の場合には中間的な状態になります。 これらは null 値の ように振る舞います が、コードがそれらにアクセスしようとしたときに発生するエラーが少なくなるなど、多少の違いがあります。

データタイプの変換

4D ランゲージには、データタイプ間の変換をおこなう演算子やコマンドがあります。 4D ランゲージはデータタイプをチェックします。 たとえば、"abc"+0.5+!12/25/96!-?00:30:45?のように記述することはできません。 これは、シンタックス (構文) エラーになります。

次の表は、基本のデータタイプ、変換できるデータタイプ、それを実行する際に使用するコマンドを示しています:

データタイプ文字列に変換数値に変換日付に変換時間に変換ブールに変換
文字列 (1)NumDateTimeBool
数値 (2)StringBool
日付StringBool
時間StringBool
ブールNum

(1) JSON形式の文字列は JSON Parse コマンドを使ってスカラーデータ、オブジェクト、あるいはコレクションに変換することができます。

(2) 時間は数値として扱うことができます。

注: この表に示すデータ変換の他に、演算子と他のコマンドを組み合せることで、より洗練されたデータ変換を実行することができます。