Writing an edit routine in COBOL for native OS/390, TSO, or ISPF without language environment (LE)

The QMF edit exit interface of COBOL consists of these parts:

Figure 173 shows the program structure of a COBOL edit exit routine

Figure 173. Program structure of a COBOL edit exit routine
QMF Main Module DSQQMF points to QMF Edit Exit Module DSQUEDIT  Entry: DSQUXIC.
QMF Edit Exit Module which consists of IBM-supplied QMF control programs 
DSQUXIC, IGZERRE, IGZEOPT, and DSQUXDT User edit exit program DSQUXDT via
Standard COBOL call points  to QMF Main Module via Return.

Example program DSQUXDTC

The IBM-supplied example edit exit program in COBOL, named DSQUXDTC, is located in QMF sample library QMF720.SDSQSAPE on OS/390 . The example program is heavily commented; it can be browsed online, printed, or modified to suit your needs. If you plan to use this program, copy it to your program library and change its name to DSQUXDT.

How a COBOL edit routine operates

The user edit program is called as a COBOL subprogram using a standard COBOL CALL statement. The following parameters are provided in the indicated order:

  1. DXEECS
  2. Input data
  3. Output data

An example procedure statement specifying parameters is as follows:

PROCEDURE DIVISION
        USING DXEECS, ECSINPT, ECSRSLT.
 

Return control to QMF using standard subprogram GOBACK statement.

Compiling DSQUXDT

Compile DSQUXDT (the edit exit program you have written). During the compile, QMF edit exit interface control block DXEECSC, located in QMF sample library QMF720.SDSQUSRE on OS/390.

Select COBOL compiler options as follows:

QMF distributes the user edit routine control block DXEECSC using quotes as literal delimiters. You must use the QUOTE compiler option if you use the DXEECSC control block as distributed by IBM.

After compiling DSQUXDT, place the resulting load module in the QMF720.SDSQLOAD library.

Using the language environment run time library

When you use the Language Environment run time library with QMF user edit exit programs, consider the following:

Assembling the run time options module

When you assemble the run time option macro IGZOPT, you must specify the COBOL run time option STAE=NO. (For the Language Environment options module, use TRAP=OFF in place of STAE=NO.) Include the resulting object module IGZEOPT in the QMF edit exit module DSQUEDIT.

Link-editing your program on OS/390

You create a new QMF edit exit module DSQUEDIT by including your edit exit program DSQUXDT with the IBM-supplied control module DSQUXIC, which is located in the QMF module library QMF720.SDSQLOAD. The module DSQUXIC must be specified as the entry point.

The module DSQUEDIT can be executed in either 24-bit or 31- bit addressing mode. QMF runs in 31-bit addressing mode and automatically switches to 24-bit addressing mode if the edit exit module DSQUEDIT has a 24-bit addressing mode.

Note
31-bit addressing mode is recommended.

Example statements for compiling and link-editing on OS/390

The following are example statements for compiling and link-editing your job for TSO or native OS/390).

For COBOL II
//samCOBOL JOB
//* Assemble run time option macro
//STEP1 EXEC PGM=IEV90,PARM='DECK,NOLOAD'
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSPUNCH DD DSN=&&TEMPOBJ(IGZEOPT),DISP=(,PASS),UNIT=SYSDA,
// SPACE=(TRK,(1,1,1)),DCB=(BLKSIZE=3120,LRECL=80,DSORG=PO)
//* Provide Access to Cobol run time option macro
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
//SYSIN DD *
      IGZOPT SYSTYPE=OS,STAE=NO
      END
//*
//STEP2      EXEC PROC=COB2UCL
//* Provide Access to QMF Edit Macro DXEECSC
//COB2.SYSLIB   DD  DSN=QMF720.SDSQUSRE,DISP=SHR
//COB2.SYSIN    DD  *
          .
          Your program or copy of QMF sample DSQUXDTC
          .
/*
//* Provide Access to QMF Interface Module
//LKED.QMFLOAD  DD DSN=QMF720.SDSQLOAD,DISP=SHR
//* Make sure COBOL library is concatenated after &&TEMPOBJ
//LKED.SYSLIB   DD DSN=&&TEMPOBJ,DISP=(OLD,PASS)
                DD DSN=COB2LIB,DISP=(OLD,PASS)
//LKED.SYSIN    DD  *
          INCLUDE QMFLOAD(DSQUXIC)
          INCLUDE SYSLIB(IGZEOPT)
          INCLUDE SYSLIB(IGZERRE)
          ENTRY DSQUXIC
          MODE  AMODE(31) RMODE(ANY)
          NAME  DSQUEDIT(R)
/*
For COBOL/370 or IBM COBOL for OS/390
//samCOBOL   JOB
//* Assemble run time option macro
//STEP1 EXEC PGM=IEV90,PARM='DECK,NOLOAD'
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSPUNCH DD DSN=&&TEMPOBJ(IGZEOPT),DISP=(,PASS),UNIT=SYSDA,
// SPACE=(TRK,(1,1,1)),DCB=(BLKSIZE=3120,LRECL=80,DSORG=PO)
//* Provide Access to Cobol run time option macro
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
//SYSIN DD *
      IGZOPT SYSTYPE=OS,STAE=NO
      END
//*
//STEP2      EXEC PROC=IGYWCL
//* Provide Access to QMF Edit Macro DXEECSC
//COBOL.SYSLIB  DD  DSN=QMF720.SDSQUSRE,DISP=SHR
//COBOL.SYSIN   DD  *
          .
          Your program or copy of QMF sample DSQUXDTC
          .
/*
//* Provide Access to QMF Interface Module
//LKED.QMFLOAD  DD DSN=QMF720.SDSQLOAD,DISP=SHR
//LKED.SYSLIB   DD ...
                DD DSN=&&TEMPOBJ,DISP=(OLD,PASS)
//LKED.SYSIN    DD  *
          INCLUDE QMFLOAD(DSQUXIC)
          INCLUDE SYSLIB(IGZEOPT)
          INCLUDE SYSLIB(IGZERRE)
          ENTRY DSQUXIC
          MODE  AMODE(31) RMODE(ANY)
          NAME  DSQUEDIT(R)
/*
[ Previous Page | Next Page | Contents | Index ]