4D v16.3

データタイプ

ホーム

 
4D v16.3
データタイプ

データタイプ  


 

 

4Dのフィールド、変数、式は以下のデータタイプとなり得ます:

データタイプフィールド変数
文字列 (*1)
数値 (*2)
日付
時間
ブール
ピクチャ
ポインタ×
BLOB (*3)×
配列 (*4)××
Integer 64 bits (*5)××
Float (*5)××
オブジェクト (*6)
未定義×


*1. 文字列には、文字フィールド、固定長変数、テキストフィールド、テキスト変数があります。
*2. 数値には、実数、整数、倍長整数のフィールドと変数があります。
*3. BLOBはBinary Large OBjectの省略形です。BLOBの詳細については、 BLOBコマンド の章を参照してください。
*4. 配列にはすべてのタイプの配列が含まれます。詳細については、 配列 の章を参照してください。
*5. Integer 64 bitsとFloatタイプは、SQLによってのみ管理されます。4D言語でこれらを使用することは推奨されません。これを行うと、これらのデータタイプは実数に変換され、精度が失われることがあります。
*6. オブジェクトを使用すると、構築されたデータを保存・操作できるようになります。オブジェクトは "オブジェクト(ランゲージ)" テーマ内のコマンドによって管理できます。

文字列とは、以下を示す総称です:

  • 文字フィールドまたは変数: 文字フィールドには0~255文字までの文字を格納することができます(上限はフィールドが定義されたときに設定されます)。
  • テキストフィールドまたは変数: テキストフィールド、変数、または式には0~2 GBのテキストを格納することができます。
  • 任意の文字列またはテキスト式

文字列とテキスト変数には違いはありません。

文字列をテキストフィールドに割り当てることもできますし、その逆も可能です。4Dは必要に応じて変換・切り落としを自動的に行います。式の中で、文字列とテキストは混ぜて使用することが出来ます。

: このマニュアルでは、コマンド説明における文字列とテキストの引数は特に明記されていない限り、両方とも「文字列」と表記されています。

数値  

数値とは、以下を示す総称です。

  • 実数のフィールド、変数、または式
  • 整数のフィールド、変数、または式
  • 倍長整数のフィールド、変数、または式

実数データタイプの範囲は、±1.7e±308 (有効数字13桁) です。
整数データタイプ(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 コマンドで変更できます)。
  • C_DATE によって宣言された日付は32767年までの範囲に対応していますが、システムを経由する処理によっては上限にさらなる制限が課せられます。

: このマニュアルでは、コマンド説明における日付引数は特に明記されていない限り、「日付」と表記されています。

JavaScriptにおいて日付はオブジェクトなので、4Dに送られる際には他のオブジェクト同様、JSON フォームを含んだテキストとして送られます。この原理は特に4D Mobile または Webエリア を使用する際に適用されます。
JavaScript 日付の JSON フォームは ISO 8601規格に基づき、 "2013-08-23T00:00:00Z"のように記述されます。

