부록C. IBM Problem Determination Tools 제품에 사용할 프로그램 컴파일 및 어셈블을 위한 빠른 시작 안내서

이 장에서는 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에서 사용되는 파일 유형을 참조합니다. 이 장의 주제인 여러 종류의 소스 정보 파일은 다음과 같습니다.

서로 다른 컴파일러는 여러 종류의 소스 정보 파일을 생성합니다. 둘 이상의 컴파일러를 사용하는 경우, 둘 이상의 소스 정보 라이브러리 유형이 있습니다.

이 장에 설명된 컴파일러 옵션으로 프로그램을 컴파일하면 다음과 같이 컴파일러에서 작성된 소스 정보 파일 및 로드 모듈을 사용할 수 있습니다.

빌드 프로세스 갱신

사용자의 시스템에 최근 하나 이상의 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에 다음 세 가지 변경사항이 필요합니다.

  1. IBM Problem Determination Tools에 필요한 컴파일러 옵션을 지정하십시오. 예를 들어, Enterprise COBOL for z/OS의 경우, TEST 옵션이 필요합니다.
  2. 생성할 JCL을 코드화하고 IBM Problem Determination Tools 제품이 필요로 하는 소스 정보 파일을 저장하십시오. 최신 컴파일러는 필수 소스 정보 파일을 직접 생성할 수 있습니다. 일부 이전 컴파일러에는 필요한 파일을 생성하는 특수 유틸리티 프로그램을 실행하기 위한 컴파일 Job의 추가 단계가 필요합니다.
  3. 특정 환경에서 링크 편집 단계 중에 애플리케이션 로드 모듈에 z/OS용 Debug Tool의 특수 모듈을 포함할 수 있습니다. 대부분의 경우, 이는 선택적이지만 특정 유형의 프로그램에서는 z/OS용 Debug Tool을 간단하게 시작할 수 있습니다. 특정 환경에서 실행 중인 이전 컴파일러의 경우, z/OS용 Debug Tool을 사용하기 위해 특수 모듈을 포함해야 합니다.

승격 프로세스 갱신

일반적으로 프로그램이 테스트되면 프로그램 로드 모듈이 프로덕션에 도달하기 전에 여러 단계를 걸쳐 승격됩니다. 예를 들어, 새 프로그램이 처음 컴파일될 때, 테스트 로드 라이브러리에 위치할 수 있습니다. 단위 테스트가 완료되면, 아마도 컴파일된 프로그램이 품질 보증 환경으로 승격됩니다. 그리고 마지막으로 프로덕션으로 승격됩니다. 사용자 시스템에서 다음과 같은 여러 이름으로 이러한 단계를 알 수 있습니다.

프로그램의 라이프사이클 동안 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 제품을 충분히 이용할 수 있습니다.

Enterprise COBOL for z/OS 버전 4 프로그램

다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 Enterprise COBOL for z/OS 버전 4 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 19. Enterprise COBOL for z/OS 버전 4의 IBM Problem Determination Tools 제품에서 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 지원됨 지원됨
주:
위 표에서 강조표시된 행(하나 또는 여러 행)은 각 제품에 대해 제안된 컴파일러 옵션 및 소스 정보 파일 유형을 나타냅니다.

Enterprise COBOL for z/OS 버전 4 프로그램 준비

