4Dプログラミング環境には高品質のインタフェースが用意されており、コード作成やデバッグなど、開発にかかる時間が短縮されます。4Dのモジュール化されたプログラミング機能は、幅広いプログラム上のニーズに応えます。これらのニーズは、ローカル、リモート、インターネット上において、パワフルでミッションクリティカルなアプリケーション用のリレーショナルデータベースを使用する際に派生してきます。4D言語の強力な点は、作業を実行するためのコード量を飛躍的に節減できるところです。4D言語は次の6つの点で優れています。
●4Dのグラフィカル環境とのスムーズな統合:グラフィック的に設計されたものが4D言語から自動解釈され、冗長性や余分な労力を省くことができます。4Dはすべての部品が自然に対話する一貫した環境です。
●コードの一貫性:4D Clientおよび4D Server上で、トリガやプロシージャを含め、同一コードで4Dをスタンドアロンアプリケーションとして実行できます。
●コードの削減:すべてのコマンドにより、幅広い機能が一度に提供されます。たとえば、(MODIFY SELECTION)という一つのコマンドで、レコードの一覧を表示し、ユーザがレコードをダブルクリックしてデータ入力できるようになります。データはカレント出力フォームに合わせてフォーマットされ、レコード表示時には適切なオブジェクトメソッドが実行されます。レコードをダブルクリックすると、カレントデータ入力フォームが表示され、ユーザはレコードを修正することができます。ここでも、オブジェクトメソッドが実行され、必要に応じてフォーマット、選択リスト、入力フィルタや他のデータ入力制御が適用されます。
●コードの保守と再利用:4Dでは設計者が汎用ルーチンを作成して、プログラミングを自動化し、再利用や修正をしやすくすることができます。
●オープン性:4Dはオープンアーキテクチャなので、あらゆる外部アプリケーションとシームレスに統合できます。
●4D Serverを使い、マルチユーザ開発を行えます(ストラクチャデザイン参照)。
●マルチウインドウ、マルチプロセス、マルチユーザ
●アクセス権制御
●カスタマイズ可能なソースコードエディタを使い、次の要素ごとに色分けできる:フィールド、テーブル、プロセス変数、メソッド、コマンド、外部ルーチン、エラー、コメント、ローカル変数、引数、インタープロセス変数、定数
●各コマンドに対しオンラインヘルプが提供される。
●自動インデント
●ブレースマッチ
●行番号指定
●シンタックスチェック
●ユーザコメント無制限
●デバッグウインドウから直接メソッド編集
●ドラッグ&ドロップサポート:エクスプローラからのテーブル、フィールド、フォーム、定数、コマンド
●メソッドエディタのテーブル、フィールド、フォーム、定数、コマンド、キーワードをポイント&クリック
●メソッド全体または一部をコピー&ペースト
●コマンドリストがアルファベット順またはトピック別に階層メニュで提示され、ユーザ定義、プラグイン、外部エクステンションコマンドも表示される。
●4Dキーワードやコマンドは太字で表示され、ユーザ定義メソッドはイタリック体で表示される。
●コマンド用マクロがサポートされるため、最初の数桁をタイプまたは、ワイルドカード文字を使用できる。
一般的特徴
●約600のハイレベルおよびローレベルコマンド
●完全なイベントベースモデル
●If、Case条件構造
●3種類のループ構造:For、While、Repeat
●無制限のメソッド、関数、外部メソッド:利用できる箇所では標準の4Dオブジェクトとして使用される。
●引数受け渡し。変数や固定数の引数をメソッドに渡すことができる。
●再帰コードのフルサポート
●ポインタのフルサポート
●無制限の拡張性:あらゆるメソッド内でC、C++、Pascalコードを統合できる。
●アプリケーションプログラミングインタフェース(API):4D Open
●無制限のインターオペラビリティ:DLL、DDE、OLE、ODBC、AppleScriptをサポート、4Dプラグイン、サードパーティのエクステンション。
4Dメソッド
4Dには5種類のメソッドタイプがあります。各メソッドタイプはデータベースの特定部分を管理します。各メソッドタイプの作成方法は同じなので、パワーユーザや開発者はアプリケーション全体を通して一貫したコード作成を行えます。
●オブジェクトメソッド
オブジェクトメソッドはフォームのオブジェクトに付随します。オブジェクトがコピーされると、付随するオブジェクトメソッドも自動的にコピーされます。オブジェクトが使用されると、4Dにより自動的にメソッドが実行されます。オブジェクトメソッドはユーザの動作により起動されます。メソッドが実行される際に、各イベントを振り分けて制御することができます。
●フォームメソッド
フォームメソッドはフォームに付随し、そのフォームの使用や動作を監視します。フォームが使用されると、4Dにより自動的にメソッドが実行されます。メソッドが実行される際に、フォームイベントを振り分けて制御することができます。
テーブルメソッドとトリガ
テーブルメソッドはテーブルに付随します。テーブルのレコードを操作すると、トリガが自動的に実行されます。
プロジェクトメソッド
プロジェクトメソッドはオブジェクト、フォーム、テーブルから独立しています。また、再利用したり、他のメソッドで使用することができます。たとえば、複数のオブジェクトで同じ動作を行うため、同一メソッドを何回も作成する代わりに、共通プロジェクトメソッドを作成し、これらのオブジェクトの属性としてこのプロジェクトメソッドを参照することができます。
●データベースメソッド
データベースメソッドはアプリケーション全体に関連し、データベースを開いた時点で4Dにより自動的に実行されます。6種類のデータベースメソッドがあります。:On Startup Database、On Exit Database、On Web Connection、On Server Startup、On Server Shutdown、On Server Open Connection、On Server Close Connection
変数
●プロセス
●インタープロセス
●ローカル変数
●1次元、2次元配列
●ポインタ
演算子
●ビット演算子:and、or (包括)、or (排他)、left bit shift、right bit shift、bit set、bit clear、bit test
●比較演算子:
文字列、数値、日付、時間用:等号、不等号、より大きい、より小さい、より大きいまたは等しい、より小さいまたは等しい
ポインタ用:等号、不等号
●日付演算子:日付の差、日付の加算、日付の引算
●論理演算子:論理積(and)、論理和(or)
●数値演算子:加算、減算、乗算、除算、整数値を返す除算、モジューロ、指数
●ピクチャ演算子:水平連結、垂直連結、XOR重ね、OR重ね、水平移動、垂直移動、サイズ変更、水平スケーリング、垂直スケーリング
●文字列演算子:連結、繰り返し
●時間演算子:加算(時間+時間)、加算(時間+数値)、減算(時間−時間)、減算(時間−数値)、乗算、除算、整数値を返す除算、モジューロ
4Dデバッガは初心者にもエキスパートにも使いやすいように設計されています。ポイント&クリック、ドラッグ&ドロップで操作でき、グラフィック的な環境でコードの分析や訂正を行えます。4Dデバッガはエラーウインドウから表示することもできますし、ルーチンの最初にTRACEコマンドを使ってプログラムから呼び出すこともできます。
デバッガは好きなときに呼び出せます。プロセスごとに個別のデバッガが割り当てられ、4Dのマルチプロセスアーキテクチャをフルサポートしています。
コントロールツールバーボタンおよび情報
●現在デバッグ中のメソッド名 ● デバッガがよびだされた理由 ● ステップ(同一プロセスのみ) ● ステップ(呼び出しメソッドもトレース) ● ステップ(新規プロセスもトレース) ● ステップ(呼び出し元へ戻る) ● 編集 ● アボート&編集 ● アボート ● トレースなし
枠のサイズ変更可能
デバッガウインドウのサイズは変更可能で、プログラマは自由にデバッガの各枠のサイズを変えることができます。枠内のカラムもすべてサイズ変更可能です。
●監視 ●メソッド連鎖 ●カスタム監視 ●ソースコード
監視枠
●システム、4D環境、実行環境に関する一般情報
●表現式カラム、オブジェクトや表現式の名称を表示
●値カラム、対応するオブジェクトや表現式の現在の値を表示
●階層リストで値を変更するためのツールを表示:インフォメーション、ラインオブジェクト、変数(プロセス、インタープロセス、ローカル)、引数、セルフポインタ、定数、フィールド、セマフォ、セット、プロセス、命名セレクション
●スピードメニュー:すべて縮める、すべて拡げる、フィールドおよびテーブル番号表示、タイプ表示、アイコン表示、テーブルおよびフィールドの並び替え、整数を16進法で表示
メソッド連鎖枠
●階層リストで埋め込まれたメソッドの追跡や制御が容易にできる。
●メソッド名をダブルクリックすると、そのメソッドのソースコードを表示。
●メソッド名の横にある記号をクリックすると、引数の値および関数の結果を拡げたり、縮めたりできる。
カスタム監視枠
●値を返すオブジェクトを含め、あらゆる表現式の評価を容易に行える。
●監視枠やメソッド連鎖枠からドラッグ&ドロップ、またはソースコード枠からポイント&クリックして新しい表現式を挿入。
・スピードメニュー:すべて縮める、すべて拡げる、コマンド挿入、すべて削除、フィールドおよびテーブル番号表示、タイプ表示、アイコン表示、テーブルおよびフィールドの並び替え、整数を16進法で表示。
ソースコード枠
●トレースしているメソッドのソースコードを表示。
●プログラムカウンタにより、実行される行が示される。
●カーソルをオブジェクトに置くことにより、全オブジェクトの値を簡単に参照できる。
●ブレークポイントプロパティウインドウ
■位置
■タイプ:固定、テンポラリ
■次の式が真の場合にブレーク
■ブレーク前にスキップした回数
■ブレークポイント不可
■ブレークリストウインドウ、ブレークポイントを管理し、4Dコマンドへのコールを捉えて、コードにブレークを追加する。
その他デバッグツール
●シンタックスエラーウインドウ:アプリケーションのデバッグは、コンパイルする前にそのアプリケーションから実行できます。エラーの場合、シンタックスエラーウインドウにメッセージが表示され、エラータイプが示されます。シンタックスエラーウインドウのボタンを使い、開発者はプロシージャの実行を中断したり、続行することができます。このようにして、開発者は実行不可能な箇所をスキップし、デバッグウインドウを自動表示したり、メソッドエディタを直接開いてエラーを訂正することが可能です。
●プラグインデバッグツール:4D for ORACLE、4D SQL Server、4D ODBCなどのプラグインを使用している場合、開発者は4Dの内部デバッガやこれらプラグインに付属するデバッガを利用できます。
●4D Compiler: 4D Compilerはエラー解説システムを備えており、コンパイルしたコードをすばやく訂正できます。4D Compilerのドキュメントを参照してください。
メソッド内で使用可能
言語:Command name, Count parameters, EXECUTE, Getpointer, Is a variable, Nil, NO TRACE, RESOLVE, POINTER, Self, TRACE, Type
中断:FILTER EVENT, ON ERR CALL, ON EVENT CALL
リソース:ARRAY TO STRING LIST, CLOSE RESOURCE FILE, Create resource file, DELETE RESOURCE, GET ICON RESOURCE, Get indexed string, GET PICTURE RESOURCE, GET RESOURCE, Get resource name, Get resource properties, Get string resource, Get text resource, Open resource file, RESOURCE LIST, RESOURCE TYPE LIST, SET PICTURE RESOURCE, SET RESOURCE, SET RESOURCE NAME, SET RESOURCE, PROPERTIES, SET STRING RESOURCE, SET TEXT RESOURCE, STRING LIST TO ARRAY.
変数:CLEAR VARIABLE, LOAD VARIABLES, SAVE VARIABLES, Undefined
コンパイラ:C_BLOB, C_BOOLEAN, C_DATE, C_GRAPH, C_INTEGER, C_LONGINT, C_PICTURE, C_POINTER, C_REAL, C_STRING, C_TEXT, C_TIME, IDLE