DPL で記述できるプログラムの構造と機能について説明します。
DPLプログラムは,処理を指定する「ステートメント」,プログラム中の場所を指定する「ラベル」,およびプログラムの説明を記述するための「注釈」で構成されます。
「ステートメント」は,DPLプログラムを構成する基本単位です。ステートメントは一つまたはひとまとまりの処理を指定し,DPLプログラムはそのようなステートメントの並びとして書いていきます。プログラム中に書かれたステートメントは上から下に順に実行され,全体として目的とする処理を達成します。
オープンステートメントやレコード挿入ステートメントのように単一の機能だけを実行するステートメントと,PROCEDUREステートメントや WHILEステートメントのように複数のステートメントをまとめてひとまとまりの処理を指定するステートメントがあります。PROCEDUREステートメントや WHILEステートメントに含まれるひとまとまりのステートメントを「ブロック」と呼びます。DPL の構文
ステートメントは,それぞれの機能によって次のように分類できます。DPL ステートメント一覧
分類 | 説明 | 例 |
---|---|---|
宣言ステートメント | プログラム中で使う変数や手続きを指定します。宣言ステートメント自体は実行されません。 | LOCAL/GLOBAL PROCEDURE |
構造ステートメント | ステートメントの集まりであるブロックを繰り返し実行したり,条件に応じて実行するブロックを選んだりします。 | IF SWITCH WHILE |
制御ステートメント | ステートメントが実行される順序を変更したり,手続きを呼び出したりします。 | GOTO CALL |
実行関連ステートメント | 利用者とのやりとりのために一時的に対話編集モードにしたり,他のアプリケーションを実行したりします。 | 対話編集 実行 |
代入ステートメント | 変数や項目に値を格納します。 | 代入 |
式ステートメント | 式そのものを単独で書き,その式を評価させます。組込み関数評価時の効果を利用できます。 | (任意の式) |
ファイル操作関連ステートメント | ファイルを開いたり,読込み,書出し,印刷などの [ファイル] メニューに相当する機能を実行します。また,ファイルの作成や変換など,ファイル単位の処理を実行します。 | オープン 印刷 ファイル変換 |
レコード操作関連ステートメント | 表ファイルのレコードを挿入したり,値を訂正したりします。 | カーソル移動 レコード挿入 |
探索関連ステートメント | 表ファイル中のレコードを検索したり選択したりします。レコード数を指定しての移動もあります。 | 検索 選択 フォーカス移動 |
表操作関連ステートメント | 表ファイルに対する整列,集計,併合などの一括した処理を実行します。 | 索引登録 クロス集計 併合 |
表示関連ステートメント | 表示形式やオブジェクト属性などの表示/印刷に関わる設定を変更したり,ウィンドウの表示/非表示を制御したりします。 | 表示形式 ウィンドウ表示 表カード切替え |
その他のステートメント | メッセージを表示したり,各種の情報を取得/設定したり,デバッグのための情報を表示したりします。 | ダイアログ かな漢制御 デバッグ |
ラベルは,DPLプログラム中の特定の場所に名前を付けます。この名前は,GOTO ステートメントによって実行の順序を変更するときに指定して,分岐先の位置を示します。
プログラム中に説明や覚書きのために「注釈」と呼ぶ任意の文字列を挿入しておくことができます。
ある条件によって実行されるステートメントを変更したり,同じステートメントを繰り返し実行したり,あるいは他の DPL やアプリケーションを実行させるための機能が用意されています。
条件によって実行される処理を切り替える方法としては,IFステートメントと SWITCHステートメントがあります。
回数や条件を指定して,ステートメントの並び(ブロック)を繰り返し実行させることができます。
DPL 中の複数の場所で使われる処理は,「手続き」として宣言しておき,繰り返し利用することができます。
上から下へというステートメントの実行順序を変更し,プログラム中の別の場所のステートメントを実行させます。
実行ステートメントを使うと,他の DPL,スクリプト,あるいは他の Windowsアプリケーションを起動することができます。
DPLプログラムの実行中に,利用者に対してメッセージや情報を提示したり,利用者からの入力を得る方法としては次のものがあります。
了解 | メッセージを表示し,確認を待ちます。[OK] ボタンが一つだけあります。 |
エラー | エラーを通知し,確認を待ちます。[OK] ボタンが一つだけあります。 |
了解取消 | [OK],[キャンセル] の二つのボタンがあります。 |
継続中止 | [継続],[中止] の二つのボタンがあります。 |
はいいいえ | [はい],[いいえ] の二つのボタンがあります。 |
はいいいえ取消 | [はい],[いいえ],[キャンセル] の三つのボタンがあります。 |
入力 | 文字列入力用のダイアログです。入力領域と [OK],[キャンセル] の二つのボタンがあります。 |
パスワード | パスワード文字列入力用のダイアログです。入力領域と [OK],[キャンセル] の二つのボタンがあります。文字が * で表示される以外は「入力」と同じです。 |
チェック | チェックボックスにより複数の選択肢のいくつかを選びます。選択肢と [OK],[キャンセル] の二つのボタンがあります。 |
オプション | オプションボタンにより複数の選択肢から一つを選びます。選択肢と [OK],[キャンセル] の二つのボタンがあります。 |
ファイル | ファイル名入力のためのダイアログです。ファイル名の入力領域と [OK],[キャンセル] の二つのボタンがあります。 |
フォルダ | フォルダ名入力のためのダイアログです。フォルダ名の入力領域と [OK],[キャンセル] の二つのボタンがあります。 |
ダイアログステートメントで表示できる情報は限られたものです。さらに多くの情報を表示したり,好みに合った美しい表示を行なおうとする場合は画面表示用のカードを作成します。
DPLプログラムの大きな特徴の一つは,DBPro が持っている対話編集機能をプログラム中からそのまま利用できることです。
対話操作のメニューコマンドに対応しているステートメントでは,対話操作のときに表示されるダイアログを使って利用者にパラメータを指定させることができます。
利用者に対する DBPro ウィンドウの見え方を変更したり,表やカードの表示を一時的に変更したりすることができます。また,利用者が不正な操作をしてしまわないように,DPL実行中は指定したメニューコマンドを無効にしたり,カードのボタンを一時的に無効にしたりできます。
ウィンドウ表示ステートメント | 編集ウィンドウの表示/非表示を切り替えたり,位置や大きさを変更したりします。 |
表カード切替えステートメント | 表からカードへ,カードから表へ,カードからカードへ,同じレコードを別のウィンドウに表示します。 |
表示形式ステートメント | 表編集ウィンドウの表示形式を切り替えます。 |
表示形式登録ステートメント | 画面表示や表印刷のために新たな表示形式を登録します。 |
項目表示順序ステートメント | 表編集ウィンドウの項目表示順序を変更します。 |
項目固定ステートメント | 指定した項目を表編集ウィンドウの左側に固定します。 |
項目表示属性ステートメント | 表編集ウィンドウの項目の表示属性を指定します。 |
表示幅自動調整ステートメント | 表編集ウィンドウの項目表示幅をデータの長さに合わせます。 |
フォント設定ステートメント | フォント番号に対するフォントの割当てを変更します。 |
オブジェクト属性ステートメント | カード中の一部のオブジェクトについて表示属性を変更したり,ボタンの機能を変更したりします。 |
シート移動ステートメント | カード編集ウィンドウで表示しているシートを切り替えます。 |
フォーカス移動ステートメント | カード編集ウィンドウでフォーカスを当てるオブジェクトを指定します。 |
カーソル移動方向ステートメント | 表編集ウィンドウおよびカードの表オブジェクトでセルカーソルを横に進めるか縦に進めるかを指定します。 |
最新状態表示ステートメント | ウィンドウのデータを最新状態にして再表示します。 |
再描画ステートメント | 実行中のウィンドウ再描画を抑制し,画面のちらつきを抑えます。 |
メニューバーステートメント | メニューバーの表示/非表示を指定します。 |
ツールバーステートメント | ツールバーの大きさを変えたり,非表示にしたりします。 |
ステータスバーステートメント | ステータスバーの表示/非表示を指定します。 |
ファイル名表示ステートメント | ファイル名にドライブ名やパス名を付加するか否か指定します。 |
図形項目描画ステートメント | カードの図形項目の描画を止めます。 |
中止ダイアログステートメント | 中止ダイアログの表示/非表示を指定します。 |
機能制限ステートメント | 指定したメニューコマンドを無効にします。 |
DPL で表ファイルのレコードを操作するときは,「カーソル」を使って対象ファイルやレコードを指定します。レコードの挿入や訂正の他に,対話編集のメニューに用意されているほぼすべてのコマンドを利用することができます。
DPL中でレコードを挿入したり訂正したりするときは,「カーソル」と呼ぶ識別情報を使って対象となるウィンドウやレコードを指定します。
データベースファイルの編集は,オープンステートメントで開始しクローズステートメントで終了します。
オープンステートメント | 表編集,カード編集,ビュー編集の各ウィンドウを開きます。 |
クローズステートメント | ウィンドウを閉じます。選択ウィンドウや集計ウィンドウの場合はウィンドウが閉じられるだけですが,実表のウィンドウを閉じると表ファイルの編集が終了します。 |
保存ステートメント | 編集途中の表ファイルをいったんディスクに保存し,そのまま編集を継続します。 |
別名保存ステートメント | そこまでの編集結果を新しい表ファイルとして保存し,そのファイルの編集を継続します。 |
カーソル位置にレコードを挿入したり,カーソル位置のレコードを更新したりします。
カーソル移動ステートメント | カーソルを進めたり戻したりします。 |
ジャンプステートメント | カーソル移動ステートメントと同じです。 |
整列ステートメント | レコードを整列し,カーソルが進む順序を指定します。 |
レコード挿入ステートメント | 新しいレコードを挿入します。 |
レコード更新ステートメント | カーソル位置のレコードの項目値を更新します。 |
レコード削除ステートメント | レコードを削除します。 |
レコード複写ステートメント | カーソル位置のレコードと同じレコードを挿入します。 |
レコードマークステートメント | カーソル位置のレコードにレコードマークを付けます。 |
条件に合うレコードを探してカーソルを移動したり,条件に合うレコードだけを集めて選択ウィンドウを開いたりします。
項目検索ステートメント | 対話操作の項目検索ダイアログを使ってレコードを探します。 |
検索ステートメント | 条件を指定してレコードを探します。 |
項目選択ステートメント | 対話操作の項目選択ダイアログを使ってレコードを選びます。 |
選択ステートメント | 条件を指定してレコードを選びます。 |
重複レコード選択ステートメント | 項目値が重複するレコードを選びます。 |
単一化選択ステートメント | 項目値が重複するレコードは一つだけ残します。 |
レコード単位での編集とは別に,対話操作で用意されている一括編集機能が DPLステートメントとしても用意されています。これらを使うと,DPL中でカーソルを移動させながら1レコードずつ処理するよりも効率良く編集することができます。
集計ステートメント | 縦集計を計算します。 |
クロス集計ステートメント | クロス集計表を作成します。 |
項目集計ステートメント | 指定した項目の集計値をシステム変数に設定します。 |
一時項目挿入ステートメント 一時項目削除ステートメント | 一時的な項目を新たに作成します。 |
置換ステートメント | すべての項目の値を式の値で置き換えます。 |
再計算ステートメント | 計算項目,仮想項目の値を再計算します。 |
併合ステートメント | トランザクションファイルの内容でマスターファイルの内容を更新します。 |
DPL で作成するアプリケーションでは,プログラム中に多くの処理を記述するのではなく,あらかじめ表ファイルやカードファイル中にさまざまな登録情報やオブジェクトを用意しておくことが効率的で分かりやすいプログラムを作成するコツです。
ステートメントの実行中にエラーが発生した場合は,システム変数 $$CMDSTATE にエラーの内容を示す値が設定されます。
上記以外では,DPLステートメントで次のような処理が行なえます。ここまでに記述されていないステートメントについてはDPL ステートメント一覧を参照してください。
ファイル複写ステートメント |
ファイル削除ステートメント |
ファイル変換ステートメント |
ファイル属性ステートメント |
フォルダ作成ステートメント |
フォルダ削除ステートメント |
さまざまな状態を取得したり,設定したりします。
DBPro V4 の DPL ステートメントは,DBPro V3.2 までのステートメントと極力互換性を保つように改訂されましたが,次の点に関して互換性が保たれていません。これらのステートメントが使われている DPL プログラムを V4 で実行する場合には,お手数ですが対応する別のステートメントを使って書き直していただけるようにお願いいたします。これら以外の追加や変更に関しては,V3 までの DPL と互換性を保ちつつ変更されていますので特に修正する必要はありません。