Direktive '#dli'
Verwenden Sie die Direktive '#dli', um die DL/I-Standardaufrufe zu ändern, die EGL aus Ein-/Ausgabe-Schlüsselwörtern generiert.
get myLocation with #dli{
GU STSCCST (STQCCNO = :myCustomer.customerNo)
STSCLOC (STQCLNO = :myLocation.locationNo) };
Die Syntax in vorstehendem Beispiel entspricht nicht genau der Syntax in DL/I. EGL unterstützt eine leistungsfähige Pseudo-DL/I-Syntax, die bestimmte DL/I-Formatierungen für Sie durchführt. So konvertiert EGL beispielsweise alle Namen in Großbuchstaben, fügt Leerzeichen zu Namen hinzu, um sie bei Bedarf auf acht Zeichen zu erweitern, und konvertiert EGL-Vergleichsoperatoren wie "!=" in DL/I-Äquivalente. Darüber hinaus akzeptiert EGL in Ihren Pseudo-DL/I-Aufrufen auch Hostvariablen (Variablen, die im EGL-Hostprogramm und nicht in der DL/I-Datenbank definiert wurden). Im vorstehenden Beispielcode beginnen die Hostvariablen mit einem Doppelpunkt (:). Zur Generierungszeit wandelt EGL diese Grundbestandteile in ordnungsgemäß formatierte DL/I-Aufrufe um.
- Zum Hinzufügen eines DL/I-Befehlscodes, um die Funktion des Aufrufs zu erweitern. So können Sie beispielsweise einen verknüpften Schlüssel (*C) verwenden oder ein Segment in einem Pfadaufruf von einer Ersetzungsoperation ausschließen (*N).
- Zum Absetzen eines Aufrufs 'get' oder 'get next'
mithilfe einer dynamischen Feldgruppe als Operand. Beim Füllen einer dynamischen Feldgruppe mit 'get' müssen Sie einen anfänglichen
GU-Aufruf absetzen, gefolgt von einer Schleife aus GN-Aufrufen, bis die Feldgruppe voll ist oder in DL/I keine Segmente mehr vorhanden sind. Da es kein
Schlüsselfeld für die Feldgruppe selbst gibt (nur für Member der Feldgruppe), funktioniert der von EGL generierte DL/I-Standardcode nicht. Sie müssen einen
Code ähnlich wie im folgenden Beispiel erstellen:
myOrderArray OrderRecordPart[] {maxsize = 20}; //Feldgruppe aus Bestellungen (orders) get myOrderArray with #dli{ GU STSCCST STSCLOC STPCORD GN STPCORD }; //Abruf der nächsten 20 Bestellungen get next myOrderArray; - Zum Abrufen eines Segments, das auf einem anderen Feld als dem Schlüssel basiert oder auf einem Wert, der sich nicht im Segment selbst befindet.
- Zum Lesen aller Segmente in der Datenbank, unabhängig vom Segmenttyp. Hierfür ist ein GN-Aufruf ohne Segmentsuchargument (SSA) erforderlich.