VGTDLI()
Die Systemfunktion vgLib.VGTDLI() verwendet die CBLTDLI-Schnittstelle, um eine DL/I-Funktion direkt aufzurufen.
Die Funktion unterscheidet sich von der dliLib-Funktion EGLTDLI() nur dahingehend, dass sie eine Indexvariable verwendet, um den PCB für den Aufruf zu referenzieren, während EGLTDLI() den Namen des PCB-Datensatzes verwendet. EGL enthält diese Funktion, um Kompatibilität mit der CSPTDLI()-Funktion in VisualAge Generator sicherzustellen.
Syntax
vgLib.VGTDLI()(
func CHAR(4) in,
pcbindex SMALLINT in
parms... ANY)
- func
- Ein vier Zeichen langer DL/I-Funktionsname wie ISRT oder GHNP
- pcbindex
- In Index mit der Basis null in der lexikalischen Reihenfolge der Felder in dem Programm-PSB (neu definierte Felder werden ignoriert), die einen PCB referenzieren
- parms...
- Eine vollständige Liste von Parametern, die in Anzahl und Typ den Parametern entsprechen, die die gegebene DL/I-Funktion erfordert
Zum Aufrufen einer DL/I-Funktion mithilfe der AIBTDLI-Schnittstelle verwenden Sie dliLib.AIBTDLI().
Beispiel
Sie können vgLib.VGTDLI() verwenden, wenn es keine EGL-E/A-Anweisung gibt, die dem DL/I-Aufruf entspricht, der ausgegeben werden soll. Es gibt beispielsweise keine EGL-E/A-Anweisung, die einem DL/I-FLD-Aufruf an eine Hauptspeicherdatenbank (Main Storage Database, MSDB) oder Datenerfassungsdatenbank (Data
Entry Database, DEDB) entspricht. Mithilfe von vgLib.VGTDLI() können Sie jedoch den FLD-Aufruf absetzen. Definieren Sie zunächst Ihren PSBRecord-Abschnitt und basieren Sie eine Programmvariable auf dem 'PSBRecord'. Beispiel:
Record CustomerPSBRecord type PSBRecord { defaultPSBName="STBICLG" }
// 3 other PCBs
...
// database PCB
customerPCB DB_PCBRecord { @PCB { pcbType = DB,
hierarchy = [ @relationship { segmentRecord = "CustomerRecord" },
...]}};
end
mypsb CustomerPSBRecord;
Beachten Sie, dass Sie die Eigenschaft pcbName für den
customerPCB-Datensatz nicht angeben müssen, weil der Laufzeit-PCB-Name nicht mit vgLib.VGTDLI() verwendet wird.
In diesem Beispiel wird angenommen, dass es drei PCBs vor dem 'customerPCB' in dem 'CustomerPSBRecord' gibt.Definieren Sie als nächstes Ihren E/A-Bereich. Definieren und formatieren Sie außerdem Ihre SSAs.
Beachten Sie, dass Sie bei der Verwendung von vgLib.VGTDLI()
verantwortlich sind für die korrekte Formatierung des SSA, entsprechend der DL/I-Regeln für SSAs. Sobald dieser
Schritt abgeschlossen ist, können Sie den DL/I-FLD-Aufruf wie folgt absetzen:
vgLib.VGTDLI("FLD", 4, myIOArea, mySSA1, ... mySSAn);
if (mypsb.customerPCB.statusCode != " ")
// do error processing
end
Beachten Sie, dass der Index von PCB (4)
als zweites Argument im Aufruf angegeben wird. EGL konvertiert vgLib.VGTDLI() in einen DL/I-Aufruf, der die DL/I-CBLTDLI-Schnittstelle verwendet. Nach dem Aufruf können Sie die Felder in dem vordefinierten Datensatz 'DB_PCBRecord' der EGL verwenden, um die Ergebnisse des Aufrufs zu bestimmen.