표 19에 제안된 컴파일러 옵션을 사용하여 Enterprise COBOL for z/OS 버전 4 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. SYSDEBUG 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 테스트, 프로덕션 등의 각 환경에 맞는 SYSDEBUG 라이브러리를 하나 이상 작성하십시오.
  2. 각 로드 라이브러리에 맞는 SYSDEBUG 라이브러리를 작성하십시오. LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K)를 지정하십시오.
  3. 테스트 및 프로덕션 환경의 모든 프로그램에서 컴파일러 옵션
    (TEST(NOHOOK,SEPARATE,EJPD),LIST,MAP,SOURCE,NONUMBER,XREF(SHORT))을 지정하십시오.

    z/OS용 Debug Tool을 사용하여 프로그램을 디버그하려면 TEST 컴파일러 옵션이 필요합니다. TEST 옵션은 z/OS용 Fault Analyzer 또는 z/OS용 Application Performance Analyzer를 사용하려는 경우 선택적입니다.

    SEPARATE 하위 옵션은 SYSDEBUG 파일을 생성합니다.

    NOHOOKSEPARATE가 디버그할 수 있는 프로덕션 준비 모듈을 생성합니다.

    또한 OPT 옵션이 사용되면 EJPD로 인해 최적화는 이루어지지 않지만 디버거의 JUMPTOGOTO 명령을 사용할 수 있습니다. OPTNOEJPD가 모두 사용되면 이러한 명령을 사용할 수 없습니다.

  4. TEST 옵션이 사용되지 않으면 파일에 컴파일러 목록을 저장하거나 xxxLANGX 유틸리티 프로그램을 사용하여 LANGX 파일을 작성하십시오. 동등한 xxxLANGX 유틸리티는 z/OS용 Debug Tool에서 EQALANGX로서, z/OS용 Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다. z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer는 컴파일러 목록 및 LANGX 파일을 사용하여 소스 레벨의 지원을 제공할 수 있습니다.
  5. LIST, MAP, SOURCEXREF 옵션은 컴파일러 목록 또는 LANGX 파일이 z/OS용 Fault Analyzer 또는 z/OS용 Application Performance Analyzer에 소스 정보를 제공하는 경우에만 필요합니다. SYSDEBUG 파일이 이러한 제품과 함께 사용되거나 z/OS용 Fault Analyzer 또는 z/OS용 Application Performance Analyzer를 사용하지 않는 경우, LIST, MAP, SOURCEXREF 옵션은 선택적입니다.
  6. NONUMBER 컴파일러 옵션은 컴파일러 목록 파일이 z/OS용 Application Performance Analyzer에 소스 정보를 제공하는 데 사용되는 경우에만 필요합니다. SYSDEBUG 파일이 z/OS용 Application Performance Analyzer와 함께 사용되거나 z/OS용 Application Performance Analyzer를 사용하지 않는 경우, NONUMBER 옵션은 선택적입니다.
  7. 컴파일러 단계의 JCL에서 SYSDEBUG DD를 코드화하십시오.
     //SYSDEBUG DD DSN= SYSDEBUG.pds(pgmname),DISP=SHR
    SYSDEBUG 라이브러리에 컴파일러에서 생성된 SYSDEBUG 파일을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 이 파일은 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다.
  8. 승격 프로세스를 수정하여 SYSDEBUG 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 SYSDEBUG 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 SYSDEBUG 파일에서 동일한 단계를 수행하십시오.
  9. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment®) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS™ Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2® 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS® 프로그램용 EXIT 모듈을 포함하지 마십시오.

Enterprise COBOL for z/OS 버전 4 프로그램을 컴파일하기 위한 샘플 JCL

다음은 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))

Enterprise COBOL for z/OS 버전 3과 OS/390 및 VM용 COBOL 프로그램

다음 표에서는 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 프로그램을 준비하는 데 사용할 수 있는 여러 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 20. Enterprise COBOL for z/OS 버전 3과 OS/390 및 VM용 COBOL의 IBM Problem Determination Tools 제품에서 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 지원됨 지원됨
주:
위 표에서 강조표시된 행(하나 또는 여러 행)은 각 제품에 대해 제안된 컴파일러 옵션 및 소스 정보 파일 유형을 나타냅니다.

Enterprise COBOL for z/OS 버전 3과 OS/390 및 VM용 COBOL 프로그램 준비

표 20에 제안된 컴파일러 옵션을 사용하여 Enterprise COBOL for z/OS 버전 3과 OS/390 및 VM용 COBOL 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. SYSDEBUG 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 테스트, 프로덕션 등의 각 환경에 맞는 SYSDEBUG 라이브러리를 하나 이상 할당하십시오.
  2. 각 로드 라이브러리에 맞는 SYSDEBUG 라이브러리를 작성하십시오. LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K)를 지정하십시오.
  3. 테스트 및 프로덕션 환경의 모든 프로그램에서 TEST(NONE,SYM,SEPARATE),LIST,MAP,SOURCE,NONUMBER,XREF(SHORT)를 사용하십시오.

    TEST는 z/OS용 Debug Tool에 필요합니다.

    SEPARATE 하위 옵션은 SYSDEBUG 파일을 생성합니다. SEPARATE와 함께 NONE을 지정하면 디버그할 수 있는 프로덕션 준비 모듈을 생성합니다.

    OPTIMIZE가 지정되면 디버거 JUMPTOGOTO 명령문을 사용할 수 없습니다. NOOPTIMIZE가 지정되면 이러한 명령을 사용할 수 있습니다.

  4. LIST, MAP, SOURCEXREF 옵션은 컴파일러 목록 또는 LANGX 파일이 z/OS용 Fault Analyzer 또는 z/OS용 Application Performance Analyzer에 소스 정보를 제공하는 경우에만 필요합니다. SYSDEBUG 파일이 이러한 제품과 함께 사용되거나 z/OS용 Fault Analyzer 또는 z/OS용 Application Performance Analyzer를 사용하지 않는 경우, LIST, MAP, SOURCEXREF 옵션은 선택적입니다.
  5. NONUMBER 컴파일러 옵션은 컴파일러 목록 파일이 z/OS용 Application Performance Analyzer에 소스 정보를 제공하는 데 사용되는 경우에만 필요합니다. SYSDEBUG 파일이 z/OS용 Application Performance Analyzer와 함께 사용되거나 z/OS용 Application Performance Analyzer를 사용하지 않는 경우, NONUMBER 옵션은 선택적입니다.
  6. 컴파일러 단계의 JCL에서 SYSDEBUG DD를 코드화하십시오.
    //SYSDEBUG DD DSN= SYSDEBUG.pds(pgmname),DISP=SHR
    SYSDEBUG 라이브러리에 컴파일러에서 생성된 SYSDEBUG 파일을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 이 파일은 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다.
  7. 승격 프로세스를 수정하여 SYSDEBUG 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 SYSDEBUG 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 SYSDEBUG 파일에서 동일한 단계를 수행하십시오.
  8. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.

