VGTDLI()

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

이 함수는 EGLTDLI() 함수가 PCB 레코드의 이름을 사용하는 반면, 색인 변수를 사용하여 호출에 대해 PCB를 참조한다는 점에서만 EGLTDLI() dliLib 함수와 다릅니다. EGL은 VisualAge® Generator에서 CSPTDLI() 함수와 호환되도록 이 함수를 포함합니다.

구문

  vgLib.VGTDLI()(
    func CHAR(4) in,
    pcbindex SMALLINT in
    parms... ANY)
func
ISRT 또는 GHNP와 같은 4문자 DL/I 함수 이름입니다.
pcbindex
프로그램 PSB에서 필드의 렉시칼 순서에 따른 0기반 색인이며(재정의 필드 무시), PCB를 참조합니다.
parms...
매개변수의 전체 목록이며, 지정된 DL/I 함수에 필요한 수 및 유형 매개변수와 일치합니다.

AIBTDLI 인터페이스를 사용하여 DL/I 함수를 호출하려면 dliLib.AIBTDLI()를 사용하십시오.

예제

실행하려는 DL/I 호출에 해당하는 EGL I/O 명령문이 없는 경우 vgLib.VGTDLI()를 사용할 수 있습니다. 예를 들어, MSDB(Main Storage Database) 또는 DEDB(Data Entry Database)에 반하여 DL/I FLD 호출에 해당하는 EGL I/O 명령문이 없습니다. 그러나 vgLib.VGTDLI()를 사용하여 FLD 호출을 실행할 수 있습니다. 먼저 PSBRecord 파트를 정의하고 프로그램 변수의 기반을 PSBRecord로 지정하십시오. 예를 들어, 다음과 같습니다.
Record CustomerPSBRecord type PSBRecord { defaultPSBName="STBICLG" } 
  // 3 other PCBs
  ...
  // database PCB 
  customerPCB DB_PCBRecord { @PCB { pcbType = DB, 
    hierarchy = [ @relationship { segmentRecord = "CustomerRecord" },
    ...]}}; 
end
  mypsb CustomerPSBRecord;
런타임 PCB 이름이 vgLib.VGTDLI()와 함께 사용되지 않으므로 customerPCB 레코드에 대해 pcbName 특성을 지정할 필요가 없습니다. 이 예제의 경우 CustomerPSBRecord의 customerPCB 이전에 3개의 PCB가 있다고 가정하십시오.
그런 다음 I/O 영역을 정의하십시오. SSA도 정의하여 형식화하십시오. vgLib.VGTDLI()를 사용하는 경우 SSA에 대해 DL/I 규칙에 따라 SSA를 올바르게 형식화해야 합니다. 이를 완료하면 다음과 같이 DL/I FLD 호출을 실행할 수 있습니다.
  vgLib.VGTDLI("FLD", 4, myIOArea, mySSA1, ... mySSAn);
  if (mypsb.customerPCB.statusCode != "  ")
    // do error processing
  end
호출의 두 번째 인수로 PCB(4)의 색인을 지정합니다. EGL은 DL/I CBLTDLI 인터페이스를 사용하는 DL/I 호출로 vgLib.VGTDLI()를 변환합니다. 호출 이후 EGL 사전 정의 레코드 DB_PCBRecord의 필드를 사용하여 호출의 결과를 판별할 수 있습니다.