There must be twenty or more ways to do this using the Table Tool. Here is an example that requires a simple change to the EDVPARM table. (Other methods do not require changes to the EDVPARM table, but add a bit more complexity to the processor steps). This example is a JCL example, so that you can submit it to see what it does, before converting it to processor code. (Both the Table Tool and CONPARMX can run in JCL – outside of a processor).
Make a copy of the EDVPARM table, and make the following adjustments to the copy
- Shift the entire table content to the right by one character
- Adjust the heading to the Table Tool format..Make the first column in the heading an asterisk, then use the dash characters to indicate the widths of each field. For example:
*SYSTEM-- SUBSYS-- TYPE---- PROCGRP- ELEMENT- STAGE--- STEP---- PROGRAM- ……
The JCL example that uses the updated table contains 3 steps:
- A Table Tool Step to convert the Table into OPTIONS for subsequent CONPARMX steps
- An IEBGENER to simply print the OPTIONS statements
- A CONPARMX step to do a COBOL compile
To convert the JCL to processor code, you will need to also replace some of the symbols. For example, ELEMENT in the parm becomes C1ELEMENT.
//*****
// SET SYSTEM=DB2DEV1
// SET SUBSYS=VISANETA
// SET TYPE=COBB
// SET PROCGRP=COBBMVS
// SET ELEMENT=AVSCRAMU
// SET STAGE=TEST
//*****
//******* Defaults for this Lpar ****** ----------------------------
// SET CSIQCLS0=CAPRD.NDVR.EMER.CATSNDVR.CSIQCLS0
// SET STEPLIB=CAPRD.NDVR.PROD.CATSNDVR.LOADLIB
// SET PARMA='LIB,SSRANGE'
// SET PARMZ=
// SET SYSIN=WALJO11.ENDEVOR.SOURCE
//*********************************************************************
//OPTIONS1 EXEC PGM=IRXJCL,
// PARM='ENBPIU00 M &SYSTEM &SUBSYS &TYPE &PROCGRP &ELEMENT &STAGE'
//TABLE DD DISP=SHR,DSN=WALJO11.VISA.EDVPARM
//OPTIONS DD * / Set Defaults and initialize values
C1VER=01 /* &C1VER */
C1LEV=12 /* &C1LEV */
$delimiter = '.'
If PROGRAM = 'IEFBR14' then, +
DO; PROGRAM = STEP; PARAMETERS = 'Y'; END
If WordPos(PROGRAM,ListOutput) > 0 then $SkipRow = 'Y'
ListOutput = PROGRAM ListOutput
MODEL = 'MODEL'
If Length(PARAMETERS) > 62 then, +
Do; MODEL = 'MODEL2'; +
PARAMETER1 =Substr(PARAMETERS,1,62); +
whereComma = LastPos(',',PARAMETER1); +
PARAMETER1 =Substr(PARAMETERS,1,whereComma); +
PARAMETER2 =Substr(PARAMETERS,whereComma+1); +
End ;
//MODEL DD *
&PROGRAM='&PARAMETERS'
//MODEL2 DD *
&PROGRAM='&PARAMETER1' +
'&PARAMETER2'
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
//SYSEXEC DD DISP=SHR,DSN=&CSIQCLS0
//TBLOUTX DD SYSOUT=*
//TBLOUT DD DSN=&&OPTIONS(&ELEMENT),
// UNIT=SYSALLDA,
// SPACE=(TRK,(5,5,5)),
// DISP=(NEW,PASS,DELETE),
// DCB=(LRECL=80,RECFM=FB,BLKSIZE=0,DSORG=PO)
//*********************************************************************
//SHOWME EXEC PGM=IEBGENER,REGION=1024K
//SYSPRINT DD SYSOUT=* MESSAGES
//SYSUT1 DD DSN=&&OPTIONS(&ELEMENT),DISP=(OLD,PASS)
//SYSUT2 DD SYSOUT=* OUTPUT FILE
//SYSIN DD DUMMY CONTROL STATEMENTS
//SYSUDUMP DD SYSOUT=*
//*--------------------------------------------------------------------
//COMPILE EXEC PGM=CONPARMX,
// PARM=(IGYCRCTL,'(&PARMA)','#$$$DFLT','&PROCGRP',
// '&ELEMENT','(&PARMZ)','Y','N')
//STEPLIB DD DISP=SHR,DSN=&STEPLIB
// DD DSN=IGY.SIGYCOMP,DISP=SHR
//PARMSDEF DD DSN=&&OPTIONS,DISP=(OLD,PASS)
//PARMS DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSIN DD DSN=&SYSIN(&ELEMENT),DISP=SHR
//SYSLIB DD DISP=SHR,DSN=&SYSIN
//SYSLIN DD DSN=&&LOADSET,UNIT=SYSDA,
// DISP=(MOD,PASS),SPACE=(512,(50,20)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSCPRT DD SYSOUT=*
//SYSUT1 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSUT2 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSUT3 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSUT4 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)
//SYSUT15 DD SYSOUT=*
//*-------------------------------------------------------------------
Sample output from the SHOWME step:
IGYCRCTL='OPT,OFF,MAP,XREF,DYN,NOADV,DATA(24),BUFSIZE(32760),' +
'YEARWINDOW(1950),NOSEQ,SOURCE,LIB'
SCNDBX='Y'
SCN1='Y'
DSNHPC='APOST,APOSTSQL,HOST(COB2),SOURCE,VERSION(V0112)'
DFHECP1$='COBOL2,NOSOURCE,NOSEQ,SP'
IEWL='LIST,LET,MAP,XREF'
Sample output from the COMPILE step :
PP 5655-S71 IBM Enterprise COBOL for z/OS 4.2.0 Date 11
Invocation parameters:
LIB,SSRANGE,OPT,OFF,MAP,XREF,DYN,NOADV,DATA(24),BUFSIZE(32760),YEARWINDOW(1950),NOSEQ,SOURCE,LIB
PROCESS(CBL) statements:
PROCESS OUTDD(DISPLAYS) APOST
Options in effect:
NOADATA
NOADV
APOST
ARITH(COMPAT)
NOAWO
NOBLOCK0
BUFSIZE(32760)
NOCICS
CODEPAGE(1140)
Original Message:
Sent: 09-06-2019 10:14 PM
From: Joseph Walther
Subject: EDV* products
There is a in a quick solution which will let you keep the EDV "table" but swap out EDVPARM (for example) for CONPARMX.
Attach a copy (or sample) of your EDVPARM table, and I will provide a processor example.
If you are also using EDVBIND, you are welcome to attach a copy or sample of it too.
Original Message:
Sent: 09-06-2019 02:58 PM
From: Felicity Vaughan
Subject: EDV* products
Has anyone removed the extremely entrenched EDV* (parm, bind, etc) Products from their Endevor implementation? if so, how long did it take (from planning to removal) and what kind of issues did you run into?
Thanks.
------------------------------
Felicity
------------------------------