/* REXX */ /* Extrae las fechas de inicio y fin de los jobs del spool (ST) */ /* Escrito por: JFG */ /* Fecha: 02/10/2017 */ rc=isfcalls('ON') /* Seleccionar las columnas que vamos a usar */ isfcols = "jname jobid queue timee datee timen daten" /* Filtrar las salidas por jobid JOB* y estado PRINT */ isffilter = "jobid eq JOB* queue eq PRINT" /* Relacion entre los filtros jobid y queue = AND */ isffiltermode = "AND" /* Ordenar por columnas St-Date y St-Time en ascendente */ isfsort = "datee A timee A" /* Accede al panel ST de SDSF. Opcion DELAYED para usar todas las columnas del panel. Opcion ALTERNATE para que funcione isfsort con los campos St-Date (datee) y St-Time (timee) */ Address SDSF "ISFEXEC ST (DELAYED ALTERNATE)" /* Comprobamos si se ha producido algun error en el acceso. */ lrc=rc if lrc<>0 then do call msgrtn exit 20 end /* Guardar el numero maximo de lineas y creamos la cabecera del fichero de salida. x2c(05)->Es la tabulacion en hexadecimal al exportar a Excel */ numrows=isfrows cabecera="JobName "||x2c(05)||"JobID "||x2c(05)||"F Inicio "||, x2c(05)||"H Inicio "||x2c(05)||"F Fin "||x2c(05)||"H Fin" /* Guardar la cabecera en una cola para escribirla en fichero */ queue cabecera /* Recorrer los jobs del panel ST*/ do ix=1 to numrows /* Formatear fecha incio a dd/mm/yyyy */ fechaI=fechaGre(DATEE.ix) /* Formatear fecha fin a dd/mm/yyyy */ fechaF=fechaGre(DATEN.ix) /* Guardar JobName JobID Fecha y Hora de inicio y fin */ datos=JNAME.ix||x2c(05)||JOBID.ix||x2c(05)||fechaI||, x2c(05)||TIMEE.ix||x2c(05)||fechaF||x2c(05)||TIMEN.ix /* Guardar los datos en una cola para escribir en fichero */ queue datos end rc=isfcalls('OFF') Address TSO "PROFILE NOPREFIX" /* Comprobar si existe la libreria de salida */ LIBRERIA=SYSDSN(USERID().JOBS.SPOOL) if LIBRERIA <> "OK" then do /* Si no existe, la crea */ "ALLOCATE F(FICH) DA("USERID()".JOBS.SPOOL) NEW TRACKS DSORG(PS) SPACE(2,2) RECFM(F,B) LRECL(80) BLKSIZE(800)" "FREE F(FICH)" end /* Grabar la informacion de la cola en la libreria de salida */ "ALLOCATE F(FICH) DA("USERID()".JOBS.SPOOL) OLD" "EXECIO "queued()" DISKW FICH (FINIS" "FREE F(FICH)" Say "Comprobar salida en libreria "USERID()".JOBS.SPOOL" Exit /* Funcion para formatear la fecha juliana a dd/mm/yyyy */ fechaGre: PARSE ARG fecha /* Formatear de yyyy.ddd a yyddd */ fecha=Translate('34678',fecha,'12345678') /* Pasar fecha juliana a yyyymmdd */ fecha=DATE('S',fecha,'J') /* Formatear fecha yyyymmdd a dd/mm/yyyy */ fecha=Translate('78/56/1234',fecha,'12345678') return fecha /* Subrutina generica para controlar los errores */ msgrtn: procedure expose isfmsg isfmsg2. /* The isfmsg variable contains a short message */ if isfmsg<>"" then Say "isfmsg is:" isfmsg /* The isfmsg2 stem contains additional descriptive */ /* error messages */ do ix=1 to isfmsg2.0 Say "isfmsg2."ix "is:" isfmsg2.ix end return