taller-zos - The Mainframe Corner

Anuncio
TALLER MAINFRAME
Introducción al Hercules y z/OS
Urtzi Larrieta Alvarez
AGENDA
-Introducción al Taller
-Que es un mainframe y como funciona
-Introducción al emulador Hercules
-Parametrización Hercules (hercules.cnf)
- Pausa
-Puesta en marcha z/OS y TSO LOGON
-ISPF y parametrización básica z/OS
- Pausa para comer
-Introducción a los JOBS y al lenguaje JCL
-Control de los JOBS con SDSF
-Sometiendo mi primer JOB
-Dudas, problemas y sugerencias.
-Mas información…
Introducción al Taller
-Objetivos:
-Comprender la teoria de funcionamiento del mainframe
-Entender la configuración y parametrizacion
-Primeros pasos en el acceso al sistema y controlar la sesion
-Lenguaje de control de los trabajos (JCL)
Que es un Mainframe
-Un grandisimo Ordenador con mucho de todo (RAM, CPU, Discos, etc)
-Pensado para la alta transaccionalidad e inmediatez del dato
-Diseñado para la operación en condiciones extremas (Redundancia)
-Robustez (no se cuelga, no downtime)
-Preparado para cargas dispares de trabajo (Xmiles usuarios)
Como funciona un Mainframe
-Hardware
-CPU y Memoria Subsistema de Canales
-Subsistema de Canales Unidades de Control
-Unidades de control Dispositivos
Como funciona un Mainframe II
-Direccionamiento DMA: Todo son direcciones de memoria
-Canales: CHPID de 00 a FF. PCHID de 0000 a FFFF
-Unidades de control: 0000 a FFFF
-Dispositivos: desde 0000 a FFFF
-REGLAS:
-1 UC solo puede direccionar hasta 256 dispositivos
-1 Canal solo puede direccionar hasta 256 UC.
-IOCDS: Macro-instrucciones de configuración mainframe. Al
compilarse con el IOCP, se genera un IODF.
Como funciona un Mainframe III
-EJEMPLO IOCDS:
CHPID
CHPID
CHPID
CHPID
PCHID=120,PATH=(CSS(0),F1),TYPE=FC,SHARED
PCHID=121,PATH=(CSS(0),F2),TYPE=FC,SHARED
PCHID=122,PATH=(CSS(0),F3),TYPE=FC,SHARED
PCHID=123,PATH=(CSS(0),F4),TYPE=FC,SHARED
CNTLUNIT CUNUMBR=1000,PATH=((CSS(0),F1,F2,F3,F4)),UNIT=2105,CUADD=00, +
UNITADD=((00,256))
CNTLUNIT CUNUMBR=1100,PATH=((CSS(0),F1,F2,F3,F4)),UNIT=2105,CUADD=01, +
UNITADD=((00,256))
IODEVICE ADDRESS=(1000,256),CUNUMBR=(1000),UNIT=3390
IODEVICE ADDRESS=(1100,256),CUNUMBR=(1100),UNIT=3390
4 Canales FICON (F1,F2,F3 y F4) conectados a dos UC (1000 y 1100), las
cuales cada una direcciona 256 discos 3390 (1000 a 10FF y 1100 a 11FF)
Como funciona un Mainframe IV
-TIPOS DE UC:
-Impresoras (6400, 6262, etc)
-Discos (3990, 3880, 2105, etc)
-Cintas (3802, 3480, 3490, 3590, etc)
-Comunicaciones (3088, 3745, OSA, etc)
-Terminales o pantallas (3174)
-TIPOS DE DISPOSITIVOS:
-Impresoras (6400, 6262, etc)
-Discos (3380, 3390, 9370, etc)
-Cintas (3420, 3480, 3490, etc)
-Comunicaciones (OSA, OSD, OSE, etc)
-Terminales o pantallas (3270, 3215, etc).
Como funciona un Mainframe V
-RECUERDA:
-TODO DISPOSITIVO DEBE TENER UNA DIRECCION. Para acceder
a él, debemos conocer su dirección.
-Si el dispositivo no tiene dirección conocida, NO EXISTE
Introducción al Hercules
-Es un EMULADOR de entorno mainframe, no un virtualizador, para PC.
-Contiene el juego de instrucciones de los procesadores mainframe
(arquitectura S/370, ESA/390 y ESAME –System Z-)
-Soporta gran variedad de dispositivos mainframe, emulandolos.
-Cintas, discos, impresoras, comunicaciones, terminales.
-La potencia, el número de CPUs y memoria depende enteramente de la
potencia del PC donde se instala.
-El SO “invitado” que corre bajo Hercules (z/OS, z/VM, VSE/ESA, OS/390,
zLinux), no tiene conciencia de que está funcionando bajo un entorno
emulado, en todo momento piensa que esta bajo plataforma real.
Introducción al Hercules II
-¿Como emula el Hercules dispositivos reales de mainframe?
-Discos. Ficheros en el PC. Ej: Un disco 3390 modelo 3, genera un
fichero en disco de 3 GB. Un 3390-9, 9 GB
-Cintas: Ficheros de tamaño variable. Ej: Si grabo una cinta que me
ocupa 300 MB, hercules crea un fichero de 300 MB.
-Impresoras: Ficheros TXT que se crean e incrementan cuando el
sistema invitado –guest- manda un listado.
-Terminales: Servidor de Telnet. Un terminal real se emula mediante
una sesion de telnet.
Instalación Hercules
Parametrización Hercules
-Fichero HERCULES.CNF (Configuración HOST)
-CPUSERIAL
-MODEL
-CPUMODEL
-MAINSIZE
-XPNDSIZE
-CNSLPORT
-NUMCPU
-TZOFFSET
-OSTAILOR
-PANRATE
-ARCHMODE
-PGMPRDOS
066435
603
2094
1024
0
23
2
+0100
OS/390
FAST
ESAME
LICENSED
#
#
#
#
#
#
#
#
#
#
#
#
Numero de Serie CPU
Submodelo
Tipo y Modelo CPU
Tamaño memoria principal en MB
Tamaño memoria expandida en MB
Puerto TCP del servidor de terminales
Numero de CPUs
Huso horario
Configuración Hercules adecuada
Velocidad de Refresco del panel
Arquitectura S/370, ESA/390 or ESAME
Permiso para ejecutar z/OS bajo Hercules
Parametrización Hercules II
-Fichero HERCULES.CNF (Parámetros de IPL)
-LOADPARM XXXXYYZA
-XXXX: Dirección de disco donde está el IODF
-YY: Parámetro de LOADYY (SYS1.IPLPARM)
-Z: Parametros opcionales (M para ver mensajes detallados en
consola, etc)
-A: Número donde va a buscar el SYS1.NUCLEUS alternativo
(generalmente 1)
-EJEMPLO: LOADPARM 0A8200M1
-El disco donde reside el IODF es el 0A82, se cargará el miembro
LOAD00 de la SYS1.IPLPARM, queremos mensajes detallados en
consola y el nucleo alternativo sera el NUC1.
Parametrización Hercules III
-Fichero HERCULES.CNF (Listado de dispositivos)
-000F
-0700
-0701
-0900
-0580
-0581
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
1403
3270
3270
3270
3490
3490
3390
3390
3390
3390
3390
3390
3390
3390
3390
3390
prt01.txt
*
*
..\ZOS110\JARES1.CCKD
..\ZOS110\JARES2.CCKD
..\ZOS110\JASYS1.CCKD
..\ZOS110\JAUSS1.CCKD
..\ZOS110\JAPRD1.CCKD
..\ZOS110\JAPRD2.CCKD
..\ZOS110\JAPRD3.CCKD
..\ZOS110\JAPRD4.CCKD
..\ZOS110\JADIS1.CCKD
..\ZOS110\JADIS2.CCKD
Pausa para copiar el z/OS ADCD
Problems
Copying?
Hercules y z/OS
-¿Que es el AD/CD?
-Application Development Controlled Distribution: Un z/OS preinstalado
y parametrizado por IBM para ISVs que desarrollen bajo plataforma
System Z (COBOL, CICS, DB2, WAS, MQ, JAVA, etc).
-Viene de una copia en una máquina de producción real Debemos
saber qué configuración tiene para aplicarla en nuestro Hercules.
-IODF: Release Notes del AD/CD
http://dtsc.dfw.ibm.com/MVSDS/%27HTTPD2.adcd.global.html%28readm110%29%27
-0580 a 058F: Cintas 3490
-0A80 a 0A9F: Discos 3390
-0700 a 071F: Terminales 3270 (el 0700 es el Master Console)
-0900 a 091F: Terminales 3270
-0E20 a 0E22: CTC para comunicaciones TCP/IP
Hercules y z/OS II
-Configuraciones predefinidas en la SYS1.PARMLIB
CS
00
WS
DC
DB
DI
CC
CW
2C
2W
IC
IW
AC
AW
BC
BW
99
CLPA and cold start of JES2. Base z/OS system functions, no CICS, DB2, IMS, WAS.
Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc.
Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc.
CLPA, brings in CICS LPA modules, cold start of JES2, starts up DB2 and CICS.
Warmstart of JES2 and starts the DB2 and CICS.
CLPA and cold start of JES2 and loads the IMS Libraries. IMS manually started.
CLPA and cold start of JES2, loads the CICS Libraries, starts up CICS, no DB2.
Warm start of JES2, and starts up CICS.
CLPA, cold start of JES2, starts up DB2, no CICS.
Warm start of JES2, starts up DB2, no CICS.
CLPA and cold start of JES2 and load the IMS Libraries, start IMS, no DB2&CICS.
Warm start of JES2 start IMS, no DB2 or CICS.
CLPA and cold start of JES2 load IMS and CICS libraries, start IMS, DB/2, CICS.
Warmstart of JES2. start IMS, DB/2, and CICS.
CLPA and cold start of JES2, load WAS libraries, WAS is manually started
Warmstart of JES2. WAS is manually started.
Points to IODF99 for IPL on MP3000.
Arranque del z/OS
-1.- IPL al disco 0A80, es el que tiene el Texto IPL (Bootstrap)
-2.- El Texto IPL mira los parametros y averigua donde está el IODF.
También mira el miembro SYS1.IPLPARM(LOADXX) y entonces sabe
donde está el Catalogo Maestro, y también sabe con que parametros entrar
en la SYS1.PARMLIB(IEASYSXX) . La pantalla 0700 muestra el NIP
(Nucleus Initialization Program, en texto turquesa).
-3.- El fichero IEASYSXX tiene todos los parámetros de todos los sistemas.
De ahí, se van cogiendo y a su vez se llaman a otros ficheros de
configuración de la PARMLIB
-4.- Se configura la memoria, se cargan modulos de la APF y LINKLST y se
inicia el SYSPLEX.
-5.- Se lee el miembro (CONSOLXX) y se inicia el MSTJCL00 (Master JCL,
el “autoexec.bat” del mainframe).
Arranque del z/OS II
-6.- Con el CONSOLXX leído, la pantalla 700 se convierte en Master
Console (texto cambia a verde).
-7.- Salen numerosos mensajes de arranque de subsistemas.
-Texto blanco, mensajes de atención
-Texto rojo, mensajes de error o advertencia severa.
-8.- Arranque del JES2 (sistema de control de trabajos)
-9.- Arranque ZFS (Sistema UNIX bajo z/OS)
-10.- Arranque de VTAM (sistema de comunicaciones y terminales)
-11.- Arranque TSO (Terminales interactivos). En los terminales 701, 702…
sale el logo de z/OS.
Arranque del z/OS III
-12.- Entramos en la máquina con LOGON o L TSO en cualquiera de los
terminales (0701, 0702, 0900, etc).
-USERID: IBMUSER
-PASSWORD: SYS1. Nos pedirá cambiarlo. Pues lo cambiamos (8
caracteres)
-LOGON IN PROGRESS…. ISPF!!
PROFIT!!!1!
Navegación básica ISPF
-Todo son opciones de menú. Un menú lleva a otro submenu. Si te sabes
las opciones, existen atajos:
- Opción 3 . Datasets. Subopción 4: List 3.4 llegas directamente
-Opciones más utilizadas: Edición de datasets y miembros.
-HLQ y nombres. SYS1.PARMLIB o KUJAKU.TALLER.JCL. HLQ sirve
para catalogar y enumerar.
-Desde el ISPF, se llega a toda la máquina: Administración, edición,
control, operación y navegación.
-SDSF: Spool Search and Display Facility: Herramienta angular del
control de todos los trabajos interactivos y BATCH
-RACF: Resource Access Control Facility: Sistema de seguridad de
permisos (esto es un MUNDO)
Navegación básica ISPF II
-Mas aplicaciones:
-WLM: WorkLoad Manager: Herramienta de priorización de cargas de
trabajo (otro MUNDO)
-ISMF: Interactive Storage Management Facility: Administración del
almacenamiento en disco y cinta –robótica- (como 2 mundos)
-DB2 Tools: Todo un submenu para la administración del DB2
-Etc…
Navegación básica ISPF III
-DATASETS: Tipos y utilidades:
-Secuencial
-Particionado
-VSAM
-En nuestro caso, el 90% del tiempo se trabaja con particionados. Un
particionado permite miembros dentro del mismo dataset. Miembro
puede ser un fichero, un JCL, una configuración, etc.
-TRUCOS: KAMI-SAMA creo el primer JCL. El resto de los mortales
copiamos y pegamos xDDD
-Si vamos a crear un dataset nuevo, lo mas facil es copiar uno
existente (aunque os enseñare a crearlo desde CERO).
-CATALOGOS. Sin ellos, solo podrías saber que ALGUIEN ha hecho
ALGO con respecto de ALGO en ALGUN SITIO.
-Creación de datasets: Tipo, tamaño, y lugar. Luego se catalogan, y así
solo con saber el nombre, nos basta.
Pausa para Comer
Introducción a los JOBs
-Tipos de Trabajos o Jobs:
-Por lotes o BATCH (JOB)
-Interactivo (TSU) –Time Sharing User
-Tarea iniciada (STC) – Started Task Control
-Un trabajo siempre tiene un Flujo: Datos de entrada Proceso Salida y
resultado .
-Un trabajo o JOB está compuesto por uno o más pasos o STEPs.
-Cada paso ejecuta un programa. Dentro del paso se codifican:
-Las variables de entrada al programa
-Las variables de salida del programa
-Los parámetros del programa.
Introducción a los JOBs II
-El JES2 (Job Entry Subsystem) se encarga de controlar la ejecución:
-Existen Clases de trabajos (prioridad de ejecución) asociadas a uno o
mas iniciadores (INIT). Tu defines la clase por donde deseas que tu
trabajo se ejecute.
-Cada iniciador (INIT) es un flujo de trabajo. Ejecuta el proceso del
trabajo. Solo se ejecuta un trabajo por cada INIT.
-Una vez acabado el proceso, el resultado lo deja en una clase de
salida.
-Toda la salida de los trabajos se almacena en un area llamada SPOOL
controlada por el JES2. El control del SPOOL se realiza desde la aplicación
SDSF.
Introducción al lenguaje JCL
-Sintaxis de los JCL:
-1.- La gran mayoría de las sentencias JCL comienzan con // (existe un
delimitador /* que mas tarde comentaré).
2.- Todo lo que se escriba a partir de la columna 72, será ignorado.
3.- Todo Job comienza con la sentencia JOB
4.- Se debe escribir todo en MAYUSCULAS (si editas el JCL en el ISPF te
lo convierte en mayúsculas directamente)
5.- Todo job debe tener como mínimo 1 Paso (sentencia EXEC)
6.- Todo paso debe incluir como mínimo una definición de datos (sentencia
DD, viene a ser como el “var” de Pascal).
7.- El job se dará por finalizado cuando se encuentre una única línea con
nada mas que //.
Introducción al lenguaje JCL II
-Primera ficha de nuestro JCL:
1
2
3
4
5
6
----+----0----+----0----+----0----+----0----+----0----+----0//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A
-MIJOB, nombre del JOB, 8 caracteres máximo, y nunca debe empezar con un número.
-JOB significa que el Reader interpreta que lo que viene a continuación es un trabajo.
-Parametro posicional “EUSKAL” sería el nombre del accounting .
-Parametro posicional KUJAKU sería la persona –opcional- que lanza el JOB de cara a
documentación.
-Parametro de referencia CLASS=A, la clase del JOB por la que optamos ejecutar.
-Los parámetros posicionales siempre van ANTES que los de referencia.
Introducción al lenguaje JCL III
-Segunda ficha de nuestro JCL:
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID
-MSGCLASS que nos dice en que clase de salida dejar los mensajes que vaya generando el
job.
-MSGLEVEL: Queremos todos los mensajes JCL que se generen en el sistema (el primer 1) y
luego, que también queremos los mensajes relacionados si reservamos o “allocamos” ficheros
que vaya a usar el job (el segundo 1).
-NOTIFY: Importante variable que nos permite recibir un mensaje en nuestra pantalla
(&SYSUID) cuando el job acabe (bien o mal).
Introducción al lenguaje JCL IV
-Creación del paso en nuestro JCL:
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID
//PASO1
EXEC PGM=IEBGENER
-Codificamos el Paso o STEP. Lo llamamos PASO1 (no mas de 8 caracteres) con un EXEC
que llame a un programa o “utility” en jerga mainframera.
-IEBGENER es una utility que nos permite copiar de un sitio a otro. Si se lee la
documentación de IEBGENER, copia lo que pones en SYSUT1 y te lo deja en SYSUT2, y no
necesita parámetros de ningún tipo para condicionar su ejecución.
Introducción al lenguaje JCL V
-Creación del paso en nuestro JCL:
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=256K
//PASO1
EXEC PGM=IEBGENER,REGION=256K
-IEBGENER necesita memoria para ser ejecutado. Esto se soluciona codificando REGION
en uno de estos sitios:
-En la definición del JOB (AZUL)
-En la ficha del paso (VERDE)
-Cual es la diferencia?
Introducción al lenguaje JCL VI
-Codificación de los parámetros de la utility en nuestro JCL:
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=256K
//PASO1
EXEC PGM=IEBGENER
//SYSUT1 DD *
Mi primer JCL, This is full of epic and win!!
//SYSUT2 DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSIN
DD DUMMY
//
-Con el IEBGENER, en SYSUT1 le decimos que queremos que el texto de a continuacion (DD
*) nos lo copia a SYSUT2, es decir, a la clase de salida A (SYSOUT=A). La ejecución del job
imprimela también en la misma clase de salida (SYSOUT=A) y como IEBGENER no requiere
de parámtros, el SYSIN –siempre se debe poner aunque no se use) me lo dejas en DUMMY,
es decir, valor nulo.
Introducción al lenguaje JCL VII
-Jugar con los delimitadores de DD * :
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=256K
//PASO1
EXEC PGM=IEBGENER
//SYSUT1 DD *
Mi primer JCL, This is full of epic and win!!
/*
//SYSUT2 DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSIN
DD DUMMY
//
-Como no disponemos de un fichero cuyo contenido sea el del ejemplo, hay una manera de incluir ese dato
dentro del propio jobstream o flujo del job: Utilizando la definición DD *. Cuando el parser se encuentra con
esta construcción, asume que las siguientes líneas serán el contenido del dato en si, que dejara en
SYSUT1. ¿Cuando termina de asumir que las siguientes fichas son datos? Cuando se encuentra con un /*
o una ficha nueva del job que se verá en seguida porque aparecen las // en las columnas 1 y 2. De hecho,
es más bonito visualmente que el job quede así, añadiendo ese /*
Introducción al lenguaje JCL VIII
-Jugar con los delimitadores de DD * :
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=256K
//PASO1
EXEC PGM=IEBGENER
//SYSUT1 DD *
**********************************************************
*
* Mi primer JCL, This is full of epic and win!!
*
***********************************************************
/*
//SYSUT2 DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSIN
DD DUMMY
//
Introducción al lenguaje JCL IX
-Jugar con los delimitadores de DD DATA :
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=256K
//PASO1
EXEC PGM=IEBGENER
//SYSUT1 DD DATA
/////////////////////////////////////////////////////////
//
//
// Mi primer JCL, This is full of epic and win!!
//
//
//
/////////////////////////////////////////////////////////
/*
//SYSUT2 DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSIN
DD DUMMY
//
Introducción al lenguaje JCL X
-Jugar con los delimitadores de DD DATA :
1
1
2
3
4
5
6
7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MIJOB
JOB EUSKAL,KUJAKU,CLASS=A,MSGCLASS=A,
//
MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=256K
//PASO1
EXEC PGM=IEBGENER
//SYSUT1 DD DATA,DLM=$$
/*******************************************************/
/*
*/
/* Mi primer JCL, This is full of epic and win!!
*/
/*
*/
/*******************************************************/
$$
//SYSUT2 DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSIN
DD DUMMY
//
Control de JOBs con SDSF
Sometiendo mi primer JOB
-SUBMIT o SUB a
secas
-Mensaje de
aceptación del
JES2 (JOBXXXXX)
-Mensaje de
finalización del JOB
Sometiendo mi primer JOB II
-Comprobamos su
ejecución en el
SDSF
-Listados de salida
Dudas, problemas y sugerencias
Really?
Enlaces de Interés
Emulador Hercules: http://www.hercules-390.org/
Web IBM AD/CD:
http://dtsc.dfw.ibm.com/MVSDS/’HTTPD2.ADCD.GLOBAL.HTML(READ1
10S)’
ABCs of system Programming:
http://www.lbdsoftware.com/abcs.html
Programas y Utilitys de IBM:
http://en.wikipedia.org/wiki/IBM_mainframe_utility_programs
Gracias!
Descargar