Das Akronym CRUD bezieht sich auf die Basisfunktionen für die Ein-/Ausgabe, die Sie normalerweise für Datensätze in einer Datei ausführen. In der folgenden Tabelle sind die CRUD-Funktionen und die EGL-Schlüsselwörter angegeben, die diese Funktionen bereitstellen:
| CRUD-Funktion | EGL-Schlüsselwort |
|---|---|
| Create (= Erstellen) | add |
| Read (= Lesen) | get |
| Update (= Aktualisieren) | replace |
| Delete (= Löschen) | delete |
EGL passt darüber hinaus die Art der Ausführung dieser Funktionen an den jeweiligen Dateityp an, mit dem Sie gerade arbeiten. Falls Sie beispielsweise eine Anweisung get next für eine SQL-Datenbank schreiben, generiert EGL eine Reihe von SQL-Anweisungen, um die entsprechende Zeile in einer SQL-Ergebnismenge zu suchen und aus ihr abzurufen. Wird dieselbe EGL-Anweisung für eine sequenzielle Datei generiert, wird einfach der nächste Datensatz in der Datei gelesen.
EGL setzt diese Tasks mit Hilfe von Stereotypen um. Ein Stereotyp ist ein allgemeines Muster, mit dem Sie ein einzelnes Element kennzeichnen können. Wenn Sie einen Stereotyp auf einen Datensatz anwenden, teilen Sie EGL mit, wie Ein-/Ausgabefunktionen ausgeführt werden sollen, an denen dieser Datensatz beteiligt ist. Weitere Informationen zu Stereotypen finden Sie unter Einführung in Datensatzabschnitte sowie in den Abschnitten für bestimmte Stereotypen der EGL-Sprachreferenz.
Bei einer bestehenden Datenbank (in der Regel durch einen Datenbankadministrator erstellt) umfasst die reguläre Verarbeitung normalerweise die Funktionen für Erstellung (Create), Lesevorgänge (Read), Aktualisierung (Update) und Löschvorgänge (Delete), die kurz auch als 'CRUD-Funktionen' bezeichnet werden. Spezifischere Beispiele enthalten die Abschnitte über bestimmte Datenzugriffstechnologien. Das folgende allgemeine Szenario ist nur deshalb möglich, weil EGL die Implementierungsdetails so effizient für den Benutzer verdeckt.
package com.companyb.customer
Record CustomerRecord type Stereotype
customerNumber INT;
customerName STRING;
customerBalance MONEY;
end
Die Details des Datensatzes und seine Eigenschaften variieren abhängig davon, wie Sie ihn einsetzen wollen.
myCustomer CustomerRecord;
myCustomer.customerNumber = getCustomer();
get myCustomer forUpdate;
EGL generiert den entsprechenden Code, um die Daten aus der Datei oder der Datenbank zu lesen, und stellt anschließend die Informationen in Ihre Datensatzvariable. Das Schlüsselwort forUpdate weist EGL an, eine Sperre für die Daten zu setzen, damit Sie die Möglichkeit erhalten, die Daten zu ersetzen oder zu löschen.
case (showCustomer(myCustomer))
when (-1)
delete myCustomer;
when (1)
replace myCustomer;
end
set myCustomer empty; // all fields blank or 0
myCustomer.customerNumber = getCustomer(); // sets cust #
try
get myCustomer forUpdate;
onException (ex AnyException) // couldn't get the record
if(myCustomer is noRecordFound) // because customer # not on file
if(getReply("Soll dieser Kunde hinzugefügt werden? (y/n)") == TRUE)
showCustomer(myCustomer); // let user fill in remaining fields
add myCustomer;
end
else
myErrorHandler(ex);
end
Mit diesen wenigen Codezeilen haben Sie den Kern eines Kundendateiserviceprogramms erstellt, das Sie mit einer SQL-Datenbank oder einer eigenen indexierten VSAM-Datei verwenden können. Der einzige Unterschied zwischen VSAM und SQL besteht bei Ihrem Programm in dem Stereotyp, den Sie auf die Definition der Kundenstammdaten anwenden.