EGLTDLI()

The dliLib.EGLTDLI() system function uses the CBLTDLI interface to invoke a DL/I function directly.

To invoke a DL/I function using the AIBTDLI interface, use dliLib.AIBTDLI().

Syntax

  dliLib.EGLTDLI()(
    func CHAR(4) in,
    pcbrecord PCBRecord in
    parms... ANY)
func
A four-character DL/I function name such as ISRT or GHNP.
pcbrecord
The name that you assigned to a PCB record within a PSB record in your program.
parms...
A complete list of parameters that match the number and type of those that the given DL/I function requires.

Example

If there is no EGL I/O statement that corresponds to the DL/I call you want to issue, you can use dliLib.EGLTDLI(). For example, EGL does not provide an I/O statement that corresponds to a DL/I FLD call against an Main Storage Database (MSDB) or Data Entry Database (DEDB). You can use dliLib.EGLTDLI() to issue the FLD call.

First, define your PSBRecord part and base a program variable on the PSBRecord:
Record CustomerPSBRecordPart type PSBRecord { defaultPSBName="STBICLG" } 
  // database PCB 
  customerPCB DB_PCBRecord { @PCB { pcbType = DB, 
  hierarchy = [ @relationship { segmentRecord = "CustomerRecordPart" },
  ...]}}; 
end

  mypsb CustomerPSBRecordPart;

You do not need to specify the pcbName property for the customerPCB record, because the runtime PCB name is not used with dliLib.EGLTDLI().

Next, define your I/O area and define and format your SSAs. Note that when you use dliLib.EGLTDLI(), you must correctly format the SSA according to the DL/I rules. You can then issue the DL/I FLD call:
dliLib.EGLTDLI("FLD", customerPCB, myIOArea, mySSA1, ... mySSAn);
if (mypsb.customerPCB.statusCode != "  ")
   // do error processing
end

Specify the name of your PCB record (customerPCB) as the second argument of the call. EGL converts dliLib.EGLTDLI() into a DL/I call that uses the DL/I CBLTDLI interface. After the call, you can use the fields in the EGL predefined record DB_PCBRecord to determine the results.


Feedback