Enterprise COBOL for z/OS 버전 3 프로그램을 컴파일하기 위한 샘플 JCL

다음은 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))

MVS 및 VM용 COBOL 프로그램

다음 표에서는 IBM 문제점 판별 툴 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 MVS 및 VM용 COBOL 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 21. MVS 및 VM용 COBOL의 IBM 문제점 판별 툴 제품에서 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 프로그램 준비

MVS 및 VM용 COBOL 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. 컴파일러 목록 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 테스트 및 프로덕션 등의 각 환경에 맞는 컴파일러 목록 라이브러리를 하나 이상 할당하십시오.
  2. 각 로드 라이브러리에 맞는 목록 라이브러리를 작성하십시오.
    LRECL=133,RECFM=FBA,BLKSIZE=(multiple of lrecl < 32K)를 지정하십시오.
  3. Batch, CICS 및 IMS와 같은 모든 프로그램의 경우:
  4. 컴파일러 단계의 JCL에서 SYSPRINT DD를 수정하여 파일을 참조하십시오.
    //SYSPRINT DD DSN= compiler.listing.pds(pgmname),DISP=SHR
    컴파일러 목록 라이브러리의 파일에 컴파일러 목록을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 이는 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다.
  5. 승격 프로세스를 수정하여 컴파일러 목록 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 컴파일러 목록 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 컴파일러 목록 파일에서 동일한 단계를 수행하십시오.
  6. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.

MVS 및 VM용 COBOL 프로그램 컴파일을 위한 샘플 JCL

다음은 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))

VS COBOL II 프로그램

최근에 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 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 22. 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 파일 프로덕션 및 테스트를 위해 제안됨
주:
위 표에서 강조표시된 행(하나 또는 여러 행)은 각 제품에 대해 제안된 컴파일러 옵션 및 소스 정보 파일 유형을 나타냅니다.

VS COBOL II 프로그램 준비

표 22에 제안된 컴파일러 옵션을 사용하여 VS COBOL II 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. LANGX 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 할당하십시오. 테스트 및 프로덕션 등의 각 환경에 맞는 LANGX 라이브러리를 하나 이상 할당하십시오.
  2. 각 로드 라이브러리에 맞는 LANGX 라이브러리를 작성하십시오. LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  3. 테스트 및 프로덕션 환경의 Batch, CICS 및 IMS와 같은 모든 프로그램에 대해 NOTEST,LIST,MAP,NOOPT,SOURCE,XREF,NONUMBER 컴파일러 옵션으로 컴파일하십시오.
  4. 컴파일러 단계의 SYSPRINT DD를 수정하여 파일을 참조하십시오. 이 파일은 영구 또는 임시 파일입니다. 이 목록은 xxxLANGX 유틸리티에 대한 입력입니다.
  5. 컴파일러 단계 후 단계를 추가하여 문제점 판별 툴 xxxLANGX 유틸리티를 실행하십시오. 이 유틸리티 프로그램은 컴파일러 목록을 읽고 LANGX 파일을 생성합니다. 이는 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다.LANGX 파일 라이브러리에 LANGX 파일을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 동등한 xxxLANGX 유틸리티는 z/OS용 Debug Tool에서 EQALANGX로서, z/OS용 Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다.
  6. 모듈이 Language Environment 서비스와 링크된 경우, 연결 편집 단계 중 로드 모듈에 Debug Tool Language Environment EXIT 모듈을 선택적으로 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. 모듈이 Language Environment 서비스와 링크되지 않은 경우(COBOL II 런타임 서비스에 링크됨), CICS 프로그램에 대한 EXIT 모듈을 포함하지 마십시오.
  7. 승격 프로세스를 수정하여 LANGX 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 LANGX 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 LANGX 파일에서 동일한 단계를 수행하십시오.

VS COBOL II 프로그램 컴파일에 대한 샘플 JCL

다음은 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))

OS/VS COBOL 프로그램

다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 OS/VS COBOL 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 23. OS/VS COBOL용 Problem Determination Tools 제품에서 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 프로그램 준비

