| Date: | Thu, 22 Jan 2009 20:08:01 -0500 |
| Reply-To: | David Gelb <djgelb@HOTMAIL.COM> |
| Sender: | "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU> |
| From: | David Gelb <djgelb@HOTMAIL.COM> |
| Subject: | Re: Obtaining NOTIFY= in a batch MVS job? |
|---|
I looked on bit.listserv.ibm-main, and could not find
anything indicating that that parameter is in a Z/OS
data area/control block (though find needed data elements
in IBM's documentation of control blocks in notoriously
difficult).
In the context of someone asking about how to obtain
JCL SET= parameters from data area/control blocks, someone
answered "can't be done, data not stored in memory, only
in JES SPOOL", and someone else gave a sample on how
to scrape using SDSF.
I know what is below is ugly, but it seems to work:
**********************************************************
DATA _NULL_;
ASCBADDR=PEEK(548,4);
ASSBADDR=PEEK(ASCBADDR+336,4);
JSABADDR=PEEK(ASSBADDR+168,4);
JOBID=PEEKC(JSABADDR+20,8);
JOBNM=PEEKC(JSABADDR+28,8);
CALL SYMPUT('JOBID',COMPRESS(JOBID));
CALL SYMPUT('JOBNM',COMPRESS(JOBNM));
RUN;
FILENAME ISFIN '&TEMP1' RECFM=FB LRECL=80 ;
FILENAME ISFOUT '&TEMP2' RECFM=VB LRECL=450;
FILENAME REPORT '&TEMP3' RECFM=VB LRECL=180;
DATA _NULL_ ;
FILE ISFIN;
PUT "OWNER &SYSUID"
/ "PREFIX &JOBNM"
/ "DA "
/ "S &JOBNM &JOBID"
/ "F &JOBNM"
/ "++?"
/ "F JESJCL"
/ "++S"
/ "PRINT FILE REPORT"
/ "PRINT"
/ "PRINT CLOSE"
/ "END";
RUN ;
OPTIONS PARM='++120,450';
PROC SDSF;
RUN;
DATA _NULL_;
INFILE REPORT;
INPUT;
NPOS=INDEX(_INFILE_,'NOTIFY=');
IF NPOS>0 THEN DO;
LENGTH NSTRING $9;
NSTRING=SUBSTR(_INFILE_,NPOS+7,MIN(9,LENGTH(_INFILE_)-NPOS-6));
IF INDEX(NSTRING,',')>0 THEN COMMAPOS=INDEX(NSTRING,',');
ELSE COMMAPOS=LENGTH(NSTRING)+1;
NID=SUBSTR(NSTRING,1,COMMAPOS-1);
CALL SYMPUT('NID',COMPRESS(NID));
END;
RUN;
%PUT &NID;
********************************************************************
|