The QMF edit exit interface of COBOL consists of these parts:
Figure 173 shows the program structure of a COBOL edit exit routine
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.
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:
An example procedure statement specifying parameters is as follows:
PROCEDURE DIVISION USING DXEECS, ECSINPT, ECSRSLT.
Return control to QMF using standard subprogram GOBACK statement.
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:
Specify compiler options RENT, RES, NODYNAM, OBJECT, and LIB.
Specify compiler options OBJECT, LIB, RENT, and NODYNAM.
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.
When you use the Language Environment run time library with QMF user edit exit programs, consider the following:
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.
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.
The following are example statements for compiling and link-editing your job for TSO or native 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=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) /*
//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 ]