このテキストは、デベロッパが4Dの日付(C_DATE) へと変換してあげる必要があります。方法は二つあります。:

  • JSON Parse  コマンドを使用する方法:
     C_TEXT($1// 日付をISOフォーマットで受け取る
     C_DATE($d)
     $d:=JSON Parse("\""+$1+"\"";Is date))
  • Date コマンドを使用する方法:
     C_TEXT($1// 日付をISOフォーマットで受け取る
     C_DATE($d)
     $d:=Date($1)

二つの方法の違いに注意して下さい。 JSON Parse コマンドは SET DATABASE PARAMETER を使用して設定された変換モードに従うのに対し、 Date コマンドはこれに依存しないという事です。 Date コマンドを使用した変換は、常にローカルのタイムゾーンを考慮するということです。

時間  

  • 時間のフィールド、変数、式の範囲は00:00:00から596,000:00:00までです。
  • 日本語版の4Dでは、時間の順序は時:分:秒の順になります。
  • 時間は24時間制です。
  • 時間の値は数値として扱うことができます。時間から返される数値は時間が表す秒数です。詳細は時間演算子の節を参照してください。

: このマニュアルでは、コマンド説明における時間引数は特に明記されていない限り、「時間」と表記されています。

ブールのフィールド、変数、式は、TRUE(真)またはFALSE(偽)のいずれかになります。

: このマニュアルでは、コマンド説明におけるブール引数は特に明記されていない限り、「ブール」と表記されています。

ピクチャのフィールド、変数、式は、任意のWindowsまたはMacintoshのピクチャになります。一般的に、ペーストボード上に置いたり、4Dコマンドやプラグインコマンドを使用してディスクから読み出すことのできる任意のピクチャがこれに含まれます。

: このマニュアルでは、コマンド説明におけるピクチャ引数は特に明記されていない限り、「ピクチャ」と表記されています。

ポインタの変数または式は、別の変数(配列、配列要素を含む)、テーブルまたはフィールドへの参照です。ポインタタイプのフィールドは、存在しません。

ポインタの詳細については、の節を参照してください。

: このマニュアルでは、コマンド説明におけるポインタ引数は特に明記されていない限り、「ポインタ」と表記されています。

BLOB  

BLOBのフィールドまたは変数は、個別にまたはBLOBコマンドを使用して利用できる一連のバイト列(長さは0バイトから2ギガバイトまで)です。BLOBタイプの式は、存在しません。

: このマニュアルでは、コマンド説明におけるBLOB引数は特に明記されていない限り、「BLOB」と表記されています。

オブジェクト型の変数、フィールド、式にはさまざまなデータを格納することができます。

4D のネイティブなオブジェクトの構造は、よくある「値/名前」というペア(連想配列)に基づいています。これらのオブジェクトの記法は JSON のそれをもとにしていますが、完全に同じというわけではありません。

  • プロパティ名は必ずテキストで表現されます(例: "Name")。
  • プロパティ値は以下のどれかの型で表現されます:
    • 番号(実数、整数、等)
    • テキスト
    • 配列(テキスト配列、実数配列、ブール配列、オブジェクト配列、ポインター配列)
    • null
    • ブール
    • ポインター( JSON Stringify コマンドを使用して評価されたか、コピーされたときにポインターとして保存されます)
    • 日付( "\"YYYY-MM-DDTHH:mm:sssZ\"" というフォーマットで表現されます)
    • オブジェクト(オブジェクトを代入する階層の数に制限はありません)

オブジェクト型の変数、フィールド、式は オブジェクト(ランゲージ) テーマ内のコマンドによって操作します。また、[#cmd id="1331"/] や QUERY SELECTION BY ATTRIBUTE などの クエリ テーマの特定のコマンドもオブジェクト型フィールドに対して処理を行うことができます。

未定義は、実際にはデータタイプではありません。未定義は、まだ定義されていない変数を指しています。関数(結果を返すプロジェクトメソッド)は、メソッド内で、戻り値 ($0) に未定義式が代入されている場合、未定義値を返すことがあります。フィールドは、未定義にはできません (フィールドの場合、Undefined コマンドは常に False を返します)。

配列  

配列は、実際にはデータタイプではありません。さまざまな種類の配列(整数配列、テキスト配列等)はこの配列という名前の下にグループ化されています。配列は変数です。配列タイプのフィールドは存在せず、配列タイプの式も存在しません。配列の詳細については、配列の節を参照してください。

: このマニュアルでは、コマンド説明における配列引数は特に明記されていない限り、「配列」と表記されています (例: テキスト配列や数値配列など)。

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

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

データタイプ文字列に変換数値に変換日付に変換時間に変換
文字列(*)NumDateTime
数値 (**)String
日付String
時間String
ブールNum
オブジェクトJSON Stringify


(*) JSON形式の文字列は JSON Parse コマンドを使ってスカラーデータやオブジェクトに変換することができます。
(**) 時間値は数値として扱うことができます。

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



参照 

Type
ポインタ
メソッド
制御フロー
変数
定数
文字列
文字参照記号
演算子
識別子
配列

 
プロパティ 

プロダクト: 4D
テーマ: プログラミング言語の構成要素

 
履歴 

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)