There were questions in news group about using COBOL and DB2 under ADCD on ZPDT.
Here is an answer. It provides a proc (which you can put into USER.*.PROCLIB, and JCL to use it.
ADCD provides a proc in ADCD.Z24*.PROCLIB(DSNHICOB)
// //* * //* DSNCOB63 - COMPILE AND LINKEDIT A DB2 COBOL PROGRAM USING * //* COBOL 6.3.0 P200901 * //* * //* NOTES: * //* 1. THE COBOL 'SQL' COMPILER OPTION IS USED IN PLACE OF * //* PRECOMPILE STEP. * //* 2. THE DEFAULT DB2 VERSION IS 12. * //* * //* * // //* * //* CHANGE LOG * //* ---------- * //* * // //* * //* DATE/AUTHOR DESCRIPTION * //* ----------- --------------------------------------------------- * //* ----------- --------------------------------------------------- * //* 2021/04/01 ORIGINAL FOR Z/OS 2.4 AND COBOL 6.30. * //* J. ABELL THE SQL OPTION AND ITS SUBOPTIONS SUCH * //* AS ATTACH(CAF) AND ATTACH(RRSAF) NORMALLY USED WITH * //* THE DB2 PRECOMPILER. * //* * //* NOTE: DBRMLIB IS NOW PART OF THE COMPILE STEP. * //* OBSOLETE PARMS RENOVED. * //* * //********************************************************************** //DSNCOB63 PROC COBOPTS=, // DBRMLIB=, // DBRMMOD=, // DSNHLQ=DSNC10, DEFAULT - DB2 V12 // LKPARM=, // LOADLIB=, // LOADMOD=, // SQLOPTS=, // SRCLIB=, // SRCMOD= //* //* **** **** //* **** **** //* **** DO NOT CHANGE THE DOUBLE QUOTES CODED IN THE PARM **** //* **** **** //* //COB EXEC PGM=IGYCRCTL,REGION=0M, // PARM='SQL("&SQLOPTS"),BUFSIZE(16K),&COBOPTS' //* //STEPLIB DD DISP=SHR,DSN=&DSNHLQ..SDSNLOAD //SYSIN DD DISP=SHR,DSN=&SRCLIB(&SRCMOD) //DBRMLIB DD DISP=SHR,DSN=&DBRMLIB(&DBRMMOD) //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=WRK, // DCB=BLKSIZE=0, // SPACE=(CYL,(10,10)) //SYSUT1 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT2 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT3 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT4 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT5 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT6 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT7 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT8 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT9 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT10 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT11 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT12 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT13 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT14 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT15 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSMDECK DD UNIT=VIO,SPACE=(CYL,(1,1)) //* //* LINKEDIT IF THE PRECOMPILE AND COMPILE //* RETURN CODES ARE 4 OR LESS //* //LKED EXEC PGM=IEWL,REGION=0M,PARM='XREF,&LKPARM', // COND=(4,LT,COB) //* //SYSLIB DD DISP=SHR,DSN=CEE.SCEELKED // DD DISP=SHR,DSN=CEE.SCEELKEX // DD DISP=SHR,DSN=&DSNHLQ..SDSNLOAD //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DSN=&LOADLIB(&LOADMOD), // DISP=SHR //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(1024,(50,50)),UNIT=VIO
Some sample JCL to use it
/*JOBPARM S=S0W1 //* //CMPTEST EXEC DSNCOB63, // COBOPTS='OPTIMIZE(2),CODEPAGE(500)', // DBRMLIB=TEST.DBCG.DBRM, // DBRMMOD=TESTDB2, // DSNHLQ=DSNC10, // SQLOPTS='ATTACH(CAF)', // SRCLIB=TEST.SOURCE, // SRCMOD=TESTDB2, // LKPARM='EDIT=NO', // LOADLIB=TEST.LIBRARY, // LOADMOD=TESTDB2 //* //LKED.SYSLIB DD // DD DISP=SHR,DSN=TEST.LIBRARY // DD DISP=SHR,DSN=DSNC10.SDSNLOAD //SYSIN DD * program goes here /* //