OS/VS COBOL 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. LANGX 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 할당하십시오. 테스트 및 프로덕션 등의 각 환경에 맞는 LANGX 라이브러리를 하나 이상 할당하십시오.
  2. 각 로드 라이브러리에 맞는 LANGX 라이브러리를 작성하십시오. LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  3. 테스트 및 프로덕션 환경의 Batch, CICS 및 IMS와 같은 모든 프로그램의 경우, 컴파일러 옵션 NOBATCH, NOCLIST, NOCOUNT, DMAP, NOLST, PMAP, SOURCE, NOSYMDMP, NOTEST, NOOPT, VERB, XREF(SHORT)로 컴파일하십시오. 모듈이 프로덕션 준비 상태가 되며 z/OS용 Debug Tool을 사용하여 디버그될 수 있습니다.
  4. 컴파일러 단계의 SYSPRINT DD를 수정하여 파일을 참조하십시오. 이 파일은 영구 또는 임시 파일입니다. 이 목록은 xxxLANGX 유틸리티에 대한 입력입니다.
  5. 컴파일러 단계 후 단계를 추가하여 문제점 판별 툴 xxxLANGX 유틸리티를 실행하십시오. 이 유틸리티 프로그램이 컴파일러 목록을 읽고 LANGX 파일을 생성합니다. 이 파일은 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다. LANGX 파일 라이브러리에 LANGX 파일을 저장하고 애플리케이션 프로그램의 프로그램명과 동일한 멤버명을 지정하십시오. 동등한 xxxLANGX 유틸리티는 z/OS용 Debug Tool에서 EQALANGX로서, z/OS용 Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다.
  6. 승격 프로세스를 수정하여 LANGX 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 LANGX 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 LANGX 파일에서 동일한 단계를 수행하십시오.

OS/VS COBOL 프로그램 컴파일에 대한 샘플 JCL

다음은 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))

Enterprise PL/I 버전 3.7 이상 프로그램

다음 표에서는 IBM 문제점 판별 툴 제품(z/OS용 IBM Debug Tool, z/OS용 IBM Fault Analyzer 및 z/OS용 IBM Application Performance Analyzer)에 사용할 Enterprise PL/I 버전 3.7 이상 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 24. Enterprise PL/I 버전 3.7 이상의 IBM 문제점 판별 툴 제품에 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 이상 프로그램 준비

Enterprise PL/I 버전 3.7 이상 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. SYSDEBUG 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 이는 LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K)를 사용하여 디버깅을 수행할 테스트 환경에만 필요합니다.
  2. 테스트 및 프로덕션 등의 각 환경에 맞는 LANGX 라이브러리를 하나 이상 할당하십시오.
  3. 각 로드 라이브러리에 맞는 LANGX 라이브러리를 작성하십시오. LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  4. Batch, CICS 및 IMS와 같은 모든 프로그램의 경우:
  5. TEST(...SEPARATE) 옵션이 사용되면 다음과 같이 두 번째 컴파일러 단계에서 SYSDEBUG DD를 코드화하십시오.

     //SYSDEBUG DD DSN= sysdebug.pds(pgmname),DISP=SHR

    이는 z/OS용 IBM Debug Tool 및 선택적으로 z/OS용 IBM Fault Analyzer에 대한 소스 정보 파일입니다. 이 파일을 SYSDEBUG 라이브러리에 저장하고 애플리케이션 프로그램의 기본 시작점명 또는 CSECT명과 동일한 멤버명을 지정하십시오.

  6. 컴파일러 단계에서 SYSPRINT DD를 수정하십시오. 이는 컴파일러 목록입니다. 목록을 영구 또는 임시 파일에 작성하십시오. 이는 xxxLANGX 유틸리티에 대한 입력입니다.
    주:
    이 컴파일러는 일반적으로 내부 컴파일러 알고리즘에 따라 CSECT명을 바꿉니다. 따라서 z/OS용 IBM Application Performance Analyzer 또는 z/OS용 IBM Fault Analyzer에서 CSECT명을 찾을 수 없기 때문에 CSECT명을 사용한 PL/I 컴파일러 목록 또는 부가 파일 저장은 권장되지 않습니다. 대신 기본 시작점명을 사용하십시오.
  7. 컴파일 단계 후 단계를 추가하여 xxxLANGX 유틸리티를 실행하십시오. 이 유틸리티는 컴파일러 목록을 읽고 LANGX 파일을 생성합니다. 이는 z/OS용 IBM Fault Analyzer 및 z/OS용 IBM 응용프로그램 성능 분석기의 소스 정보 파일입니다. 동등한 xxxLANGX 유틸리티는 z/OS용 IBM Debug Tool에서 EQALANGX로서, z/OS용 IBM Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 IBM Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다. LANGX 파일 라이브러리에 LANGX 파일을 저장하고 애플리케이션 프로그램의 기본 시작점명과 동일한 멤버명을 지정하십시오.
  8. 승격 프로세스를 수정하여 LANGX 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 LANGX 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 LANGX 파일에서 동일한 단계를 수행하십시오.
  9. TEST 옵션으로 컴파일하고 이러한 모듈을 프로덕션에서 승격하는 경우, 프로덕션 환경에 맞는 SYSDEBUG 파일을 승격시켜야 합니다.
  10. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.

