4D v16.3

4Dプログラミング言語

ホーム

 
4D v16.3
4Dプログラミング言語

4Dプログラミング言語  


 

 

4Dのプログラミング言語は、以下のような要素から構成されています。これらの要素は、処理を実行、またはデータを管理する際の手助けをします。
  • データタイプ:データベース内のデータの分類。詳細はこの章の後述およびデータタイプの章を参照してください。
  • 変数:メモリ内でデータを一時的に記憶する領域。詳細は変数の章を参照してください。
  • 演算子:2つの値を計算するために使われる記号。詳細はこの章の後述および 演算子の章を参照してください。
  • :値を求めるための構成要素の組み合わせ。詳細はこの章の後述を参照してください。
  • コマンド:処理を実行するために4Dに組み込まれている命令文。すべての4Dコマンド、例えばADD RECORD コマンドなどはテーマ別このマニュアルに記載されています。また必要な場合は、序章に続きテーマの記載があります。4Dプラグインを使い、4Dの開発環境 に新規のコマンドを追加することもできます。例えば、4Dシステムに4D Writeを追加すると、4D Writeのコマンドを利用してワードプロセスのドキュメントを作成および操作を行うことが可能になります。
  • 定義済みの定数: 名前によってアクセス可能な定数の値。例えば、XML DATA は定数(値6)です。低意義済みの定数によって、より読みやすいコードを書くことができます。定数はそれを使用するコマンドに詳細な説明があり、また定数テーマリスト の章に全て載っています。
  • メソッド:このマニュアルに記載されたプログラミング言語による命令文。詳細はメソッド の節および関連項目を参照してください。

この章では、データタイプ、演算子、式について説明します。その他の内容については、上記の章を参照してください。

追記:

  • 言語を構成する要素、例えば変数には識別子がつけられています。識別子についての詳細およびオブジェクトに名前をつける場合の規則については識別子の章を参照してください。
  • 配列変数についての詳細は配列の章を参照してください。
  • データベースをコンパイルする場合は、コンパイラコマンドの章および4D Design Referenceマニュアルを参照してください。

4D v15以降、4Dメソッドエディターは4Dのバージョンやローカルのシステム設定に関係なく、"English-US"ランゲージ設定を使用するようになりました。この機能により4Dアプリケーション間でコード解釈の邪魔となりうるリージョンによる全ての差異(例えば日付フォーマットなど)は中和されることになりました。フランス語版の4Dにおいては、コマンドと定数は他の言語版で既にそうであったように"English-US"設定で書かれるようになります。

このデフォルト設定により、4Dデベロッパには以下の様な利点があります:

  • 国、リージョン設定、使用する4Dバージョンに関係なくコードを共有することが容易になります。4Dメソッドは単純なコピーペースト、あるいはテキストファイルへの保存によって、互換性の問題なく交換することができるようになります。
  • 4Dメソッドをソースコントロールツールに含めることができるようになります。この場合通常、書き出しはリージョン設定と言語から独立している必要があります。

この設定は4D設定ダイアログボックスの"リージョンシステム設定を使用"オプションを使用することによって無効化することができます(メソッドページ を参照して下さい)。

English-US設定はメソッドの書き方に一部影響をする可能性があります。これは開発モードで書かれたコードに加え、配布済みアプリケーションの式にも関係します。このモードにおいては、コードは以下の規則に従う必要があります:

  • 実数における小数点は全てのバージョンにおいてピリオド(".")を使用しなければなりません(例えばこれまでフランス語で使用されてきたカンマ(",")は使用できません)。
  • 日付定数は全てのバージョンにおいてISOフォーマットを使用しなければなりません(!YYYY-MM-DD!)
  • コマンド名と定数名は英語でなければいけません(これは、フランス語版の4Dにのみ関係します。他の言語版ではすでに英語がしようされてきたからです)。

注: メソッドエディターは必要に応じて誤った入力を自動的に修正する機構を兼ね備えています。

以下の一覧は、4D v15(以降)と以前のバージョンとの差異をまとめたものです:

4D v15以降のメソッド/式でのコード例(デフォルトモード、全バージョン)a:=12.50
b:=!2013-12-31!
Current date
4D v14 または 4D v15 (設定がチェックされている、例えばUS版など)a:=12.50
b:=!12/31/2013!
Current date
4D v14 または 4D v15 (設定がチェックされているフランス語版)a:=12,50
b:=!31/12/2013!
Date du jour

注: 設定がチェックされているとき、実数と日付フォーマットはシステム設定によって変わります。

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を返します。

データタイプによって、以下の8つのタイプの式を使用することができます。

  • 文字列式
  • 数値式
  • 日付式
  • 時間式
  • ブール式
  • ピクチャ式
  • ポインタ式
  • オブジェクト式

以下の表はタイプの式ごとに例を示します。

タイプ説明
“こんにちは”文字これは文字列定数“こんにちは”です。 文字列定数であることを表すために二重引用符が必要です。
“こんにちは”+“みなさん”文字二つの文字列“こんにちは”と“みなさん”は+演算子により結合され“こんにちはみなさん”を返します。
[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!日付この式は日付定数で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)ポインタこのコマンドは一番目に定義されたテーブルのポインタを返します。
JSON Parse(MyString)オブジェクトこのコマンドは(適切なフォーマットであった場合)MyStringをオブジェクトとして返します
</p>



参照 

データタイプ
ポインタ
メソッド
変数
定数
演算子
配列

 
プロパティ 

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

 
履歴 

 
ARTICLE USAGE

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