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 Sie den Index Ihres PCB (4) als zweites Argument des Aufrufs angeben. 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.

Feedback