version 11 (Modified)
4Dのフィールド、変数、式は以下のデータタイプとなり得ます:
| データタイプ | フィールド | 変数 | 式 |
| 文字列 (*1) | ○ | ○ | ○ |
| 数値 (*2) | ○ | ○ | ○ |
| 日付 | ○ | ○ | ○ |
| 時間 | ○ | ○ | ○ |
| ブール | ○ | ○ | ○ |
| ピクチャ | ○ | ○ | ○ |
| ポインタ | × | ○ | ○ |
| BLOB (*3) | ○ | ○ | × |
| 配列 (*4) | × | ○ | × |
| Integer 64 bits (*5) | ○ | × | × |
| Float (*5) | ○ | × | × |
| 未定義 | × | ○ | ○ |
*1. 文字列には、文字フィールド、固定長変数、テキストフィールド、テキスト変数があります。
*2. 数値には、実数、整数、倍長整数のフィールドと変数があります。
*3. BLOBはBinary Large OBjectの省略形です。BLOBの詳細については、BLOBコマンドの章を参照してください。
*4. 配列にはすべてのタイプの配列が含まれます。詳細については、配列の章を参照してください。
*5. Integer 64 bitsとFloatタイプは、SQLによってのみ管理されます。4D言語でこれらを使用することは推奨されません。これを行うと、これらのデータタイプは実数に変換され、精度が失われることがあります。
文字列
文字列とは、以下を示す総称です:
・文字フィールドまたは変数
・テキストフィールドまたは変数
・任意の文字列またはテキスト式
文字列は、文字で構成されます。文字列の処理は、4DがUnicodeモードで実行されているか、非Unicodeモード (互換モード) で実行されているかにより変わります。このモードはアプリケーションの環境設定で設定されます (ASCII コードの節参照)。
Unicodeモード
・文字フィールドは0から255文字を格納できます (フィールド定義時に指定)。
・テキストフィールド、変数、式は0から2 GBのテキストを格納できます。
・文字列変数とテキスト変数の間に違いはありません。
非Unicode Mode (互換)
それぞれの文字は、WindowsまたはMac OSでサポートされる256個のASCII文字です。ASCIIコードに関する詳細は、ASCII コードの節を参照してください。
・文字フィールド0から255文字を格納できます (フィールド定義時に指定)。
・固定長変数は0から255文字を格納できます (変数宣言時に指定)。
・キストフィールド、変数、式は0から32000文字のテキストを格納できます。
モードにかかわらず、文字列をテキストフィールドに代入したり、あるいはその逆を行ったりできます。4Dが変換を行い、必要に応じて切り捨てを行います。文字列とテキストは1つの式の中で混在させて使用できます。
注: このマニュアルでは、コマンド説明における文字列とテキストの引数は特に明記されていない限り、両方とも「文字列」と表記されています。
数値
数値とは、以下を示す総称です。
・実数のフィールド、変数、または式
・整数のフィールド、変数、または式
・倍長整数のフィールド、変数、または式
実数データタイプの範囲は、±1.7e±308 (15桁) です。
整数データタイプ(2バイト整数)の範囲は、-32,768..32,767 (2^15..(2^15)-1)です。
倍長整数データタイプ(4バイト整数)の範囲は、-2^31..(2^31)-1です。
数値データタイプは、異なる数値データタイプに代入することができます。このとき、4Dが必要に応じて変換、切り捨て、丸め処理を行います。ただし、値が範囲外の場合には、変換は正しい値を返しません。数値データタイプは式の中に混在させて使用することができます。
注: このマニュアルでは、実際のデータタイプに関わらず、コマンド説明における実数、整数、倍長整数の引数は特に明記されていない限り、数値と表記されています。
日付
・日付フィールド、変数、式として認識できる範囲は、100/1/1から32,767/12/31までです。
・日本語版の4Dを使用した場合、日付の順序は年/月/日の順になります。
・年を2桁で指定され、30未満の場合2000年代であると解釈されます。30以上の場合は1900年代であると解釈されます。(このデフォルト設定は、SET DEFAULT CENTURYコマンドで変更できます)。
注: このマニュアルでは、コマンド説明における日付引数は特に明記されていない限り、「日付」と表記されています。
時間
・時間のフィールド、変数、式の範囲は00:00:00から596,000:00:00までです。
・日本語版の4Dでは、時間の順序は時:分:秒の順になります。
・時間は24時間制です。
・時間の値は数値として扱うことができます。時間から返される数値は時間が表す秒数です。詳細については後述の時間演算子の節を参照してください。
注: このマニュアルでは、コマンド説明における時間引数は特に明記されていない限り、「時間」と表記されています。
ブール
ブールのフィールド、変数、式は、TRUE(真)またはFALSE(偽)のいずれかになります。
注: このマニュアルでは、コマンド説明におけるブール引数は特に明記されていない限り、「ブール」と表記されています。
ピクチャ
ピクチャのフィールド、変数、式は、任意のWindowsまたはMacintoshのピクチャになります。一般的に、ペーストボード上に置いたり、4Dコマンドやプラグインコマンドを使用してディスクから読み出すことのできる任意のピクチャがこれに含まれます。
注: このマニュアルでは、コマンド説明におけるピクチャ引数は特に明記されていない限り、「ピクチャ」と表記されています。
ポインタ
ポインタの変数または式は、別の変数(配列、配列要素を含む)、テーブルまたはフィールドへの参照です。ポインタタイプのフィールドは、存在しません。
ポインタの詳細については、ポインタの節を参照してください。
注: このマニュアルでは、コマンド説明におけるポインタ引数は特に明記されていない限り、「ポインタ」と表記されています。
BLOB
BLOBのフィールドまたは変数は、個別にまたはBLOBコマンドを使用して利用できる一連のバイト列(長さは0バイトから2ギガバイトまで)です。BLOBタイプの式は、存在しません。
注: このマニュアルでは、コマンド説明におけるBLOB引数は特に明記されていない限り、「BLOB」と表記されています。
配列
配列は、実際にはデータタイプではありません。さまざまな種類の配列(整数配列、テキスト配列等)はこの配列という名前の下にグループ化されています。配列は変数です。配列タイプのフィールドは存在せず、配列タイプの式も存在しません。配列の詳細については、配列の節を参照してください。
注: このマニュアルでは、コマンド説明における配列引数は特に明記されていない限り、「配列」と表記されています (例: 文字列配列や数値配列など)。
未定義
未定義は、実際にはデータタイプではありません。未定義は、まだ定義されていない変数を指しています。関数(結果を返すプロジェクトメソッド)は、メソッド内で、戻り値 ($0) に未定義式が代入されている場合、未定義値を返すことがあります。フィールドは、未定義にはできません。
データタイプの変換
4D言語には、データタイプ間の変換を行う演算子やコマンドがあります。4D言語はデータタイプをチェックしています。例えば、"abc"+0.5+!12/25/96!-?00:30:45?のように記述することはできません。これは、シンタックス(構文)エラーになります。
次の表は、基本的なデータタイプ、変換できるデータタイプ、それを実行する際に使用するコマンドを示しています:
| データタイプ | 文字列に変換 | 数値に変換 | 日付に変換 | 時間に変換 |
| 文字列 | Num | Date | Time | |
| 数値 (*) | String | |||
| 日付 | String | |||
| 時間 | String | |||
| ブール | Num |
(*) 時間値は数値として扱うことができます。
注: この表に示すデータ変換の他に、演算子と他のコマンドを組み合せることで、より洗練されたデータ変換を実行することができます。
参照
Type, ポインタ, メソッド, 演算子, 識別子, 制御フロー, 定数, 配列, 変数.