Sample JCL for compiling z/OS® C++ programs
Here is a JCL example for compiling a z/OS® C++ program for use with the ADFz family of products.
//* ADD A JOB CARD HERE
//*
//*
//* SAMPLE JCL TO PREPARE A Z/OS C++ PROGRAM USING DWARF WITHOUT HOOKS
//* FOR THE IBM ZSERIES ADFz 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
//* THE MDBG CREATE ROUTINE TO CAPTURE THE SOURCE.
//* 2. COMPILER PARMS ARE SPECIFIED TO GENERATE A DWARF FILE WITH
//* NOHOOKS. OTHER OPTIONS ARE SPECIFIED TO FULFILL FA, DT AND
//* APA REQUIREMENTS.
//*
//* BIND:
//* 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)
//* YOU CAN ALSO USE MODULE EQAD3CXT FOR BATCH PROGRAMS, ONLINE IMS
//* PROGRAMS, DB2 TYPE MAIN STORED PROCEDURES.
//*
//* MDBG:
//* AN MDBG FILE IS CREATED FOR DEBUG TOOL. IT WILL CONTAIN ALL THE
//* ROUTINES IN THE PROGRAM OBJECT WITH DBG FILES AND THE CAPTURED
//* SOURCE. IN ORDER TO USE THIS FILE IN DEBUG TOOL, THE DEBUG TOOL
//* SESSION NEEDS TO HAVE THE EQAOPTS MDBG COMMAND SET TO YES.
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
//* CPRFX: THE PREFIX THE 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++ COMPILER LISTING SYSPRINT, EXPANDED SOURCE DEBUG, */
//* DBG AND MDBG 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
//DBG DD DSN=&SYSUID..ADLAB.DBG,
// DISP=(MOD,CATLG),
// DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=0),
// SPACE=(TRK,(40,40,50)),UNIT=SYSDA
//MDBG DD DSN=&SYSUID..ADLAB.MDBG,
// DISP=(MOD,CATLG),
// DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=0),
// SPACE=(TRK,(40,40,50)),UNIT=SYSDA
//* *
//****************************************************************
//*-------------------------------------------------------------------
//* COMPILE STEP1: GENERATE EXPANDED 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 DEBUG(FORMAT(DWARF, NOHOOK))
//*-------------------------------------------------------------------
//COMP2 EXEC PGM=CCNDRVR,REGION=0M,
// PARM=('/CXX DEBUG(FORMAT(DWARF), NOHOOK, SYMBOL),',
// ' LIST, LONGNAME, NOOFFSET')
//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
//*
//*-------------------------------------------------------------------
//* BIND STEP: BIND THE COMPILED OBJECT DECK INTO A PDSE
//*-------------------------------------------------------------------
//BIND EXEC PGM=IEWL,PARM=(LET,MAP,LIST)
//SYSLIB DD DSN=&LEPRFX..SCEELKED,DISP=SHR
// DD DSN=&LEPRFX..SCEECPP,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOADPDSE
//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)
/*
//*
//*-------------------------------------------------------------------
//* BUILD MDBG STEP
//*-------------------------------------------------------------------
//DBGLD EXEC PGM=CDADBGLD,REGION=1500K,
// PARM=('ENVAR("LIBPATH=/usr/lib")/VERSION CAPSRC')
//STEPLIB DD DISP=SHR,DSN=&LEPRFX..SCEERUN2
// DD DISP=SHR,DSN=&LEPRFX..SCEERUN
//SYSIN DD DISP=SHR,DSN=&SYSUID..ADLAB.LOADPDSE(TMC01)
//SYSMDBG DD DISP=SHR,DSN=&SYSUID..ADLAB.MDBG(TMC01)
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
/*