頭字語 CRUD は、ファイル内のレコードに対して通常実行する、基本的な入出力機能のことを 指します。下の表に、CRUD 機能と、その機能を提供する EGL キーワードを示します。
| CRUD 機能 | EGL キーワード |
|---|---|
| 作成 | add |
| 読み取り | get |
| 更新 | replace |
| 削除 | delete |
さらに EGL では、作業を実行するファイルのタイプに応じて、 各機能の実行方法を個別に調整します。 例えば、SQL データベース用の get next ステートメントが 記述されている場合、EGL は SQL の結果セットから該当する行を見つけて取得するために、 一連の SQL ステートメントを生成します。 同一の EGL ステートメントが順次ファイル用に生成されますが、 こちらは単純に、ファイル内にある次のレコードの読み取りを行います。
EGL では、ステレオタイプ という手段を用いて、これらのタスクを実行します。 日常の使用において、ステレオタイプとは、個々を特性化するために使用できる共通のパターンです。 ほぼ同様の方法で、ステレオタイプをレコードに適用する際には、 そのレコードに関連する入出力機能の実行方法を、EGL に対して指示します。 ステレオタイプについての詳細は、レコード・パーツの概要、および 「EGL 言語解説書」の特定のステレオタイプについて書かれたトピックを参照してください。
データベースが既に存在しており (通常は、データベース管理者が作成します)、定期的な処理 (通常は、作成、読み取り、更新、および削除 (CRUD) の機能) が含まれているものとします。具体例については、具体的なデータ・アクセス・テクノロジーを扱っている トピックに記載されています。 以下の汎用的なシナリオが成立しているのは、 実装の詳細をユーザーに知られないようにするために、EGL が有効であるためです。
package com.companyb.customer
Record CustomerRecord type Stereotype
customerNumber INT;
customerName STRING;
customerBalance MONEY;
end
レコードの詳細とそのプロパティーは、レコードをどのように使用するかに応じて 変化します。
myCustomer CustomerRecord;
myCustomer.customerNumber = getCustomer();
get myCustomer forUpdate;
ファイルまたはデータベースからデータを読み取るための 適切なコードが、EGL によって生成され、レコード変数に情報が配置されます。 forUpdate キーワードは、EGL に対して、 データを置換または削除できるように、そのデータを予約するよう指示します。
case (showCustomer(myCustomer))
when (-1)
delete myCustomer;
when (1)
replace myCustomer;
end
set myCustomer empty; // すべてのフィールドがブランクまたは 0
myCustomer.customerNumber = getCustomer(); // お客様番号の設定
try
get myCustomer forUpdate;
onException (ex AnyException) // レコードを取得できない
if(myCustomer is noRecordFound) // ファイル上にお客様番号がないため
if(getReply("このお客様を追加しますか? (y/n)") == TRUE)
showCustomer(myCustomer); // ユーザーに残りのフィールドを入力させる
add myCustomer;
end
else
myErrorHandler(ex);
end
このように比較的少ない行数のコードで、 カスタマー・ファイル・サービス・プログラムの中心部分を作成できます。 これを、SQL データベースまたは独自の VSAM 索引付きファイルに対して、 使用することができます。 VSAM 用のプログラムと SQL 用のプログラムの違いは、CustomerRecord 定義に 対して適用するステレオタイプのみです。