z/OS용 Enterprise PL/I 버전 3.7 이상 프로그램 컴파일을 위한 샘플 JCL

다음은 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)

Enterprise PL/I 버전 3.5 및 버전 3.6 프로그램

다음 표에서는 IBM 문제점 판별 툴 제품(z/OS용 IBM Debug Tool, z/OS용 IBM Fault Analyzer 및 z/OS용 IBM Application Performance Analyzer)에 사용할 Enterprise PL/I 버전 3.5 및 버전 3.6 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 25. Enterprise PL/I 버전 3.5 및 버전 3.6의 IBM 문제점 판별 툴 제품에서 지원하는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 프로그램 준비

Enterprise PL/I 버전 3.5 및 버전 3.6 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. SYSDEBUG 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 이는 LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K)를 사용하여 디버깅을 수행할 테스트 환경에만 필요합니다.
  2. 테스트 및 프로덕션 등의 각 환경에 맞는 LANGX 라이브러리를 하나 이상 할당하십시오.
  3. 각 로드 라이브러리에 맞는 LANGX 라이브러리를 작성하십시오. LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  4. 두 단계의 컴파일을 실행하십시오. 첫 번째 단계에서 프로그램을 사전 처리하여 IBM Problem Determination Tools 제품이 INCLUDEs 및 매크로로 확장된 소스 코드에 액세스할 수 있습니다. 두 번째 단계에서는 프로그램을 컴파일합니다. Batch, CICS 및 IMS와 같은 모든 프로그램의 경우:

    NOTEST로 인해 Debug Tool을 사용할 수 없지만, 보다 작은 로드 모듈이 제공됩니다.

    기타 옵션은 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer(z/OS용 Debug Tool은 아님)에서 사용할 수 있는 프로덕션 준비 모듈을 생성하도록 xxxLANGX 유틸리티에 필요한 컴파일러 목록을 형식화합니다.

  5. 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명과 동일한 멤버명을 지정하십시오.

  6. 두 번째 컴파일러 단계에서 SYSPRINT DD를 수정하십시오. 이는 컴파일러 목록입니다. 목록을 영구 또는 임시 파일에 작성하십시오. 이는 xxxLANGX 유틸리티에 대한 입력입니다.
    주:
    이 컴파일러는 일반적으로 내부 컴파일러 알고리즘에 따라 CSECT명을 바꿉니다. 따라서 z/OS용 IBM Application Performance Analyzer 또는 z/OS용 IBM Fault Analyzer에서 CSECT명을 찾을 수 없기 때문에 CSECT명을 사용한 PL/I 컴파일러 목록 또는 부가 파일 저장은 권장되지 않습니다. 대신 기본 시작점명을 사용하십시오.
  7. 컴파일 단계 후 단계를 추가하여 xxxLANGX 유틸리티를 실행하십시오. 이 유틸리티는 컴파일러 목록을 읽고 LANGX 파일을 생성합니다. 이는 z/OS용 IBM Fault Analyzer 및 z/OS용 IBM 응용프로그램 성능 분석기의 소스 정보 파일입니다. 동등한 xxxLANGX 유틸리티는 z/OS용 IBM Debug Tool에서 EQALANGX로서, z/OS용 IBM Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 IBM Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다. LANGX 파일 라이브러리에 LANGX 파일을 저장하고 애플리케이션 프로그램의 기본 시작점명과 동일한 멤버명을 지정하십시오.
  8. 승격 프로세스를 수정하여 LANGX 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 LANGX 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 LANGX 파일에서 동일한 단계를 수행하십시오.
  9. TEST 옵션으로 컴파일하고 이러한 모듈을 프로덕션에서 승격하는 경우, 프로덕션 환경에 맞는 SYSDEBUG 파일을 승격시켜야 합니다.
  10. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.

Enterprise PL/I 버전 3.5 또는 버전 3.6 프로그램 컴파일을 위한 샘플 JCL

다음은 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)

Enterprise PL/I 버전 3.4 이전 프로그램

다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 Enterprise PL/I 버전 3.4 이전 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 26. Enterprise PL/I 버전 3.4 이전의 IBM Problem Determination Tools 제품에 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 이전 프로그램 준비

