Qué vas a conseguir
Entender el entorno z/OS que te toca soportar sin ser programador de sistemas: qué es cada pieza y a qué se parece en Windows o Linux, dónde mirar la salida de un trabajo, qué significan los códigos de retorno, qué comandos de consola son de solo lectura y cuáles no, y cómo seguir un trabajo nocturno que no ha terminado hasta dar con quién lo está bloqueando.
Antes de empezar
- Un usuario TSO con acceso a ISPF y SDSF (o a la interfaz web de z/OSMF) y, si te lo dan, autorización para emitir comandos de consola desde SDSF. Lo de esta guía es z/OS 3.1 o 3.2.
- El runbook del centro: quién es el programador de sistemas de guardia, quién es el dueño de cada cadena batch y qué planificador se usa (IBM Z Workload Scheduler, Control-M u otro).
- Una regla que no se negocia: en z/OS casi todo lo que no empieza por
D(display) cambia algo. Ante la duda, solo comandosDy$D, y el resto con la aprobación del responsable.
1. El mapa: z/OS en términos de Windows
| z/OS | Lo más parecido en Windows/Linux | Para qué lo vas a usar |
|---|---|---|
| LPAR | Una VM sobre un hipervisor (PR/SM, en el firmware de la máquina) | Cada LPAR es un sistema z/OS (o Linux) con su CPU, memoria y E/S |
| HMC | vCenter más iDRAC/iLO | Arrancar, parar y repartir capacidad entre LPAR; solo con permiso |
| IPL | El arranque del sistema | Cuando hay mantenimiento o un cambio que no es dinámico |
| JES2 | El planificador de tareas más la cola de impresión | Recibe los trabajos batch, los ejecuta y guarda su salida en el spool |
| JCL | Un .bat que declara programa y ficheros | Describe cada paso de un trabajo |
| SDSF | El Visor de eventos más el Administrador de tareas | Ver trabajos, su salida y la consola |
| Dataset | Un fichero (con formato fijo) | Los datos de entrada y salida del batch |
| RACF | Active Directory más las ACL de NTFS | Usuarios, grupos y quién puede leer qué |
| CICS e IMS | Un servidor de aplicaciones (IIS, Tomcat) | Las transacciones en línea |
| SMF | El registro de eventos y los contadores de rendimiento | Rendimiento, auditoría y facturación |
| REXX | PowerShell | Pequeñas automatizaciones |
2. LPAR, IPL y capacidad
- Una máquina IBM Z se divide en LPAR. Varias LPAR z/OS suelen formar un Parallel Sysplex que comparte datos y carga, igual que un clúster: si una LPAR se para, las aplicaciones siguen en las otras.
- El IPL (Initial Program Load) es el arranque. Se lanza desde la HMC con una dirección de carga (el disco del sistema) y un parámetro de carga que apunta al miembro
LOADxxde configuración. Se planifica: después de aplicar mantenimiento (PTF) con SMP/E, para un cambio de parámetros que no se puede activar en caliente o por una ventana trimestral. En un sysplex se hace LPAR a LPAR (rolling IPL). Un IPL no planificado es un incidente grave y lo lleva el programador de sistemas. - Capacidad: la CPU se mide en MSU y el coste del software se calcula sobre ella (los informes SCRT salen de los registros SMF). Los pesos y los topes de cada LPAR se definen en la HMC; la capacidad temporal (On/Off Capacity on Demand, CBU para contingencia) se activa por contrato. Dentro de la LPAR, WLM reparte la CPU según la prioridad de cada carga. Para operaciones: un cambio de capacidad es un cambio planificado, nunca un ajuste para que un trabajo vaya más rápido.
D IPLINFO dice cuándo fue el último IPL y con qué parámetros; D M=CPU, los procesadores en línea.
D IPLINFOIEE254I 02.15.07 IPLINFO DISPLAY 418 SYSTEM IPLED AT 05.12.44 ON 10/05/2026 RELEASE z/OS 03.02.00 LICENSE = z/OS USED LOAD00 IN SYS0.IPLPARM ON 0A82 IEASYS LIST = (00,PR) (OP) IPL DEVICE: ORIGINAL(0A80) CURRENT(0A80) VOLUME(ZOS32A)3. JES2, JCL y los trabajos batch
Un trabajo es un JCL con una tarjeta JOB, uno o varios pasos EXEC (el programa) y sus DD (los ficheros):
//NOMDIA01 JOB (CONT,NOM),'NOMINA DIARIA',CLASS=N,MSGCLASS=X//STEP010 EXEC PGM=IEBGENER//SYSPRINT DD SYSOUT=*//SYSIN DD DUMMY//SYSUT1 DD DSN=PROD.NOMINA.MAESTRO,DISP=SHR//SYSUT2 DD DSN=PROD.NOMINA.EXTRACTO(+1),DISP=(NEW,CATLG,DELETE),// SPACE=(CYL,(5,5)),RECFM=FB,LRECL=200CLASS=Ndecide qué iniciadores pueden ejecutarlo (un iniciador es un hueco de ejecución, como un trabajador de un grupo de procesos). Si ninguno sirve esa clase, el trabajo espera en cola.DISP=SHRpide el dataset compartido;DISP=OLDoNEW, en exclusiva. Esa reserva (un ENQ) es la que hace esperar a otro trabajo que pide el mismo dataset.- El planificador lanza los trabajos en orden y con dependencias; JES2 solo los ejecuta. Los reinicios se hacen desde el planificador, no reenviando el JCL a mano.
4. SDSF: dónde se lee la salida
En SDSF, los comandos de panel:
ST: todos los trabajos (en cola, en ejecución y terminados). Filtra conPREFIX NOM*yOWNER *.DA: lo que está activo ahora, con CPU y E/S. Un trabajo en DA con CPU al 0 % durante horas está esperando algo.LOG: el SYSLOG, la consola del sistema con fecha y hora.HyO: salida retenida y salida pendiente de imprimir;I, la cola de entrada.
Junto al trabajo, S abre toda la salida y ? la lista de ficheros: JESMSGLG (los mensajes de JES), JESJCL (el JCL tal como se interpretó) y JESYSMSG (lo que pasó en cada paso y con cada dataset). La columna Max-RC de ST resume el final:
| Max-RC | Qué significa |
|---|---|
CC 0000 | Correcto |
CC 0004 | Aviso; según el programa, normal |
CC 0008 o más | Error del programa; mira el paso en JESYSMSG |
ABEND S0C4 | Fallo de sistema (acceso a memoria no válido), como un access violation |
ABEND S222 | Cancelado por un operador |
ABEND S322 | Superó el tiempo de CPU permitido |
ABEND U4038 | Fallo de usuario (de la aplicación o del runtime) |
JCL ERROR | El JCL está mal o falta un dataset; no llegó a ejecutarse |
Los códigos que empiezan por S son del sistema; los que empiezan por U, de la aplicación. Ninguno se arregla relanzando sin más: se pasa al dueño de la cadena con el paso y el mensaje.
5. Datasets, catálogo y RACF
- Un dataset tiene un nombre de hasta 44 caracteres en partes de hasta 8 (
PROD.NOMINA.MAESTRO). La primera parte (HLQ) suele indicar entorno y aplicación, y es la que protege RACF. - Tipos: secuencial (un fichero), PDS/PDSE (una carpeta de miembros, como
SYS1.PARMLIB), VSAM (un fichero indexado, casi una tabla) y GDG (generaciones numeradas:(+1)es la nueva,(0)la última; como una rotación de logs). - El catálogo dice en qué volumen está cada dataset, como un DNS de ficheros. También existe z/OS UNIX con ficheros normales en zFS, donde viven Java, los certificados y muchas herramientas modernas.
RACF controla quién es quién y qué puede hacer. Lo administra el equipo de seguridad (atributo SPECIAL); operaciones suele poder consultar:
LISTUSER JPEREZUSER=JPEREZ NAME=JUAN PEREZ OWNER=NOMINA CREATED=24.112 DEFAULT-GROUP=NOMLECT PASSDATE=26.290 PASS-INTERVAL= 90 ATTRIBUTES=REVOKEDLISTDSD DATASET('PROD.NOMINA.**') GENERICATTRIBUTES=REVOKED: la cuenta está revocada, normalmente por intentos fallidos. La reactiva seguridad conALTUSER JPEREZ RESUME, previa verificación.- Los permisos se dan a grupos, no a personas:
PERMIT 'PROD.NOMINA.**' ID(NOMLECT) ACCESS(READ) GENERICy, si el perfil está en memoria,SETROPTS GENERIC(DATASET) REFRESH. Niveles de acceso, de menos a más: NONE, EXECUTE, READ, UPDATE, CONTROL, ALTER.
6. CICS, IMS, SMF y REXX
- CICS e IMS son gestores de transacciones: miles de operaciones cortas por segundo (consultar un saldo, registrar un pedido). Cada uno corre en una o varias regiones, que en SDSF ves como tareas arrancadas (en DA). Para saber si una región está viva: que aparezca en
D A,L, su log en SDSF y, si te lo permiten,F CICSPRD1,CEMT I TASKpara ver sus tareas. En IMS,/DIS A REGdesde su terminal maestro o la consola con el carácter de comandos de ese IMS. Parar o reciclar una región lo decide el equipo de la aplicación. - SMF escribe registros numerados: el 30 (contabilidad de trabajos y pasos), del 70 al 79 (RMF, rendimiento), el 80 (RACF), el 110 (CICS) y el 89 (uso de producto, para la facturación).
D SMFmuestra dónde se están escribiendo. - REXX es el lenguaje de scripts de TSO. Con la interfaz REXX de SDSF se listan trabajos sin abrir paneles:
/* REXX */rc = isfcalls('ON')isfprefix = 'NOM*'isfowner = '*'Address SDSF "ISFEXEC ST"do i = 1 to JNAME.0 say JNAME.i JOBID.i QUEUE.i RETCODE.iendrc = isfcalls('OFF')7. La consola y los comandos de operador
Desde SDSF se emiten con / delante (/D A,L) y la respuesta se ve en LOG o en ULOG. Los de consulta:
| Comando | Qué muestra |
|---|---|
D A,L | Trabajos, tareas arrancadas y usuarios TSO activos |
D IPLINFO | El último IPL y sus parámetros |
D R,L | Mensajes pendientes de respuesta (montajes de cinta, peticiones de operador) |
D GRS,C | Recursos con contención: quién tiene un dataset y quién lo espera |
$D JOBQ,DELAY=YES,DELAY | Trabajos en cola retrasados y el motivo |
$D I | Iniciadores de JES2 y las clases que sirven |
C (cancelar), $P, $C, V ... OFFLINE o una respuesta R nn,... cambian el sistema. Con la aprobación del dueño o del programador de sistemas, y anotados en el ticket.
8. El ticket: "el batch nocturno no ha terminado y no han salido los informes de la mañana"
7:45. Contabilidad no tiene los informes de nómina. En el planificador, NOMDIA01 aparece en ejecución desde las 02:10 y todo lo que depende de él está esperando.
- Dónde está: en SDSF,
PREFIX NOM*yST. Si la cola esEXECUTIONy enDAno consume CPU, está esperando algo. Si la cola esINPUT, nunca empezó (paso 4). - Qué espera:
Ssobre el trabajo y la salida JESYSMSG, o elLOGalrededor de las 02:10:
IEF861I FOLLOWING RESERVED DATA SET NAMES UNAVAILABLE TO NOMDIA01IEF863I DSN = PROD.NOMINA.MAESTRO NOMDIA01 RC = 04*IEF099I JOB NOMDIA01 WAITING FOR DATA SETS- Quién tiene el dataset:
D GRS,CISG343I 07.48.12 GRS STATUS 233S=SYSTEMS SYSDSN PROD.NOMINA.MAESTROSYSNAME JOBNAME ASID TCBADDR EXC/SHR STATUSSYSA JPEREZ 0087 008E5C10 EXCLUSIVE OWNSYSA NOMDIA01 0045 008FD0E8 SHARE WAITAquí es un usuario TSO que dejó el dataset abierto en edición por la tarde. Si el dueño es otro trabajo (una copia que se quedó colgada), la pista sigue igual: D A,L y su salida en SDSF.
- Otras esperas habituales:
- Cinta:
D R,Lmuestra unIEF233A M ...pendiente; el trabajo espera a que se monte un volumen. Con cinta virtual, lo resuelve el equipo de almacenamiento. - Retenido o sin iniciador:
$D JOBQ,DELAY=YES,DELAYdevuelveDELAY=(HOLD)oDELAY=(JOBCLASS). Retenido se libera con$A J4711cuando el dueño lo confirma; para la clase,$D Idice si algún iniciador sirve la claseN.
- Resolver, con aprobación: se pide al usuario que salga de la edición; si no contesta, con el visto bueno del responsable,
C U=JPEREZpara su sesión TSO. El trabajo continúa solo en cuanto se libera el dataset (IEF099Idesaparece del log). Si la cadena ya no llega a tiempo, el dueño decide cancelar (C NOMDIA01) y relanzar desde el planificador en el paso que indique el runbook: reenviar a mano puede duplicar actualizaciones o crear una generación GDG de más. - Comprobar:
NOMDIA01termina conCC 0000, los dependientes arrancan y los informes salen.
En el ticket: hora de inicio, mensaje de espera, salida de D GRS,C, quién aprobó la acción, comando emitido y resultado final.
Siguientes pasos
- La guía de VMware ESXi y vCenter es el equivalente x86 de las LPAR y la HMC.
- La de iDRAC e iLO cubre la gestión fuera de banda, la misma idea que la HMC en un servidor normal.
- Para practicar con los paneles sin tocar producción, IBM ofrece el entorno gratuito IBM Z Xplore.
¿Falta algo o en tu entorno es distinto? Escríbeme y lo corrijo.
Tech Career Lab · newsletter
¿Te ha servido? Cada dos semanas envío una idea práctica para perfiles IT: LinkedIn, proyectos, networking y procesos de selección.
Apúntate y llévate las 33 ideas →