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

データタイプの概要

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

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

データタイプデータベースランゲージvar 宣言C_ または ARRAY 宣言
文字列テキストに変換-*
テキストTextC_TEXT, ARRAY TEXT
日付DateC_DATE, ARRAY DATE
時間TimeC_TIME, ARRAY TIME
ブールBooleanC_BOOLEAN, ARRAY BOOLEAN
整数倍長整数に変換IntegerARRAY INTEGER
倍長整数IntegerC_LONGINT, ARRAY LONGINT
64ビット整数◯ (SQL)実数に変換-*
実数RealC_REAL, ARRAY REAL
未定義-*-
Null*-*
ポインター-PointerC_POINTER, ARRAY POINTER
ピクチャーPictureC_PICTURE, ARRAY PICTURE
BLOBBlob, 4D.BlobC_BLOB, ARRAY BLOB
オブジェクトObjectC_OBJECT, ARRAY OBJECT
コレクション*CollectionC_COLLECTION
バリアント(2)-VariantC_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) 時間は数値として扱うことができます。

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