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 /* //