4D v17.4データタイプ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v17.4
データタイプ
|
データタイプ | フィールド | 変数 | 式 |
文字列 (*1) | ○ | ○ | ○ |
数値 (*2) | ○ | ○ | ○ |
日付 | ○ | ○ | ○ |
時間 | ○ | ○ | ○ |
ブール | ○ | ○ | ○ |
ピクチャ | ○ | ○ | ○ |
ポインタ | × | ○ | ○ |
BLOB (*3) | ○ | ○ | × |
配列 (*4) | × | ○ | × |
Integer 64 bits (*5) | ○ | × | × |
Float (*5) | ○ | × | × |
オブジェクト | ○ | ○ | ○ |
コレクション | × | ○ | ○ |
未定義 | × | ○ | ○ |
Null | × | × | ○ |
文字列とは、以下を示す総称です:
文字列とテキスト変数には違いはありません。
文字列をテキストフィールドに割り当てることもできますし、その逆も可能です。4Dは必要に応じて変換・切り落としを自動的に行います。式の中で、文字列とテキストは混ぜて使用することが出来ます。
注: このマニュアルでは、コマンド説明における文字列とテキストの引数は特に明記されていない限り、両方とも「文字列」と表記されています。
数値とは、以下を示す総称です。
実数データタイプの範囲は、±1.7e±308 (有効数字13桁) です。
整数データタイプ(2バイト整数)の範囲は、-32,768..32,767 (2^15..(2^15)-1)です。
倍長整数データタイプ(4バイト整数)の範囲は、-2^31..(2^31)-1です。
数値データタイプは、異なる数値データタイプに代入することができます。このとき、4Dが必要に応じて変換、切り捨て、丸め処理を行います。ただし、値が範囲外の場合には、変換は正しい値を返しません。数値データタイプは式の中に混在させて使用することができます。
注: このマニュアルでは、実際のデータタイプに関わらず、コマンド説明における実数、整数、倍長整数の引数は特に明記されていない限り、数値と表記されています。
注: このマニュアルでは、コマンド説明における日付引数は特に明記されていない限り、「日付」と表記されています。
JavaScriptにおいて日付はオブジェクトなので、4Dに送られる際には他のオブジェクト同様、JSON フォームを含んだテキストとして送られます。この原理は特に4D Mobile または Webエリア を使用する際に適用されます。
JavaScript 日付の JSON フォームは ISO 8601規格に基づき、 "2013-08-23T00:00:00Z"のように記述されます。
このテキストは、デベロッパが4Dの日付(C_DATE) へと変換してあげる必要があります。方法は二つあります。:
C_TEXT($1) // 日付をISOフォーマットで受け取る
C_DATE($d)
$d:=JSON Parse("\""+$1+"\"";Is date))
C_TEXT($1) // 日付をISOフォーマットで受け取る
C_DATE($d)
$d:=Date($1)
二つの方法の違いに注意して下さい。 JSON Parse コマンドは SET DATABASE PARAMETER を使用して設定された変換モードに従うのに対し、 Date コマンドはこれに依存しないという事です。 Date コマンドを使用した変換は、常にローカルのタイムゾーンを考慮するということです。
注: 4D v16 R6以降、カレントのデータ保存設定が"日付型"になっている場合、JSON日付文字列はJSON Parse および Date コマンドからは自動的に日付値として扱われます。この設定の詳細な情報については、互換性ページ 内の"オブジェクトではISO日付フォーマットの代わりに日付型を使用する"オプションを参照してください。
注: このマニュアルでは、コマンド説明における時間引数は特に明記されていない限り、「時間」と表記されています。
ブールのフィールド、変数、式は、TRUE(真)またはFALSE(偽)のいずれかになります。
注: このマニュアルでは、コマンド説明におけるブール引数は特に明記されていない限り、「ブール」と表記されています。
ピクチャのフィールド、変数、式は、任意のWindowsまたはMacintoshのピクチャになります。一般的に、ペーストボード上に置いたり、4Dコマンドやプラグインコマンドを使用してディスクから読み出すことのできる任意のピクチャがこれに含まれます。
注: このマニュアルでは、コマンド説明におけるピクチャ引数は特に明記されていない限り、「ピクチャ」と表記されています。
ポインタの変数または式は、別の変数(配列、配列要素を含む)、テーブルまたはフィールドへの参照です。ポインタタイプのフィールドは、存在しません。
注: このマニュアルでは、コマンド説明におけるポインタ引数は特に明記されていない限り、「ポインタ」と表記されています。
BLOBのフィールドまたは変数は、個別にまたはBLOBコマンドを使用して利用できる一連のバイト列(長さは0バイトから2ギガバイトまで)です。BLOBタイプの式は、存在しません。
注: このマニュアルでは、コマンド説明におけるBLOB引数は特に明記されていない限り、「BLOB」と表記されています。
オブジェクト型の変数、フィールド、式にはさまざまなデータを格納することができます。
4D のネイティブなオブジェクトの構造は、よくある「プロパティ/値」(または「属性/値」)というペア(連想配列)に基づいています。これらのオブジェクトの記法は JSON をもとにしていますが、完全に同じというわけではありません。
警告: 属性名は大文字と小文字を区別するという点に注意してください。
オブジェクト型の変数、フィールド、式を管理するには、オブジェクト記法 (オブジェクト記法の使用 参照)を使用するか、あるいはOB Get および OB SET などのオブジェクト(ランゲージ) テーマの 4Dコマンドを使用します。QUERY BY ATTRIBUTE、ORDER BY ATTRIBUTE や QUERY SELECTION BY ATTRIBUTE など、クエリ テーマの特定のコマンドもオブジェクト型フィールドに対して処理を行うことができます。
オブジェクトフィールドは一般的にテキストベースのため、オブジェクトフィールドの中身は4Dフォーム内ではデフォルトではテキストとして表示されJSON形式にフォーマットされています。
(*)デバッガー内でテキストとして書き出されたりJSONへと書き出された場合、ピクチャーオブジェクトプロパティには"[object Picture]"と表示されます。注意 - レコードを後で保存する場合、属性には"[object Picture]"という文字列が保存されます。
注: JSONオブジェクトを使用するには、"JSON"テーマ内のコマンドを使用してください。
コレクション変数は、様々な型の値を順番に格納することが可能です。例:
C_COLLECTION($col)
$col:=New collection("Ford";"Renault";"Nissan";500;100;True)
//$col=["Ford","Renault","Nissan",500,100,true]
サポートされる型はテキスト、数値、オブジェクト、配列、ブール型、あるいはNullです。コレクション型には式やフィールドはありません。
コレクション型変数を管理するためには、オブジェクト記法(オブジェクト記法の使用参照)と、コレクション テーマのコマンドを使用する必要があります。
例:
C_COLLECTION($col)
$col:=New collection("Ford";"Renault";"Nissan")
$col[1]:="BMW"
//$col=["Ford","BMW","Nissan"]
コレクション変数はJSON配列を保存します。JSON配列はカンマで区切られた任意の型のデータの集まりです。
JSON配列をコレクションに保存することもできます。例:
C_COLLECTION($c1;$c2)
C_TEXT($json1;$json2)
$c1:=JSON Parse("[\"Ford\",\"Renault\",\"Nissan\",500,100,true]")
$json1:=JSON Stringify($c1)
//$json1=["Ford","Renault","Nissan",500,100,true]
$c2:=JSON Parse("[1,2,3,\"a\",\"b\",\"c\"]")
$json2:=JSON Stringify($c2)
//$json2=[1,2,3,"a","b","c"]
Null は唯一 "null" の値のみをとることのできる特殊なデータタイプです。この値は、値を持たない式によって返されます。
4D データベースでは、null値はデータ値が不明であることを表し、値が空 (文字列の場合は ""、倍長整数の場合は0) であることは意味しません。4D データベースにおいて、フィールドのnull値はSQL エンジンのみが扱います (オブジェクトフィールド属性の場合を除く)。専用のフィールドオプション (ヌル値を空値にマップ) によって、データベースにおいてこの値をどのように扱うかを指定することができます。また、Is field value Null および SET FIELD VALUE NULLコマンドによる null値の読み込み・設定が可能です。
4D ランゲージやオブジェクトフィールド属性においては、Null 関数を使ってnull値を扱います。この関数をつぎの式と組み合わせて使うことで、null値の設定や比較をおこなうことができます:
配列は、実際にはデータタイプではありません。さまざまな種類の配列(整数配列、テキスト配列等)はこの配列という名前の下にグループ化されています。配列は変数です。配列タイプのフィールドは存在せず、配列タイプの式も存在しません。配列の詳細については、配列の節を参照してください。
注: このマニュアルでは、コマンド説明における配列引数は特に明記されていない限り、「配列」と表記されています (例: テキスト配列や数値配列など)。
4D言語には、データタイプ間の変換を行う演算子やコマンドがあります。4D言語はデータタイプをチェックしています。例えば、"abc"+0.5+!12/25/96!-?00:30:45?のように記述することはできません。これは、シンタックス(構文)エラーになります。
次の表は、基本的なデータタイプ、変換できるデータタイプ、それを実行する際に使用するコマンドを示しています:
データタイプ | 文字列に変換 | 数値に変換 | 日付に変換 | 時間に変換 |
文字列(*) | Num | Date | Time | |
数値 (**) | String | |||
日付 | String | |||
時間 | String | |||
ブール | Num | |||
オブジェクト | JSON Stringify | |||
コレクション | JSON Stringify |
注: この表に示すデータ変換の他に、演算子と他のコマンドを組み合せることで、より洗練されたデータ変換を実行することができます。
プロダクト: 4D
テーマ: プログラミング言語の構成要素
変更: 4D v16 R4
変更: 4D v16 R6
ランゲージリファレンス ( 4D v17)
ランゲージリファレンス ( 4D v17.1)
ランゲージリファレンス ( 4D v17.2)
ランゲージリファレンス ( 4D v17.3)
ランゲージリファレンス ( 4D v17.4)