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.