データベースへのアクセス、データの更新、印刷などのアルゴリズムを実装するプログラムまたはルーチンを定義します。
Procedure オブジェクトを使用すると、データベースをクエリおよび更新するための非対話型プロセスを定義できます。また、画面や印刷したコピーでデータを一覧表示できる PDF ファイルを生成することもできます。その名前のとおり、対応するプログラミング形式は命令型ですが、宣言型である部分 (つまり、レイアウト) も含まれます。
各
Procedure オブジェクトには、複数のセレクターが含まれています:
- ソース: プロシージャーの論理に対応するコードが記述されている主要セクションです。コードはプロシージャーを使って (命令型で) 記述する必要があります。実行の順序は、データベースへのアクセス/更新、フィルタリング、必要なものの評価、印刷などのコマンドを含めて、ユーザー自身が定義します。コードの最後に、コードから呼び出すサブルーチンを定義することもできます。
- レイアウト: このセクションでは、出力の表示を定義します。このような出力をしないプロシージャーや、出力のないプロシージャーもあります。つまり、プロシージャーで情報を印刷する場合、このセクション内で対応する出力 (出力する情報とフォーマット) を設計する必要があるということです。
- ルール: Procedure オブジェクトでは、わずかなルールしか定義できません。たとえば、オブジェクトが受信するパラメーターを宣言する Parm ルールがあります。
- 条件: このセクションでは、取得するデータが満たさなければならない条件 (一般的なフィルタ) を定義します。フィルタを定義する他の方法もあります。
- 変数: ほとんどのオブジェクトと同様に、変数 (オブジェクトのローカル変数) を定義するセクションもあります。
- ヘルプ: プロシージャーについての詳説です。実行時には、エンドユーザー用のオンラインヘルプになります。
- ドキュメンテーション: プロシージャーについて詳説し、ドキュメント化します。
ほとんどのオブジェクトと同様に、オブジェクト全般を設定する
プロパティエディターがあります。
まとめると、Procedure オブジェクトでは以下のことができます:
ナレッジベースで定義されている次の
Transaction オブジェクトがあるとします:
Airline
{
AirlineId*
AirlineName
}
旅行代理店で取り扱う航空会社を一覧表示するために、
PDF レポートを出力する必要があるとします。
この要件を実装するプロシージャーは、次のようなレイアウトになります (詳細については、「
プロシージャーレイアウト」を参照してください)。

ロジックは、
ソースセレクターで以下のように記述する必要があります。
Header
Print Pb_Header
End
For each Airline
Print Pb_Body
Endfor
Header コマンドには、出力結果のレポートの各ページに表示されるヘッダーを指定します。
For Each コマンドはデータベースにアクセスするために使用し、
Print コマンドは出力に印刷される
Printblock コントロール (
プロシージャーレイアウト に含まれます) の名前を指定します。
プロシージャーを
メインオブジェクトに設定すると、生成されるオブジェクトは、次のように先頭に「a」が付きます: aProcedureName (.NET と Java のみ)。
Lists and For Each command to query the database
Updating with procedure-specific commands. Introduction