RCSPC - Precompile a REXX SQL Exec for RLX/Compile
RLX
/CompileDescribes the RCSPC - Precompile a REXX SQL exec for
RLX
/Compile procedure.The RCSPC procedure in the following example is composed of the following four steps:
(1)
(2)
RLX
source procedure.(3)
(4)
//*--------------------------------------------------------------------- //* (C) COPYRIGHT RELATIONAL ARCHITECTS INTL. //* LICENSED MATERIAL - PROGRAM PROPERTY RELATIONAL ARCHITECTS INTL //*--------------------------------------------------------------------- //* RLX/COMPILE - COMPILE REXX SQL EXECS TO PRODUCE //* RLX SQL REQUEST MODULES //*--------------------------------------------------------------------- //RCSPC PROC RLXLOAD='RAI.Rvrm.CRAILOAD, ** RLX SYSTEM LOADLIB // RLXEXEC='RAI.Rvrm.CRAIEXEC, ** RLX SYSTEM EXEC LIB // RLXMLIB='RAI.Rvrm.CRAIMSG', ** RLX ISPF MSG LIB // RLXSLIB='RAI.Rvrm.CRAISKEL, ** RLX ISPF SKEL LIB // RLXMACS='RAI.Rvrm.CRAIMACS, ** RLX MACRO LIBRARIES // RLXCNTL='RAI.Rvrm.CRAIJCL', ** RLX CONTROL LIBRARY // RCSIN='USER.EXEC', ** SOURCE EXEC LIBRARY // RCSEXEC='USER.RCSEXEC', ** PREPROCESSED REXX EXEC // RCSOBJ='USER.RCSOBJ', ** USER SQL REQUESTOR OBJ // RCSDBRM='USER.DBRMLIB', ** USER DBRMLIB // DSNLOAD='DSN.SDSNLOAD', ** Db2 LOAD LIBRARY // DSNLINK='DSN.SDSNLINK', ** Db2 LOAD LIB // SQLEXEC=SQLEXEC, ** NAME OF THE RLX EXEC // SQLREQ=SQLREQ ** SQL REQUESTOR MODULE //*------------------------------------------------------------------ //* PRECOMPILE THE RLX COMMAND PROCEDURE //*------------------------------------------------------------------ //RCSP EXEC PGM=RCSP,REGION=2M,COND=(4,LT) //STEPLIB DD DSN=&RLXLOAD,DISP=SHR //RCSIN DD DSN=&RCSIN,DISP=SHR //RCSOUT DD DSN=&RCSEXEC(&SQLEXEC),DISP=SHR //RCSEXTR DD DSN=&RCSRRM(&SQLEXEC),UNIT=SYSDA,SPACE=(CYL,(10,1,1)), // DISP=(NEW,PASS),DCB=(LRECL=84,RECFM=VB,BLKSIZE=3120) //SYSTSPRT DD SYSOUT=* //RCSERROR DD SYSOUT=* //RCSFMT DD SYSOUT=* //*RCSAUX DD *,DCB=(LRECL=80,BLKSIZE=80) //*-------------------------------------------------------------------- //* COMPILE EXTRACTED SQL STATEMENTS AND GENERATE SQL REQUEST MODULE //*-------------------------------------------------------------------- //RCSC EXEC PGM=IKJEFT01,COND=(4,LT),REGION=7M //STEPLIB DD DSN=&RLXLOAD,DISP=SHR // DD DSN=&DSNLOAD,DISP=SHR // DD DSN=&DSNLINK,DISP=SHR //RCSEXTR DD DSN=&RCSRRM,DISP=(OLD,DELETE) //SYSPROC DD DSN=&RLXEXEC,DISP=SHR //ISPMLIB DD DSN=&RLXMLIB,DISP=SHR //RCSFTS DD DSN=&RLXSLIB,DISP=SHR //RCSASM0 DD DSN=&ASM0,UNIT=SYSDA,SPACE=(CYL,(10,1)), // DISP=(NEW,PASS) /WORK FILE 0 //RCSASM1 DD DSN=&ASM1,UNIT=SYSDA,SPACE=(CYL,(10,1)), // DISP=(NEW,PASS) /WORK FILE 1 //RCSASM2 DD DSN=&ASM2,UNIT=SYSDA,SPACE=(CYL,(10,1)), // DISP=(NEW,PASS) /WORK FILE 2 //RCSASM3 DD DSN=&ASM3,UNIT=SYSDA,SPACE=(CYL,(10,1)), // DISP=(NEW,PASS) /WORK FILE 3 //RCSASM DD DSN=&GSOURCE,UNIT=SYSDA,SPACE=(CYL,(10,1)), // DISP=(NEW,PASS) /GENERATED ASM SOURCE MOD //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DSN=&CRAIJCL(RCSCIN),DISP=SHR //*-------------------------------------------------------------------- //* RUN THE RLX/COMPILE GENERATED ASM SOURCE MODULE //* THROUGH THE STANDARD Db2 PRECOMPILER //*-------------------------------------------------------------------- //DSNHPC EXEC PGM=DSNHPC,REGION=4096K,COND=(4,LT), // PARM='HOST(ASM),XREF,DATE(ISO),TIME(ISO),SOURCE' //STEPLIB DD DSN=&DSNLOAD,DISP=SHR // DD DSN=&DSNLINK,DISP=SHR //SYSLIB DD DUMMY //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSIN DD DSN=&GSOURCE,DISP=(OLD,DELETE) //SYSCIN DD DSN=&TSOURCE,UNIT=SYSDA,SPACE=(CYL,(10,1)), // DISP=(NEW,PASS) /TRANSLATED SOURCE MODULE //DBRMLIB DD DSN=&RCSDBRM(&SQLEXEC),DISP=SHR //*-------------------------------------------------------------------- //* ASSEMBLE THE Db2 PRECOMPILED SQL REQUESTOR SOURCE MODULE //*-------------------------------------------------------------------- //ASM EXEC PGM=IEV90,COND=(4,LT),PARM=(DECK,NOOBJ,TERM,BATCH,RENT, // 'SYSPARM=1111110110011'),REGION=2M,COND=(4,LT) //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR // DD DSN=&RLXMACS,DISP=SHR //SYSUT1 DD DSN=&SYSUT1,UNIT=SYSDA,SPACE=(1700,(600,100)) //SYSUT2 DD DSN=&SYSUT2,UNIT=SYSDA,SPACE=(1700,(300,50)) //SYSUT3 DD DSN=&SYSUT3,UNIT=SYSDA,SPACE=(1700,(300,50)) //SYSTERM DD SYSOUT=*,DCB=BLKSIZE=1089 //SYSPRINT DD SYSOUT=*,DCB=BLKSIZE=1089 //SYSIN DD DSN=&TSOURCE,DISP=(OLD,DELETE) /* FROM Db2 PRECOMPILE //SYSPUNCH DD DSN=&RCSOBJ(&SQLREQ),DISP=SHR
The next sample illustrates the invocation of the RCSPC catalogued procedure which processes the original REXX exec to produce a Db2 DBRM and an object module. The numbers in the right margin correspond to the following numbered paragraphs:
(1)
(2)
(3)
(4)
(5)
//JOB JOB (PARMS) //STEP1 EXEC RCSPC,// RCSIN='EXAMPLE.REXX.EXEC',(1)// SQLEXEC=EXAMPLE,(2)// SQLREQ=EXAMPLE(3)//RCSP.RCSPARMS DD *(4)NAME(EXAMPLE)(5)