EGLTDLI()
dliLib.EGLTDLI() 시스템 함수는 CBLTDLI 인터페이스를 사용하여 DL/I 함수를 직접 호출합니다.
AIBTDLI 인터페이스를 사용하여 DL/I 함수를 호출하려면 dliLib.AIBTDLI()를 사용하십시오.
구문
dliLib.EGLTDLI()(
func CHAR(4) in,
pcbrecord PCBRecord in
parms... ANY)
- func
- ISRT 또는 GHNP와 같은 4문자 DL/I 함수 이름입니다.
- pcbrecord
- 사용자의 프로그램에서 PSB 레코드 내의 PCB 레코드에 지정한 이름입니다.
- parms...
- 주어진 DL/I 함수에 필요한 수와 유형에 일치하는 전체 매개변수 목록입니다.
예제
실행할 DL/I 호출에 해당하는 EGL I/O 문이 없는 경우, dliLib.EGLTDLI()를 사용할 수 있습니다. 예를 들어, EGL은 MSDB(Main Storage Database) 또는 DEDB(Data Entry Database)에 대한 DL/I FLD 호출에 해당하는 I/O 문을 제공하지 않습니다. dliLib.EGLTDLI()를 사용하여 FLD 호출을 실행할 수 있습니다.
우선 PSBRecord 파트를 정의하고 PSBRecord에 프로그램 변수의 기본을
지정하십시오.
Record CustomerPSBRecordPart type PSBRecord { defaultPSBName="STBICLG" }
// database PCB
customerPCB DB_PCBRecord { @PCB { pcbType = DB,
hierarchy = [ @relationship { segmentRecord = "CustomerRecordPart" },
...]}};
end
mypsb CustomerPSBRecordPart;
런타임 PCB 이름은 dliLib.EGLTDLI()와 함께 사용되지 않으므로 customerPCB 레코드에 대해 pcbName 특성을 지정할 필요는 없습니다.
다음, I/O 영역을 정의하고 SSA를 정의하고 형식을 지정하십시오. dliLib.EGLTDLI()를
사용하는 경우에는 DL/I 규칙에 따라 SSA의 형식을 정확하게 지정해야 합니다. 그런 다음 DL/I FLD 호출을 실행할 수 있습니다.
dliLib.EGLTDLI("FLD", customerPCB, myIOArea, mySSA1, ... mySSAn);
if (mypsb.customerPCB.statusCode != " ")
// do error processing
end
호출의 두 번째 인수로 PCB 레코드(customerPCB)의 이름을 지정하십시오. EGL은 DL/I CBLTDLI 인터페이스를 사용하는 DL/I 호출로 dliLib.EGLTDLI()를 변환합니다. 호출 후 EGL 사전 정의 레코드 DB_PCBRecord의 필드를 사용하여 결과를 판별할 수 있습니다.