The QMF edit exit interface for Assembler consists of these parts:
Figure 71 shows the program structure of an Assembler edit exit routine for native z/OS, TSO, or ISPF.
The IBM-supplied sample edit program for Assembler, DSQUXDTA, is located in the QMF810.SDSQSAPE library for z/OS. The sample program is commented so that you can modify it to suit your needs. If you plan to use this example program, copy it to your program library and change its name to DSQUXDT. Near the bottom of this file is a COPY statement for DXEECSA. which is a member of DSQUSERE MACLIB on z/OS. DXEECSA defines the input fields, giving them the names we are using in this chapter.
The user edit program is called as a subroutine in TSO and native z/OS using a standard Assembler CALL statement. Linkage obeys the standard IBM calling conventions. On entry to your edit exit program, the following conditions exist:
An Assembler DSECT for DXEECS is shipped with QMF as DXEECSA, located in library QMF810.SDSQUSRE on z/OS. Include this DSECT in your program using the Assembler COPY statement.
Return control to QMF in the standard convention by restoring registers to their value at the time of the call and then returning to the address in register 14.
In the example program, the addresses are placed in registers 8, 9, and 10 through the statements:
ECSPTR EQU R10 L ECSPTR,0(R1) USING DXEECS,ECSPTR ECSINPTP EQU R9 L ECSINPTP,4(R1) USING ECSINPT,ECSINPTP ECSRSLTP EQU R8 L ECSRSLTP,8(R1) USING ECSRSLT,ECSRSLTP
The USING statements refer to the DSECTs defined in DXEECSA. These define the three parameters and their input-field components.
It follows that registers 10, 9, and 8 point, respectively, at the control block, the value to be formatted, and the storage reserved for the formatted results.
Return control to QMF using the standard convention by restoring the registers to their value at the time of the call, and returning to the address in register 14.
The interface control block between QMF and the user edit interface DSQUXDT is DXEECS. It contains the user's edit code, identifies the source data and the target location for the edited result, and provides a scratchpad area for the user edit routine's use. This control block is persistent between calls to the user edit routine. The scratchpad area is not modified by QMF after the initial invocation of the exit routine.
During the Assembler, QMF edit exit interface control block DXEECSA, located in QMF sample library QMF810.SDSQUSRE in TSO or native z/OS, must be available in a macro library.
Create a new QMF edit exit module DSQUEDIT by including your edit program DSQUXDT with the IBM-supplied control module DSQUXIA, which is located in the QMF module library QMF810.SDSQLOAD. The IBM-supplied control module DSQUXIA 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. We recommend the 31-bit addressing mode.
The following are example statements for assembling and link-editing your job for TSO or native z/OS:
//sampasm JOB //STEP1 EXEC PROC=ASMHCL //* Provide Access to QMF Edit Macro DXEECSA //C.SYSLIB DD DSN=QMF810.SDSQUSRE,DISP=SHR //C.SYSIN DD * . Your program or copy of QMF sample DSQUXDTA . /* //* Provide Access to QMF Interface Module //L.QMFLOAD DD DSN=QMF810.SDSQLOAD,DISP=SHR //L.SYSIN DD * INCLUDE QMFLOAD(DSQUXIA) ENTRY DSQUXIA MODE AMODE(31) RMODE(ANY) NAME DSQUEDIT(R) /*