The following table shows various compiler options that can be used to prepare z/OS XL C and C++ programs for use with the IBM Problem Determination Tools products (Debug Tool for z/OS, Fault Analyzer for z/OS and Application Performance Analyzer for z/OS). The methods suggested in the following table indicate if the load module produced is suitable for a production environment. Load modules suitable for a production environments have no significant run-time overhead.
Compiler options | Output produced | Is the load module production ready? | Options supported and suggested for Debug Tool for z/OS | Options supported and suggested for Fault Analyzer for z/OS | Options supported and suggested for Application Performance Analyzer for z/OS |
---|---|---|---|---|---|
Preprocess (1st stage) to expand source, In compile (2nd stage): TEST, ATTRIBUTE(FULL), NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | Expanded source file used by Debug Tool for z/OS, compiler listing used by Fault Analyzer for z/OS and Application Performance Analyzer for z/OS | No | Suggested for test. (Using Debug Tool in production for this compiler is not recommended.) | Supported | Supported |
Expanded source file used by Debug Tool for z/OS, LANGX file used by Fault Analyzer for z/OS and Application Performance Analyzer for z/OS | No | Supported | Supported | Supported | |
NOTEST, ATTRIBUTE(FULL), NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | Compiler listing | Yes | N/A | Suggested for production and test | Suggested for production and test |
LANGX file | Yes | N/A | Supported | Supported | |
Preprocess (1st stage) to expand source. In compile (2nd stage): DEBUG(FORMAT (DWARF), HOOK(LINE, NOBLOCK, PATH), SYMBOL, FILE(location)) | Expanded source file and DWARF file | No | Supported. (Using Debug Tool in production for this compiler is not recommended.) | N/A | N/A |
Compiler options | Output produced | Is the load module production ready? | Options supported and suggested for Debug Tool for z/OS | Options supported and suggested for Fault Analyzer for z/OS | Options supported and suggested for Application Performance Analyzer for z/OS |
---|---|---|---|---|---|
Preprocess (1st stage) to expand source, In compile (2nd stage): TEST(ALL), AGGREGATE, NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | Expanded source file used by Debug Tool for z/OS, compiler listing used by Fault Analyzer for z/OS and Application Performance Analyzer for z/OS | No | Suggested for test. (Using Debug Tool in production for this compiler is not recommended.) | Supported | Supported |
Expanded source file used by Debug Tool for z/OS, LANGX file used by Fault Analyzer for z/OS and Application Performance Analyzer for z/OS | No | Supported | Supported | Supported | |
NOTEST, AGGREGATE, NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF | Compiler listing | Yes | N/A | Suggested for production and test | Suggested for production and test |
LANGX file | Yes | N/A | Supported | Supported | |
Preprocess (1st stage) to expand source. In compile (2nd stage): DEBUG(FORMAT (DWARF), HOOK(LINE, NOBLOCK, PATH), SYMBOL, FILE(location)) | Expanded source file and DWARF file | No | Supported. (Using Debug Tool in production for this compiler is not recommended.) | N/A | N/A |
Perform the following steps for compiling your z/OS XL C and C++ programs:
TEST and NOOPT are required by Debug Tool. Debug hooks are inserted, which will adds runtime overhead. Symbolic data required by Debug Tool is stored in the module, which can make it significantly larger.
The other options format the compiler listing as required by Fault Analyzer for z/OS and Application Performance Analyzer for z/OS.
TEST(ALL) and NOOPT are required by Debug Tool. Debug hooks are inserted, which adds runtime overhead. Symbolic data required by Debug Tool is stored in the module, which can make it significantly larger.
The other options format the compiler listing as required by Fault Analyzer for z/OS and Application Performance Analyzer for z/OS.
NOTEST disables Debug Tool, but provides the best performance. This produces a production-ready module that can be used with Fault Analyzer for z/OS and Application Performance Analyzer for z/OS, but not Debug Tool for z/OS.
The other options format the compiler listing as required for Fault Analyzer for z/OS and Application Performance Analyzer for z/OS.
//SYSCPRT DD DSN=compiler.listing.pds(csect-name),DISP=SHR
#pragma csect(code, "csect_name")
where,
if using a PDS(E), csect_name matches the
compiler listing or LANGX file member name.Below is a JCL example for compiling an z/OS C/C++ program for use with the IBM Problem Determination Tools products.
//* 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)
[ Top of Page | Previous Page | Next Page | Contents | Index ]