Enterprise PL/I 버전 3.4 이전 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. 확장된 소스 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 이는 디버깅을 수행할 테스트 환경에만 필요합니다. 라이브러리는 컴파일러에서 입력으로 지원되는 임의의 RECFM/LRECL/BLKSIZE입니다.
  2. LANGX 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 할당하십시오. 테스트 또는 프로덕션 등의 각 환경에 맞는 LANGX 라이브러리를 하나 이상 할당하십시오.
  3. 각 로드 라이브러리에 맞는 LANGX 라이브러리를 작성하십시오. LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  4. 두 단계의 컴파일을 실행하십시오. 첫 번째 단계에서 프로그램을 사전 처리하여 IBM Problem Determination Tools가 INCLUDEs 및 매크로로 확장된 소스 코드에 액세스할 수 있습니다. 두 번째 단계에서는 프로그램을 컴파일합니다.
  5. 두 번째 컴파일러 단계에서 SYSPRINT DD를 수정하십시오. 이는 컴파일러 목록입니다. 컴파일러 목록을 영구 또는 임시 파일로 저장하십시오. 이 목록은 xxxLANGX 유틸리티에 대한 입력입니다.
    주:
    이 컴파일러는 일반적으로 내부 컴파일러 알고리즘에 따라 CSECT명을 바꿉니다. 따라서 z/OS용 Application Performance Analyzer 또는 z/OS용 Fault Analyzer에서 CSECT명을 찾을 수 없기 때문에 CSECT명을 사용한 PL/I 컴파일러 목록 또는 부가 파일 저장은 권장되지 않습니다. 대신 기본 시작점명을 사용하십시오.
  6. 컴파일러 단계 후 단계를 추가하여 xxxLANGX 유틸리티를 실행하십시오. xxxLANGX 유틸리티가 컴파일러 목록을 읽고 LANGX 파일을 생성합니다. 이 파일은 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다. 동등한 xxxLANGX 유틸리티는 z/OS용 Debug Tool에서 EQALANGX로서, z/OS용 Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다. LANGX 파일 라이브러리에 LANGX 파일을 저장하고 애플리케이션 프로그램의 기본 시작점명 또는 CSECT명과 동일한 멤버명을 지정하십시오.
  7. 승격 프로세스를 수정하여 LANGX 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 LANGX 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 LANGX 파일에서 동일한 단계를 수행하십시오.
  8. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.
  9. CICS 애플리케이션에서만, Debug Tool DTCN 트랜잭션이 Debug Tool을 시작하는 데 사용될 경우에 Debug Tool CICS 시작 EXIT 모듈 EQADCCXT를 애플리케이션 로드 모듈로 링크 편집하여 CICS에서 Debug Tool을 사용하십시오. DTCN 대신 CADP 트랜잭션을 사용하는 경우에는 필요하지 않습니다.

Enterprise PL/I for z/OS 버전 3.4 이하 프로그램 컴파일을 위한 샘플 JCL

다음은 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)

MVS 및 VM용 PL/I와 OS PL/I 프로그램

다음 표에서는 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 파일 사용만 제안됩니다.

표 27. MVS 및 VM용 PL/I 및 OS PLI의 IBM 문제점 판별 툴 제품에서 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 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 프로그램 준비

MVS 및 VM용 PL/I와 OS PL/I 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. 컴파일러 목록 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 이는 디버깅을 수행할 테스트 환경에만 필요합니다. LRECL=125 minimum,RECFM=VBA,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  2. LANGX 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 할당하십시오. 테스트 및 프로덕션 등의 각 환경에 맞는 LANGX 라이브러리를 하나 이상 할당하십시오.
  3. 각 로드 라이브러리에 맞는 LANGX 라이브러리를 작성하십시오. LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  4. Batch, CICS 및 IMS와 같은 모든 프로그램의 경우:
  5. 컴파일러 단계에서 SYSPRINT DD를 수정하십시오. 이는 컴파일러 목록입니다. 이를 영구 파일로 저장하십시오. 컴파일러 목록은 xxxLANGX 유틸리티에 대한 입력이며 z/OS용 Debug Tool의 소스 정보 파일입니다.
    주:
    이 컴파일러는 일반적으로 내부 컴파일러 알고리즘에 따라 CSECT명을 바꿉니다. 따라서 z/OS용 Application Performance Analyzer 또는 z/OS용 Fault Analyzer에서 CSECT명을 찾을 수 없기 때문에 CSECT명을 사용한 PL/I 컴파일러 목록 또는 부가 파일 저장은 권장되지 않습니다. 대신 기본 시작점명을 사용하십시오.
  6. 컴파일러 단계 후 단계를 추가하여 xxxLANGX 유틸리티를 실행하십시오. 이 유틸리티는 컴파일러 목록을 읽고 LANGX 파일을 저장합니다. 이 파일은 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다. 동등한 xxxLANGX 유틸리티는 z/OS용 Debug Tool에서 EQALANGX로서, z/OS용 Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다. LANGX 파일 라이브러리에 파일을 저장하고 애플리케이션 프로그램의 기본 시작점명과 동일한 멤버명을 지정하십시오.
  7. 승격 프로세스를 수정하여 LANGX 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 LANGX 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 LANGX 파일에서 동일한 단계를 수행하십시오.
  8. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.
  9. CICS 애플리케이션에서만, Debug Tool DTCN 트랜잭션이 Debug Tool을 시작하는 데 사용될 경우에 Debug Tool CICS 시작 EXIT 모듈 EQADCCXT를 애플리케이션 로드 모듈로 링크 편집하여 CICS에서 Debug Tool을 사용하십시오. DTCN 대신 CADP 트랜잭션을 사용하는 경우에는 필요하지 않습니다.

