4Dのプログラミング言語は、以下のような要素から構成されています。これらの要素は、処理を実行、またはデータを管理する際の手助けをします。
- データタイプ:データベース内のデータの分類。詳細はこの章の後述およびの章を参照してください。
- 変数:メモリ内でデータを一時的に記憶する領域。詳細はの章を参照してください。
- 演算子:2つの値を計算するために使われる記号。詳細はこの章の後述およびの章を参照してください。
- 式:値を求めるための構成要素の組み合わせ。詳細はこの章の後述を参照してください。
- コマンド:処理を実行するために4Dに組み込まれている命令文。すべての4Dコマンド、例えばADD RECORD コマンドなどはテーマ別このマニュアルに記載されています。また必要な場合は、序章に続きテーマの記載があります。4Dプラグインを使い、4Dの開発環境に新規のコマンドを追加することもできます。例えば、4Dシステムに4D Writeを追加すると、4D Writeのコマンドを利用してワードプロセスのドキュメントを作成および操作を行うことが可能になります。
- メソッド:このマニュアルに記載されたプログラミング言語による命令文。詳細はの節および関連項目を参照してください。
この章では、データタイプ、演算子、式について説明します。その他の内容については、上記の章を参照してください。
追記:
- 言語を構成する要素、例えば変数には識別子がつけられています。識別子についての詳細およびオブジェクトに名前をつける場合の規則についてはの章を参照してください。
- 配列変数についての詳細はの章を参照してください。
- BLOB変数についての詳細はの章を参照してください。
- データベースをコンパイルする場合は、の章および4D Design Referenceマニュアルを参照してください。
4Dのデータベースで使用するデータには、いくつかの種別があります。これらのデータ種別を“データタイプ”と呼びます。
4Dには、以下のような7つの基本的なデータタイプ(文字、数字、日付、時間、ブール、ピクチャーBLOB)とポインタがあります。
- 文字列:“こんにちは”等の一連の文字。文字フィールドとテキストフィールドは、ともに文字列タイプです。
- 数値:2や1,000.67等の数値。整数フィールド、倍長整数フィールド、実数フィールドはすべて数値タイプです。
- 日付:97/07/20等の日付。日付フィールドは、日付タイプです。
- 時間:1:00:00や4:35:30 P.M.等の時:分:秒。時間フィールドは、時間タイプです。
- ブール:“True(真)”または“False(偽)”のどちらかの値を返すもの。ブールフィールドは、ブールタイプです。
- ピクチャ:PICTタイプで作成されたピクチャ。ピクチャフィールドは、ピクチャタイプです。
- BLOB(Binary Large OBject):サイズが2GB以内のバイト群。BLOBフィールドは、BLOBタイプです。
- ポインタ:上級プログラミングで使用する特殊タイプのデータ。対応するフィールドはありません。
注:これらのデータタイプに格納されるデータは、4D Design Referenceの中で説明されている4Dフィールドの中に格納されるデータと一致します。
データタイプの中で文字列タイプと数値タイプは、複数の類似するフィールドタイプに対応する点に注意してください。プログラミング言語でこれらのタイプのフィールドを操作する場合、プログラミング言語が自動的にサポートするデータタイプにデータを変換します。例えば、整数フィールドを使用すると、自動的に数値として扱います。つまり、プログラミング言語として使用する場合は、類似するフィールドタイプと厳密に区別する必要はありません。
しかし、プログラミング言語を使用する場合は、異なるデータタイプと混同しないようにすることは重要です。“ABC”を日付フィールドに格納しても意味がないように、日付として使用する変数に“ABC”を格納することも意味がありません。4Dは、実行したことをできるだけ有効にしようとします。例えば、日付に数値を加算した場合は、日付に日数を加算したいものと認識します。しかし、日付に文字列を加算した場合には、4Dはその操作に意味を持たないことをユーザに警告します。
あるタイプとしてデータを格納したものを、別のタイプとして使用する場合があります。
4Dのプログラミング言語には、あるタイプから別のタイプへ変換するためのコマンドが用意されています。
例えば、数値で始まり、“abc”等の文字で終了する部品番号を作成するような場合、以下のように記述することができます。
[Products]Part Number:=String(Number)+"abc"
数値が17であれば、[Prosucts]PartNumberに“17abc”という文字列が代入されます。
データタイプについてはの節で説明しています。
プログラミング言語を使用する際に、データのみを必要とする場合は非常に稀です。
データを加工、またはそれを何らかの目的のために使用することがほとんどです。例えば、演算子を使用して2つのデータから1つの新しいデータを生成する場合です。1+2は2つの数値を加算(演算子+)して、3という結果を返します。以下に、よく知られている4つの演算子を示します。
演算子 | オペレーション | 例 |
+ | 加算(足し算) | 1 + 2の結果は3 |
? | 減算(引き算) | 3 ? 2の結果は1 |
* | 乗算(かけ算) | 2 * 3の結果は6 |
/ | 除算(割り算) | 6 / 2の結果は3 |
数値演算子は、使用可能な演算子のうちの1つのタイプにすぎません。4Dは、数値、テキスト、日付、ピクチャ等、異なるタイプのデータを扱うために、各データタイプに対する演算を実行するための演算子を備えています。
同じ記号でも処理を実行するデータタイプによって、異なる意味に使用される場合があります。例えば、プラス記号(+)は下記のように、各データタイプによって異なる演算を実行します。
データタイプ | オペレーション | 例 |
数値 | 加算(足し算) | 1 + 2 は数値を加算し、結果として3になります。 |
文字 | 連結(結合) | “みなさん” + “こんにちは”連結(結合)して“みなさんこんにちは”になります。 |
日付と数値 | 日付の加算 | !2006/12/4! + 20 は、2006年12月4日に20日を加算し、2006年12月24日になります。 |
演算子についての詳細は
演算子を参照してください。
式は、値を返します。実際に、プログラミング言語として使用している場合は、常に式を使用します。式は、“フォーミュラ”と呼ぶこともあります。
式は、コマンド、演算子、変数、フィールド等プログラミングのほとんどの部分で使用します。式により、ステートメント(メソッドの1文や1行)を構成します。必要に応じて、メソッドの任意の場所に式を使用することができます。
式が単独で使われることはほとんどありませんが、単独で使用できる場合がいくつかあります。
- 「フォーミュラで検索」ダイアログボックス
- 「デバッガ」で式の値をチェックする
- 「フォーミュラで更新」ダイアログボックス
- 「クイックレポート」エディタでカラムをフォーミュラとして使用する
数値の4または文字列の“こんにちは”等の定数だけで構成された式の値は、常に一定で、決して変わることはありません。
演算子を使用すると、式でさまざまなことを実行することができます。前節で、演算子を使用する式を既に紹介しました。例えば、4+2は加算演算子を使用した式で2つの数値を加算し、結果として6を返します。
データタイプによって、以下の7つのタイプの式を使用することができます。
- 文字列式
- 数値式
- 日付式
- 時間式
- ブール式
- ピクチャ式
- ポインタ式
以下の表は7つのタイプの式ごとに例を示します。
式 | タイプ | 説明 |
“こんにちは” | 文字 | これは文字列定数“こんにちは”です。 文字列定数であることを表すために二重引用符が必要です。 |
“こんにちは”+“みなさん” | 文字 | 二つの文字列“こんにちは”と“みなさん”は+演算子により結合され“こんにちはみなさん”を返します。 |
[People]Name+“様” | 文字 | 二つの文字列の結合です。 [People]Nameフィールドと文字列“様”が結合されます。フィールドの値が“小林”の場合、“小林様”を返します。 |
Uppercase (“smith”) | 文字 | この式はUppercase 関数を使用しています。Uppercase 関数は文字列“smith”を英大文字に変換します。そして“SMITH”を返します。 |
4 | 数値 | これは数値定数 4です。 |
4 * 2 | 数値 | 二つの数値の4と2の乗算です。乗算オペレータの(*)を使用しています。数値の8を返します。. |
MyButton | 数値 | これはボタンの名前(変数名)です。 ボタンの現在の値を数値で返します。クリックされた場合に1、それ以外では0(ゼロ)を返します。 |
!06/12/24! | 日付 | この式は日付定数で2006年12月24日を表します。 |
Current date + 30 | 日付 | これは日付を計算しています。“Current date ”関数は現在の日付を返します。現在の日付に30日を加えた新しい日付を返します。 |
?8:05:30? | 時間 | これは時間定数で、8時5分30秒を表します。 |
?2:03:04? + ?1:02:03? | 時間 | これは二つの時間の足し算を行い、3時5分7秒を返します。 |
True | ブール | これはブール値のTRUE(真)を返します。 |
10 # 20 | ブール | これは二つの数値の論理比較です。#記号は、“等しくない”を表します。10と20は “等しくない”のでTRUE(真)を返します。 |
“ABC” = “XYZ” | ブール | これは文字列の論理比較です。文字列は等しくないのでFALSE(偽)を返します。 |
MyPicture + 50 | ピクチャ | この式はMy Picture変数に入っているピクチャを右に50ピクセル移動したピクチャを返します。 |
->[People]Name | ポインタ | この式は[People]Nameフィールドのポインタを返します。 |
Table (1) | ポインタ | このコマンドは一番目に定義されたテーブルのポインタを返します。 |