The CEEPIPI Language Environment interface and PL/I edit routines for TSO, ISPF, or native z/OS

Follow these instructions for using the CEEPIPI Language Environment® interface to write a QMF edit routine that runs in TSO, ISPF, or native z/OS®.

This interface consists of the following parts:

  • Interface control structure DXEECS

    This control structure is shipped with QMF as DXEECSP. The control structure is passed on all calls to the edit exit program. It contains status and communications information between QMF and the edit exit routine. It also contains information about the data to be formatted as well as a pointer to where the formatted result is stored.

    For more information about the DXEECS control structure, see copy file DXEECSP, which is in the QMF1310.SDSQUSRn library (where n is a 1-character identifier that represents your national language).

  • A control program named DSQUXILE, which is shipped with QMF

    DSQUXILE must be the main entry point to the QMF edit exit module, DSQUEDIT. DSQUXILE is in the QMF module library, QMF1310.SDSQLOAD. The DSQUXILE control program calls the CEEPIPI program to initialize the Language Environment and to terminate the Language Environment when the QMF session ends. The DSQUXILE control program calls the user exit program, DSQUXDT, by calling the CEEPIPI program and specifying execution of the DSQUXDT program.

  • Your edit exit program

    The example edit exit program for PL/I, named DSQUXDTP, is in the QMF1310.SDSQSAPn library (where n is a 1-character identifier that represents your national language). 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 private program source library and change its name to DSQUXDT.

  • Language Environment preinitialization service program, which is named CEEPIPI

The following figure shows the program structure of a PL/I edit exit routine that uses the CEEPIPI Language Environment interface.

Figure 1. Program structure of a PL/I edit exit routine written with the CEEPIPI Language Environment interface
This figure has two large vertical rectangles: the rectangle on the left is labeled "QMF Main Module," which is DSQQMF; the one on the right is labeled "QMF Edit Exit Module," which is DSQUEDIT. The entry to DSQUEDIT is shown as DSQUXILE. Below DSQUXILE are two boxes that are stacked vertically; between them is a line labeled "Standard call to the Language Environment". The box on the top is labeled "QMF Control Program – IBM-supplied – DSQUXILE"; the box on the bottom is labeled "CEEPIPI – User Edit Exit Program – DSQUXDT". An arrow that is labeled "Call" points from the main module to the edit exit module and an arrow labeled "Return" points from the edit exit module to the main module.

Statements for calling your program and returning control to QMF

QMF calls your edit exit routine as a PL/I program by calling the CEEPIPI program and specifying execution of DSQUXDT. The following parameters are provided in the indicated order:
DSQUXDT:
    PROCEDURE(DXEECSF,ECSINPTF,ECSRSLTF) OPTIONS(REENTRANT);
 

Return control to QMF by using a standard RETURN statement.

Compiling DSQUXDT

Compile your edit exit program by specifying REENTRANT as a procedure option. See Statements for calling your program and returning control to QMF for the proper syntax of the PROCEDURE statement.

During the compilation, QMF edit exit interface control block DXEECSP, in the QMF1310.SDSQUSRn library (where n is a 1-character identifier that represents your national language), must be available in the SYSLIB allocation.

Link-editing your program

Create a new QMF edit exit module (DSQUEDIT) by including your edit program (DSQUXDT) with the control module (DSQUXILE), in QMF module library QMF1310.SDSQLOAD. DSQUXILE must be specified as the entry point.

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 edit exit module DSQUEDIT has a 24-bit addressing mode.

Thirty-one bit addressing mode is recommended.

These statements show examples for assembling and link-editing your job for TSO, ISPF, or native z/OS. If your edit routine formats decimal floating-point data, you need to add the ARCH(7) and FLOAT(DFP) compiler options. Before you run this job, create the load library that is referenced in the SYSLMOD statement; the user edit exit module will reside in this library.

Figure 2. Example statements for compiling and link-editing a PL/I routine that was written with the CEEPIPI Language Environment interface
//samPLI  JOB                                    
//STEP1 EXEC PROC=IBMZCPL                                      
//* Provide access to QMF edit macro DXEECSP 
//PLI.SYSLIB DD  DSN=QMF1310.SDSQUSRE,DISP=SHR 
//PLI.SYSIN   DD  *
               .
               .
               .
               Your PL/I edit exit program DSQUXDT
               or copy of sample program DSQUXDTP
               that has been renamed to DSQUXDT
               .
               .
               .
               If your edit routine formats decimal
               floating-point data, add ARCH(7) and 
               FLOAT(DFP) compiler options here.               
/*
//* Provide access to QMF interface module DSQUXILE
//LKED.QMFLOAD  DD DSN=QMF1310.SDSQLOAD,DISP=SHR
//LKED.SYSLMOD DD DSN=USER.LOADLIB,DISP=SHR                  
//LKED.SYSIN DD *                                              
          INCLUDE QMFLOAD(DSQUXILE)                            
          ENTRY DSQUXILE                                       
          MODE AMODE(31) RMODE(ANY)                            
          NAME DSQUEDIT(R)                                     
/*