To invoke a DL/I function using the AIBTDLI interface, use dliLib.AIBTDLI().
dliLib.EGLTDLI()(
func CHAR(4) in,
pcbrecord PCBRecord in
parms... ANY)
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.
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().
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.