IMSCOBGO procedure
The IMSCOBGO procedure is a three-step compile, bind, and go procedure combining the IMSCOBOL procedure with an execution step for a stand-alone DL/I batch address space.
JCL
In the sample IMSCOBGO procedure JCL:
- Parameters in parentheses are positional.
- The IMS PROCLIB data set should have the same block size as SYS1.PROCLIB, which should be 80, 400, or 3200.
- The IEFRDER and IEFRDER2 statements are not required in DB/DC or DBCTL environments if the job does not declare database update intent.
- Assumptions:
- You supply source data from SYSIN.
- Output class is A.
- MBR=NAME, where NAME is the load module name for the program.
- SYSDA is a generic device name.
If VSAM databases are used, see IMS buffer pools.
// PROC MBR=TEMPNAME,PAGES=60,SYS2=,
// LNGPRFX=IGY,
// LIBPRFX=CEE,
// SOUT=A,RGN=4M,LOGT=2400,
// PSB=,BUF=7,SPIE=0,TEST=0,EXCPVR=0,
// RST=0,PRLD=,SRCH=0,CKPTID=,MON=N,
// LOGA=0,FMTO=T,IMSID=,SWAP=,DBRC=,IRLM=,
// IRLMNM=,BKO=N,IOB=,SSM=,APARM=,
// LOCKMAX=,IMSPLEX=
//C EXEC PGM=IGYCRCTL,REGION=4M,
// PARM='SIZE(832K),BUF(10K),LINECOUNT(50)'
//STEPLIB DD DSN=&LNGPRFX..SIGYCOMP,
// DISP=SHR
//SYSLIN DD DSN=&&LIN,DISP=(MOD,PASS),UNIT=SYSDA,
// DCB=(IMS.&SYS2.PROCLIB),
// SPACE=(3520,(40,10),RLSE,,ROUND)
//SYSPRINT DD SYSOUT=&SOUT,
// DCB=(LRECL=121,BLKSIZE=605,RECFM=FBA),
// SPACE=(605,(&PAGES.0,&PAGES),RLSE,,ROUND)
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT5 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT6 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT7 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//L EXEC PGM=IEWL,REGION=4M,
// PARM='XREF,LET,LIST',
// COND=(8,LT,C)
//SYSLIB DD DSN=&LIBPRFX..SCEELKED,
// DISP=SHR
//DFSRESLB DD DSN=IMS.&SYS2.SDFSRESL,DISP=SHR
//SYSLIN DD DSN=&&LIN,DISP=(OLD,DELETE),
// VOL=REF=*.C.SYSLIN
// DD DISP=SHR,
// DSN=IMS.&SYS2.PROCLIB(CBLTDLI)
// DD DDNAME=SYSIN
//SYSLMOD DD DISP=SHR,
// DSN=IMS.&SYS2.PGMLIB(&MBR)
//SYSPRINT DD SYSOUT=&SOUT,
// DCB=(RECFM=FBA,LRECL=121,BLKSIZE=605),
// SPACE=(605,(&PAGES.0,&PAGES),RLSE,,ROUND)
//SYSUT1 DD UNIT=(SYSDA,SEP=(SYSLMOD,SYSLIN)),
// DISP=(,DELETE),
// SPACE=(3520,(100,10),RLSE,,ROUND)
//G EXEC PGM=DFSRRC00,REGION=&RGN,TIME=2,
// COND=((8,LT,C),(4,LT,L)),
// PARM=(DLI,&MBR,&PSB,&BUF,
// &SPIE&TEST&EXCPVR&RST,
// &PRLD,&SRCH,&CKPTID,&MON,&LOGA,
// &FMTO,&IMSID,&SWAP,
// &DBRC,&IRLM,&IRLMNM,&BKO,&IOB,
// &SSM,'&APARM',&LOCKMAX,,,&IMSPLEX)
//STEPLIB DD DSN=IMS.&SYS2.SDFSRESL,DISP=SHR
// DD DSN=IMS.&SYS2.PGMLIB,DISP=SHR
// DD DSN=&LIBPRFX..SCEERUN,DISP=SHR
//DFSRESLB DD DSN=IMS.&SYS2.SDFSRESL,DISP=SHR
//IMS DD DSN=IMS.&SYS2.PSBLIB,DISP=SHR
// DD DSN=IMS.&SYS2.DBDLIB,DISP=SHR
//PROCLIB DD DSN=IMS.&SYS2.PROCLIB,DISP=SHR
//IEFRDER DD DSN=IMSLOG,DISP=(,KEEP),VOL=(,,,99),
// UNIT=(&LOGT,,DEFER),
// DCB=(RECFM=VB,BLKSIZE=4096,
// LRECL=4092,BUFNO=2)
//IEFRDER2 DD DSN=IMSLOG2,DISP=(,KEEP),VOL=(,,,99),
// UNIT=(&LOGT,,DEFER,SEP=IEFRDER),
// DCB=(RECFM=VB,BLKSIZE=4096,
// LRECL=4092,BUFNO=2)
//SYSOUT DD SYSOUT=&SOUT,SPACE=(CYL,(1,1)),
// DCB=(LRECL=133,RECFM=FBA,BLKSIZE=665)
//SYSUDUMP DD SYSOUT=&SOUT,
// DCB=(LRECL=121,RECFM=FBA,BLKSIZE=3025),
// SPACE=(3025,(200,100),RLSE,,ROUND)
//CEEDUMP DD SYSOUT=&SOUT,
// DCB=(LRECL=121,RECFM=FBA,BLKSIZE=3025),
// SPACE=(3025,(200,100),RLSE,,ROUND)
Usage
For a job step declaring database-update intent, DD DUMMY can be specified if the job step is not using DBRC. This is valid where an image copy of the database is taken before the update job step.
Log initialization calculates the smallest value necessary for logical record length. If the JCL logical record length value is larger than the calculated value, the JCL value is used; otherwise, log initialization uses the calculated value for logical record length and adds 4 for the block size.
If multiple volumes are required for the system log, a volume count value should be specified in the VOL parameter of the DD statement.
If the IBM® 3480 tape drive is used for the IMS log data set, IMS forces tape write mode (DCB=OPCD=W). The default on the 3480 is to hold the write in a buffer so that IMS cannot detect when the write is performed. If a power failure occurs after a log record is written to the 3480, and the database is updated but the log record is not yet written to tape, database integrity is lost. Tape write mode is forced for the log in batch and GSAM data sets.
In the sample IMSCOBGO procedure that is built during SMP/E processing and placed in the ADFSPROC and SDFSPROC library data sets, the IEFRDER2 DD statement is included as a comment. To use the IEFRDER2 DD statement, remove the asterisks (*).
Parameters
The following parameters are valid for the IMSCOBGO procedure.
- BKO=
- BUF=
- CKPTID=
- DBRC=
- DBRCGRP=
- EXCPVR=
- FMTO=
- IMSID=
- IN=
- IMSPLEX=
- IRLM=
- IRLMNM=
- JOB=
- LOGA=
- LOGT=
- MBR=
- MON=
- NODE1=
- NODE2=
- PRLD=
- PSB=
- RGN=
- SOUT=
- SPIE=
- SRCH=
- SWAP=
- SYS2=
- TEST=
See Parameter descriptions for IMS procedures for descriptions.
DD statements
The following DD statements are valid for the IMSCOBGO procedure.
In addition to the following DD statements, add statements for data sets representing IMS databases.
- DFSHALDB 1
- DFSRESLB DD
- DFSSTAT DD
- IEFRDER DD
- IEFRDER2 DD
- IMS DD
- PROCLIB DD
- RECONn DD
- STEPLIB DD
- SYSHALDB DD1
- SYSLIB DD
- SYSLIN DD
- SYSLMOD DD
- SYSOUT DD
- SYSPRINT DD
- SYSUDUMP DD
- SYSUTn DD
See DD statement descriptions for descriptions.