After you write your program, you need to compile and run it. The examples listed in this section show the steps necessary to do so.
QMF does not ship the REXX EXEC, JCL, or CLIST in these examples, but you can copy them from here, altering them to suit your installation.
When you translate, compile, and link-edit a program that uses the QMF callable interface, consider the following:
The following is an example using the CICS-supplied procedure DFHEBTPL. For instructions on how to use this procedure, see your release of CICS for VSE/ESA System Definition Guide.
//samPLI JOB // EXEC PROC=DFHEBTPL //TRN.SYSIN DD * *PROCESS XOPTS(CICS translator options .....) . Your program or copy of QMF sample DSQABFP . /* //* Provide Access to QMF Communications Macro DSQCOMML //PLI.SYSLIB DD DSN=QMF720.SDSQSAPE,DISP=SHR //* Provide Access to QMF Interface Module //LKED.QMFLOAD DD DSN=QMF720.SDSQLOAD,DISP=SHR //LKED.SYSIN DD * INCLUDE CICSLOAD(DFHPL1OI) INCLUDE CICSLOAD(DFHEPI) INCLUDE QMFLOAD(DSQCIPL) INCLUDE QMFLOAD(DSQCIPX) ORDER DFHPL1OI,DFHEPI ENTRY sampPLI MODE AMODE(31) RMODE(ANY) NAME sampPLI(R) /*
The VSE job control in Figure 61 is an example of installing a PL/I program into CICS running on VSE. This example, provided with QMF, is located in the QMF sublibrary and is named DSQ3CIP.Z. See the CICS for VSE/ESA System Definition Guide and the PL/I VSE Programming Guide for detailed information.
..* $$ JOB JNM=DSQ3CIP,DISP=D,CLASS=0 // JOB DSQ3CIP Sample job to Install QMF Callable Interface (PL/I) * -------------------------------------------------------------------- * Install QMF Callable Interface Example (PL/I) * --------------------------------------------------------------------- // SETPARM VOLID=volid *-- update volid for syspch // SETPARM START=rtrk *-- update start track/block (syspch) // SETPARM SIZE=ntrks *-- update number of tracks/blocks (syspch) * --------------------------------------------------------------------- // DLBL IJSYSPH,'CICS.TRANSLAT.OUTPUT',0 // EXTENT SYSPCH,,1,0,&START,&SIZE ASSGN SYSPCH,DISK,VOL=&VOLID,SHR * Library search chain must contain the QMF, CICS and PL/I sublibrary // LIBDEF *,SEARCH=(PRD2.PROD,PRD1.BASE,PRD2.CONFIG) // LIBDEF PHASE,CATALOG=PRD2.PROD * -------------------------------------------------------------------- * Step 1: Translate callable interface program (PL/I) * --------------------------------------------------------------------- * You may need to update or remove the SLI statement for your program. * --------------------------------------------------------------------- // EXEC DFHEPP1$,SIZE=256K,PARM='XOPTS(CICS)' ..* $$ SLI MEM=DSQABFP.Z,S=PRD2.PROD /* * --------------------------------------------------------------------- * Step 2: Compile callable interface program (PL/I) * --------------------------------------------------------------------- CLOSE SYSPCH,00D // DLBL IJSYSIN,'CICS.TRANSLAT.OUTPUT',0 // EXTENT SYSIPT ASSGN SYSIPT,DISK,VOL=&VOLID,SHR // OPTION NODECK,CATAL PHASE DSQABFP,* INCLUDE DFHPL1I // EXEC PLIOPT CLOSE SYSIPT,SYSRDR /*
* --------------------------------------------------------------------- * Step 3: Link-edit callable interface program (PL/I) * --------------------------------------------------------------------- // EXEC LNKEDT,PARM='AMODE=31,RMODE=ANY' /* /& // JOB RESET ASSGN SYSIPT,SYSRDR IF 1A93D, CLOSE SYSIPT,SYSRDR ASSGN SYSPCH,00D IF 1A93D, CLOSE SYSPCH,00D /& ..* $$ EOJ