Marc ...
Hi!
I copied this from one of our developers, substituting my RACF ID (#KENT) with hers, and changing the output data set:
[tt]
//JOBCARD JOB (0331,0000,'KENT'),'KENT STOKES - OCE',
// CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//PROCS JCLLIB ORDER=(#KENT.JCL.LIB)
//STEP00 EXEC PGM=IEFBR14
//DEL1 DD DSN=#KENT.JOBCARD.OUTPUT,
// DISP=(MOD,DELETE,DELETE),
// SPACE=(CYL,(0))
//STEP01 EXEC QMFBATCH
//*DSQPRINT DD SYSOUT=0,DEST=N4R151,HOLD=YES,
//* DCB=(RECFM=FBA,LRECL=133,BLKSIZE=1330)
//DSQPRINT DD DSN=#KENT.JOBCARD.OUTPUT,
// DISP=(NEW,CATLG,DELETE),
// UNIT=RESDA,
// SPACE=(CYL,(60,15),RLSE),
// BLKSIZE=26600
//DSQDEBUG DD SYSOUT=*,
// DCB=(RECFM=FBA,LRECL=121,BLKSIZE=1210)
//SYSTSIN DD *
//*DSQPRINT DD SYSOUT=0,DEST=N4R151,HOLD=YES,
//* DCB=(RECFM=FBA,LRECL=133,BLKSIZE=1330)
//DSQPRINT DD DSN=#KENT.JOBCARD.OUTPUT,
// DISP=(NEW,CATLG,DELETE),
// UNIT=RESDA,
// SPACE=(CYL,(60,15),RLSE),
// BLKSIZE=26600
//DSQDEBUG DD SYSOUT=*,
// DCB=(RECFM=FBA,LRECL=121,BLKSIZE=1210)
//SYSTSIN DD *
EXECUTIL SEARCHDD(YES)
ISPSTART PGM(DSQQMFE) NEWAPPL(DSQE)
PARM(M=B,S=DBP1,P=QMF311 +
I=RCX1.PSTA315T(&C1='2003-04-21'))
//* [/tt]
It’s funny you mentioned the QMFBATCH because when I copied the developers JCL, I noticed the EXEC PGM=QMFBATCH so I copied this from her library too:
[tt]
//QMFBATCH PROC
//*
//STEP01 EXEC PGM=IKJEFT01,DYNAMNBR=25,REGION=8M
//*
//*STEPLIB DD DISP=SHR,DSN=DBP1.USER.DSNEXIT
//STEPLIB DD DISP=SHR,DSN=SYS1.DB2.SDSNEXIT
// DD DISP=SHR,DSN=SYS1.DB2.SDSNLOAD
// DD DISP=SHR,DSN=DBP1.SDSQLOAD
// DD DISP=SHR,DSN=VLM.C1.PRODLOAD
//SYSPROC DD DSN=VLM.C1.PRODCLST,DISP=SHR
//SYSEXEC DD DSN=VLM.C1.PRODREXX,DISP=SHR
// DD DSN=DBP1.SDSQEXCE,DISP=SHR
//ISPPLIB DD DSN=DBP1.SDSQPLBE,DISP=SHR
// DD DSN=SYS1.ISP.SISPPENU,DISP=SHR
//ISPMLIB DD DSN=DBP1.SDSQMLBE,DISP=SHR
// DD DSN=SYS1.ISP.SISPMENU,DISP=SHR
//ISPSLIB DD DSN=DBP1.SDSQSLBE,DISP=SHR
// DD DSN=SYS1.ISP.SISPSENU,DISP=SHR
//ISPTLIB DD DSN=SYS1.ISP.SISPTENU,DISP=SHR
//ISPPROF DD UNIT=SYSDA,SPACE=(TRK,(9,1,4)),
// DCB=(LRECL=80,BLKSIZE=3120,RECFM=FB)
//ADMGGMAP DD DSN=DBP1.DSQMAPE,DISP=SHR
//SYSUDUMP DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//DSNDUM DD DUMMY
//DSQPRINT DD SYSOUT=*,
// DCB=(RECFM=FBA,LRECL=133,BLKSIZE=23408)
//DSQDEBUG DD SYSOUT=*,
// DCB=(RECFM=FBA,LRECL=121,BLKSIZE=23474)
//DSQUDUMP DD SYSOUT=*,
// DCB=(RECFM=VBA,LRECL=125,BLKSIZE=23375)
//DSQSPILL DD UNIT=SYSDA,SPACE=(CYL,(50,50),RLSE),
// DCB=(RECFM=F,LRECL=4096,BLKSIZE=4096).
[/tt]
Now I looked at the JCL at the link you provided, but there is so much there that it totally blows me away (sorry, I really don't know that much about JCL).
As for the PARM variable (not sure if it's referred to as a variable), I have:
[tt]
M=B,
S=DBP1,
P=QMF311,
I=RCX1.PSTA315T
&C1='2003-04-21'[/tt]
I assume the plus sign (+) at the end of each line tells the JCL that the variable continues on the next line? From your explanation, I understand that M represents batch mode and S is the DB2 subsystem. However the JCL I copied has a P= which I don't know what that represents. The name of the first QMF proc is RCX1.PSTA315T which contains a date variable which prompts the user, &RPT_DT. The reason I used &C1 was because when the job failed (condition code 0016) the error log shows:
[tt]
USERID: #KENT
AUTHORIZATION-ID: #KENT
MESSAGE NUMBER: DSQ20933
MESSAGE TEXT:
You cannot use = with RUN.
&C1: RUN
&C2: = [/tt]
My QMF proc is pretty simple, its:
[tt]
RUN RCX1.SETGLBL
RUN RCX1.QSTA315D (F RCX1.FSTA315D[/tt]
Where RCX1.SETGLBL:
[tt]
SET PROFILE (CA=UPPER,CO=YES,D=PERIOD,LA=SQL,LE=60,P=' ',W=132)
SAVE PROFILE
SET GLOBAL (A=(') PERCENT_SIGN=%)[/tt]
And RCX1.QSTA315D:
[tt]
SELECT DISTINCT
C.REQST_TYP_DESC,
A.USER_NM,
B.USER_ID,
B.REQST_ID,
D.REQST_RSN_DESC,
B.CMNT,
DATE(B.CHG_DT) AS CHG_DT
FROM RCX1.VUSER_SECRY_PROF AS A,
RCX1.VUSER_SECRY_MAINTC AS B,
RCX1.VUSER_MAINTC_TYP AS C,
RCX1.VUSER_MAINTC_RSN AS D
WHERE A.USER_ID = B.USER_ID
AND B.REQST_TYP = C.REQST_TYP
AND B.REQST_RSN = D.REQST_RSN
AND DATE(B.CHG_DT) = &A&RPT_DT&A
ORDER BY 1, 2; [/tt]
Sorry for the long message, I greatly appreciate your help!
Kent
