Writing an edit routine for native OS/390, TSO, or ISPF

The QMF edit exit interface for Assembler consists of these parts:

Figure 161 shows the program structure of an Assembler edit exit routine for native OS/390, TSO, or ISPF.

Figure 161. Program structure of an Assembler edit exit routine for TSO, native OS/390,
QMF Main Module DSQQMF points to QMF Edit Exit Module  DSQUEDIT Entry: DSQUXIA
via Call. QMF Edit Exit Module which contains QMF Control  Program IBM-supplied
DSQUXIA and User exit edit program DSQUXDT, points to QMF Main  Module via
Return.

Example program DSQUXDTA

The IBM-supplied sample edit program for Assembler, DSQUXDTA, is located in the QMF720.SDSQSAPE library for OS/390. 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 OS/390. DXEECSA defines the input fields, giving them the names we are using in this chapter.

How an Assembly edit routine interacts with native OS/390

The user edit program is called as a subroutine in TSO and native OS/390 using a standard Assembly CALL statement. Linkage obeys the standard IBM calling conventions. On entry to your edit exit program, the following conditions exist:

An Assembly DSECT for DXEECS is shipped with QMF as DXEECSA, located in library QMF720.SDSQUSRE on OS/390 or in DSQUSERE MACLIB on CMS. Include this DSECT in your program using the Assembly 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.

How an Assembly edit routine interacts with QMF

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.

Assembling and link-editing your program on OS/390

During the assembly, QMF edit exit interface control block DXEECSA, located in QMF sample library QMF720.SDSQUSRE in TSO or native OS/390, 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 QMF720.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.

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

The following are example statements for assembling and link-editing your job for TSO or native OS/390:

//sampasm    JOB
//STEP1      EXEC PROC=ASMHCL
//* Provide Access to QMF Edit Macro DXEECSA
//C.SYSLIB   DD  DSN=QMF720.SDSQUSRE,DISP=SHR
//C.SYSIN    DD  *
          .
          Your program or copy of QMF sample DSQUXDTA
          .
/*
//* Provide Access to QMF Interface Module
//L.QMFLOAD  DD DSN=QMF720.SDSQLOAD,DISP=SHR
//L.SYSIN    DD  *
          INCLUDE QMFLOAD(DSQUXIA)
          ENTRY DSQUXIA
          MODE  AMODE(31) RMODE(ANY)
          NAME  DSQUEDIT(R)
/*
[ Previous Page | Next Page | Contents | Index ]