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

データタイプの概要

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
BLOB◯◯Blob, 4D.BlobC_BLOB, ARRAY BLOB
オブジェクト◯◯ObjectC_OBJECT, ARRAY OBJECT
コレクション-◯CollectionC_COLLECTION
バリアント(2)-◯VariantC_VARIANT

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

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

デフォルト値​

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

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

型デフォルト値
Booleanfalse
Date00-00-00
Integer0
Time00:00:00
Pictureピクチャーサイズ=0
Real0
PointerNil=true
Text""
BLOBBLOB サイズ=0
Objectnull
Collectionnull
Variantundefined

デフォルト値としての 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) 時間は数値として扱うことができます。

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