MVS 및 VM용 PL/I 프로그램 컴파일을 위한 샘플 JCL

다음은 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)

z/OS XL C 및 C++ 프로그램

다음 표에서는 IBM Problem Determination Tools 제품(z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer)에 사용할 z/OS XL C 및 C++ 프로그램을 준비하는 데 사용할 수 있는 다양한 컴파일러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 28. C++용 IBM Problem Determination Tools 제품에서 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성되는 출력 로드 모듈 프로덕션 준비 여부 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
주:
  1. 위 표에서 강조표시된 행(하나 또는 여러 행)은 각 제품에 대해 제안된 컴파일러 옵션 및 소스 정보 파일 유형을 나타냅니다.
  2. FORMAT(DWARF) 옵션은 z/OS 버전 1.6 이상에 지원됩니다.
표 29. C용 IBM Problem Determination Tools 제품에서 지원되는 컴파일러 옵션 및 소스 정보 파일 예제
컴파일러 옵션 생성되는 출력 로드 모듈 프로덕션 준비 여부 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
주:
  1. 위 표에서 강조표시된 행(하나 또는 여러 행)은 각 제품에 대해 제안된 컴파일러 옵션 및 소스 정보 파일 유형을 나타냅니다.
  2. FORMAT(DWARF) 옵션은 z/OS 버전 1.6 이상에 지원됩니다.

z/OS XL C 및 C++ 프로그램 준비

z/OS XL C 및 C++ 프로그램을 컴파일하기 위해 다음 단계를 수행하십시오.

  1. 확장된 소스 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 작성하십시오. 이는 디버깅을 수행할 테스트 환경에만 필요합니다. 라이브러리는 컴파일러에서 입력으로 지원되는 임의의 RECFM/LRECL/BLKSIZE입니다.
  2. 컴파일러 목록 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 할당하십시오. 테스트 및 프로덕션 등의 각 환경에 맞는 컴파일러 목록 라이브러리를 하나 이상 할당하십시오.
  3. 각 로드 라이브러리에 맞는 목록 라이브러리를 작성하십시오.
    LRECL=133,RECFM=FBA,BLKSIZE=(multiple of lrecl up to 32k) 또는 LRECL=137 or greater, RECFM=VBA,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  4. 두 단계의 컴파일을 실행하십시오. 첫 번째 단계에서 프로그램을 사전 처리하여 IBM Problem Determination Tools 제품이 확장된 소스 코드에 액세스할 수 있습니다. 두 번째 단계에서는 프로그램을 컴파일합니다.
  5. 두 번째 컴파일러 단계에서 파일을 참조하도록 SYSCPRT DD를 수정하십시오. 이는 컴파일러 목록이며 z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다. 컴파일러 목록 라이브러리에 이 파일을 저장하고 애플리케이션 프로그램의 CSECT명과 동일한 멤버를 지정하십시오.
    //SYSCPRT DD DSN=compiler.listing.pds(csect-name),DISP=SHR
    주:
    Fault Analyzer에서 소스 지원을 사용하려면 다음을 사용하여 C 프로그램의 CSECT의 이름을 지정해야 합니다.
    #pragma csect(code, "csect_name")
    여기서 PDS(E)를 사용하는 경우, csect_name이 컴파일러 목록 또는 LANGX 파일 멤버명과 일치합니다.
  6. 승격 프로세스를 수정하여 컴파일러 목록 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 컴파일러 목록 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 컴파일러 목록 파일에서 동일한 단계를 수행하십시오.
  7. 연결 편집기 단계에서 선택적으로 Debug Tool LE(Language Environment) EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.
  8. CICS 애플리케이션에만 해당: Debug Tool DTCN 트랜잭션이 Debug Tool을 시작하는 데 사용될 경우에 Debug Tool CICS 시작 EXIT 모듈 EQADCCXT를 애플리케이션 로드 모듈로 링크 편집하여 CICS에서 Debug Tool을 사용하십시오. DTCN 대신 CADP 트랜잭션을 사용하는 경우에는 필요하지 않습니다.

z/OS C++ 프로그램 컴파일을 위한 샘플 JCL

다음은 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)에 사용할 프로그램을 준비하는 데 사용할 수 있는 다양한 어셈블러 옵션을 표시합니다. 다음 표에 제안된 메소드는 생성된 로드 모듈이 프로덕션 환경에 적합한지 나타냅니다. 프로덕션 환경에 적합한 로드 모듈에 심각한 런타임 오버헤드가 없습니다.

