The output can be either in a legacy sequential dataset, or as a file in an exising UNIX subdirectory. Oh, if the dataset / UNIX file already exists, this code bypasses doing it again. This allows you to resubmit without worrying about reprocessing a job you've already done. It only processes JOBs/STCs/TSUs in the PRINT or OUTPUT queue. It runs only in a TSO TMP (interactive or batch). I may do something as a UNIX REXX program someday.
Invocation: JES2DISK jobname_or_prefix_with_a_* 'disk_hlq_or_UNIX_subdirectory' example: copy all ABC* jobs to ABC001.SPOOL.jobname.jobid dataset: JES2DISK ABC* 'ACB001.SPOOL' copy all ABC* jobs to /u/ACB001/sysout/jobname.jobid.txt: JES2DISK ABC* '/u/ACB001/sysout' I thought the .txt at the end of the UNIX filename would be helpful if downloaded to Windows. <program language='REXX'> /* REXX */ PARSE ARG JOBNAME HLQ . IF JOBNAME='' THEN JOBNAME='*' HLQ=STRIP(HLQ,'B',"'") IF HLQ='' THEN HLQ='SYSJO' XX=ISFCALLS('ON') ISFSORT='JOBID' ISFPREFIX=JOBNAME IF XX <> 0 THEN DO SAY 'ISFCALLS RC='XX RETURN XX END ADDRESS SDSF 'ISFEXEC ST (DELAYED)' IF RC <> 0 THEN DO SAY 'ISFEXEC RC='RC RETURN RC END DO IX=1 TO JNAME.0 /* "LISTALC SYSNAMES STATUS" */ IF QUEUE.IX <> 'PRINT' & , QUEUE.IX <> 'OUTPUT' , THEN ITERATE SAY 'JBN='JNAME.IX' JOBNUMBER='JOBID.IX' QUEUE='QUEUE.IX IF '/' = LEFT(HLQ,1) THEN DO SAY , 'CC=BPXWDYN("ALLOC DD(SYSJO) FILEDATA(TEXT) "'||, "PATH('"HLQ"/"JNAME.IX"."JOBID.IX".txt') " ||, " PATHMODE(SIRWXU) PATHOPTS(OEXCL,OCREAT,OWRONLY) " ||, " MSG(WTP)" CC=BPXWDYN("ALLOC DD(SYSJO) FILEDATA(TEXT) ", "PATH('"HLQ"/"JNAME.IX"."JOBID.IX".txt') ", " PATHMODE(SIRWXU) PATHOPTS(OEXCL,OCREAT,OWRONLY) ", " MSG(WTP)") END ELSE DO SAY , "ALLOC DDN(SYSJO) DSN('"HLQ"."JNAME.IX"."JOBID.IX"')", " RECFM(V B A) LRECL(255) BLKSIZE(27998) ", " NEW CATALOG SPACE(10,50) CYLINDERS RELEASE" "ALLOC DDN(SYSJO) DSN('"HLQ"."JNAME.IX"."JOBID.IX"')", " RECFM(V B A) LRECL(255) BLKSIZE(27998) ", " NEW CATALOG SPACE(10,50) CYLINDERS RELEASE" CC=RC END IF CC <> 0 THEN DO SAY "FAILED TO ALLOCATE "JNAME.IX"."JOBID.IX ITERATE END ADDRESS SDSF "ISFACT ST TOKEN('"TOKEN.IX"') PARM(NP SA)" DO JX=1 TO ISFDDNAME.0 DO FOREVER "EXECIO 10000 DISKR "ISFDDNAME.JX"(STEM LINE. " LINES = LINE.0 IF RC=2 THEN RC=0 IF RC <> 0 THEN DO SAY "LINES READ="LINES" RC="RC EXIT 12; END "EXECIO * DISKW SYSJO (STEM LINE." DROP LINE. IF LINES<10000 THEN LEAVE END "EXECIO 0 DISKR "ISFDDNAME.JX"(FINIS" END DROP ISFDDNAME. "EXECIO 0 DISKW SYSJO (FINIS" "FREE DDN(SYSJO)" END </program> John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * (817)-961-6183 cell john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html