Attachments:
File | Description | File size |
Datos Spool | Rexx datos spool | 3 kB |
Datos Spool NUEVA VERSIÓN | Incluye campos fecha y hora de entrada a spool, MAX-RC. Se añade OWNER * y PREFIX ** | 3 kB |
NOTA: Se añade versión nueva del código para añadir los campos, fecha y hora de entrada al spool y MAX-RC.
Esta ocasión vamos a sacar datos de los jobs que se encuentren en el spool usando REXX. Los datos que sacaremos serán la fecha de inicio y fin de los jobs, no incluye STCs, que hayan terminado de ejecutarse.
El código, con comentarios, es el siguiente:
/* 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 cre */ "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
|
Guardamos el código en una librería que queramos. Si queremos ejecutarlo mediante el comando “TSO DATOSSPL”, debemos guardarlo en una librería que tengamos concatenada en la DD SYSPROC del procedimiento de logon de ISPF que estemos usando. También podemos guardarlo en una librería de usuario y ejecutarlo mediante “exec”.
Usamos el comando “TSO DATOSSPL”.
Saldrá un mensaje indicando “Comprobar salida en la librería XXXXXXXX.JOBS.SPOOL”. Las X son el usuario que estemos usando en ese momento.
Si tenemos el código en una librería de usuario, por ejemplo, IBMUSER.CLIST, lo ejecutamos con “exec” desde la opción 3.4.
Comprobamos que, en mi caso, los jobs del spool no están ordenados por fecha y hora de inicio.
Buscamos la salida que ha creado el REXX y entramos con “view”.
NOTA: Recomiendo entrar con view o edit poque con browse, las tabulaciones aparecen como puntos.
Comprobamos que no salen STCs y los datos están ordenados por fecha y hora de inicio.
Si queremos descargar el fichero para exportarlo a Excel, vamos a la opción 6 de ISPF.
NOTA: El transfer no funciona con versiones antiguas de Personal Communications (v5.8, v5.9). Se puede usar, por ejemplo, la versión 6.0.14 o ya las versiones 12.0.x.
Si no funciona el transfer, quizá se podrían usar otras opciones, como mandarlo por mail o FTP.
Pulsamos en el icono de “recibir un fichero del host”. Y rellenamos los datos.
Si abrimos el fichero txt, que hemos descargado, aparecerá con tabulaciones.
Si abrimos un Excel e importamos los datos desde texto, aparecerán distribuidos por filas y columnas, como una tabla.
Pulsamos siguiente hasta que solo se pueda pulsar finalizar.
Vemos que los datos están distribuidos en forma de tabla.
Una vez que tenemos los datos en Excel, ya podemos crear alguna macro, por ejemplo, para sacar cuanto tiempo ha estado ejecutándose cada job.