스토어드 프로시저 연계로 IMS, ZOSBATCH 및 DL/I를 디버그하는 데 EGL 디버거 사용
원격 IMS™ 또는 ZOSBATCH 프로그램을 호출하는 EGL 프로그램을 디버그할 수 있습니다.
디버깅 중인 프로그램은 SQL 데이터베이스, DL/I 데이터베이스 또는 둘 다에 액세스할 수 있습니다. 마찬가지로, 원격 IMS 또는 ZOSBATCH 피호출 프로그램은 SQL 데이터베이스, DL/I 데이터베이스 또는 둘 다에 액세스할 수 있습니다. 디버거는 호스트에 데이터베이스 호출을 작성하고 생성된 프로그램에 대한 호출도 호스트에서 작성하지만, 그렇지 않으면 로컬 클라이언트 시스템에서 코드를 해석합니다.
- 원격 피호출 프로그램이 IMSVS, IMSBMP 또는 ZOSBATCH 환경에 대해 생성된 EGL 프로그램이어야 합니다. 이러한 환경에서 실행되는 비EGL 프로그램도 지원됩니다. CICS®의 DL/I에 액세스하는 원격 프로그램 호출이 지원되지 않습니다.
- DL/I 데이터베이스 PCB만 지원됩니다. 호출 및 피호출 프로그램은 I/O PCB, TP PCB 또는 GSAM PCB에 액세스할 수 없습니다. 워크스테이션에서 디버그하는 프로그램의 경우 디버깅용으로 생성 시 I/O, TP 또는 GSAM PCB와 일련의 레코드를 연관시키려고 계획하는 경우 seqws의 fileType과 함께 자원 연관을 사용하여 대신 워크스테이션의 순차 파일에 액세스하십시오.
- 데이터베이스 PCB만 피호출 프로그램에 전달할 수 있습니다. 기타 유형의 PCB를 전달하거나 dliLib.psbData를 피호출 프로그램에 전달할 수 없습니다.
- 텍스트 UI 프로그램에 대한 원격 호출이 지원되지 않습니다.
- 원격 프로그램에 대한 전송 및 트랜잭션에 대한 전송이 지원되지 않습니다.
- 다음 DL/I 호출이 지원되지 않습니다. CHKP, GSCD, PCB, TERM 및 XRST
- IMS PSB의 모든 데이터베이스 PCB는 이름이 지정되어야 하고 이 이름은 EGL PSB에서 해당하는 pcbName 특성과 일치해야 합니다.
- remoteComType이 STOREDPROCEDURE로 설정된 연계 옵션 파트를 구성하십시오. 이는 스토어드 프로시저를 통해 호스트에 호출을 지시하여 트랜잭션에 참여하고 DL/I 지정 PSB에 액세스할 수 있도록 합니다.
- 사용자가 작성한 연계 옵션 파트를 빌드 디스크립터 옵션 linkage가 가리키도록 디버그 빌드 디스크립터를 구성하십시오.
- 호스트 환경을 구성하십시오.
- 로컬 작업공간을 구성하십시오.
- 호스트에서 EGL DL/I 디버그 서버를 시작하십시오. 호스트 환경 및 로컬 작업공간 구성에 대한 정보가 이 섹션에 포함됩니다. 디버그 서버 시작에 대한 정보는 “z/OS® 호스트에서 DL/I 디버그 서버 시작”을 참조하십시오.
호스트 환경 구성
- 다음 애플리케이션이 사용 중인지 확인하십시오.
- TCPIP
- DB2® v.7 이상
- IMS v.7 이상
- 개방 데이터베이스 액세스(ODBA)
- 자원 복구 서비스(RRS)
- 워크로드 관리자(WLM)
- EGL DL/I 디버거는 ODBA를 사용하여 IMS의 DL/I 데이터베이스 기능에 알립니다. RRS/MVS(자원 복구 서비스)가 필요합니다. OS/390® 릴리스 3은 ODBA 인터페이스를 지원할 수 있는 최소 레벨입니다.
- AIBTDLI 및 CBLTDLI 로드 모듈(ELADL1)의 EGL 버전을 작성하십시오. 이 단계는 디버그 세션이 DL/I 데이터베이스에 액세스하는 프로그램에 대한 원격 호출을 수행하는 경우에만 필요합니다. 이러한 모듈의 이 EGL 버전에서는 피호출 프로그램이 워크스테이션의 디버거 세션과 동일한 작업 단위에서 실행되도록 합니다. 자세한 정보는 이 주제에서 “AIBTDLI 및 CBLTDLI의 EGL 버전 작성”을 참조하십시오.
- DRA(Database Resource Adapter) 시작 테이블(ELADRA)을 작성하십시오. 자세한 정보는 이 주제에서 “DRA 시작 테이블”을 참조하십시오.
- WLM(워크로드 관리자)(ELADBWLM)를 작성하십시오. 자세한 정보는 “스토어드 프로시저 연계에 대해 DB2 구성”의 “워크로드 관리자”를 참조하십시오.
- DB2 스토어드 프로시저 (EZESP1CR 및 EZESP1GR)를 작성하십시오. 자세한 정보는 “스토어드 프로시저 연계에 대해 DB2 구성”의 “DB2 스토어드 프로시저”를 참조하십시오.
- PSB 정보를 제공하십시오. 세부사항은 이 주제의 나중 부분에서 "로컬 작업공간 구성"을 참조하십시오.
- EGL DL/I 디버그 서버를 시작하십시오. 자세한 정보는 “z/OS
호스트에서 DL/I 디버그 서버 시작”을 참조하십시오.
- 프록시 시작 JCL(ELADBGPX)에 대한 자세한 정보는 “z/OS 호스트에서 DL/I 디버그 서버 시작”에서 "프로시저"를 참조하십시오.
- 디버그 서버 시작 JCL(ELADBGRN)에 대한 자세한 정보는 “z/OS 호스트에서 DL/I 디버그 서버 시작”에서 "디버그 서버를 시작할 JCL"을 참조하십시오.
zSeries용 Rational® COBOL Runtime에서는 샘플 파일을 제공합니다. 멤버 이름이 소괄호 내부에서 위에 표시됩니다. 모든 JCL 및 SQL 샘플이 ELA.V6R0M1.SELAJCL 또는 ELA.V6R0M1.SELASAMP에서 COBOL 런타임에 있습니다.
AIBTDLI 및 CBLTDLI의 EGL 버전 작성
- IMS 또는 ZOSBATCH에서 실행합니다.
- 호스트에 상주합니다.
- DL/I 데이터베이스에 액세스합니다.
이 경우 EGL 디버거에서는 사용자가 IMS 제공 로드 모듈이 아니라 AIBTDLI 및 CBLTDLI 로드 모듈의 EGL 버전을 사용해야 합니다. zSeries용 Rational COBOL Runtime은 샘플 JCL을 제공하여 ELA.V6R0M1.SELAJCL(ELADL1)에서 이러한 로드 모듈을 작성합니다. JCL을 편집하여 시스템 요구사항에 맞게 수정하십시오. JCL의 주석이 수정해야 하는 항목을 설명합니다. 작업을 실행한 후, 결과 AIBTDLI 및 CBLTDLI 로드 모듈이 포함된 PDS를 워크로드 관리자 JCL의 STEPLIB에 추가해야 합니다.
DRA 시작 테이블 작성
zSeries용 Rational COBOL Runtime은 ELA.V6R0M1.SELASAMP(ELADRA)에서 DRA 시작 테이블을 작성하는 데 필요한 샘플 JCL을 제공합니다. 다음 표는 작업을 실행하기 전에 변경해야 하는 사항을 나열합니다. 작업을 실행한 후, 결과 DRA 시작 테이블이 포함된 PDS를 DLI 디버그 프록시의 STEPLIB에 추가해야 합니다. 자세한 정보는 “z/OS 호스트에서 DL/I 디버그 서버 시작”을 참조하십시오.
| 소스 | 대상 |
|---|---|
| jobcard를 추가하십시오. | |
| SYSLIB | 시스템 구성에 맞게 수정하십시오. |
| #dbctlid | #dbctlid를 해당 데이터베이스의 DB 제어 id로
바꾸십시오. 이 값은 imsID 빌드
디스크립터 옵션으로도 이동합니다. 이 값은
IMS를 시작하는 데 사용하는 JCL에서 발생합니다. IMS JCL 매개변수는 다음과 같아야 합니다.
이 예제에서
XXXX는 DB 제어
id를 나타냅니다. |
| IMS.SDFSRESL | 시스템의 PDS SDFSRESL입니다. |
| MAXTHRD=99 | 99를 동시 디버그 세션의 최대 수로 바꾸십시오(최소는 3). |
| CNBA=0 | (FPBUF+FPBOF)*MAXTHREAD * |
| FPBUF=0 | FPBUF는 FP용으로 각 스레드에 할당될 버퍼의 수입니다. * |
| FPBOF=0 | FPBOF는 FP용으로 각 스레드에 할당될 버퍼 및 오버플로우 버퍼의 수입니다. * |
| TIMEOUT=60 | TIMEOUT 시작 매개변수를 가장 오래 실행 중인 UOR보다 길도록 가능하면 높게 설정하십시오. |
| AGN=IVP | IMS 보안 구성에 대한 정보는 IMS 7 관리 안내 시스템을 참조하십시오. |
| //SYSLMOD DD DSN=ELA.V6ROM1.SELADBGL | DRA 시작이 상주하도록 할 PDS로 ELA.V6ROM1.SELADBGL을 바꾸십시오. |
| NAME DFSIVP10(R) | DFSIVP10을 위에서 #dbctlid가 뒤따르는 DFS로 바꾸십시오. |
| * 이러한 필드 설정에 대한 자세한 정보는 IMS 관리 안내서를 참조하십시오. | |
다음 목록은 샘플 JCL을 표시합니다.
//ASM EXEC PGM=IEV90,
// PARM='DECK,NOOBJECT,LIST,XREF(SHORT),ALIGN',
// REGION=4096K
//SYSLIB DD DSN=IMS.OPTIONS,DISP=SHR
// DD DSN=IMS.SDFSMAC,DISP=SHR
// DD DSN=SYS1.MACLIB,DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT2 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT3 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSPUNCH DD DSN=&&OBJMOD;,
// DISP=(,PASS),UNIT=SYSDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=400),
// SPACE=(400,(100,100))
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
PZP TITLE 'DATABASE RESOURCE ADAPTER STARTUP PARAMETER TABLE'
DFSIVP10 CSECT
**********************************************************************
* MODULE NAME: DFSIVP10 *
* DESCRIPTIVE NAME: DATABASE RESOURCE ADAPTER (DRA) *
* STARTUP PARAMETER TABLE. *
* FUNCTION: TO PROVIDE THE VARIOUS DEFINITIONAL PARAMETERS *
* FOR THE COORDINATOR CONTROL REGION. THIS *
* MODULE MAY BE ASSEMBLED BY A USER SPECIFYING *
* THEIR PARTICULAR NAMES, ETC. AND LINKEDITED *
* INTO THE USER RESLIB AS DFSPZPXX. WHERE XX *
* IS EITHER 00 FOR THE DEFAULT, OR ANY OTHER ALPHA- *
* NUMERIC CHARACTERS. *
**********************************************************************
EJECT
DFSPRP DSECT=NO, X
DBCTLIB=#dbctlid, X
DDNAME=, X
DSNAME=IMS.SDFSRESL, X
MAXTHRD=99, X
MINTHRD=2, X
TIMER=60, X
USERID=, X
CNBA=10, X
FPBUF=5, X
FPBOF=3, X
TIMEOUT=60, X
SOD=A, X
AGN=IVP
END
//LNKEDT EXEC PGM=IEWL,
// PARM='LIST,XREF,LET,NCAL'
//SYSUT1 DD UNIT=SYSDA,SPACE=(1024,(100,50))
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DSN=ELA.V6R0M1.SELADBGL,DISP=SHR
//SYSLIN DD DISP=(OLD,DELETE),DSN=&&OBJMOD;
// DD DDNAME=SYSIN
//SYSIN DD *
NAME DFSIVP10(R)
로컬 작업공간 구성
- 에서 systemType을 DEBUG로 설정 옵션을 지우십시오. 이는 EGL이 빌드 디스크립터 옵션에서 시스템 유형을 사용하도록 강제 실행합니다.
- 클라이언트 시스템에 JDBC가 있어야 합니다. 필요한 실제 .jar 파일은 실행 중인 JDBC의 버전에 따라 다릅니다.
- 기능하는 기본 JDBC DB2가 호스트에 연결되어 있는지 확인하십시오. EGL 디버거가 이 연결을 사용하여 DL/I에 액세스합니다.
- 디버그된 코드 및 피호출 프로그램 둘 다에서 DB2 데이터베이스에 액세스하는 경우 기본 JDBC 연결이 NOAUTOCOMMIT로 설정되어야 합니다.
- imsID 빌드 디스크립터 옵션을 IMS 서브시스템의 CHAR(4) 이름으로 설정하십시오.
- 에서 IMS DLI에 대한 환경 설정 페이지가 있는지 확인하십시오. 그렇지 않은 경우 으로 이동하고 고급을 클릭하십시오. 고급 창에서 EGL 개발자를 펼치고 EGL DLI 선택란을 선택하십시오. 환경 설정 창을 닫고 다시 열어서 IMS DLI 디버그 페이지를 보십시오.
- IMS DLI 디버그 환경 설정
페이지(이전 단계 참조)에서 다음 정보를 입력하십시오.
- StoredProcedure
- 호스트의 스토어드 프로시저입니다. 이는 완전한 이름일 수 있습니다. 공백인 경우 EZESP1의 기본값으로 가정합니다. 빌드 디스크립터의 sqlSchema 특성 값이 이 값 앞에 덧붙여집니다. 스토어드 프로시저 이름은 ZOS DB2의 SQL 참조에서 설명된 대로 "프로시저-이름"의 규칙을 따릅니다.
- HostPort
- 디버거 서버가 청취하는 포트의 번호입니다.
- ConversionTable
- 호스트의 언어를 정의합니다. 이는 호출 연계 변환에서 사용되는 동일한 표입니다.
- ProxyIdleTimeout
- 디버거 서버가 중단하도록 알리기 전의 프록시 유휴 시간(DL/I 활동 없음)입니다. 이는 처리 시간을 허용하는 데 충분히 길어야 하지만, 연결을 반복적으로 놓는 경우 모든 사용 가능한 프로세스를 소진하지 않도록 충분히 짧아야 합니다.
- PSB 이름
- PSB 이름을 지정하는 데 다음 옵션 중 하나를 선택하십시오.
- 빌드 디스크립터 옵션 imsPSB 검토
- 빌드 설명 옵션 imsPSB의 공백이 아닌 값이 PSB 이름의 다른 소스에 우선합니다.
- 사용자에게 PSB 이름에 대한 프롬프트 표시
- 각 디버그 세션의 시작 시, 사용자는 DL/I 데이터에 액세스하는 데 사용되는 PSB 이름을 입력하도록 프롬프트가 표시됩니다. ODBA 인터페이스를 사용하면 PCB가 이름이 지정되어야 하고 IMS의 프로그램 또는 CICS의 dliLib.psbData에서 정의된 PSB의 PCB와 일치해야 합니다.
- DLILib.psbData에서 PSB 이름 사용
- CICS의 기본값입니다. 프로그램은 트랜잭션 커미트/롤백 판별에 대해 DL/I 특성을 계속 사용하지만, PSB 이름이 dliLib의 psbData 레코드에서 발생합니다.
- PSB 이름의 프로그램 이름 사용
- IMS의 기본값입니다. 이는 alias 특성의 값(사용되는 경우) 또는 프로그램 이름입니다. 이 값은 대문자로 접힙니다.