For those that cannot get to the code, here it is
[>] 
/* REXX */
PARSE ARG JOBNAME HLQ .
NUMERIC DIGITS 12
IF JOBNAME='' THEN JOBNAME='*'
HLQ=STRIP(HLQ,'B',"'")
IF HLQ='' THEN HLQ='SYSJO'
IF '/' = LEFT(HLQ,1) THEN DO
   if syscalls('ON')>3 then
      do
      say 'Unable to establish the SYSCALL environment'
      return
      end
end
XX=ISFCALLS('ON')
IF XX <> 0 THEN DO
   SAY 'ISFCALLS RC='XX
   RETURN XX
END
ISFSORT='JOBID'
ISFPREFIX=JOBNAME
ISFOWNER='*'
ISFFILTER=''
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"  */
   SAY 'JBN='JNAME.IX' JOBNUMBER='JOBID.IX' QUEUE='QUEUE.IX
   IF QUEUE.IX <> 'PRINT' & ,
      QUEUE.IX <> 'OUTPUT'  ,
   THEN ITERATE
   IF '/' = LEFT(HLQ,1) THEN DO
      DATEE=DATEE.IX
      TIMEE=TIMEE.IX
      IF DATEE="N/A" | TIME="N/A" THEN DO
         DATEE=DATE("S")    /* YYYYMMDD */
         TIMEE=TIME("N")    /* HH:MM:SS */
      END
      ELSE DO
         PARSE VAR DATEE YY '.' DDD
         YY=RIGHT(YY,4,'0')
         IF 0=DATATYPE(YY,"W")* ,
              DATATYPE(DDD,"W")
         THEN DO
              TIMEE=TIMER.IX
              DATEE=DATER.IX
              PARSE VAR DATEE YY '.' DDD
              YY=RIGHT(YY,4,'0')
              END
         TIMEE=LEFT(TIMEE,8) /* HH:MM:SS */
         DATEE=DDD+DATE("B",YY"0101","S")-1
         DATEE=DATE('S',DATEE,'B')
      END
      /* calculate POSIX epoch time
         number of seconds since midnight on Jan 1, 1970
      */
      PARSE VAR DATEE 1 YYYY 5 MM 7 DD
      mtime=DATE('B',DATEE,'S')-DATE('B',"19700101",'S')
      DATEE=YYYY"-"MM"-"DD
      PARSE VAR TIMEE HH ":" M2 ":" SS
      mtime= SS+60*(M2+60*(HH+24*mtime))
      /* mtime is used in utime for setting the modified time */
      RFC3339=DATEE"T"TIMEE
      /* RFC3339 is the Job Start time in RFC3339 format */
      /* Except that it is LOCAL time instead of UTC */
      PATH=HLQ"/"JNAME.IX"."JOBID.IX"."RFC3339".txt"
      SAY ,
      "ALLOC DD(SYSJO) FILEDATA(TEXT) ",
         "PATH('"PATH"') " ,
         " RECFM(V B A) LRECL(255) BLKSIZE(27998) ",
         " REUSE ",
         " FILEDATA(TEXT) ",
         " PATHMODE(SIRWXU) PATHOPTS(OEXCL,OCREAT,OWRONLY)"
      "ALLOC DD(SYSJO) FILEDATA(TEXT) ",
         "PATH('"PATH"') " ,
         " RECFM(V B A) LRECL(255) BLKSIZE(27998) ",
         " REUSE ",
         " FILEDATA(TEXT) ",
         " PATHMODE(SIRWXU) PATHOPTS(OEXCL,OCREAT,OWRONLY)"
      CC=RC
   END
   ELSE DO
      PATH=''
      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" RC="CC
      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)"
   IF PATH<>'' THEN DO
      address syscall "chmod (PATH) 444"
      SAY PATH MTIME
      address syscall "utime (PATH) " mtime mtime
      END
END


Lizette Koehler
statistics: A precise and logical method for stating a half-truth inaccurately

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to