표 30. 어셈블러용 IBM Problem Determination Tools 제품에서 지원되는 어셈블러 옵션 및 소스 정보 파일 예제
어셈블러 옵션 생성된 소스 정보 파일 유형 로드 모듈 프로덕션 준비 여부 z/OS용 Debug Tool에 지원 및 제안된 옵션 z/OS용 Fault Analyzer에 지원 및 제안된 옵션 z/OS용 Application Performance Analyzer에 지원 및 제안된 옵션
ADATA SYSADATA 파일 N/A 지원됨 지원됨
ADATA LANGX 파일 프로덕션 및 테스트를 위해 제안됨
주:
위 표에서 강조표시된 행(하나 또는 여러 행)은 각 제품에 대해 제안된 컴파일러 옵션 및 소스 정보 파일 유형을 나타냅니다.

어셈블러 프로그램 준비

프로그램을 어셈블하기 위해 다음 단계를 수행하십시오.

  1. LANGX 파일의 라이브러리(PDS가 조직에 필요하지 않으면 PDSE가 제안됨)를 할당하십시오. 테스트 및 프로덕션 등의 각 환경에 맞는 LANGX 라이브러리를 하나 이상 할당하십시오.
  2. 각 로드 라이브러리에 맞는 LANGX 라이브러리를 작성하십시오. LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k를 지정하십시오.
  3. 테스트 및 프로덕션 환경의 Batch, CICS 및 IMS와 같은 모든 프로그램에 대해 ADATA를 지정하십시오.

    ADATA는 어셈블러가 프로그램에 대한 소스 및 기호 데이터가 포함된 SYSADATA 파일을 생성하도록 지시합니다. 이렇게 되면 z/OS용 Debug Tool를 사용하여 디버그할 수 있는 프로덕션 준비 모듈이 생성됩니다. ADATA는 어셈블된 모듈의 내용에 영향을 미치지 않습니다.

  4. 어셈블러 단계에서 SYSADATA DD를 추가하십시오. 이 파일은 어셈블러에 의해 작성되며 영구 또는 임시 파일입니다. LRECL=8188 or
    greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k
    를 지정하십시오. 이 파일은 xxxLANGX 유틸리티에 대한 입력입니다.
  5. 어셈블러 단계 후 단계를 추가하여 xxxLANGX 유틸리티를 실행하십시오. xxxLANGX 유틸리티가 SYSADATA 파일을 읽고 LANGX 파일을 작성합니다. LANGX 파일은 z/OS용 Debug Tool, z/OS용 Fault Analyzer 및 z/OS용 Application Performance Analyzer의 소스 정보 파일입니다. 동등한 xxxLANGX 유틸리티는 z/OS용 Debug Tool에서 EQALANGX로서, z/OS용 Fault Analyzer에서 IDILANGX로서, 그리고 z/OS용 Application Performance Analyzer에서 CAZLANGX로서 사용 가능합니다.
  6. LANGX 파일 라이브러리에 LANGX 파일을 저장하고 CSECT명과 동일한 멤버명을 지정하십시오.
  7. 승격 프로세스를 수정하여 LANGX 파일을 승격시키십시오. 로드 모듈이 승격되면(예: 테스트에서 프로덕션으로 승격) 해당 LANGX 파일을 승격시키십시오. 승격은 재컴파일, 복사 또는 이동입니다. 승격 중에 모듈로 수행하는 LANGX 파일에서 동일한 단계를 수행하십시오.
  8. 어셈블러 프로그램이 Language Environment에서 사용 가능하면, 연결 편집기 단계에서 선택적으로 Debug Tool Language Environment EXIT 모듈을 로드 모듈에 포함시키십시오. 이는 프로그램명 및 사용자 ID에 따라 JCL 변경 없이 프로그램이 실행될 때 단순한 패널 구동 메소드인 ISPF의 Debug Tool 패널 6이 자동으로 디버거를 시작할 수 있는 방법입니다. Batch 프로그램(IMS Batch 포함)용 EQADBCXT 모듈, IMS/TM 프로그램용 EQADICXT 및 DB2 스토어드 프로시저용 EQADDCXT를 사용하십시오. CICS 프로그램용 EXIT 모듈을 포함하지 마십시오.
  9. CICS 프로그램에만 해당: 프로그램이 CICS의 기본 프로그램이고 Language Environment에 사용되며 Debug Tool DTCN 트랜잭션이 Debug Tool을 시작하는 데 사용될 경우에, 연결 편집기 단계에서 제공된 모듈 EQADCCXT를 로드 모듈에 포함시켜야 합니다.

프로그램을 어셈블하기 위한 샘플 JCL

다음은 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
//*