이 장에서는 IBM Problem Determination Tools 제품에 사용할 프로그램을 준비하는 데 필요한 최소 단계에 대해 설명합니다. 자세한 정보는 z/OS®용 Debug Tool 사용자 안내서의 '제 2 부. 디버깅을 위한 프로그램 준비', z/OS용 Fault Analyzer 사용자 안내서의 '재 2 부. Fault Analyzer 설치 및 관리' 또는 z/OS용 Application Performance Analyzer 사용자 안내서의 '부록 B. CAZLANGX를 사용한 부가 파일 작성'을 참조하십시오.
이 장에서는 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 몇 가지 조합을 사용하는 조직에 맞는 하나의 컴파일 메소드에 대한 지시사항을 제공합니다. 사용자의 회사에서 z/OS용 Debug Tool만 사용하는 경우, 대신 z/OS용 Debug Tool 사용자 안내서의 '제 2 부. 디버깅을 위한 프로그램 준비'를 참조하십시오. 사용자의 회사에서 z/OS용 Fault Analyzer만 사용하는 경우, z/OS용 Fault Analyzer 사용자 안내서의 '재 2 부. Fault Analyzer 설치 및 관리'를 참조하십시오. 사용자의 회사에서 z/OS용 Application Performance Analyzer만 사용하는 경우, z/OS용 Application Performance Analyzer 사용자 안내서의 '부록 B. CAZLANGX를 사용하여 부가 파일 작성'을 참조하십시오.
z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에서는 IBM 컴파일러에서 생성된 로드 모듈 및 기타 파일을 사용할 수 있습니다. 프로그램이 해당 제품에서 사용할 수 있는 로드 모듈 및 파일을 생성할 수 있도록 특정 컴파일러 옵션으로 프로그램을 컴파일해야 합니다.
이 장에서는 ’소스 정보 파일’ 용어를 사용하여 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에서 사용되는 파일 유형을 참조합니다. 이 장의 주제인 여러 종류의 소스 정보 파일은 다음과 같습니다.
서로 다른 컴파일러는 여러 종류의 소스 정보 파일을 생성합니다. 둘 이상의 컴파일러를 사용하는 경우, 둘 이상의 소스 정보 라이브러리 유형이 있습니다.
이 장에 설명된 컴파일러 옵션으로 프로그램을 컴파일하면 다음과 같이 컴파일러에서 작성된 소스 정보 파일 및 로드 모듈을 사용할 수 있습니다.
프로그램이 올바른 옵션으로 컴파일되면 컴파일러에서 생성된 모듈을 디버그할 수 있고 프로그램 명령문이 포함된 소스 정보 파일을 생성할 수 있습니다. z/OS용 Debug Tool을 사용하여 프로그램을 디버그하는 경우, z/OS용 Debug Tool이 소스 정보 파일을 사용하여 소스 창에서 프로그램 소스 명령문을 표시합니다.
사용되는 소스 언어 및 컴파일러에 따라, 로드 모듈, 소스 정보 파일 또는 DWARF 파일에 명령문 및 변수에 대한 정보(예: 오프셋 및 길이)와 디버거가 스토리지에서 명령문 및 변수를 찾을 수 있도록 하는 정보가 포함됩니다. 올바른 컴파일 옵션으로 컴파일하지 않는 경우, 디버깅이 소스 명령문 또는 변수가 아닌 시스템 코드가 표시되는 ’디스어셈블리’ 모드로 제한됩니다.
사용자의 시스템에 최근 하나 이상의 IBM Problem Determination Tools 제품이 설치된 경우, 프로그램 빌드 프로세스가 아직 갱신되지 않았을 수 있습니다. 빌드 프로세스 갱신은 IBM Problem Determination Tools 제품 구현의 중요한 필수 파트입니다.
많은 조직에는 이러한 빌드 프로세스에 대한 확실한 소유권이 있습니다. 다른 조직에서는 변경 담당자가 불확실한 경우도 있습니다. 많은 조직은 표준 컴파일 프로세스 또는 시스템 관리자가 유지보수하고 갱신한 PROC를 사용하여 IBM Problem Determination Tools 제품에 맞는 프로그램을 준비합니다. 이 경우, 사용 가능한 프로세스 및 사용 방법을 알아 내십시오. 다른 조직에서는 각 개발자가 각자가 소유한 컴파일 JCL 또는 PROC를 유지보수하여 프로그램을 컴파일합니다. 이 경우, 다음 설명대로 사용자의 컴파일 JCL을 갱신하여 IBM Problem Determination Tools 제품에 맞는 프로그램을 준비하십시오.
각 컴파일러에 필요한 사항을 개별 검색하여 시작하십시오. 예를 들어, Enterprise COBOL for z/OS, Enterprise PL/I for z/OS, C/C++ 및 어셈블러에 필요한 변경사항은 모두 조금씩 다릅니다.
일반적으로 IBM Problem Determination Tools에서 사용할 수 있는 프로그램을 생성하기 위해 컴파일러 JCL에 다음 세 가지 변경사항이 필요합니다.
일반적으로 프로그램이 테스트되면 프로그램 로드 모듈이 프로덕션에 도달하기 전에 여러 단계를 걸쳐 승격됩니다. 예를 들어, 새 프로그램이 처음 컴파일될 때, 테스트 로드 라이브러리에 위치할 수 있습니다. 단위 테스트가 완료되면, 아마도 컴파일된 프로그램이 품질 보증 환경으로 승격됩니다. 그리고 마지막으로 프로덕션으로 승격됩니다. 사용자 시스템에서 다음과 같은 여러 이름으로 이러한 단계를 알 수 있습니다.
프로그램의 라이프사이클 동안 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer를 사용할지 고려하십시오. 프로덕션 프로그램에서 z/OS용 Debug Tool을 사용하지 않는 경우에도, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer가 해당 단계에서 매우 유용합니다. 각 단계에서 IBM Problem Determination Tools 제품을 사용하려면 승격 프로세스를 갱신하여 소스 정보 파일을 보유하십시오. 재컴파일, 복사 또는 이동을 수행하여 승격을 완료할 수 있습니다. 로드 모듈 또는 오브젝트 모듈로 수행하는 소스 정보 파일에서 동일한 단계를 수행하십시오. 로드 라이브러리 또는 오브젝트 라이브러리의 각각에 대해, 소스 정보 라이브러리의 해당 세트가 있어야 합니다. 로드 모듈 또는 오브젝트 모듈을 승격시킬 때마다 소스 정보 파일도 승격시켜야 합니다. 이렇게 하면 소스 정보 파일이 Fault Analyzer 및 Application Performance Analyzer에 사용 가능하며, 프로그램 라이프사이클의 모든 단계에서 IBM Problem Determination Tools 제품을 계속 이용할 수 있습니다.
각 컴파일러는 여러 종류의 소스 정보 파일을 생성하고 각 IBM Problem Determination Tools 제품은 여러 종류의 파일을 읽습니다. 서로 다른 모든 조합을 검색하는 데 시간이 오래 걸릴 수 있지만 컴파일러 각각에 대해, 다음에 설명된 것처럼 제안된 방법이 있습니다. 제안된 이 방법을 사용하는 경우, 프로그램에서 IBM Problem Determination Tools 제품을 충분히 이용할 수 있습니다.
다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 Enterprise COBOL for z/OS 버전 4 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| TEST(NOHOOK, SEPARATE, EJPD), LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) | SYSDEBUG | 예 | 프로덕션 및 테스트를 위해 제안됨 | ||
| NOTEST, LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) | 컴파일러 목록 | 예 | N/A | 지원됨 | 지원됨 |
| NOTEST, LIST, MAP, SOURCE, NUMBER, XREF(SHORT) | 예 | N/A | 지원됨 | N/A | |
| LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) | LANGX 파일 | 예 | N/A | 지원됨 | 지원됨 |
표 19에 제안된 컴파일러 옵션을 사용하여 Enterprise COBOL for z/OS 버전 4 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
z/OS용 Debug Tool을 사용하여 프로그램을 디버그하려면 TEST 컴파일러 옵션이 필요합니다. TEST 옵션은 z/OS용 Fault Analyzer 또는 z/OS용 Application Performance Analyzer를 사용하려는 경우 선택적입니다.
SEPARATE 하위 옵션은 SYSDEBUG 파일을 생성합니다.
NOHOOK 및 SEPARATE가 디버그할 수 있는 프로덕션 준비 모듈을 생성합니다.
또한 OPT 옵션이 사용되면 EJPD로 인해 최적화는 이루어지지 않지만 디버거의 JUMPTO 및 GOTO 명령을 사용할 수 있습니다. OPT 및 NOEJPD가 모두 사용되면 이러한 명령을 사용할 수 없습니다.
//SYSDEBUG DD DSN= SYSDEBUG.pds(pgmname),DISP=SHRSYSDEBUG 라이브러리에 컴파일러에서 생성된 SYSDEBUG 파일을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 이 파일은 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다.
다음은 IBM Problem Determination Tools 제품에 사용할 Enterprise COBOL for z/OS 버전 4 프로그램 컴파일에 대한 JCL 예제입니다. 이는 일반 샘플이며 모듈 생성을 위한 사용자의 모든 요구사항에 맞지는 않습니다.
TEST 컴파일러 옵션이 지정되어 있습니다. 사용하는 컴파일러 버전에 대한 TEST 컴파일러 옵션의 올바른 하위 옵션을 코드화하십시오. 또한 프로그램에 필요한 호환 가능한 기타 모든 컴파일러 옵션을 코드화할 수 있습니다.
SYSDEBUG DD문이 코드화되었습니다. 이는 컴파일러가 생성하는 소스 정보 파일입니다. PDS 또는 PDSE인 SYSDEBUG 라이브러리를 참조합니다. 멤버명은 프로그램명과 동일해야 합니다.
Enterprise COBOL for z/OS의 경우, 이러한 내용은 필수 변경사항입니다.
하지만 연결 편집기 단계에는 선택적 변경사항이 있습니다. 다음 예제는 특수 Language Environment EXIT 모듈이 애플리케이션 로드 모듈에 포함되어 있음을 나타냅니다. 필수는 아니지만 Debug Tool 패널 6을 사용 가능하게 하여 일부 환경에서 디버거를 보다 쉽게 시작할 수 있습니다. 패널 6을 사용하여 Debug Tool을 시작하려면 이 방법을 사용해야 합니다. Debug Tool 패널 6을 사용하지 않으려면 EXIT 모듈을 포함하지 마십시오.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE AN ENTERPRISE COBOL PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. A TEST COMPILER PARM IS REQUIRED FOR DEBUG TOOL
//* 2. COMPILER PARM TEST(NOHOOK,SEPARATE,EJPD) HAS ADVANTAGES:
//* - THE MODULE IS READY FOR DEBUG TOOL
//* - THE MODULE IS PRODUCTION-READY (NO RUN-TIME OVERHEAD)
//* - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//* 3. COMPILER PARMS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU PLAN
//* TO USE THE COMPILER LISTING WITH FA OR APA, OR XXXLANGX
//*
//* BINDER (LINKAGE EDITOR):
//* 4. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=SAM1 PROGRAM NAME
// SET COBOLLIB='IGY.V4R1.SIGYCOMP' COBOL COMPILER LOADLIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LELIB='CEE.SCEELKED' LE LINKEDIT LIBRARY
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
//*
//* ****************************
//* COMPILE STEP
//* ****************************
//COMPILE EXEC PGM=IGYCRCTL,REGION=0M,
// PARM=('TEST(NOHOOK,SEPARATE,EJPD),LIST,MAP,XREF(SHORT),NONUMBER,SOURCE')
//STEPLIB DD DISP=SHR,DSN=&COBOLLIB
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSLIN DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
// SPACE=(80,(10,10))
//SYSUT1 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB DD DISP=SHR,DSN=&LELIB
//DTLIB DD DISP=SHR,DSN=&DTLIB
//SYSLMOD DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN DD DISP=(OLD,DELETE),DSN=&&LOADSET
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//* AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//* (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))
다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 Enterprise COBOL for z/OS 버전 3 및 COBOL for OS/390® 및 VM 프로그램을 준비하는 데 사용할 수 있는 여러 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| TEST(NONE, SYM, SEPARATE), LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) | SYSDEBUG | 예 | 프로덕션 및 테스트를 위해 제안됨 | ||
| NOTEST, LIST, MAP, SOURCE, NONUMBER, NOOPT, XREF(SHORT) | 컴파일러 목록 | 예 | N/A | 지원됨 | 지원됨 |
| NOTEST, LIST, MAP, SOURCE, XREF(SHORT), NUMBER | 예 | N/A | 지원됨 | N/A | |
| LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) | LANGX 파일 | 예 | N/A | 지원됨 | 지원됨 |
표 20에 제안된 컴파일러 옵션을 사용하여 Enterprise COBOL for z/OS 버전 3과 OS/390 및 VM용 COBOL 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
TEST는 z/OS용 Debug Tool에 필요합니다.
SEPARATE 하위 옵션은 SYSDEBUG 파일을 생성합니다. SEPARATE와 함께 NONE을 지정하면 디버그할 수 있는 프로덕션 준비 모듈을 생성합니다.
OPTIMIZE가 지정되면 디버거 JUMPTO 및 GOTO 명령문을 사용할 수 없습니다. NOOPTIMIZE가 지정되면 이러한 명령을 사용할 수 있습니다.
//SYSDEBUG DD DSN= SYSDEBUG.pds(pgmname),DISP=SHRSYSDEBUG 라이브러리에 컴파일러에서 생성된 SYSDEBUG 파일을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 이 파일은 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다.
다음은 IBM Problem Determination Tools 제품에 사용할 z/OS용 Enterprise COBOL 버전 3 프로그램 컴파일에 대한 JCL 예제입니다. 이는 일반 샘플이며 사용자의 모든 요구사항에 맞지는 않습니다.
TEST 옵션이 지정되어 있습니다. 사용하는 컴파일러 버전에 대한 TEST 컴파일러 옵션의 올바른 하위 옵션을 코드화하십시오. 또한 프로그램에 필요한 호환 가능한 기타 모든 컴파일러 옵션을 코드화할 수 있습니다.
SYSDEBUG DD문이 코드화되었습니다. 이는 컴파일러가 생성하는 소스 정보 파일입니다. PDS 또는 PDSE인 SYSDEBUG 라이브러리를 참조합니다. 멤버명은 프로그램명과 동일해야 합니다.
Enterprise COBOL for z/OS의 경우, 이러한 내용은 필수 변경사항입니다.
하지만 연결 편집기 단계에는 선택적 변경사항이 있습니다. 다음 예제는 특수 Language Environment EXIT 모듈이 애플리케이션 로드 모듈에 포함되어 있음을 나타냅니다. 필수는 아니지만 Debug Tool 패널 6을 사용 가능하게 하여 일부 환경에서 디버거를 보다 쉽게 시작할 수 있습니다. 패널 6을 사용하여 Debug Tool을 시작하려면 이 방법을 사용해야 합니다. Debug Tool 패널 6을 사용하지 않으려면 EXIT 모듈을 포함하지 마십시오.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE AN ENTERPRISE COBOL PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. A TEST COMPILER PARM IS REQUIRED FOR DEBUG TOOL
//* 2. COMPILER PARM TEST(NONE,SYM,SEP) HAS THREE ADVANTAGES:
//* - THE MODULE IS READY FOR DEBUG TOOL
//* - THE MODULE IS PRODUCTION-READY (NO RUN-TIME OVERHEAD)
//* - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//* 3. COMPILER PARMS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU PLAN
//* TO USE THE COMPILER LISTING WITH FA OR APA, OR XXXLANGX
//* 4. COMPILER PARM NOOPT IS OPTIONAL. HOWEVER, THE DEBUG TOOL
//* COMMANDS JUMPTO AND GOTO WILL NOT BE AVAILABLE IF
//* THE OPT PARM IS USED
//*
//* BINDER (LINKAGE EDITOR):
//* 5. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=SAM1 PROGRAM NAME
// SET COBOLLIB='IGY.V3R4.SIGYCOMP' COBOL COMPILER LOADLIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LELIB='CEE.SCEELKED' LE LINKEDIT LIBRARY
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
//*
//* ****************************
//* COMPILE STEP
//* ****************************
//COMPILE EXEC PGM=IGYCRCTL,REGION=0M,
// PARM=('TEST(NONE,SYM,SEPARATE),LIST,MAP,SOURCE,NONUMBER,XREF(SHORT)')
//STEPLIB DD DISP=SHR,DSN=&COBOLLIB
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSLIN DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
// SPACE=(80,(10,10))
//SYSUT1 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB DD DISP=SHR,DSN=&LELIB
//DTLIB DD DISP=SHR,DSN=&DTLIB
//SYSLMOD DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN DD DISP=(OLD,DELETE),DSN=&&LOADSET
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//* AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//* (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))
다음 표에서는 IBM 문제점 판별 툴 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 MVS 및 VM용 COBOL 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| TEST(ALL, SYM), LIST, MAP, SOURCE, NOOPT, NONUMBER, XREF(SHORT) | 컴파일러 목록 | 아니오 | 테스트를 위해 제안되었습니다. (이 컴파일러의 프로덕션에서 Debug Tool을 사용하는 것은 제안되지 않음) | ||
| NOTEST, LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) | 예 | N/A | 프로덕션을 위해 제안됨 | ||
| NOTEST, LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) | LANGX 파일 | 예 | N/A | 지원됨 | 지원됨 |
MVS 및 VM용 COBOL 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
TEST는 z/OS용 Debug Tool에 필요합니다.
ALL 하위 옵션은 디버그 후크를 추가하며 이로 인해 런타임 오버헤드가 조금 증가합니다.
SYM은 z/OS용 Debug Tool에 필요한 기호 데이터를 모듈에 저장하고 이로 인해 모듈이 커집니다.
기타 옵션은 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에 필요한 컴파일러 목록을 형식화합니다.
NOTEST를 지정하면 Debug Tool에 대한 소스 레벨의 디버깅을 사용할 수 없지만, 성능이 향상되며 모듈 크기가 작아집니다.
기타 옵션은(OPTIMIZE 제외) z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에 필요한 컴파일러 목록을 형식화합니다.
//SYSPRINT DD DSN= compiler.listing.pds(pgmname),DISP=SHR컴파일러 목록 라이브러리의 파일에 컴파일러 목록을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 이는 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다.
다음은 IBM 문제점 판별 툴 제품에 사용할 MVS 및 VM용 COBOL 프로그램 컴파일에 대한 JCL 예제입니다. 이는 일반 샘플이며 사용자의 모든 요구사항에 맞지는 않습니다.
TEST 옵션이 지정되어 있습니다. 사용하는 컴파일러 버전에 대한 TEST 컴파일러 옵션의 올바른 하위 옵션을 코드화하십시오. 또한 프로그램에 필요한 호환 가능한 기타 모든 컴파일러 옵션을 코드화할 수 있습니다.
또한 SYSPRINT DD가 영구 파일을 참조합니다. 이는 컴파일러가 생성하는 소스 정보 파일입니다. PDS 또는 PDSE인 목록 라이브러리를 참조합니다. 멤버명은 프로그램명과 동일해야 합니다. MVS 및 VM용 COBOL의 경우, 이러한 내용은 필수 변경사항입니다.
하지만 연결 편집기 단계에는 선택적 변경사항이 있습니다. 다음 예제는 특수 Language Environment EXIT 모듈이 애플리케이션 로드 모듈에 포함되어 있음을 나타냅니다. 필수는 아니지만 Debug Tool 패널 6을 사용 가능하게 하여 일부 환경에서 디버거를 보다 쉽게 시작할 수 있습니다. 패널 6을 사용하여 Debug Tool을 시작하려면 이 방법을 사용해야 합니다. Debug Tool 패널 6을 사용하지 않으려면 EXIT 모듈을 포함하지 마십시오.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE A COBOL FOR MVS AND VM PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. A TEST COMPILER PARM IS REQUIRED FOR DEBUG TOOL
//* 2. COMPILER PARMS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU PLAN
//* TO USE THE COMPILER LISTING WITH FA OR APA, OR XXXLANGX
//* 3. COMPILER PARM NOOPT IS OPTIONAL. HOWEVER, THE DEBUG TOOL
//* COMMANDS JUMPTO AND GOTO WILL NOT BE AVAILABLE IF
//* THE OPT PARM IS USED
//*
//* BINDER (LINKAGE EDITOR):
//* 4. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=SAM1 PROGRAM NAME
// SET COBOLLIB='IGY.SIGYCOMP' COBOL COMPILER LOADLIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LELIB='CEE.SCEELKED' LE LINKEDIT LIBRARY
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
//*
//* ****************************
//* COMPILE STEP
//* ****************************
////COMPILE EXEC PGM=IGYCRCTL,REGION=0M,
// PARM=(NOTEST,LIST,MAP,SOURCE,NONUMBER,XREF(SHORT)')
//STEPLIB DD DISP=SHR,DSN=&COBOLLIB
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSLIN DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
// SPACE=(80,(10,10))
//SYSUT1 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB DD DISP=SHR,DSN=&LELIB
//*** DTLIB DD DISP=SHR,DSN=&DTLIB
//SYSLMOD DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN DD DISP=(OLD,DELETE),DSN=&&LOADSET
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//* AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//* (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))
최근에 TEST 옵션을 사용하여 프로그램을 컴파일한 경우 NOTEST 사용을 고려하십시오. NOTEST를 사용하면 TEST 옵션으로 컴파일할 때 사용할 수 없는 z/OS용 Debug Tool 기능을 이용할 수 있습니다. NOTEST 옵션으로 컴파일할 때 사용할 수 있는 z/OS용 Debug Tool 기능의 예제에는 자동 모니터 기능 및 AT ENTRY 프로그램명 중단점이 포함됩니다. NOTEST로 컴파일하면 디버거 없이 실행할 때 추가 오버헤드를 야기하지 않지만 디버그될 수 있는 모듈을 생성할 수 있습니다.
다음 표에서는 IBM 문제점 판별 툴 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 VS COBOL II 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| NOTEST, LIST, MAP, SOURCE, XREF, NONUMBER, NOOFFSET | 컴파일러 목록 | 예 | N/A | 지원됨 | 지원됨 |
| NOTEST, LIST, MAP, SOURCE, XREF, NUMBER | 예 | N/A | 지원됨 | N/A | |
| NOTEST, LIST, MAP, NOOPT, SOURCE, XREF, NONUMBER | LANGX 파일 | 예 | 프로덕션 및 테스트를 위해 제안됨 | ||
표 22에 제안된 컴파일러 옵션을 사용하여 VS COBOL II 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
다음은 IBM Problem Determination Tools 제품에 사용할 VS COBOL II 프로그램 컴파일에 대한 JCL 예제입니다. 이는 일반 샘플이며 사용자의 모든 요구사항에 맞지는 않습니다.
컴파일러 옵션 사용에 주의하고 컴파일러 목록이 LANGX 파일을 생성하는 추가된 단계로 전달되는 것에 주의하십시오.이 컴파일러 목록은 영구 파일에 저장될 수 있거나 임시 파일에 전달될 수 있습니다. VS COBOL II의 경우, 이는 유일한 필수 변경사항입니다.
하지만 연결 편집기 단계에는 선택적 변경사항이 있습니다. 다음 예제는 특수 Language Environment EXIT 모듈을 애플리케이션 로드 모듈에 포함시킵니다. 필수는 아니지만 Debug Tool 패널 6을 사용 가능하게 하여 일부 환경에서 디버거를 보다 쉽게 시작할 수 있습니다. 패널 6을 사용하여 Debug Tool을 시작하려면 이 방법을 사용해야 합니다. Debug Tool 패널 6을 사용하지 않으려면 EXIT 모듈을 포함하지 마십시오. 모듈이 Language Environment 서비스와 링크되지 않은 경우(COBOL II 런타임 서비스에 링크됨), CICS 프로그램에 대한 EXIT 모듈을 포함하지 마십시오.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE A VS COBOL II PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. COMPILER OPTIONS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU
//* PLAN TO USE THE LISTING WITH A PD TOOLS PRODUCT, OR TO
//* PROCESS THE LISTING WITH AN XXXLANGX UTILITY
//* 2. COMPILER OPTION NOTEST IS SUGGESTED FOR ALL COBOL II
//* PROGRAMS, EVEN IF IBM DEBUG TOOL FOR Z/OS WILL BE USED
//*
//* BINDER (LINKAGE EDITOR):
//* 3. IN THIS EXAMPLE, THE MODULE IS LINKED WITH LANGUAGE
//* ENVIRONMENT RUNTIME SERVICES. THIS IS CONTROLLED BY THE
//* LIBRARY OR LIBRARIES SPECIFIED IN THE SYSLIB DD IN THE
//* BINDER STEP.
//* 4. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS, OR FOR
//* PROGRAMS LINKED WITH THE COBOL II RUNTIME SERVICES
//* INSTEAD OF LANGUAGE ENVIRONMENT RUNTIME SERVICES)
//*
//* SET OPTIONS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=SAMII1 PROGRAM NAME
// SET COB2COMP='IGY.V1R4M0.COB2COMP' COBOL II COMPILER LIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LELKED='CEE.SCEELKED' LE LINK LIBRARY
// SET LELIB='CEE.SCEERUN' LE RUNTIME LIBRARY
// SET UNITDEV=SYSALLDA TEMP DATASET UNIT
// SET LANGX='EQALANGX' XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD' LIB FOR XXXLANGX UTILITY
//*
//* ****************************
//* COMPILE STEP
//* ****************************
//COMPILE EXEC PGM=IGYCRCTL,REGION=4M,
// PARM=('NOTEST,LIST,MAP,NOOPT,SOURCE,XREF,NONUMBER',
// 'RES,APOST,LIB,DYNAM,NORENT,NOSSRANGE')
//STEPLIB DD DISP=SHR,DSN=&COB2COMP
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)
//SYSLIN DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
// SPACE=(80,(10,10))
//SYSUT1 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//*
//* *********************************
//* STEP TO GENERATE A LANGX FILE
//* *********************************
//LANGX EXEC PGM=&LANGX,REGION=32M,
// PARM='(COBOL ERROR 64K CREF'
//STEPLIB DD DISP=SHR,DSN=&LANGXLIB
// DD DISP=SHR,DSN=&LELIB
//LISTING DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB DD DISP=SHR,DSN=&LELKED
//DTLIB DD DISP=SHR,DSN=&DTLIB
//SYSLMOD DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN DD DISP=(OLD,DELETE),DSN=&&LOADSET
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//* AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//* (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))
다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 OS/VS COBOL 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| DMAP, NOCLIST, NOLST, PMAP, SOURCE, VERB, XREF(SHORT) | 컴파일러 목록 | 예 | N/A | 지원됨 | 지원됨 |
| (LIST,NOPMAP) 또는 (CLIST,NOPMAP) 또는 (CLIST,PMAP) | 예 | N/A | N/A | N/A | |
| NOBATCH, NOCLIST, NOCOUNT, DMAP, NOLST, PMAP, SOURCE, NOSYMDMP, NOTEST, NOOPT, VERB, XREF(SHORT) | LANGX 파일 | 예 | 프로덕션 및 테스트를 위해 제안됨 | ||
OS/VS COBOL 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
다음은 IBM Problem Determination Tools 제품에 사용할 OS/VS 프로그램 컴파일에 대한 JCL 예제입니다.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE AN OS VS COBOL PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* - COMPILER PARMS DMAP,NOCLIST,NOLST,PMAP,SOURCE,VERB,XREF
//* ARE REQUIRED IF YOU PLAN TO USE THE COMPILER LISTING WITH
//* PD TOOLS AND/OR PROCESS IT WITH XXXLANGX
//*
//* A STEP THAT PROCESSES THE SYSADATA FILE,
//* AND CREATES A LANGX FILE IS NEEDED.
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=SAMOS1 PROGRAM NAME
// SET OSVSCOMP='IGY.VSCOLIB' OS VS COBOL COMPILER LIBRARY
// SET LELIB='CEE.SCEELKED' LE LINKEDIT LIBRARY
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
// SET SCEERUN='CEE.SCEERUN' LANGUAGE ENVIRON SCEERUN LIB
// SET LANGX='EQALANGX' XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD' LIBRARY FOR XXXLANGX UTILITY
//* NOTE: THE XXXLANGX UTILITY IS AVAILABLE WITH DEBUG TOOL,
//* FAULT ANALYZER, AND APA WITH DIFFERENT NAMES. YOU CAN
//* USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE DEBUG TOOL, YOU CAN SET:
//* LANGX='EQALANGX' LANGXLIB=(THE DT SEQAMOD LIBRARY)
//* IF YOU HAVE FAULT ANALYZER YOU CAN SET:
//* LANGX='IDILANGX' LANGXLIB=(THE FA SIDIAUTH LIBRARY)
//* IF YOU HAVE APA (APP. PERFORMANCE ANALYZER) YOU CAN SET:
//* LANGX='CAZLANGX' LANGXLIB=(THE APA SCAZAUTH LIBRARY)
//*
//* ****************************
//* COMPILE STEP
//* ****************************
//COMPILE EXEC PGM=IKFCBL00,REGION=4M,
// PARM=('DMAP,NOCLIST,NOLST,NOOPT,SOURCE,VERB,XREF(SHORT)')
//* FOR DT (CHECK DEFAULTS): NOBATCH,NOCOUNT,PMAP,NOSYMDMP,NOTEST
//STEPLIB DD DISP=SHR,DSN=&OSVSCOMP
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.OSVSCOB.LISTING(&MEM)
//SYSLIN DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
// SPACE=(80,(10,10))
//SYSUT1 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7 DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.OSVSCOB.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//*
//* *********************************
//* STEP TO GENERATE LANGX FILE
//* *********************************
//LANGX EXEC PGM=&LANGX,REGION=32M,
// PARM='(COBOL ERROR 64K CREF'
//STEPLIB DD DISP=SHR,DSN=&LANGXLIB
// DD DISP=SHR,DSN=&SCEERUN
//LISTING DD DSN=&SYSUID..ADLAB.OSVSCOB.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB DD DISP=SHR,DSN=&LELIB
//SYSLMOD DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN DD DISP=(OLD,DELETE),DSN=&&LOADSET
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))
다음 표에서는 IBM 문제점 판별 툴 제품(z/OS용 IBM Debug Tool, z/OS용 IBM Fault Analyzer 및 z/OS용 IBM Application Performance Analyzer)에 사용할 Enterprise PL/I 버전 3.7 이상 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| Enterprise PL/I 버전 3.7의 경우:
TEST(ALL, SYM, NOHOOK, SEPARATE, SEPNAME, AALL), NOPT, AGGREGATE,
ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS,
SOURCE, STMT, XREF(FULL)
Enterprise PL/I 버전 3.8 이상의 경우: TEST(ALL, SYM, NOHOOK, SEPARATE, SEPNAME), LISTVIEW(AALL), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL) |
z/OS용 Debug Tool 및 z/OS용 Fault Analyzer에서 사용된 SYSDEBUG 파일. z/OS용 Application Performance Analyzer에서 사용된 LANGX 파일. | 모듈이 NOTEST 옵션으로 컴파일된 모듈보다 크지만 필요한 경우 프로덕션에서 모듈을 사용할 수 있습니다. | 테스트를 위해 제안되었습니다. 증가된 로드 모듈 크기가 문제가 되지 않는 경우 프로덕션 환경에서 이러한 옵션을 사용할 수도 있습니다. | ||
| AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NOTEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL) | 컴파일러 목록 | 예 | N/A | 지원됨 | N/A |
| LANGX 파일 | 예 | N/A | 프로덕션 및 테스트를 위해 제안됨 | ||
Enterprise PL/I 버전 3.7 이상 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
모든
프로그램에 다음 컴파일러 옵션을 지정하십시오.
TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME,AALL),
NOPT, AGGREGATE, ATTRIBUTES(FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER,
OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL).
모든
프로그램에 다음 컴파일러 옵션을 지정하십시오.
TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME),
LISTVIEW(AALL), NOPT, AGGREGATE, ATTRIBUTES(FULL), NOBLKOFF, LIST,
MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL).
TEST(...) 및 NOPT가 Debug Tool에 필요합니다.
SEPARATE 하위 옵션은 SYSDEBUG 파일을 생성합니다. z/OS용 IBM Debug Tool 및 선택적으로 z/OS용 IBM Fault Analyzer에 대해 컴파일러가 작성한 SYSDEBUG 파일을 저장하십시오.
TEST 또는 LISTVIEW의 AALL (AFTERALL) 하위 옵션은 매크로 및 INCLUDE와 같은 마지막 프리프로세서 이후의 정보를 포함하는 SYSDEBUG 파일에 프로그램 소스 정보를 저장합니다. 이 펼쳐진 소스 정보는 디버깅 동안 z/OS용 IBM Debug Tool의 소스 창에서 사용 가능합니다.
기타 옵션은 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
최적의 성능을 위해 TEST(ALL,NOHOOK,SEPARATE) 옵션 사용을 고려하고 디버그할 수 있는 모듈을 생성하십시오. 조직의 정책에 따라 프로덕션에 모듈 사용을 고려할 수 있습니다.
모든 프로그램에 대해 NOTEST, AGGREGATE, ATTRIBUTES(FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)를 지정하십시오.
NOTEST로 인해 Debug Tool을 사용할 수 없지만, 보다 작은 로드 모듈이 제공됩니다.
기타 옵션은 z/OS용 IBM Fault Analyzer 및 z/OS용 IBM Application Performance Analyzer(z/OS용 IBM Debug Tool은 아님)에서 사용할 수 있는 프로덕션 준비 모듈을 생성하도록 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
TEST(...SEPARATE) 옵션이 사용되면 다음과 같이 두 번째 컴파일러 단계에서 SYSDEBUG DD를 코드화하십시오.
//SYSDEBUG DD DSN= sysdebug.pds(pgmname),DISP=SHR
이는 z/OS용 IBM Debug Tool 및 선택적으로 z/OS용 IBM Fault Analyzer에 대한 소스 정보 파일입니다. 이 파일을 SYSDEBUG 라이브러리에 저장하고 애플리케이션 프로그램의 기본 시작점명 또는 CSECT명과 동일한 멤버명을 지정하십시오.
다음은 IBM 문제점 판별 툴 제품에 사용할 Enterprise PL/I for z/OS 버전 3.7 이상 프로그램의 컴파일에 대한 JCL 예제입니다.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE AN ENTERPRISE PL/I V3.7 OR LATER
//* PROGRAM FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. COMPILER PARMS TEST IS REQUIRED FOR DEBUG TOOL
//* 2. COMPILER PARM NOPT IS RECOMMENDED FOR DEBUG TOOL
//* 3. COMPILER PARM:
//* TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME,AALL) (V3.7)
//* TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME),LISTVIEW(AALL), (V3.8+)
//* IS USED BECAUSE:
//* - THE MODULE IS READY FOR DEBUG TOOL
//* - NOHOOK DOES NOT HAVE RUN-TIME CPU OVERHEAD. HOWEVER, THE
//* MODULE IS LARGER BECAUSE OF STATEMENT TABLE
//* - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//* 4. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),NOBLKOFF,LIST,
//* MAP,NEST,NONUMBER,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//* TO PROCESS THE COMPILER LISTING WITH XXXLANGX
//*
//* BINDER (LINKAGE EDITOR):
//* 5. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=PADSTAT PROGRAM NAME
// SET PLICOMP='IBMZ.V3R7.SIBMZCMP' PLI COMPILER LOADLIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LEHLQ='CEE' LE HIGH LVL QUALIFIER
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
// SET LANGX='EQALANGX' XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD' LIBRARY FOR XXXLANGX UTILITY
//* NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//* OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME.
//* USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE: SET LANGX TO: SET LANGXLIB TO:
//* DEBUG TOOL EQALANGX THE DT SEQAMOD LIBRARY
//* FAULT ANALYZER IDILANGX THE FA SIDIAUTH LIBRARY
//* APA CAZLANGX THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14 ALLOC OBJ LIB IF NEEDED
//OBJ DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//*
//* ***************************************
//* COMPILE STEP
//* ***************************************
//COMPILE EXEC PGM=IBMZPLI,REGION=0M,
// PARM=('TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME,AALL),LIST,MAP,SOURCE,',
// 'XREF(FULL),NOBLKOFF,AGGREGATE,ATTRIBUTES(FULL),NEST,OPTIONS,NOPT,',
// 'STMT,NONUMBER,OFFSET')
//* Note: The above options are for Enterprise PL/I Version 3.7
//* For Enterprise PL/I Version 3.8+, change the TEST option
//* to TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME), and add the
//* LISTVIEW(AALL) option
//STEPLIB DD DSN=&PLICOMP,DISP=SHR
// DD DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSUT1 DD SPACE=(CYL,(5,2),,CONTIG),DCB=BLKSIZE=1024,UNIT=&UNITDEV
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//*
//PLIPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//*
//* *********************************
//* STEP TO GENERATE LANGX FILE
//* *********************************
//LANGX EXEC PGM=&LANGX,REGION=32M,
// PARM='(PLI ERROR 64K CREF'
//STEPLIB DD DISP=SHR,DSN=&LANGXLIB
// DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//DTLIB DD DSN=&DTLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS)
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//* IS OPTIONAL. THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//* USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//*
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
다음 표에서는 IBM 문제점 판별 툴 제품(z/OS용 IBM Debug Tool, z/OS용 IBM Fault Analyzer 및 z/OS용 IBM Application Performance Analyzer)에 사용할 Enterprise PL/I 버전 3.5 및 버전 3.6 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| 사전 처리(첫 번째 단계)하여
소스 확장, 컴파일에서(두 번째 단계):
Enterprise PL/I 버전 3.5의 경우: TEST(ALL, SYM, NOHOOK, SEPARATE), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL) Enterprise PL/I 버전 3.6의 경우: TEST(ALL, SYM, NOHOOK, SEPARATE, SEPNAME), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL) |
z/OS용 Debug Tool 및 z/OS용 Fault Analyzer에서 사용된 SYSDEBUG 파일. z/OS용 Application Performance Analyzer에서 사용된 LANGX 파일. | 모듈이 NOTEST 옵션으로 컴파일된 모듈보다 크지만 필요한 경우 프로덕션에서 모듈을 사용할 수 있습니다. | 테스트를 위해 제안되었습니다. 증가된 로드 모듈 크기가 문제가 되지 않는 경우 프로덕션 환경에서 이러한 옵션을 사용할 수도 있습니다. | ||
| AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NOTEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL) | 컴파일러 목록 | 예 | N/A | 지원됨 | N/A |
| LANGX 파일 | 예 | N/A | 프로덕션 및 테스트를 위해 제안됨 | ||
Enterprise PL/I 버전 3.5 및 버전 3.6 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
모든
프로그램에 다음 컴파일러 옵션을 지정하십시오.
TEST(ALL,SYM,NOHOOK,SEPARATE),
NOPT, AGGREGATE, ATTRIBUTES(FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER,
OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL).
모든
프로그램에 다음 컴파일러 옵션을 지정하십시오.
TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME),
NOPT, AGGREGATE, ATTRIBUTES(FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER,
OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL).
TEST(...) 및 NOPT가 Debug Tool에 필요합니다.
SEPARATE 하위 옵션은 SYSDEBUG 파일을 생성합니다. Debug Tool(선택적으로 Fault Analyzer)의 컴파일러에서 작성된 SYSDEBUG 파일을 저장하십시오.
기타 옵션은 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
최적의 성능을 위해 TEST(ALL,SYM,NOHOOK,SEPARATE) 사용을 고려하고 디버그할 수 있는 모듈을 생성하십시오. 조직의 정책에 따라 프로덕션에 모듈 사용을 고려할 수 있습니다.
NOTEST로 인해 Debug Tool을 사용할 수 없지만, 보다 작은 로드 모듈이 제공됩니다.
기타 옵션은 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer(z/OS용 Debug Tool은 아님)에서 사용할 수 있는 프로덕션 준비 모듈을 생성하도록 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
TEST(...SEPARATE) 매개변수가 사용되면 다음과 같이 두 번째 컴파일러 단계에서 SYSDEBUG DD를 코드화하십시오.
//SYSDEBUG DD DSN= sysdebug.pds(pgmname),DISP=SHR
이는 z/OS용 IBM Debug Tool, z/OS용 IBM Application Performance Analyzer 및 선택적으로 z/OS용 IBM Fault Analyzer에 대한 소스 정보 파일입니다. 이 파일을 SYSDEBUG 라이브러리에 저장하고 애플리케이션 프로그램의 기본 시작점명 또는 CSECT명과 동일한 멤버명을 지정하십시오.
다음은 IBM 문제점 판별 툴 제품에 사용할 Enterprise PL/I for z/OS 버전 3.5 또는 버전 3.6 프로그램의 컴파일에 대한 JCL 예제입니다.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE AN ENTERPRISE PL/I V3.5 OR
//* ENTERPRISE PL/I V3.6 PROGRAM FOR THE IBM ZSERIES
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. A 2-STAGE COMPILE IS PERFORMED. STAGE 1 (PREPROCESS) IS
//* DONE TO EXPAND INCLUDES AND MACROS IN THE PROGRAM, SO THAT
//* THE SYSDEBUG FILE CREATED IN STAGE 2 (COMPILE) HAS ALL STMTS.
//* 2. COMPILER PARMS TEST AND NOPT ARE REQUIRED FOR DEBUG TOOL
//* 3. COMPILER PARM TEST(ALL,SYM,NOHOOK,SEP) (V3.5) OR
//* TEST(ALL,SYM,NOHOOK,SEP,SEPNAME) (V3.6) IS USED BECAUSE:
//* - THE MODULE IS READY FOR DEBUG TOOL
//* - NOHOOK DOES NOT HAVE RUN-TIME CPU OVERHEAD. HOWEVER, THE
//* MODULE IS LARGER BECAUSE OF STATEMENT TABLE
//* - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//* 4. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),NOBLKOFF,LIST,
//* MAP,NEST,NONUMBER,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//* TO PROCESS THE COMPILER LISTING WITH XXXLANGX
//*
//* BINDER (LINKAGE EDITOR):
//* 5. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=PADSTAT PROGRAM NAME
// SET PLICOMP='IBMZ.V3R5.SIBMZCMP' PLI COMPILER LOADLIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LEHLQ='CEE' LE HIGH LVL QUALIFIER
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
// SET LANGX='EQALANGX' XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD' LIBRARY FOR XXXLANGX UTILITY
//* NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//* OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//* USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE: SET LANGX TO: SET LANGXLIB TO:
//* DEBUG TOOL EQALANGX THE DT SEQAMOD LIBRARY
//* FAULT ANALYZER IDILANGX THE FA SIDIAUTH LIBRARY
//* APA CAZLANGX THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14 ALLOC OBJ LIB IF NEEDED
//OBJ DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//* ***************************************
//* PREPROCESS STEP (COMPILE STAGE 1)
//* ***************************************
//PRECOMP EXEC PGM=IBMZPLI,REGION=0M,
// PARM=('MACRO,MDECK,NOCOMPILE,NOSYNTAX,INSOURCE')
//STEPLIB DD DSN=&PLICOMP,DISP=SHR
// DD DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD SPACE=(1024,(200,50),,CONTIG,ROUND),DCB=BLKSIZE=1024,
// UNIT=&UNITDEV
//SYSPUNCH DD DISP=(MOD,PASS),DSN=&&SRC1,UNIT=&UNITDEV,
// SPACE=(80,(10,10))
//*
//* ***************************************
//* COMPILE STEP (COMPILE STAGE 2)
//* ***************************************
//COMPILE EXEC PGM=IBMZPLI,REGION=0M,
// PARM=('TEST(ALL,SYM,NOHOOK,SEPARATE),LIST,MAP,SOURCE,XREF(FULL),',
// 'NOBLKOFF,AGGREGATE,ATTRIBUTES(FULL),NEST,OPTIONS,NOPT,',
// 'STMT,NONUMBER,OFFSET')
//* Note: The above options are for Enterprise PL/I Version 3.5
//* For Enterprise PL/I Version 3.6, change the TEST option
//* to: TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME)
//STEPLIB DD DSN=&PLICOMP,DISP=SHR
// DD DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN DD DSN=&&SRC1,DISP=(OLD,PASS)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSUT1 DD SPACE=(CYL,(5,2),,CONTIG),DCB=BLKSIZE=1024,UNIT=&UNITDEV
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//*
//PLIPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//*
//* *********************************
//* STEP TO GENERATE LANGX FILE
//* *********************************
//LANGX EXEC PGM=&LANGX,REGION=32M,
// PARM='(PLI ERROR 64K CREF'
//STEPLIB DD DISP=SHR,DSN=&LANGXLIB
// DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//DTLIB DD DSN=&DTLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS)
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//* IS OPTIONAL. THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//* USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 Enterprise PL/I 버전 3.4 이전 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| 사전 처리(첫 번째 단계)하여 소스 확장, 컴파일(두 번째 단계)에서 다음과 같이 지정: TEST(ALL), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)) | z/OS용 Debug Tool에서 사용된 확장된 소스 파일, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에서 사용된 LANGX 파일 | 아니오 | 테스트를 위해 제안되었습니다. (이 컴파일러의 프로덕션에서 Debug Tool을 사용하는 것은 제안되지 않음) | ||
| AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NOTEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)) | 컴파일러 목록 | 예 | N/A | 지원됨 | N/A |
| LANGX 파일 | 예 | N/A | 프로덕션 및 테스트를 위해 제안됨 | ||
Enterprise PL/I 버전 3.4 이전 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
TEST(ALL) 및 NOPT가 Debug Tool에 필요합니다. 디버그 후크가 삽입되고 런타임 오버헤드가 증가합니다. 또한 Debug Tool에 필요한 기호 데이터가 모듈에 저장되며 이로 인해 모듈이 커집니다.
기타 옵션은 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
NOTEST로 인해 Debug Tool을 사용할 수 없지만 성능은 최대가 됩니다. 이렇게 되면 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer(Debug Tool은 아님)에서 사용할 수 있는 프로덕션 준비 모듈이 생성됩니다.
기타 옵션은 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
다음은 IBM Problem Determination Tools 제품에 사용할 Enterprise PL/I for z/OS 버전 3.4 이전 프로그램의 컴파일에 대한 JCL 예제입니다.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO COMPILE WITH ENTERPRISE PLI V3.4 AND PREVIOUS
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. A 2-STAGE COMPILE IS PERFORMED. STAGE 1 (PREPROCESS) IS
//* DONE TO EXPAND INCLUDES AND MACROS IN THE PROGRAM, SO THAT
//* A SOURCE FILE IS CREATED FOR DEBUG TOOL THAT HAS ALL STMTS.
//* 2. COMPILER PARM TEST AND NOPT ARE REQUIRED FOR DEBUG TOOL
//* 3. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),NOBLKOFF,LIST,
//* MAP,NEST,NONUMBER,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//* TO PROCESS THE COMPILER LISTING WITH XXXLANGX
//*
//* BINDER (LINKAGE EDITOR):
//* 4. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=PTEST PROGRAM NAME
// SET PLICOMP='IBMZ.V3R4.SIBMZCMP' PLI COMPILER LOADLIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LEHLQ='CEE' LE HIGH LVL QUALIFIER
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
// SET LANGX='EQALANGX' XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD' LIBRARY FOR XXXLANGX UTILITY
//* NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//* OR APA. THEY NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//* USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE: SET LANGX TO: SET LANGXLIB TO:
//* DEBUG TOOL EQALANGX THE DT SEQAMOD LIBRARY
//* FAULT ANALYZER IDILANGX THE FA SIDIAUTH LIBRARY
//* APA CAZLANGX THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14 ALLOC OBJ LIB IF NEEDED
//XSOURCE DD DSN=&SYSUID..ADLAB.EXPANDED.SOURCE,SPACE=(CYL,(3,1,15)),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//OBJ DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//* ***************************************
//* PREPROCESS STEP (COMPILE STAGE 1)
//* ***************************************
//PRECOMP EXEC PGM=IBMZPLI,REGION=0M,
// PARM=('MACRO,MDECK,NOCOMPILE,NOSYNTAX,INSOURCE')
//STEPLIB DD DSN=&PLICOMP,DISP=SHR
// DD DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD SPACE=(1024,(200,50),,CONTIG,ROUND),DCB=BLKSIZE=1024,
// UNIT=&UNITDEV
//SYSPUNCH DD DISP=SHR,DSN=&SYSUID..ADLAB.EXPANDED.SOURCE(&MEM)
//*
//* ***************************************
//* COMPILE STEP (COMPILE STAGE 2)
//* ***************************************
//COMPILE EXEC PGM=IBMZPLI,REGION=0M,
// PARM=('TEST(ALL),LIST,MAP,SOURCE,XREF(FULL),',
// 'NOBLKOFF,AGGREGATE, ATTRIBUTES(FULL),NEST,OPTIONS,NOPT,',
// 'STMT,NONUMBER,OFFSET')
//STEPLIB DD DSN=&PLICOMP,DISP=SHR
// DD DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.EXPANDED.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM)
//SYSUT1 DD SPACE=(CYL,(5,2),,CONTIG),DCB=BLKSIZE=1024,UNIT=&UNITDEV
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//*
//PLIPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//*
//* *********************************
//* STEP TO GENERATE LANGX FILE
//* *********************************
//LANGX EXEC PGM=&LANGX,REGION=32M,
// PARM='(PLI ERROR 64K CREF'
//STEPLIB DD DISP=SHR,DSN=&LANGXLIB
// DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//DTLIB DD DSN=&DTLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS)
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//* IS OPTIONAL. THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//* USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 Enterprise COBOL for z/OS 버전 4 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
테스트 환경에서는 목록 및 LANGX 파일(z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 경우) 모두 필요합니다. 프로덕션에서는 LANGX 파일 사용만 제안됩니다.
| 컴파일러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| TEST(ALL), AGGREGATE, ATTRIBUTES (FULL), ESD, LIST, MAP, NEST, NOPT, OPTIONS, SOURCE, STMT, XREF(FULL) | 컴파일러 목록 | 아니오 | 테스트를 위해 제안되었습니다. (이 컴파일러의 프로덕션에서 Debug Tool을 사용하는 것은 제안되지 않음) | 지원됨 | 지원됨 |
| LANGX 파일 | 아니오 | N/A | 지원됨 | N/A | |
| NOTEST, AGGREGATE, ATTRIBUTES (FULL), ESD, LIST, MAP, NEST, OPTIONS, SOURCE, STMT, XREF(FULL) | 컴파일러 목록 | 예 | N/A | 지원됨 | 프로덕션 및 테스트를 위해 제안됨 |
| LANGX 파일 | 예 | N/A | 프로덕션 및 테스트를 위해 제안됨 | N/A |
MVS 및 VM용 PL/I와 OS PL/I 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
TEST(ALL) 및 NOOPT가 Debug Tool에 필요합니다. TEST가 디버그 후크를 추가하고 런타임 오버헤드가 증가합니다. Debug Tool에 필요한 기호 데이터가 모듈에 저장되며 이로 인해 모듈이 커집니다.
기타 옵션은 Debug Tool 및 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
NOTEST로 인해 Debug Tool을 사용할 수 없지만 성능은 최대가 됩니다.
기타 옵션은 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.
이렇게 되면 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer(z/OS용 Debug Tool은 아님)에서 사용할 수 있는 프로덕션 준비 모듈이 생성됩니다.
다음은 IBM 문제점 판별 툴 제품에 사용할 MVS 및 VM용 PL/I 프로그램 컴파일에 대한 JCL 예제입니다.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE A PLI FOR MVS AND VM PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. COMPILER PARM TEST IS REQUIRED FOR DEBUG TOOL
//* 2. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),ESD,LIST,
//* MAP,NEST,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//* FOR PD TOOLS TO PROCESS THE COMPILER LISTING
//*
//* BINDER (LINKAGE EDITOR):
//* 3. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=PADSTAT PROGRAM NAME
// SET PLICOMP='IEL.V1R1M1.SIELCOMP' PLI COMPILER LOADLIB
// SET DTLIB='EQAW.SEQAMOD' DEBUG TOOL LOADLIB
// SET LEHLQ='CEE' LE HIGH LVL QUALIFIER
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
// SET LANGX='EQALANGX' XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD' LIBRARY FOR XXXLANGX UTILITY
//* NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//* OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//* USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE: SET LANGX TO: SET LANGXLIB TO:
//* DEBUG TOOL EQALANGX THE DT SEQAMOD LIBRARY
//* FAULT ANALYZER IDILANGX THE FA SIDIAUTH LIBRARY
//* APA CAZLANGX THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14 ALLOC OBJ LIB IF NEEDED
//OBJ DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//*
//* ***************************************
//* COMPILE STEP
//* ***************************************
//*
//COMPILE EXEC PGM=IEL1AA,REGION=6M,
// PARM=('TEST(ALL),NOPT,AGGREGATE,ATTRIBUTES(FULL),ESD,LIST,MAP,',
// 'NEST,OPTIONS,SOURCE,STMT,XREF(FULL)')
//STEPLIB DD DSN=&PLICOMP,DISP=SHR
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.PLIMVS.LISTING(&MEM)
//SYSUT1 DD SPACE=(CYL,(1,1)),UNIT=SYSDA
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//*
//PLIPRINT EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SYSUID..ADLAB.PLIMVS.LISTING(&MEM),DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
//*
//* *********************************
//* STEP TO GENERATE LANGX FILE
//* *********************************
//LANGX EXEC PGM=&LANGX,REGION=32M,
// PARM='(PLI ERROR 64K CREF'
//STEPLIB DD DISP=SHR,DSN=&LANGXLIB
// DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING DD DSN=&SYSUID..ADLAB.PLIMVS.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//DTLIB DD DSN=&DTLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS)
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//* IS OPTIONAL. THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//* USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//* // DD *
//* INCLUDE DTLIB(EQADBCXT)
다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 z/OS XL C 및 C++ 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 컴파일러 옵션 | 생성되는 출력 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| 사전 처리(첫 번째 단계)하여 소스 확장, 컴파일(두 번째 단계)에서: TEST, ATTRIBUTE(FULL), NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | z/OS용 Debug Tool에서 사용된 확장된 소스 파일, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에서 사용된 컴파일러 목록 | 아니오 | 테스트를 위해 제안되었습니다. (이 컴파일러의 프로덕션에서 Debug Tool을 사용하는 것은 제안되지 않음) | 지원됨 | 지원됨 |
| z/OS용 Debug Tool에서 사용된 확장된 소스 파일, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에서 사용된 LANGX 파일 | 아니오 | 지원됨 | 지원됨 | 지원됨 | |
| NOTEST, ATTRIBUTE(FULL), NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | 컴파일러 목록 | 예 | N/A | 프로덕션 및 테스트를 위해 제안됨 | 프로덕션 및 테스트를 위해 제안됨 |
| LANGX 파일 | 예 | N/A | 지원됨 | 지원됨 | |
| 사전 처리(첫 번째 단계)하여 소스 확장. 컴파일(두 번째 단계)에서 다음과 같이 지정: DEBUG(FORMAT (DWARF), HOOK(LINE, NOBLOCK, PATH), SYMBOL, FILE(location)) | 확장된 소스 파일 및 DWARF 파일 | 아니오 | 지원됨(이 컴파일러의 프로덕션에서 Debug Tool을 사용하는 것은 제안되지 않음) | N/A | N/A |
| 컴파일러 옵션 | 생성되는 출력 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| 사전 처리(첫 번째 단계)하여 소스 확장, 컴파일(두 번째 단계)에서: TEST(ALL), AGGREGATE, NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | z/OS용 Debug Tool에서 사용된 확장된 소스 파일, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에서 사용된 컴파일러 목록 | 아니오 | 테스트를 위해 제안되었습니다. (이 컴파일러의 프로덕션에서 Debug Tool을 사용하는 것은 제안되지 않음) | 지원됨 | 지원됨 |
| z/OS용 Debug Tool에서 사용된 확장된 소스 파일, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에서 사용된 LANGX 파일 | 아니오 | 지원됨 | 지원됨 | 지원됨 | |
| NOTEST, AGGREGATE, NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | 컴파일러 목록 | 예 | N/A | 프로덕션 및 테스트를 위해 제안됨 | 프로덕션 및 테스트를 위해 제안됨 |
| LANGX 파일 | 예 | N/A | 지원됨 | 지원됨 | |
| 사전 처리(첫 번째 단계)하여 소스 확장. 컴파일(두 번째 단계)에서 다음과 같이 지정: DEBUG(FORMAT (DWARF), HOOK(LINE, NOBLOCK, PATH), SYMBOL, FILE(location)) | 확장된 소스 파일 및 DWARF 파일 | 아니오 | 지원됨(이 컴파일러의 프로덕션에서 Debug Tool을 사용하는 것은 제안되지 않음) | N/A | N/A |
z/OS XL C 및 C++ 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.
TEST 및 NOOPT가 Debug Tool에 필요합니다. 디버그 후크가 삽입되고 런타임 오버헤드가 증가합니다. Debug Tool에 필요한 기호 데이터가 모듈에 저장되며 이로 인해 모듈이 커집니다.
기타 옵션은 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에 필요한 컴파일러 목록을 형식화합니다.
TEST(ALL) 및 NOOPT가 Debug Tool에 필요합니다. 디버그 후크가 삽입되고 런타임 오버헤드가 증가합니다. Debug Tool에 필요한 기호 데이터가 모듈에 저장되며 이로 인해 모듈이 커집니다.
기타 옵션은 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에 필요한 컴파일러 목록을 형식화합니다.
NOTEST로 인해 Debug Tool을 사용할 수 없지만 성능은 최대가 됩니다. 이렇게 되면 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer(z/OS용 Debug Tool은 아님)에서 사용할 수 있는 프로덕션 준비 모듈이 생성됩니다.
기타 옵션은 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer에 필요한 컴파일러 목록을 형식화합니다.
//SYSCPRT DD DSN=compiler.listing.pds(csect-name),DISP=SHR
#pragma csect(code, "csect_name")여기서 PDS(E)를 사용하는 경우, csect_name이 컴파일러 목록 또는 LANGX 파일 멤버명과 일치합니다.
다음은 IBM Problem Determination Tools 제품에 사용할 z/OS C/C++ 프로그램 컴파일에 대한 JCL 예제입니다.
//* ADD A JOB CARD HERE
//*
//*
//* SAMPLE JCL TO PREPARE A Z/OS C PROGRAM PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. A 2-STAGE COMPILE IS PERFORMED. STAGE 1 (PREPROCESS) IS
//* DONE TO EXPAND INCLUDES AND MACROS IN THE PROGRAM AND TO
//* PRODUCE AN EXPANDED SOURCE FILE.
//* 2. THE EXPANDED SOURCE FILE IS RETAINED. IT IS USED BY
//* DEBUG TOOL.
//* 2. COMPILER PARMS TEST AND NOOPT ARE REQUIRED FOR DEBUG TOOL.
//* 3. COMPILER PARMS AGGREGATE, NOIPA, LIST, NOOFFSET, SOURCE,
//* AND XREF(FULL) ARE NEEDED TO FORMAT THE COMPILER LISTING
//* SO THAT IT CAN BE PROCESSED WITH XXXLANGX
//*
//* A STEP RUNS TO PRODUCE A LANGX FILE FOR FAULT ANALYZER AND APA.
//* NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//* OR APA. THE NAMES ARE DIFFERENT, BUT THE RESULTS ARE THE SAME.
//* USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE: THEN EXECUTE MODULE:
//* DEBUG TOOL EQALANGX, AND ENSURE THAT THE DT SEQAMOD LIBRARY
//* IS AVAILABLE (VIA STEPLIB, JOBLIB, OR LINKLIST)
//* FAULT ANALYZER IDILANGX, AND ENSURE THAT THE FA SIDIAUTH LIBRARY
//* IS AVAILABLE (VIA STEPLIB, JOBLIB, OR LINKLIST)
//* APA CAZLANGX, AND ENSURE THAT THE APA SCAZAUTH LIBRARY
//* IS AVAILABLE (VIA STEPLIB, JOBLIB, OR LINKLIST)
//*
//* BINDER (LINKAGE EDITOR):
//* 1. AN INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL. IT IS AN
//* LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//* UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//* AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//* IF YOU USE THIS METHOD, INCLUDE THE CORRECT EXIT MODULE:
//* EQADBCXT: FOR BATCH PROGRAMS
//* EQADICXT: FOR ONLINE IMS PROGRAMS
//* EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//* (for SUB this is supported only for invocations through call_sub)
//* (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
//* CPRFX: THE PREFIX THE C/C++ COMPILE IS INSTALLED UNDER
//* LEPRFX: THE PREFIX FOR THE LE RUNTIME AND LINK LIBS
//* DTPRFX: THE PREFIX OF THE DEBUG TOOL SEQAMOD LIBRARY
//*
// SET CPRFX=CBC
// SET LEPRFX=CEE
// SET DTPRFX=EQAW
//*
//*******************************************************************/
//* CREATE C/C++ COMPILER LISTING SYSPRINT, EXPANDED SOURCE DEBUG, */
//* AND EQALANGX FILES */
//*******************************************************************/
//ALLOC EXEC PGM=IEFBR14
//LISTING DD DSN=&SYSUID..ADLAB.CLST,
// DISP=(MOD,CATLG),
// DCB=(DSORG=PO,RECFM=VBA,LRECL=137,BLKSIZE=0),
// SPACE=(TRK,(20,20,50)),UNIT=SYSDA
//DBGSRC DD DSN=&SYSUID..ADLAB.CDBG,
// DISP=(MOD,CATLG),
// DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=0),
// SPACE=(TRK,(20,20,50)),UNIT=SYSDA
//LANGX DD DSN=&SYSUID..ADLAB.EQALANGX,
// DISP=(MOD,CATLG),
// DCB=(DSORG=PO,RECFM=VB,LRECL=1562,BLKSIZE=0),
// SPACE=(TRK,(40,40,50)),UNIT=SYSDA
//* *
//****************************************************************
//*-------------------------------------------------------------------
//* COMPILE STEP1: GENERATE EXPANDED C/C++ SOURCE FILE IN THE DD
//* SYSUT10
//*-------------------------------------------------------------------
//COMP1 EXEC PGM=CCNDRVR,REGION=0M,
// PARM=('PP(COMMENTS,NOLINES)')
//STEPLIB DD DSNAME=&LEPRFX..SCEERUN2,DISP=SHR
// DD DSNAME=&CPRFX..SCCNCMP,DISP=SHR
//SYSMSGS DD DUMMY,DSN=&CPRFX..SCBC3MSG(EDCMSGE),DISP=SHR
//SYSLIB DD DSNAME=&LEPRFX..SCEEH.H,DISP=SHR
// DD DSNAME=&LEPRFX..SCEEH.SYS.H,DISP=SHR
// DD DSNAME=&SYSUID..ADLAB.COPYLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSCPRT DD SYSOUT=*
//SYSUT1 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSUT5 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT6 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT7 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT8 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT9 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
//SYSUT10 DD DISP=SHR,DSN=&SYSUID..ADLAB.CDBG(TMC01A)
//SYSUT14 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT16 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT17 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSLIN DD DUMMY
//SYSIN DD DSNAME=&SYSUID..ADLAB.SOURCE(TMC01A),DISP=SHR
//*
//*-------------------------------------------------------------------
//* COMPILE STEP2: COMPILE THE EXPANDED SOURCE FILE WITH THE DEBUG
//* COMPILER OPTION TEST(ALL)
//*-------------------------------------------------------------------
//COMP2 EXEC PGM=CCNDRVR,REGION=0M,
// PARM=('TEST(ALL), AGGREGATE, NOIPA, LIST, NESTINC(255),',
// ' NOOFFSET, NOOPT, SOURCE, XREF')
//STEPLIB DD DSNAME=&LEPRFX..SCEERUN2,DISP=SHR
// DD DSNAME=&CPRFX..SCCNCMP,DISP=SHR
// DD DSNAME=&LEPRFX..SCEERUN,DISP=SHR
//SYSMSGS DD DUMMY,DSN=&CPRFX..SCBC3MSG(EDCMSGE),DISP=SHR
//SYSLIB DD DSNAME=&LEPRFX..SCEEH.H,DISP=SHR
// DD DSNAME=&LEPRFX..SCEEH.SYS.H,DISP=SHR
//SYSCPRT DD DISP=SHR,DSN=&SYSUID..ADLAB.CLST(TMC01A)
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSUT5 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT6 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT7 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT8 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT9 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
//SYSUT10 DD SYSOUT=*
//SYSUT14 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT16 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT17 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSLIN DD DSN=&&TEMOBJ1(TMC01A),DISP=(,PASS),UNIT=SYSDA,
// SPACE=(TRK,(20,20,20)),DCB=(RECFM=FB,BLKSIZE=3120,LRECL=80,DSORG=PO)
//SYSIN DD DSNAME=&SYSUID..ADLAB.CDBG(TMC01A),DISP=SHR
//*
//*-------------------------------------------------------------------
//* LINK STEP: LINK THE COMPILED OBJECT DECK
//*-------------------------------------------------------------------
//LKED EXEC PGM=IEWL,PARM=(LET,MAP,LIST)
//SYSLIB DD DSN=&LEPRFX..SCEELKED,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD
//SYSUT1 DD SPACE=(TRK,(10,10)),UNIT=SYSDA
//OBJECT DD DISP=(OLD,PASS),DSN=&&TEMOBJ1
//* DTLIB DD DSN=&DTPRFX..SEQAMOD,DISP=SHR
//SYSLIN DD *
INCLUDE OBJECT(TMC01A)
ENTRY CEESTART
NAME TMC01(R)
/*
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//* IS OPTIONAL. THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//* USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES).
//* AN INCLUDE CAN BE ADDED TO SYSLIN IN THE APPRORIATE SEQUENCE:
//* INCLUDE DTLIB(EQADBCXT)
//**************************************************************
//* GENERATE THE TMC01A EQALANGX FILE
//**************************************************************
//LANGX1 EXEC PGM=EQALANGX,REGION=32M,
// PARM='(C ERROR'
//STEPLIB DD DISP=SHR,DSN=&DTPRFX..SEQAMOD
DD DISP=SHR,DSN=&LEPRFX..SCEERUN
//LISTING DD DSN=&SYSUID..ADLAB.CLST(TMC01A),DISP=SHR
//IDILANGX DD DSN=&SYSUID..ADLAB.EQALANGX(TMC01AX),DISP=(OLD)
다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 프로그램을 준비하는 데 사용할 수 있는 다양한 어셈블러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.
| 어셈블러 옵션 | 생성된 소스 정보 파일 유형 | 로드 모듈 프로덕션 준비 여부 | z/OS용 Debug Tool에 지원 및 제안된 옵션 | z/OS용 Fault Analyzer에 지원 및 제안된 옵션 | z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션 |
|---|---|---|---|---|---|
| ADATA | SYSADATA 파일 | 예 | N/A | 지원됨 | 지원됨 |
| ADATA | LANGX 파일 | 예 | 프로덕션 및 테스트를 위해 제안됨 | ||
프로그램을 어셈블하기 위해 다음 단계를 수행하십시오.
ADATA는 어셈블러가 프로그램에 대한 소스 및 기호 데이터가 포함된 SYSADATA 파일을 생성하도록 지시합니다. 이렇게 되면 z/OS용 Debug Tool를 사용하여 디버그할 수 있는 프로덕션 준비 모듈이 생성됩니다. ADATA는 어셈블된 모듈의 내용에 영향을 미치지 않습니다.
다음은 IBM Problem Determination Tools 제품에 사용할 프로그램 어셈블에 대한 JCL 예제입니다.
//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE AN ASSEMBLER PROGRAM
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* ASSEMBLER:
//* 1. AN ADATA PARM IS REQUIRED TO PRODUCE A SYSADATA FILE
//*
//* A STEP THAT PROCESSES THE SYSADATA FILE,
//* AND CREATES A LANGX FILE IS NEEDED.
//*
//* BINDER (LINKAGE EDITOR):
//* 1. AMODE / RMODE CAN BE CODED AS NEEDED BY THE PROGRAM. THEY ARE
//* NOT REQUIRED FOR PD TOOLS.
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
// SET MEM=ASAM1 PROGRAM NAME
// SET Language EnvironmentHLQ='CEE' Language Environment HIGH LVL QUALIFIER
// SET UNITDEV=SYSALLDA UNIT FOR TEMP FILES
// SET LANGX='EQALANGX' XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD' LIBRARY FOR XXXLANGX UTILITY
//* NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//* OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//* USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE: SET LANGX TO: SET LANGXLIB TO:
//* DEBUG TOOL EQALANGX THE DT SEQAMOD LIBRARY
//* FAULT ANALYZER IDILANGX THE FA SIDIAUTH LIBRARY
//* APA CAZLANGX THE APA SCAZAUTH LIBRARY
//*
//* *********************************
//* ASSEMBLER STEP
//* *********************************
//ASM1 EXEC PGM=ASMA90,COND=(4,LT),REGION=32M,
// PARM='ADATA,OBJECT'
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DISP=SHR,DSN=&SYSUID..ADLAB.OBJ(&MEM)
//SYSADATA DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSADATA(&MEM)
//SYSLIB DD DSN=SYS1.MODGEN,DISP=SHR
// DD DSN=SYS1.MACLIB,DISP=SHR
// DD DSN=&LEHLQ..SCEEMAC,DISP=SHR
//SYSUT1 DD DISP=(NEW,DELETE),DSN=&&SYSUT1,SPACE=(1700,(900,450)),
// UNIT=&UNITDEV
//SYSUT2 DD DISP=(NEW,DELETE),DSN=&&SYSUT2,SPACE=(1700,(600,300)),
// UNIT=&UNITDEV
//SYSUT3 DD DISP=(NEW,DELETE),DSN=&&SYSUT3,SPACE=(1700,(600,300)),
// UNIT=&UNITDEV
//*
//* *********************************
//* STEP TO GENERATE LANGX FILE
//* *********************************
//LANGX EXEC PGM=&LANGX,REGION=32M,
// PARM='(ASM ERROR'
//STEPLIB DD DISP=SHR,DSN=&LANGXLIB
// DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//SYSADATA DD DSN=&SYSUID..ADLAB.SYSADATA(&MEM),DISP=SHR
//IDILANGX DD DSN=&SYSUID..ADLAB.EQALANGX(&MEM),DISP=SHR
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM='MAP',REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
// DD *
MODE AMODE(31),RMODE(24)
ENTRY ASAM1
//*