AIBTDLI()

dliLib.AIBTDLI() 시스템 함수는 AIBTDLI 인터페이스를 사용하여 DL/I 함수를 직접 호출합니다.

CBLTDLI 인터페이스를 사용하여 DL/I 함수를 호출하려면 dliLib.EGLTDLI() 또는 vgLib.VGTDLI()를 사용하십시오.

구문

  dliLib.AIBTDLI()(
    func CHAR(4) in,
    pcbName STRING in
    parms... ANY)
func
ISRT 또는 GHNP와 같은 4문자 DL/I 함수 이름입니다.
pcbName
런타임 PSB에서 PCB의 이름을 포함하는 문자열입니다.
parms...
DL/I 함수에 필요한 수와 유형에 일치하는 전체 매개변수 목록입니다.

예제

실행할 DL/I 호출에 해당하는 EGL I/O 문이 없는 경우, dliLib.AIBTDLI()를 사용할 수 있습니다. 예를 들어, EGL은 MSDB(Main Storage Database) 또는 DEDB(Data Entry Database)에 대한 DL/I FLD 호출에 해당하는 I/O 문을 제공하지 않습니다. dliLib.AIBTDLI()를 사용하여 FLD 호출을 실행할 수 있습니다.

우선 PSBRecord 파트를 정의하고 PSBRecord에 프로그램 변수의 기본을 지정하십시오.
Record CustomerPSBRecordPart type PSBRecord { defaultPSBName="STBICLG" } 
// database PCB 
  customerPCB DB_PCBRecord { @PCB { pcbType = DB, pcbName = "STDCDBL", 
    hierarchy = [ @relationship { segmentRecord = "CustomerRecordPart" },
    ...]}}; 
end
mypsb CustomerPSBRecordPart;
다음, I/O 영역을 정의하고 SSA를 정의하고 형식을 지정하십시오. dliLib.AIBTDLI()를 사용하는 경우에는 DL/I 규칙에 따라 SSA의 형식을 정확하게 지정해야 합니다. 그런 다음 DL/I FLD 호출을 실행할 수 있습니다.
dliLib.AIBTDLI("FLD", "STDCDBL", myIOArea, mySSA1, ... mySSAn);
if (mypsb.customerPCB.statusCode != "  ")
   // do error processing
end
이 예제에서 STDCDBL은 런타임 PCB의 PCB 이름입니다. 런타임에 다음 조치가 발생합니다.
  • EGL은 AIB 제어 블록을 사용하고 "STDCDBL"을 AIB의 자원 이름 필드로 이동합니다.
  • EGL은 DL/I AIBTDLI 인터페이스를 사용하는 DL/I 호출로 dliLib.AIBTDLI()를 변환합니다.
  • 호출 후 EGL은 customerPCB 레코드의 주소를 설정하여 AIB 제어 블록에 리턴된 PCB 주소와 맞춥니다. EGL 사전 정의 레코드 DB_PCBRecord의 필드를 사용하여 호출 결과를 판별할 수 있습니다.