373
7/16/2019 Tso Para Desarrolladores Nr 33933 http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 1/373  TSO para desarrolladores - MVS - JCL - CLIST - ISPF José María Peco Palacios ************************* (2/7/1995)

Tso Para Desarrolladores Nr 33933

Embed Size (px)

Citation preview

Page 1: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 1/373

 

TSO para desarrolladores

- MVS- JCL- CLIST- ISPF

José María Peco Palacios************************* 

(2/7/1995)

Page 2: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 2/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 2 de 374

Tema 1: MVS

1.1 Generalidades

1.2 Versiones del MVS1.3 Componentes principales del MVS1.4 Usuarios de MVS1.5 Componentes de Hardware

1.5.1 Procesadores y subsistemas de Canales1.5.2 Dispositivos de Memoria Auxiliar.1.5.3 Periféricos y consolas1.5.4 Unidades de control

1.6 JES: Subsistema dedicado a la gestión de trabajos Batch

1.6.1 Iniciadores1.6.2 SPOOL

1.6.3 Fichero de check-point

1.7 Los ficheros en MVS

1.7.1 Tipos de organizacion en ficheros no-VSAM1.7.2 Tipos de registro1.7.3 Organizacion VSAM1.7.4 Acceso y recuperación de datos

1.8 Librerías que contienen el MVS

1.9 Bibliografía

Page 3: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 3/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 3 de 374

Tema 2 : JCL

2.1 Introducción

2.2 Definiciones previas

2.3 Formato general de las sentencia del JC2.3.1 Etiqueta2.3.2 Operación2.3.3 Operadores o parámetros

2.4 Sentencia JOB2.4.1 Informacion de contabilidad2.4.2 Nombre del programador2.4.3 ADDRSPC2.4.4 CLASS2.4.5 COND2.4.6 MSGCLASS

2.4.7 MSGLEVEL2.4.8 NOTIFY2.4.9 PERFORM2.4.10 REGION2.4.11 RESTART2.4.12 TIME2.4.13 TYPRUN

2.5 Sentencia EXEC2.5.1 PGM2.5.2 PROC2.5.3 ACCT2.5.4 ADDRSPC2.5.5 COND

2.5.6 PARM2.5.7 REGION2.5.8 TIME

2.6 Sentencia DD : Definición de datos2.6.1 * (asterisco)2.6.2 DATA2.6.3 DLM2.6.4 DUMMY2.6.5 SYSOUT ( para ficheros de impresión)

OUTLIM=nCOPIES=nHOLD=YESDEST=dispositivo

DCB=(par1[,par2[...]])UCS (Universal Character Set)FCB (Form Control Buffer)BURST=YCHARS=(tabla0[,tabla1[,tabla2[,tabla3]]])MODIFY=(modulo,tabla_n)

2.6.6 COPIES (salida de impresión)2.6.7 DEST ( ficheros de impresión )2.6.8 HOLD (para ficheros de impresión )2.6.9 FREE (para ficheros de impresión y de datos)2.6.10 DSNAME (DSN)2.6.11 DDNAME

Page 4: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 4/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 4 de 374

2.6.12 DISP2.6.13 SPACE2.6.14 VOLUME

2.6.15 UNIT2.6.16 DCB2.6.17 DATACLASS2.6.18 LABEL

2.7 Sentencia OUTPUT2.8 Sentencias DD especiales2.9 Procedimiento

2.10 Utilidades2.10.1 IEFBR142.10.2 IEBGENER2.10.3 IEBCOPY2.10.4 IEBPTPCH

2.10.5 IEBCOMPR2.10.6 IEBUPDATE2.10.7 IEHINITT2.10.8 IEHLIST2.10.9 IEHPROGM

2.11 Programas especiales2.11.1 IEKFJ012.11.2 SORT

SORTMERGERECORDALTSEQINCLUDE / OMIT

INREC / OUTRECSUM

2.11.3 IDCAMSCatalogoFichero generacional (GDG)Copiar ficherosListar ficherosBorrar ficheros

2.11.4 PRINTDS (comando de TSO)

2.12 Anexo: Listar un directorio (IEBPTDIR)2.13 Anexo: LIstado de la VTOC y el directorio de un PDS IEHLIST.1

Page 5: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 5/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 5 de 374

Tema 3 : CLIST

3.1 Introducción

3.2 Librerías de CLISTs3.3 Como se invoca a un procedimiento de CLIST3.3.1 De forma explícita:3.3.2 De forma implícita3.3.3 Desde READY3.3.4 Desde otra clist3.3.5 Desde un programa de aplicacion

3.4 Variables3.4.1 Variables de control3.4.2 Variables de usuario simples3.4.3 Variables de usuario compuestas3.4.4 Uso del doble & (&&) : Variables anidadas3.4.5 Variables indexadas

3.5 Operadores y expresiones3.6 Etiquetas

3.7 Sentencias del lenguaje de CLIST3.7.1 CONTROL : Estable opciones para el proceso de la CLIST

MSG / NOMSGPROMPT / NOPROMPTLIST / NOLISTCONLIST / NOCONLISTSYMLIST / NOSYMLISTFLUSH / NOFLUSHMAINEND(cadena)

3.7.2 PROC : Primera instrucción de una CLIST3.7.3 ERROR : rutina para el tratamiento de errores3.7.4 GOTO : salto incondicional3.7.5 EXIT : Salir de la clist3.7.6 RETURN : Retornar al punto desde el que se bifurco a una rutina3.7.7 WRITE : Escribir datos en el terminal3.7.8 WRITENR : Escribir en el terminal y no ejecutar el <CR>3.7.9 READ : Lee datos desde el terminal3.7.10 IF-THEN-ELSE : Para bifurcacion3.7.11 SET : permite asignar valores a variables3.7.12 DO-WHILE END : Repetitiva mientras se cumple una condición.3.7.13 OPENFILE : Abrir fichero3.7.14 GETFILE : Lee el siguiente registro de un fichero secuencial

3.7.15 PUTFILE : Escribe un registro en un fichero físico.3.7.16 CLOSEFILE : Cierra el fichero3.7.17 ATTN : Rutina de ATENCION3.7.18 TERMIN3.7.19 READDVAL : Separar la informacion contenida en &SYSDVAL3.7.20 GLOBAL : define variables globales

3.8 Comandos de TSO

3.9 Funciones estandar3.9.1 &DATATYPE : Determinar tipo de variable3.9.2 &EVAL : Evaluar el contenido de una expresión3.9.3 &LENGTH : Determinar la longitud de una expresión

Page 6: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 6/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 6 de 374

3.9.4 &NRSTR : Determina que no se realicen sustituciones con &&3.9.5 &STR : Determina que el contenido del argumento es una cadena3.9.6 &SUBSTR : Extrae una subcadena de una cadena o de una variable

3.9.7 &SYSCAPS : Pasa a mayúsculas el argumento3.9.8 &SYSDSN : Determina si existe como dataset el argumento3.9.9 &SYSINDEX : Buscar un carácter en una cadena3.9.10 &SYSLC : Pasa a minusculas el argumento pasado3.9.11 &SYSNSUB : Determina el nivel de sustituciones.

3.10 Ejemplos3.10.1 JMPALO00 : Paso a fichero de las librerías alocadas3.10.2 DISPLAY1 : visualizar en panel el fichero generado con JMPALO003.10.3 JMPLIB00 : capturar los miembros de una libreria3.10.4 JMPLIB05 :3.10.5 LISTAR : Listar por impresora, con IEBGENER un fichero3.10.6 NAT

Page 7: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 7/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 7 de 374

Tema 4 : DIALOGOS ISPF

4.1 Generalidades

4.2 Variables4.2.1 Variables del sistema

ZCMDZSELZPRIMZPARENT

4.2.2 Variables de Usuario4.2.3 Variables de control

4.3 Sentencias

4.3.1 Sentencias de asignación4.3.2 Sentencias de verificación

4.3.3 Sentencia IF4.3.4 Sentencia VGET4.3.5 Sentencias VPUT4.3.6 Sentencias REFRESH

4.4 Mensajes

4.5 Funciones

4.5.1 Función TRUNC4.5.2 Función TRANS4.5.3 Función PFK4.5.4 Función LVLINE

4.6 Panel

4.6.1 Sección ATTR4.6.2 Sección BODY4.6.3 Sección INIT4.6.4 Sección PROC4.6.5 Sección REINIT4.6.6 Sección MODEL4.6.7 Sección END

4.7 Tablas ISPF

4.8 Función

4.8.1 Servicios Generales

DISPLAYSETMSGSELECT

4.8.2 Servicios para el Tratamiento de tablas

TBDISPLTBCREATETBOPENTBSORTTBSTATS

Page 8: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 8/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 8 de 374

TBQUERYTBSAVETBCLOSE

TBENDTBERASE

4.8.3 Tratamiento de filas

TBADDTBDELETETBEXISTTBGETTBMODTBPUTTBSARGTBSCANTBVCLEAR

4.8.4 Servicios para el posicionamiento

TBTOPTBSKIPTBBOTTOM

4.8.5 De FILE TAILORING

FTOPENFTINCLFTCLOSEFTERASE

4.8.6 De variables

VGETVPUT

4.8.7 Definición de librerías

4.8.8 Otros servicios

4.9 Tutorial

Page 9: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 9/373

TSO para desarrolladores: TABLA DE CONTENIDOS Autor: José M. Peco

Página 9 de 374

4.10 Ejemplos:

4.10.1 Pasar un archivo particionado o PDS a fichero secuencial.

Clist principal:Panel: INTUTIPSEsqueleto : INTUTIPS

4.10.2 Listar archivo por impresora:Panel:Clist LISTARFormato:

Page 10: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 10/373

TSO para desarrolladores: PRÓLOGO Autor: José M. Peco

Página 10 de 374

Prologo

El pasado año, al guardar todos los apuntes y anotaciones que habíaido recopilando a lo largo de los últimos años, pues cambiaba detrabajo y de entorno, se me ocurrió la idea de escribir este libro.Mis pretensiones no eran otras que las de poder ofrecer a todosaquellos que se incorporan año tras año a este mercado de trabajo,esa experiencia que tantas veces eche en falta, ya que no disponíade ningún libro que me pudiera contestar los interrogantes que seplanteaban según la situación.

Desde que termine la carrera, y de esto hace ya tiempo, siempre hetrabajado en el entorno de grandes sistemas, pero en la partecorrespondiente a desarrollo de aplicaciones. Y, por curioso queparezca, es en estas grandes instalaciones, donde bien por tener losmanuales en el departamento de sistemas, o bien porque estos estánen inglés, se echa de menos un libro de consulta, que supla losmanuales de usuario, guías de referencia y que tenga ejemplos queresuelvan las dudas mas elementales de todos aquellos que para algúntema puntual se salen fuera del entorno en el que trabajan paraentrar en el sistema.

Como seguramente el lector conoce, los grandes sistemas deordenadores tienen a su personal del centro de proceso de datos(CPD) dividido en dos mundos, el mundo de sistemas, y el de losdesarrolladores. Tanto unos como otros reciben formación especificade los temas que necesitan para desarrollar su trabajo. Pero muchasveces los desarrolladores necesitan hacer cosas que, pordesconocimiento del mundo de sistemas, son consideradas imposibles oson resueltas dando demasiadas vueltas.

Este libro va dirigido precisamente a los desarrolladores, si bienel personal que se inicie en sistemas puede beneficiarse de su usopor tratar profusamente el sistema de programación interactiva enTSO (Time Sharing Option) de IBM

El libro se compone de 4 temas, que precisamente son los que undesarrollador que trabaje bajo TSO debe conocer. Y, posiblemente los

temas tratados no tengan la profundidad ni expongan todas lasopciones que cada una de las sentencias cuente, pero para eso estánlos manuales de referencia, pero si puedo asegurar, desde mi modestaopinión, que con lo aquí expuesto se pueden desarrollar utilidades'muy útiles' en cualquier entorno TSO, ya que se hace uso únicamentede comandos, instrucciones y parámetros estándar.

Page 11: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 11/373

TSO para desarrolladores: PRÓLOGO Autor: José M. Peco

Página 11 de 374

El primer tema: MVS es un tema de introducción que no pretendeexplicar el sistema operativo, sino simplemente posicionar al lectoren la terminología y en los elementos que se referenciaran en lostemas posteriores.

El segundo tema: JCL trata el lenguaje usado para el control detrabajos BATCH. Este lenguaje es uno de los mas usados en cualquierinstalación, pero no siempre bien aprovechado ya que se usanúnicamente las opciones básicas.

El tercer tema se dedica al lenguaje de comandos CLIST. Este es unlenguaje que tradicionalmente es usado por el personal de sistemaspara preparar entre otras cosas las utilidades y el entorno quenecesita todo el personal que quiera hacer uso del ordenador. Es unlenguaje sencillo, no requiere procesos de compilación, y suconocimiento beneficiara y mejorara el rendimiento del personal dedesarrollo pues permitirá simplificar y personalizar las laborescotidianas.

El ultimo tema se dedica a estudiar los servicios de ISPF, siendoeste un producto de IBM para facilitar el uso de las utilidades delsistema operativo, también es un elemento mas del sistema quepermite la creación de diálogos mediante una adecuada combinación deprocedimientos de clist y servicios ISPF. Es muy fácil suimplementación y muy elevado el rendimiento obtenido.

Todo este conjunto he procurado documentarlo con un gran numero de

ejemplos que sirvan además de utilidades con las que espero hacermas inteligible y amena su lectura.

Por ultimo, quiero desde aquí, dar las gracias a todos aquellos queme han ayudado en la confección de este libro, y muy especialmente aFerran Palau i Fernandez.

Page 12: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 12/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 12 de 374

Tema 1 : MVS 

1.1 Generalidades 

El MVS es el sistema operativo de IBM para sus grandes procesadores.

Normalmente, los ordenadores que utilizan este S.O. suelen estar destinadosa la gestión masiva de datos permitiendo funciones de multiprogramación ymultiproceso, y dan soporte a uno o varios sistemas de teleproceso.

El termino de MULTIPROGRAMACIÓN se da a aquellos sistemas que permiten laejecución simultanea de varios procesos en el ordenador, repartiendo eltiempo de ejecución entre las distintas secuencias de instrucciones de cadauno de los programas. Mientras que el termino de MULTIPROCESO se aplica aaquellos sistemas que por tener varios procesadores, tienen la capacidad deejecutar dos o mas instrucciones en el mismo instante, y en consecuencia,

pueden ejecutar dos o mas procesos al mismo tiempo.

Por otra parte, como cualquier otro sistema operativo, este sistemaincorpora herramientas interactivas para facilitar la gestión de lasfunciones principales de un Centro de Proceso de Datos (CPD).

El nombre de MVS se corresponde con el acronimo de Múltiple Virtual Storage,recogiendo este nombre de su funcionamiento ya que para su gestión se basaen los conceptos de paginación y memoria virtual.

En general, en una instalación de MVS, se pueden encontrar los siguienteselementos:

- MVS básico (MVS release 3.8)- ISPF Interactive System Productivity Facilitys

Este es un producto que se ejecuta bajo TSO, contiene un editory numerosos programas de utilidad que facilitan el uso denumerosos servicios que permiten el desarrollo de diálogosinteractivos.

- Software especifico para el mantenimiento de subsistemas específicos,capaces de optimizar entre otros, la gestión de ejecución de lostrabajos Batch o la de almacenamiento de los datos.

El mantenimiento del MVS es realizado directamente por IBM, pudiendo optarsepor los métodos de:

- Actualización de las mejoras según van apareciendo (PUT)

- Sustitución total del MVS (CBIPO)

Page 13: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 13/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 13 de 374

1.2 Versiones del MVS

Las diferentes versiones de los productos que acompañan al MVS básico, sonlas que establecen las diferentes versiones de este S.O.. Así, cuando sehabla de:

- la versión 1 de MVS, con sus diferentes revisiones (releases), se estahablando de lo que comúnmente se conoce como MVS/370, pero se correspondecon el OS/VS1 versión 2, e introduce el concepto de Espacio dedirecciones.

- la versión 2 de MVS más sus diferentes releases componen el MVS/XA.(eXtended Architecture). Esta realmente fue una revisión de la versiónanterior para solucionar la gran cantidad de problemas presentados enaquella.El MVS/XA es una versión que afecta tanto al hardware como al software ya

que la memoria virtual pasa de 16 Mb a 2 Gb, necesitando 4 bytes paradireccionar cada posición de memoria.

- la versión 3 se corresponde con lo que se conoce como MVS/ESA (EnterpriseSystem Architecture).Esta versión se diferencia de la anterior, entre otras cosas, en que puededireccionar hasta un máximo de 15 espacios de direcciones de 2 Gb. Asímismo esta versión introduce el uso de microcodigo.

Page 14: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 14/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 14 de 374

1.3 Componentes principales del MVS

Como ya se ha dicho, el MVS es un compendio de rutinas del sistema operativobase, utilidades, subsistemas y productos, y todo el conjunto tiene porobjetivo el resolver las necesidades planteadas por toda la instalación.

Los subsistemas y productos más importantes son:

 VTAM  Virtual Telecommunications Access MethodEste método de acceso para comunicaciones fue creado por IBM afin de aprovechar las nuevas capacidades del Hardware del S/370,de la memoria virtual, y de los terminales y unidades de controlinteligentes.

TSO Time Sharing Operation (Operaciones de tiempo compartido).Es un subsistema de IBM para poder acceder de forma interactiva a

los servicios de MVS.

Normalmente va acompañado de un producto a base de paneles, parahacer más sencillo su manejo. Este producto es ISPF/PDF.

CICS Customer Information Control System (Sistema de control deinformación de clientes)

Sistema de base de datos y comunicación de datos (DB/DC) de usogeneral para procesos interactivos. Suelen disponer de estesistema de teleproceso las instalaciones que trabajan con COBOLcomo lenguaje de programación.

IMS Information Manager System (Sistema de administración deinformación)Fue uno de los grandes productos de IBM en sistemas DB/DC(DataBase/DataComunication). Suelen disponer de este sistema deteleproceso las instalaciones que trabajan con DL/I como base deDatos y PL/I como lenguaje de programación.

DL/I Gestor de base de datos jerárquicaDB2 Data Base 2

Gestor de base de datos relacional.

JES Job Entry Subsistem (Subsistema de entrada de trabajos)

Subsistema de entrada de trabajo (Gestor de trabajo por lotes).

CONSOLAS Terminales maestros que controlan y gobiernan el sistema(Herramientas de operación).

Page 15: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 15/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 15 de 374

1.4 Usuarios de MVS 

Se entiende por usuario de un sistema operativo MVS, todo aquél que necesitay obtiene recursos de éste.

Este concepto de usuario de MVS esta íntimamente relacionado con los tiposde trabajos que se van a ejecutar en el sistema, y que por lo tanto incidenen el S.O., por sus propias necesidades.

1.- Productos y subsistemas del propio MVS (Programas y Subsistemasnecesarios para el funcionamiento de MVS, JES, VTAM, CICS, etc.) quevan a resolver ciertas necesidades de los programas de aplicación.

2.- Usuarios de TSO. Usuarios que conectados a través de un terminal usanlos servicios de MVS a través del producto interactivo TSO (tiempocompartido).

3.- Programas batch y aplicaciones, tanto por lotes como en modo on-lineque accederán a la información residente en el ordenador, con el objetode proporcionar unos resultados.

Page 16: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 16/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 16 de 374

1.5 Componentes de Hardware 

Algo vital en un sistema de proceso de datos es el entramado hardware dondese van a procesar y ejecutar todos los programas de la instalación.

Se puede distinguir los siguientes componentes como elementos principales:

1.5.1 Procesadores y subsistemas de Canales 

MVS/ESA, está soportado por ordenadores IBM de la familia 3090 en susdiferentes versiones, y la familia 4381 modelos 91 y 92.

Estos equipos pueden ser monoprocesadores (un solo procesador enmáquina), cuyos modelos principales son:

ES/3090 100 modelos S,

ES/3090 150 modelos E y S.ES/3090 180 modelos E y S.ES/4381 modelos 90 y 91 E.

O bien pueden ser multiprocesadores (varios procesadores en máquina)modelos:

ES/3090 250S, 280E, 380E, 400E y S, 600E, y S.

El subsistema de canales se puede definir como una pequeña máquina (consu software y hardware) particular, que libera al procesador de lasfunciones de operación de E/S pues este subsistema es el encargado derealizarlas de una manera autónoma, aunque limitada, pues su softwaresolo le permite ejecutar las operaciones siguientes:

- leer un bloque- escribir un bloque- leer hacia atrás- analizar- controlar (salto de línea en un impresora)- transferir en canal (bifurcar)

Page 17: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 17/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 17 de 374

1.5.2 Dispositivos de Memoria Auxiliar.

Cualquier programa, para poder ejecutarse debe cargarse previamente en lamemoria principal del ordenador, pero esta memoria es cara, volátil,pequeña y además no es suficiente para albergar la gran cantidad dedatos, que necesita un C.P.D. para su funcionamiento. Por eso, todosestos datos son alojados en dispositivos auxiliares, y serán pasados amemoria central para su ejecución en su momento adecuado. Entre estosdispositivos auxiliares se pueden destacar los siguientes:

1. DISCOS

Son los dispositivos de mayor capacidad.

Un disco IBM, es en realidad un armario con dos volúmenesindependientes.

Los modelos existentes son:

1ª generación 2311, Tenían la característica de ser2314 removibles y la capacidad de cada módulo2319 era de 29 Mb.

2º generación 3330 Capacidad : 100 MbSon semiremovibles

3ª generación 3340 34 Mb3344 70 Mb335033703375 409 Mb

No son removibles

4ª generación 3380 su capacidad depende de la densidad,oscilando entre 630 a 1890 MB

2. Unidades de Cinta : 3420 

Son unidades que permiten la grabación y lectura de la informacionsoportada en cinta redonda, siendo este un almacenamiento externocon una capacidad máxima de 160 Mb.

Entre sus características se puede destacar que utiliza el método decolumna de vacío para preservar la rotura de la cinta.

3. Unidades de Cartucho: 3480

Son dispositivos de almacenamiento externo, parecidos a las cintas,pero con mayor velocidad de grabación y mayor capacidad dealmacenamiento (200 Mb).

Reciben el nombre de cinta cuadrada.

Page 18: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 18/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 18 de 374

1.5.3 Periféricos y consolas

1.- Impresoras 

A un ordenador IBM se puede conectar todo tipo de impresoras,locales 3800 y remotas 3274, 3825, 4250, etc.

2.- Terminales 

A un ordenador IBM se puede conectar cualquier tipo de terminal pararecoger o sacar datos de éste en modo interactivo u on-line.Hay que tener en cuenta que hoy existen emuladores de todo tipo determinal que facilitan esta conexión.Las conexiones que se pueden hacer son locales y remotas, es decir,a través de un controlador de comunicaciones, o utilizando la redtelefónica como medio de transmisión de datos.

3.- Consolas 

Las consolas son unos terminales especiales, conectados directamenteal ordenador y que sirven para el gobierno de todo el sistema.Lo normal es que exista una consola maestra y varias alternativaspara realizar funciones específicas o bien como backup de lamaestra.

Page 19: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 19/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 19 de 374

1.5.4 Unidades de control

Son elementos hardware que controlan el funcionamiento y el acceso a losdispositivos, y son usados por el subsistema de canales.

1. Unidad de control de discos 

Existen varios modelos de estas unidades, entre los que seencuentran los tipos 3880 y 3990.

De cada una de esta unidades pueden colgarse de 16 a 32 armarios dediscos, por lo tanto controlan de 32 a 64 volúmenes.

2. Unidades de control de cintas y cartuchos

Estas unidades son las encargadas de controlar la grabación y

recuperación de datos de las unidades de cintas y cartuchos.

Entre estas unidades tenemos los controladores de cinta 3480 y 3422de IBM.

Page 20: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 20/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 20 de 374

1.6 JES: Subsistema dedicado a la gestión de trabajos Batch

Su nombre proviene del acronimo de Job Entry Subsystem. Es decir es elencargado de gestionar la entrada de todos los trabajos.

En los primeros sistemas operativos, este era el programa encargado decontrolar las lectoras de tarjetas o fichas perforadas, y las impresoras; ycomo consecuencia ha heredado la función de interpretar las sentencias quese le envían como entrada para la ejecución de un trabajo.

Existen dos versiones del JES: JES2 y JES3, pudiendo ejecutarse cualquierade ellas con MVS.

El JES2 es el resultado de la revisión del programa HASP (Houston AutomaticSpooling Priority) del MVT (Multiprogramación con numero variable de tareas)mientras que el JES3 es el resultado de la revisión del programa ASP.

Para ejecutar trabajos batch en MVS se puede utilizar cualquiera de las dosformulas siguientes:

- ejecutar el comando de TSO SUBMIT para enviar a la cola de entrada detrabajos del JES el JCL que sirve de parametro a dicho comando; o

- Escribiendo mediante cualquier programa o utilidad un JCL sobre la cola deentrada de trabajos del JES.

Las principales funciones del JES son:

- Gestión de entrada de trabajos en los iniciadores, en base a sus clases.

- Verificación de la validez de la sintaxis del JCL.

- Reserva y asignación de recursos (Fichas DD del JCL).

- Interfase con MVS durante la ejecución de trabajos.

- Gestión de salidas impresas en base a las clases de salidas de losdiferentes impresos.

Los tres componentes principales del JES son:

- los iniciadores,- el spool y- el fichero de check-point.

Page 21: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 21/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 21 de 374

1.6.1 Iniciadores 

Los JOBs, mediante el parámetro CLASS, tienen asignado la clase deentrada del JES en la que se debe ejecutar.

Los iniciadores son colas que tienen asignadas unas clases de proceso, ysirven para seleccionar trabajos a fin de repartir la carga de trabajosbatch del sistema.

La definición de los iniciadores y la asignación de las distintas clasesa cada uno de ellos es misión del administrador del sistema.

Las clases se definen con una letra o un número.

Ejemplo :

Supuesto que se ha submitido el JOB siguiente://XXXXXXXX JOB CLASS=K

...Y que el sistema tiene definidos las siguientes relaciones:

Iniciador Clases trabajos

1 ABC 82 ACK 153 AD 34 CE 5

El sistema podrá asignar dicho JOB solo al iniciador 2 pues esel unico que puede ejecutar los trabajos de la cola K.

Suponiendo que en ese momento se encuentren 15 trabajosejecutándose en dicho iniciador, el trabajo se encolara a laespera de tener hueco.Si en al mismo tiempo se submite otro trabajo para la cola A,este podrá ser asignado a cualquiera de los inicadores 1,2 o3. Asi, si el iniciador 1 esta ejecutando menos de 8 trabajos.será asignado a este JOB; en caso contrario, se examinara el2, que esta con sobrecarga. por lo que se examina el iniciador3, que como no tiene trabajos en ejecución, será quienfinalmente ejecute el trabajo.

Page 22: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 22/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 22 de 374

1.6.2 SPOOL

El Spool es un fichero gestionado y controlado por el JES y que tiene pormisión es contener todos los trabajos que estén:

- ejecutándose,- en espera de ejecutar, o- en espera de salida.

Para poder realizar esta gestión, el spool se organiza formando colas,entre las que cabe destacar:

COLAS DE ENTRADA:

En esta cola están todos los trabajos que se encuentranesperando un iniciador libre asignado a su clase para poder

ejecutarse.Los trabajos se encuentran clasificados por la identificaciónde la cola asignada al JCL mediante el parámetro CLASS de laficha JOB.

COLAS DE EJECUCION:

En esta cola se encuentran los trabajos que en ese momentoestán en ejecución. También se encuentran los trabajos en estacola clasificados por clase.

COLAS DE SALIDA: 

En esta otra cola se encuentran aquellos trabajos que hayanterminado, y estén esperando una salida impresa.También en esta cola la informacion se encuentra clasificadapor el identificador de la cola asignada a las salidasgeneradas, que no tiene por que coincidir con la definida anivel de JOB.

Page 23: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 23/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 23 de 374

1.6.3 Fichero de check-point

Este fichero es en el que se basa el JES para establecer las operacionesa realizar. Contiene una referencia de todas las colas de entrada ysalida, además de los trabajos en ejecución, por lo que este es elfichero que consulta y mantiene el JES para, explorando las colas, sabercual es el trabajo que debe atender en primer lugar; y una vezestablecido este, accede el SPOOL, donde se encuentra realmente el JCL,para enviarle a ejecución, al tiempo que actualiza el estado de losficheros con las colas afectadas.

Normalmente, en las instalaciones se definen varios ficheros de SPOOL,pero en cambio,solo se define un fichero de chek-point, y opcionalmenteotro, que sirve como una copia del primero, para poder reactivar lasfunciones del JES, en caso de error en el primer fichero de chek-point.

La configuración de todo este sistema es labor del departamento detécnica de sistemas.

Page 24: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 24/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 24 de 374

1.7 Los ficheros en MVS

En MVS como en cualquier otro sistema operativo, la informacion se encuentraagrupada en conjuntos homogéneos, recibiendo cada conjunto la denominación defichero o Data-set.

En MVS el nombre de los ficheros se forma agrupando calificadores yseparando estos con un punto. Cada uno de los calificadores puede tener unalongitud máxima de 8 caracteres alfanuméricos, no pudiendo empezar pordígito ni por un carácter especial con excepción del $ que es valido.

La longitud máxima del nombre de un fichero no puede superar los 44caracteres. y debe tener al menos dos calificadores, exceptuando losficheros temporales, cuyo nombre se forma anteponiendo un & a un unicocalificador.

El nombre completo de un miembro de un fichero particionado se formaescribiendo el nombre del fichero y entre paréntesis el miembro a procesar.

Además, MVS contempla también ALIAS para los nombres de ficheros, siendoestos ALIAS, nombres alternativos dados a ficheros. Para las versionesanteriores al MVS/ESA este nombre alternativo solo podía especificarse parael primer cualificador. En cambio, con esta versión de MVS el alias puedereferenciar hasta los cuatro primeros calificadores de un fichero si sedesea.

Los alias residen en el catálogo maestro, como se vera a continuación, yapuntan a un determinado catálogo de usuario, donde estará ya la ubicaciónfísica de un determinado fichero.

Page 25: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 25/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 25 de 374

1.7.1 Tipos de organizacion en ficheros no-VSAM 

Los principales tipos de organizacion de ficheros no-VSAM en un sistemaMVS son:

- Secuencial- Particionada- Directa- Secuencial Indexada

1.- Organizacion secuencial

- Los ficheros con este tipo de organizacion se definen comoel conjunto generado al almacenar la informacion

secuencialmente, es decir, escribiendo cada registro unodetrás del otro y manteniendo este orden. Cuando se deseerecuperar la informacion, los registros deben leerse de lamisma forma, es decir, leyendo un registro cada vez y en elmismo orden en el que se escribió.

Para el manejo de la informacion en estos ficheros, ya sea encinta o en disco, se puede usar cualquiera de los siguientesmétodos:

- El método de acceso QSAM (Queued Sequential Acces Method)que permite al usuario leer y escribir a nivel de registrológico. Es el mas usado.

- El método BSAM (Basic Sequential Acces Method) que permiteal usuario leer y escribir a nivel de bloque.

Page 26: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 26/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 26 de 374

2.- Organizacion particionada 

Los ficheros pertenecientes a este tipo también reciben elnombre de bibliotecas, librerías o PDS (Particioned Data Set)debiendo este nombre, en parte a herencia de los sistemasoperativos predecesores, y en parte a la forma en comoorganiza su informacion, pues dispone de las dos areassiguientes, a modo de biblioteca:

- un área de directorio que permite la localización inmediatade cualquier miembro,

- y un área de datos.El área de datos esta formada por conjunto de datossecuenciales.

El directorio es un área que contiene una entrada para cada

miembro. Cada una de estas entradas contiene la especificacióndel nombre, dirección relativa de comienzo dentro del area dedatos, longitud y otras estadísticas de cada uno de losmiembros. (ver utilidad ........)

Estas dos áreas son independientes y se dimensionarán condistinto espacio. Un fichero particionado se gobierna por sudirectorio. (ver parámetro SPACE de la ficha DD).

Este tipo de organización es muy usada en MVS, siendo ademásobligatoria para cierto tipo de información, tales comoprocedimientos y programas ejecutables entre otros. Y seemplea para contener tanto datos como programas.

El método de acceso que procesa este tipo de ficheros es elBPAM (Basic Partitioned Access Method).

Page 27: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 27/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 27 de 374

3.- Organizacion Directa o Random  

Este tipo de organizacion permite al usuario leer y escribirdirectamente a nivel de bloque. Solo puede usarse con ficherosen disco, y su uso esta ligado a la gestión de Bases de datos(como IDMS) no siendo un método de acceso de uso normal parael usuario.

El método de acceso que procesa este tipo de ficheros es elBDAM (Basic Direct Access Method)

4.- Organizacion Secuencial Indexada

Este es un método obsoleto que ha sido reemplazado por los

ficheros VSAM.

El método de acceso que procesa este tipo de ficheros es elISAM (Indexed Sequential Access Method).

Page 28: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 28/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 28 de 374

1.7.2 Tipos de registro 

Cualquier tipo de fichero no-VSAM definido en el punto anterior puedetener definido uno de los siguientes formatos de registro:

- Formato FIJO (F)

Este tipo de formato se caracteriza por tener todos losregistros la misma longitud, y todos los bloques o conjuntosfísicos de registros lógicos de un mismo fichero) tambiéntienen el mismo tamaño.

El máximo tamaño del bloque es de 32760 Bytes.

Formato Variable (V)

La característica de este tipo de registros es que losregistros lógicos que componen el fichero tienen longitudesdistintas, yendo precedido cada uno de los registros por 4bytes para especificar su longitud. A su vez, cada bloquetambién va precedido por otros 4 bytes para indicar sulongitud.

El tamaño máximo del bloque es de 32760 mientras que el deregistro es de 32756 bytes.

Si pudiera darse el caso de que un registro lógico exceda eltamaño máximo de un bloque, habría que definir el fichero comode formato VBS(Variable Blocked Spanned)

Formato Indefinido (U) 

Este tipo de formato se usa cuando el fichero no esta formadopor registros lógicos, por lo que solo pueden leerse los datosleyendo el bloque entero.

El tamaño del bloque no puede exceder de 32760 Bytes.

Este formato es el usado entre otras, por las librerías de losprogramas ejecutables.

Page 29: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 29/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 29 de 374

1.7.3 Organizacion VSAM  

Este tipo de organización de fichero es especial contandoademás con un método de acceso propio.

Su nombre proviene del acronimo Virtual Storage Access Method.Debiendo ser procesados por sistemas que traten memoriavirtual, tal y como indica su nombre, y además deben residiren disco.

Dentro de este tipo de organizacion existen 4 tipos:

- Organizacion Secuencial (ESDS:Entry Sequential Data Set)Sustituye a los ficheros con acceso QSAM y BSAM.

- Organizacion Directa (RRDS:Relative record Data Set)Sustituye a los BDAM.

- Organizacion Indexada (KSDS: Key Sequential Data Set)Sustituye a los ISAM

- Organizacion lineal : Este tipo de organizacion secuencial.Es usada solo por gestores de bases de datos.

Page 30: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 30/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 30 de 374

1.7.4 Acceso y recuperación de datos

El acceso a datos en MVS se hace a través del juego de VTOC y catálogos.

1.- VTOC (Tabla de Contenidos del Volumen).

En MVS todos los volúmenes DASD(Direct Access Storage Device)tienen una zona en la que se registra toda la informaciónfísica que contiene, así como la organizacion de los ficherosque están en ese volumen.

Esta area, que recibe el nombre de VTOC se crea en el momentode inicializar el volumen. La informacion contenida en ellaesta organizada en distintos tipos de registros, todos elloscon una longitud de 144 bytes de longitud, y reciben el nombrede DSCB (Data set control Block)

La primera parte del registro tiene una longitud de 44 bytes,y contiene o el tipo de registro o el nombre del fichero.

Cada tipo de registro o formato, contiene la siguienteinformacion especifica:

Formato 4: Describe la VTOC.Es el primer registroSolo hay un registro de este tipo.

Formato 5 Especifica el espacio libre

Formato 1 Describe cada archivo y el espacio que ocupa,

ajustándose a la siguiente estructura:

00-43 Nombre del fichero44-44 Tipo de registro... Organizacion

Longitud del bloqueTamaño de registroPunteros a los 3 primeras extensiones

Formato 3 Describe las extensiones del fichero

Formato 2 Describe el método de acceso a los ficherossecuenciales indexados.

Formato 0 Es un registro nulo.

Nota: Con el lanzamiento del SMS (Sistema de gestión dememoria) las VTOC tienden a desaparecer.

Page 31: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 31/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 31 de 374

2.- Catálogos

Los catálogos son el otro componente en el que se apoya MVSpara el acceso y localización de ficheros.

Un catalogo no es mas que un fichero VSAM, pero con uncontenido especial ya que contiene información acerca de laubicación física de otros ficheros, de modo que se puedalocalizar solo con esa informacion cualquier fichero de lainstalación.

En MVS un fichero puede, o no, estar catalogado. En el caso deestarlo el sistema a través del catálogo puede determinar elvolumen en el que se encuentra, y una vez en el volumen,examinando la VTOC podrá recoger todas las características deeste fichero. En el caso de no estar catalogado, cuando se

desee utilizar, habrá que especificar la información delvolumen que le contiene, para que así, mirando la VTOC puedalocalizarlo.

Para poder gestionar la catalogación de todos los ficheros dela instalación, MVS mantiene un catálogo maestro y varioscatálogos de usuario.

En el catálogo maestro, normalmente figuraran entradasmaestras, es decir referencias de los ficheros que son vitalespara el funcionamiento de MVS, y sus alias.En los catálogos de usuario figurara la dirección lógica delos distintos ficheros de usuario.

Page 32: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 32/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 32 de 374

1.8 Librerías que contienen el MVS 

Por lo general todos los módulos del MVS se encuentran ubicados en libreríasque tienen por primer cualificador SYS1, siendo alguna de las masinteresantes desde el punto de vista del desarrollador, las siguientes:

SYS1.LPALIB Contiene los módulos del supervisor

SYS1.NUCLEUS Contiene los módulos que definen el sistema como resultantedel proceso de generación del sistema (SYSGEN)

SYS1.LINKLIB Contiene las utilidades y módulos compartidos por todos losusuarios, tales como SORT, COBOL, IEBCOPY, ...

SYS1.SVCLIB Esta librería contenía los módulos del supervisor (SVC) enel MVT, pero hoy solo se mantienen por razones decompatibilidad.

SYS1.CMDLIB Esta librería contiene los módulos del procesador decomandos de TSO.

Page 33: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 33/373

TSO para desarrolladores: MVS Autor: José M. Peco

Página 33 de 374

1.9 Bibliografía

MVS - Manual para programadoresRobert H. JohnsonEditorial McGraw Hill

Page 34: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 34/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 34 de 374

Tema 2 : JCL 

2.1 Introducción

Como se ha visto en el tema anterior, uno de los subsistemas básicos delsistema operativo MVS es el JES o controlador de trabajos batch. Su misiónfundamental consiste en preparar los trabajos que se le envían para suejecución, interpretando las sentencias de control que componen cada una delas cadenas o JOBs, y asignar los recursos que requiere su ejecución asícomo el espacio de direcciones ,o partición, en la que poder ejecutarse.

Estas cadenas son escritas en un lenguaje especial, llamado Lenguaje deControl de trabajos (Jobs), o abreviadamente JCL.

Debemos diferenciar entre JC y JCL, siendo:

JC el programa (Job control)JCL el lenguaje que se utiliza para trabajar con el JC

También se suele dar el nombre de JCL, aunque erróneamente, a la cadenaescrita para la ejecución de un trabajo.

El JES, como ya se ha visto, es invocado cada vez que se ejecuta el comandoSUBMIT de TSO, mediante el cual se envía a la entrada de ejecución detrabajos un fichero conteniendo la secuencia de sentencias de control que sedesea ejecutar; o bien, copiando un fichero sobre la entrada de trabajos delsistema(Internal Reader) como también se vera a lo largo de este tema.

Por otra parte, también se puede usar el JCL para ejecutar comandos propiosdel JES2 y JES3.

Page 35: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 35/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 35 de 374

2.2 Definiciones previas 

JOB o CADENA 

Recibe este nombre una sucesión de programas encadenados para suejecución como un unico trabajo.

Comienza siempre con una sentencia //nombre JOBy finaliza con : /&aunque esta ficha no es obligatoria, o con una sentencia vacia,entendiendo por tal la que solo contiene simplemente //

STEP o PASO

Recibe este nombre el conjunto de sentencias necesarias paraejecutar cada uno de los programas que integran un JOB.

Un paso del trabajo comienza siempre con//nombre EXEC

Finaliza cuando se encuentra con el fin del JOB o con otra fichaEXEC.Y debe contener tantas sentencias DD como ficheros lógicostenga definidos el programa que se desea ejecutar.

 ALOCAR 

Este anglicismo, muy usado en las instalaciones, deberíaescribirse como ALLOCAR, pues proviene de usar el comando ALLOC

abreviatura de ALLOCATION, que significa asignación.

Se entiende por alocar un fichero o una librería el asignar dichofichero o librería a nuestro entorno de trabajo a fin de poderhacer uso de él. Hay que tener en cuenta que en MVS solo se puedehacer uso de aquellos elementos que se encuentren alocados en elentorno del usuario que desea ejecutar el programa.

Esto es lógico, ya que cuando se aloca un fichero se especificatambién el modo en el que es asignado, de esta forma si se alocaun fichero como de Modificación, se estará asignado conexclusividad, y nadie podrá hacer uso de el, ni siquiera paralectura, pero, si se le aloca en modo compartido (SHaRed), todoslos usuarios podrán incluirlo en su entorno, siempre y cuando

también le aloquen como SHR.

Page 36: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 36/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 36 de 374

PROCEDIMIENTO CATALOGADO

Es un conjunto de sentencias de control incluidas en un miembrode una librería del sistema, y que emplea nombres variables parala codificación de aquellos parámetros cuyo valor se desconoce entiempo de codificación.

PROCEDIMIENTO IN-STREAM 

Es, como el procedimiento catalogado, un conjunto de sentenciasde control, pero, en lugar de estar ubicadas en una libreríaestán incluidas dentro de la propia cadena de control.

Page 37: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 37/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 37 de 374

2.3 Formato general de las sentencia del JC

Todas las líneas que componen una cadena se codifican siempre en formatoimagen de ficha, es decir que su longitud es de 80 posiciones.

La informacion ejecutable se encuentra siempre en las primeras 71posiciones, ya que se reservan las 8 ultimas posiciones para un blanco, queactúa de delimitador, y 7 posiciones para la numeración de las fichas.

En el caso de que la informacion a especificar en una línea fuera mayor de71 posiciones, se puede continuar en las fichas siguientes, terminando lalínea con una coma, y comenzando la codificación de la línea siguiente entrelas columnas 7 y 16, tal y como se muestra en el siguiente ejemplo:

//XXXXXX85 JOB (123,DES),'JMP-PRU',CLASS=T,MSGCLASS=X, 00000100

// NOTIFY=XXXXXX,MSGLEVEL=(1,1) 00000200

El formato general de las sentencias de control es:

//Etiqueta b_1 operación b_2 operandos b_3 comentario

Donde:

// indica que se trata de una sentencia de control y debenocupar las columnas 1 y 2 de la ficha.

Etiqueta Sirve para identificar la sentencia de control en la quese encuentra.

B_1 Delimitador de 1 a n blancos

Operación Puede ser una de las operaciones comentadas en elsiguiente apartado.

B_2 Delimitador de 1 a n blancos

Operandos Este campo debe comenzar antes de la columna 17, yespecifica los operandos o parámetros del operador alque acompaña. En el caso de que los operadores fueranvarios, estos irán separados por comas, y sin incluir

blancos.B_3 Delimitador de 1 a n blancos

Comentarios Es el ultimo grupo de informacion de la línea y esutilizada para especificar comentarios a la línea de lacadena.

Page 38: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 38/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 38 de 374

Otros formatos de las sentencias de control son los siguientes:

(1) //

(2) //*

(3) /*comando

donde el formato:

(1) representa la sentencia vacía.Su uso especifica el fin de la cadena o JCL.

(2) se usa para especificar comentariosEs una ficha no ejecutable

(3) Este formato se usa para ejecutar comandos del JES

Page 39: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 39/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 39 de 374

2.3.1 Etiqueta 

Las etiquetas son identificadores que se utilizan para referenciarcualquier elemento individual dentro de su conjunto. Así, con la etiquetade la ficha:

- JOB queda identificado el JOB dentro de las colas de ejecución.- PROC queda identificado el procedimiento- EXEC queda identificado el paso- DD queda identificado de forma lógica el fichero ante el programa

que va a manejar sus datos.

Como características se pueden resaltar las siguientes:

- La etiqueta es un campo opcional

- En caso de codificarse debe comenzar en la columna 3- No puede ser mayor de 8 posiciones alfanuméricas- Debe comenzar por un carácter alfabético- Identifica la ficha de control- Sirve para referenciar una ficha del JOB.

//PASO1 EXEC PGM=IEBCOPY 00000600//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR 00000700//SALIDA DD SYSOUT=* 00000800

PASO1, STEPLIB, SALIDA son tres etiquetas que identifican tres fichasdistintas del JOB.

Page 40: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 40/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 40 de 374

2.3.2 Operación

Este lenguaje solo contempla los siguientes tipos de operación:

JOB Solo puede haber una operación de este tipo por cadena, yaque define el conjunto del JOB o JCL.

EXEC Esta operación sirve para especificar el programa oprocedimiento que se desea ejecutar. Por lo tanto habrátantas operaciones EXEC como pasos tenga el JCL o cadena.

DD Este tipo de operación sirve para definir datos. Es decir,esta ficha se usa para determinar los contenedores de losdatos que se van a manipular. En consecuencia debendefinirse a nivel de programa, ya que son estos los únicos

que pueden manejar los datos. Y habrá en un paso tantasoperaciones DD como Definiciones de Datos requiera elprograma.

PROC Como se ha dicho en las definiciones previas, unprocedimiento no es mas que un conjunto de pasos agrupadosbajo un nombre. Pues bien, esta operación define elcomienzo de un procedimiento, y la etiqueta que identificala ficha, da nombre al procedimiento. (No confundir estaoperación con el parámetro PROC de la ficha EXEC).

PEND Esta operación define el final de un procedimiento.

OUTPUT Este tipo solo es valido para MVS/XA y MVS/ESA y va ligadaal parámetro OUTPUT de la sentencia DD.

Page 41: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 41/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 41 de 374

2.3.3 Operadores o parámetros

Los operadores o parámetros de un operando pueden ser de dos tipos:

- Posicionales Aquellos cuyo valor esta asociado con la posiciónque ocupa como operador.

//DESJMPL1 JOB (40,123),'JMP-PRU'

- Palabra clave Aquellos cuyo valor va acompañado de una palabraclave que identifica al operador o parámetro usado.

// MSGCLASS=Z,NOTIFY=DESJMP

A su vez, los parámetros pueden estar compuestos de subparametros

posicionales y de palabra clave. En cualquier caso, estos subparametrosdeberán ir encerrados entre paréntesis, o entre comillas.

Como ejemplo de todas estas definiciones se acompaña el siguiente JCL,que como especifica en los comentarios, realiza la copia de un miembro deun fichero particionado sobre un fichero secuencial.

//DESJMPL1 JOB (40,123),'JMP-PRU',CLASS=D,MSGCLASS=Z,// NOTIFY=DESJMP,MSGLEVEL=(1,1)//**********************************************************************//* COPIAR UN MIEMBRO A UN SECUENCIAL//**********************************************************************//PASO1 EXEC PGM=IEBCOPY//ENTRADA DD DISP=OLD,DSN=&librería.(&miembro.)//SALIDA DD DSN=&secuenc,// DISP=(,CATLG,DELETE),UNIT=SYSDA,SPACE=(CYL,(1,1),RLSE),// DATACLAS=DFBAQ,LRECL=80//SYSIN DD *DDIN=ENTRADA DDOUT=SALIDA

/*//SYSPRINT DD SYSOUT=*

Como REGLA GENERAL: Cuando un parámetro posicional no se codifique yexistan operadores cuya posición relativa sea posterior a la del quefalta, deberán codificarse los huecos de los parámetros no especificadosmediante tantas comas como faltas haya, no debiendo dejar ningún blanco

entre estas ya que este es el delimitador de los distintos campos de laficha de control.

El siguiente ejemplo muestra este extremo, ya que falta el primersubparametro del operador DISP

// DISP=(,CATLG,DELETE)

Page 42: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 42/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 42 de 374

2.4 Sentencia JOB

Especifica el comienzo de un trabajo o cadena.

Cada Job solo puede contener una única ficha JOB. Por esto, en el caso deque en una misma corriente de control vinieran especificadas varias fichasjob, cada una de ellas indicará el fin de un trabajo, si no es la primera, yel comienzo de un nuevo trabajo.En el caso de que dicha cadena contuviera alguna ficha nula ( solo con // )se ignorara el resto de la corriente.

El nombre del JOB puede tener hasta 8 caracteres, empezando siempre por uncarácter alfabético. No se considera el guión como carácter especial.

El formato de esta sentencia se ajusta al formato general.

//Nombre JOB ([cuenta][,informacion_de_contabilidad,...])CLASS=clase_ejecuciónMSGCLASS=clase_salidaMSGLEVEL=([sentencias],[mensajes])[COND=(código,operador),...][NOTIFY=identificación usuario][PRTY=prioridad del job][REGION=valorK] o [REGION=valorM][TIME={([minutos][,segundos])}][TYPRUN={HOLD}] o [TYPRUN={SCAN}][RESTART=id_paso_reinicio]

Los parámetros obligatorios en general son los parámetros CLASS para saber aque iniciador se debe enviar el trabajo, y MSGCLASS para determinar que tipode mensajes se quiere recoger. El resto de los parámetros son obligatorios uoptativos dependiendo de la instalación.

Como ejemplo se acompaña el siguiente, si bien puede tomarse cualquier otroejemplo de este tema.

//DESJMPL1 JOB (40,123),'JMP-PRU',CLASS=D,MSGCLASS=Z,// NOTIFY=DESJMP,MSGLEVEL=(1,1),RESTART=*

Page 43: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 43/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 43 de 374

2.4.1 Informacion de contabilidad  

Es un parámetro posicional y siempre es el primer parámetro de la fichaJOB.

Por lo general, todas las instalaciones suelen imputar los gastos delcentro de calculo a los distintos departamentos en función del tiempo demaquina que hayan consumido.

Este parámetro sirve para contabilizar dicho tiempo, y se ajustara a lasespecificaciones de la instalación.

Si hubiera que codificar subparametros, este parámetro ira delimitado porparéntesis, y los subparametros separados en el interior por comas.

En el caso de que algún parámetro contuviera apóstrofes o ampersands (&)se codificaran dobles, pero serán considerados por el sistema como sifueran sencillos.

La longitud total máxima de este parámetro es de 144 bytes.

Ejemplos

//JMP1 JOB 123, ...//JMP2 JOB (123,12-12-94), ...//JMP3 JOB , ...//JMP5 JOB 123&&456, ...

Page 44: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 44/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 44 de 374

2.4.2 Nombre del programador

Parámetro posicional.

Este parámetro es el segundo de la ficha JOB, y por tanto, si no seespecifica el parámetro anterior, este debe ir precedido de una coma afin de respetar la regla general.

Este parámetro identifica al responsable del Job, y debe ir delimitadopor comillas simples (').

En el caso de que este parámetro contuviera comillas, estas debenespecificarse dobles, a fin de que no sea interpretada como fin delparámetro.

Ejemplos

//JMP1 JOB 123,'JMP-PRU' ...//JMP2 JOB (123,12-12-94),'JMP-PRU' ...//JMP3 JOB ,'JMP-PRU' ...//JMP4 JOB ,'Jose O''Donnel' ...//JMP5 JOB 123&&456,'JMP-PRU' ...

Page 45: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 45/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 45 de 374

2.4.3 ADDRSPC

Parámetro de palabra clave

Este parámetro especifica si el JOB se va a ejecutar en memoria REAL o enmemoria VIRTual.

La diferencia entre un valor y el otro estriba en que si se ejecuta enmemoria REAL, no hay paginación, mientras que si se ejecuta en memoriaVIRTual, si la hay, lo cual implica un mayor tiempo de ejecución, sibien, esta diferencia de tiempos solo será apreciable en procesos muylargos.

Los valores posibles de este parámetro son :

- VIRT- REAL

Por defecto asume VIRT.

Ejemplos

//JMP01 JOB (123,(456,ABC)),ADDRSPC=VIRT...//JMP02 JOB ADDRSPC=REAL

Page 46: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 46/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 46 de 374

2.4.4 CLASS

Parámetro de palabra clave

Este parámetro especifica la cola de entrada a la que se desea que el JESasigne el trabajo para su ejecución.

Las instalaciones definen en el JES distintos iniciadores para laejecución de los trabajos. A su vez, cada iniciador tiene asignadasdistintas clases o colas de entrada, y estas tienen asignadas distintasprioridades de ejecución, por lo que el enviar un trabajo a una u otracola, puede repercutir en el tiempo que tarda en ejecutarse dichotrabajo.

Así, por ejemplo, una instalación podría tener definidas las siguientes

colas:

Entrada A: Trabajos que consumen menos de 1 minutoB: Trabajos que consumen menos de 10 minutosX: Trabajos con tiempo ilimitado...

Salida A: Salida normalB: Salida en DIN-A4C: Salida para diskettes...

Por defecto asume la clase que tenga asignada el usuario de TSO quesubmite o envía el trabajo a ejecución.

Valores: A - Z0 - 9

Ejemplo: //JMP03 JOB ADDRSPC=REAL,CLASS=B

Page 47: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 47/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 47 de 374

2.4.5 COND

Parámetro de palabra clave

Este parámetro especifica la condición que de forma general debe cumplirel código de retorno devuelto por los programas que configuran el JOB,para que siga ejecutándose el JOB.

Cada paso de un JOB cuando termina, devuelve un código de retorno que porregla general suele tomar los valores:

0 Todo correcto4 Existen avisos o warnings8 Existen errores12 Existen errores graves

Estos valores son cargados en la variable del sistema RC (Return Code)por los programas dependiendo de la lógica programada, o por el propiosistema.

La codificación de este parámetro se ajusta al siguiente formato:

COND=((código,operación),(código,operación),...)COND=EVENCOND=ONLY

donde

código es un numero decimal comprendido en el rango 0 a 4095, yrepresenta el valor con el que se debe comparar el códigode retorno de los pasos.

Operación Especifica como debe ser el código de retorno para que dejede ejecutarse el JOB.Los valores posibles de este campo son:

GT Mayor que (greater than)GE Mayor o igual (greater equal)LT Menor que (less than)LE Menor o igual (Less equal)EQ Igual (equal)NE No igual (Not equal)

Se puede especificar hasta 8 condiciones distintas, y solo seespecificaran los paréntesis internos si se incluye mas de una condición,funcionando en este caso como la operación lógica OR.

Ejemplos//JMP05 JOB CLASS=J,COND=(8,LT)...//JMP06 JOB ADDRSPC=VIRT,COND=((8,EQ),(40,GT))

Page 48: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 48/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 48 de 374

2.4.6 MSGCLASS

Parámetro de palabra clave

Este parámetro especifica la clase de salida en la que el JES dejara losmensajes devueltos por el sistema, así como la interpretación de lassentencias del JOB.

Por defecto asume la clase que tenga asignada el usuario de TSO quesubmite o envía el trabajo a ejecución.

Valores: A - Z0 - 9

Ejemplo: //JMP03 JOB ADDRSPC=REAL,CLASS=B,MSGCLASS=8

Page 49: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 49/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 49 de 374

2.4.7 MSGLEVEL

Parámetro de palabra clave

Este parámetro especifica el tipo de mensajes que se desea tener en ellog del job, es decir, los tipos de mensajes que se desea recibir de laejecución del job.

Se admite la abreviatura MSG

La codificación de este parámetro se ajusta al siguiente formato:

MSGLEVEL=([sentencias],[mensajes])

donde ambos parámetros están codificados, e indican

sentencias el tipo de mensajes relacionados con la interpretación delas sentencias de control que se desean.

mensajes especifica lo mismo pero con los mensajes que devuelve elsistema.

Los valores posibles para estos subparametros posicionales son:

Sentencias 0 Solo se imprime la sentencia JOB1 Se imprimen todas las sentencias de control incluida la

expansión de los procedimientos.2 Solo se imprimen las sentencias de control de entrada.

Mensajes 0 No se imprimen los mensajes de asignación de recursos amenos que el JOB termine anormalmente.

1 Se imprimen todos los mensajes de asignación derecursos.

En caso de no codificarse el subparametro de mensajes, no son necesarioslos paréntesis.

Cuando se especifica el valor 1 para las sentencias de control, y ademásse emplean procedimientos, los parámetros variables son sustituidos porlos valores reales, y el resultado se registra en el log del Job.

Ejemplos:

//JMP07 JOB (1,2),'pruebas',MSGLEVEL=(0,0)

//JMP08 JOB ,'pruebas',MSGLEVEL=(,1)

//JMP09 JOB MSGLEVEL=2,ADDRSPC=REAL

Page 50: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 50/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 50 de 374

Cuando se codifica el valor 1 para el parámetro de sentencias, en la

corriente de control se obtiene la imagen expandida de la cadena, dondecada línea se inicia con :// las fichas codificadas en el fichero submitidoXX las fichas expandidas de procedimientos catalogados++ las fichas expandidas de procedimientos in-streamX/ las llamadas hechas a un procedimieto expandido+/ las llamadas hechas a un procedimiento in-stream

El siguiente ejemplo muestra un fragmento de la salida de un JOB. En else distinguen las siguientes partes:

- LOG del JOB: en esta parte se registra la hora de comienzo de cadaevento.

_ Interpretacion del JCL ejecutado: en el que se ve cómo el JES ha

numerado cada una de las sentencias ejecutables, con independencia de queocupen 1 o mas fichas de la cadena.

- La tercera parte se corresponde con la salida de mensajes devueltos porel sistema.

1 J E S 2 J O B L O G -- S Y S T E M X014.21.48 JOB07054 IRR010I USERID DESJMP IS ASSIGNED TO THIS JO14.21.50 JOB07054 ICH70001I DESJMP LAST ACCESS AT 14:21:41 ON W14.21.50 JOB07054 $HASP373 DESJMPCA STARTED - INIT CK - CLASS K14.21.50 JOB07054 IEF403I DESJMPCA - STARTED - TIME=14.21.5014.21.53 JOB07054 - --TIM14.21.53 JOB07054 -JOBNAME STEPNAME PROCSTEP RC EXCP CPU14.21.53 JOB07054 -DESJMPCA PASO0010 00 35 .0014.21.59 JOB07054 IEF404I DESJMPCA - ENDED - TIME=14.21.5914.21.59 JOB07054 -DESJMPCA ENDED. NAME-JMP-PRU TOT14.21.59 JOB07054 $HASP395 DESJMPCA ENDED

1 //DESJMPCA JOB (30,123),'JMP-PRU',CLASS=K,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(1,1)//* - - - - - - - - - - - - - - - - - - - - - - - - - -

2 //PASO0010 EXEC PGM=DESNAT,REGION=3000K,TIME=1400,// PARM='STACK=INT,IM=D,MAXCL=0,A'

3 //STEPLIB DD DSN=JMP.NATURAL.DES,DISP=SHR4 //DDKARTE DD DUMMY5 //DDDRUCK DD SYSOUT=*6 //DDPRINT DD SYSOUT=*...

ICH70001I DESJMP LAST ACCESS AT 14:21:41 ON WEDNESDAY, AUGUST 10IEF236I ALLOC. FOR DESJMPCA PASO0010IGD103I SMS ALLOCATED TO DDNAME STEPLIBIEF237I DMY ALLOCATED TO DDKARTEIEF237I JES2 ALLOCATED TO DDDRUCKIEF237I JES2 ALLOCATED TO DDPRINT

...

Page 51: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 51/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 51 de 374

El siguiente ejemplo muestra la salida proporcionada por el mismo JOBpero codificando el parámetro MSGLEVEL tal y como se especifica en laficha JOB que aparece en la sección de interpretación del JCL.

1 J E S 2 J O B L O G -- S Y S T E M X014.21.48 JOB07054 IRR010I USERID DESJMP IS ASSIGNED TO THIS JO14.21.50 JOB07054 ICH70001I DESJMP LAST ACCESS AT 14:21:41 ON W14.21.50 JOB07054 $HASP373 DESJMPCA STARTED - INIT CK - CLASS K14.21.50 JOB07054 IEF403I DESJMPCA - STARTED - TIME=14.21.5014.21.53 JOB07054 - --TIM14.21.53 JOB07054 -JOBNAME STEPNAME PROCSTEP RC EXCP CPU14.21.53 JOB07054 -DESJMPCA PASO0010 00 35 .0014.21.59 JOB07054 IEF404I DESJMPCA - ENDED - TIME=14.21.59

14.21.59 JOB07054 -DESJMPCA ENDED. NAME-JMP-PRU TOT14.21.59 JOB07054 $HASP395 DESJMPCA ENDED

1 //DESJMPCA JOB (30,123),'JMP-PRU',CLASS=K,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(0,0)//* - - - - - - - - - - - - - - - - - - - - - - - - - -

Page 52: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 52/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 52 de 374

2.4.8 NOTIFY

Parámetro de palabra clave

Este parámetro especifica el identificador del usuario de TSO al que elsistema enviara un mensaje cuando finalice el Job.

La codificación de este parámetro se ajusta al siguiente formato:

NOTIFY=identificador_usuario

El identificador del usuario se corresponde con la identificación que seda al sistema cuando se hace LOGON para iniciar una sesion de TSO.

Ejemplo

//JMP10 JOB (123,456),'JMP-PRU',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614

Page 53: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 53/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 53 de 374

2.4.9 PERFORM 

Parámetro de palabra clave

Este parámetro especifica el grupo de rendimiento o PERFORMance que seasigna al JOB.

La codificación de este parámetro se ajusta al siguiente formato:

PERFORM=n

donde n es un numero comprendido entre 1 y 255

Normalmente a mayor numeración, la prioridad aumenta. No obstante, ladefinición de este parámetro depende de la instalación.

Ejemplo//JMP11 JOB (123,456),'JMP-PRU',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614,// PERFORM=12

Page 54: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 54/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 54 de 374

2.4.10 REGION

Parámetro de palabra clave

Este parámetro especifica la cantidad de memoria que se asigna al JOB. Noobstante esta memoria depende del valor especificado con el parámetroADDRSPC, ya que si se ha especificado:

=REAL este parámetro especifica la cantidad de memoria real que seasigna a este JOB.

=VIRT este parámetro limita la cantidad de memoria virtual que sepuede tomar cuando se haga una GETMAIN variable. Por lo tantoespecifica el máximo tamaño de memoria virtual que se podrátomar en el citado GETMAIN.

La codificación de este parámetro se ajusta al siguiente formato:

REGION=nKREGION=mM

donde n es el numero de Kb que representa el tamaño asignado o limitado,y m es el numero de Mb que representa el tamaño asignado o limitado.

Ejemplo

//JMP11 JOB (123,456),'JMP-PRU',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614,// PERFORM=12,REGION=32M

Page 55: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 55/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 55 de 374

2.4.11 RESTART

Parámetro de palabra clave

Este parámetro especifica el paso desde el que se desea rearrancar elJOB.

Normalmente, este parámetro se utiliza para rearrancar un JOB desde elpaso que termino mal, ya que los primeros pasos se ejecutaroncorrectamente.

La codificación de este parámetro se ajusta al siguiente formato:

RESTART=*RESTART=nombre_paso

RESTART=nombre_paso.nombre_proc

donde

* indica que el JOB se rearranque desde el primer paso.

nombre_paso especifica el nombre del paso desde el que se desearearrancar.

//XXXXXXND JOB (123,DES),'JMP-PRU',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1),RESTART=COPIAR01

Nombre_paso.nombre_proc Este formato se usa cuando se desea rearrancardesde un paso que invoca a un procedimiento.

//XXXXXXND JOB (123,DES),'JMP-PRU',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1),RESTART=NATURA11.NATDES

//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//NATDES PROC... procedimiento in-stream// PEND//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//NATURA01 EXEC NATDES//CMWKF01 DD DSN=DESJMP.FTP.J180B01,...//COPIAR01 EXEC PGM=IEBGENER

//SYSUT1 DD DSN=DESJMP.FTP.J180B01...//NATURA11 EXEC NATDES...

Page 56: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 56/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 56 de 374

2.4.12 TIME

Parámetro de palabra clave

Este parámetro especifica el máximo tiempo que un JOB puede estar usandola CPU. Es de resaltar que el tiempo que se especifique no es tiempo realde ejecución, sino tiempo de CPU.

La diferencia entre ambos tiempos estriba en que la CPU no tienededicación exclusiva a un trabajo, y por lo tanto, al repartirse unsegundo de CPU entre muchos trabajos, a cada trabajo le corresponderápara 1 segundo real x milisegundos de CPU.

La codificación de este parámetro se ajusta al siguiente formato:

TIME=([minutos],[segundos])

donde

minutos especifica el numero de minutos máximo de CPU que utilizara elJOB. Su valor debe estar comprendido en el rango 1-1439

segundos especifica el numero de segundos máximo de CPU que utilizarael JOB. Su valor debe estar comprendido en el rango 0-59

Un caso particular es aquel en el que se especifica TIME=1439 ya que estees el numero de minutos de un día. En este caso, lo que se estaríahaciendo es no poniendo limite para el uso de la CPU por parte de esetrabajo.

El siguiente ejemplo muestra cómo limitar el tiempo de CPU a 5 minutos y30 segundos

//JMP14 JOB (123,456),'JMP-PRU',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614,// RESTART=PASO2,TIME=(5,30)...

Y este otro, le limita a 5 minutos

//JMP15 JOB (123,'JMP'),CLASS=Y,NOTIFY=TEST87,// RESTART=PASO3.NATURALP,TIME=5

Page 57: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 57/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 57 de 374

2.4.13 TYPRUN

Este parámetro especifica al JES el tratamiento que debe dar al JOB.

En el caso de que no se especifique este parámetro el trabajo pasa aejecución inmediatamente.

La codificación de este parámetro se ajusta al siguiente formato:

TYPRUN=valor

donde los valores posibles son:

HOLD este valor especifica que el trabajo se coloque en la cola deentrada pero para no ejecutarse hasta que no se libere

manualmente por el operador, lo cual se hace ejecutando elcomando de línea 'A' en el panel de SDF correspondiente a lascolas de entrada.

SCAN este valor especifica al sistema que no se desea ejecutar elJOB, solo se desea chequear la sintaxis de la corriente decontrol.

COPY este valor especifica al sistema que no se desea ejecutar elJOB, sino simplemente listar el JOB, por lo cual aparecerá enla cola de salida en la clase indicada en MSGCLASS.

Ejemplo

//JMP15 JOB (123,456),'JMP-PRU',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614,// RESTART=PASO2,TYPRUN=SCAN

En este caso, solo se chequea la sintaxis del JCL, no validasi existen los ficheros o datasets especificados en lasdistintas fichas DD de cada paso.

En el siguiente ejemplo, el JOB se interpreta y pasa a la colade entrada, pero no se ejecuta hasta que no sea liberado.

//JMP16 JOB (123,'JMP'),CLASS=Y,NOTIFY=TEST87,// TYPRUN=HOLD

Page 58: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 58/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 58 de 374

2.5 Sentencia EXEC

Esta sentencia se utiliza para especificar que se desea ejecutar unprograma, un procedimiento catalogado o un procedimiento in-stream.

Como se dijo en la introducción de este tema, un JOB o cadena se compone deun conjunto de pasos. Y cada paso se encuentra identificado por estasentencia.

Un paso como se ha dicho, sirve para ejecutar un programa, o para invocar unprocedimiento, pero también los procedimientos constan de pasos, los cualessolo pueden ejecutar programas. En este caso, estos pasos se ejecutarantantas veces como sea llamado el procedimiento, asignando los valores quecorrespondan a las variables definidas.

Al igual que la ficha JOB, esta sentencia tiene parámetros posicionales y depalabra clave, pero, a diferencia de aquella, los parámetros posicionalesque tiene esta sentencia son algo especiales, ya que son excluyentes entresi, y solo sirven para especificar si se va e ejecutar un procedimiento o unprograma.

Por otra parte, como siguen el método general, deben especificarse antes queel resto de parámetros de palabra clave. Concretamente, cualquiera de losdos que se codifique, deberá ser el primero, y además siempre deberácodificarse uno de ellos.

Los parámetros citados son:

- PGM=programa- PROC=procedimiento

Por defecto el sistema asume PROC.

Los parámetros de palabra clave tienen idéntica sintaxis tanto si sonparámetros de un programa o si actúan como parámetros de un procedimiento.

La diferencia entre ambos, estriba en que en el caso de acompañar alparámetro PGM , los parámetros especificados son aplicables al programa quese desea ejecutar, mientras que si el parámetro al que acompañan es el PROC,los parámetros especificados sustituyen a los parámetros que por defecto sehayan definido en el procedimiento.

Como ejemplo de esta diferencia, se puede examinar el que acompaña alparámetro de palabra clave PARM.

Page 59: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 59/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 59 de 374

2.5.1 PGM 

Este parámetro posicional, debe ser el primero de la ficha EXEC.

Sirve para especificar el nombre del programa que queremos ejecutar.Dicho programa deberá ser miembro de:- una librería alocada de forma general por el sistema,- o de una librería particular (JOBLIB) que alocada para el JOB- o de una librería particular (STEPLIB) alocada para la ejecución deeste paso

La codificación de este parámetro se ajusta al siguiente formato:

PGM=nombre_programa

Ejemplos //JMP20 JOB ...//JOBLIB DD DSN=......//PASO1 EXEC PGM=PROGRAM1//STEPLIB DD DSN=......//PASO2 EXEC PGM=PROGRAM2...

En este ejemplo, PROGRAM1 será buscado como miembro de la libreríaasociada a la DDname STEPLIB, y en el caso de no encontrarle le buscaraen las librerías generales del sistema.

En el PASO2, el sistema buscara PROGRAM2 en la librería asociada a laDDname JOBLIB, y en el caso de no encontrarle, le buscara en laslibrerías generales del sistema, entre las que suele estar SYS1.LINKLIB

Page 60: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 60/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 60 de 374

2.5.2 PROC

Este parámetro posicional, ocupa también la primera posición de lasentencia EXEC.

Sirve para especificar el nombre del procedimiento que se desea ejecutar.Este procedimiento puede estar incluido en el propio JOB, en cuyo caso ledenominaríamos 'in-stream' o puede ser un procedimiento catalogado, esdecir, el nombre que especifiquemos debe ser el nombre de un miembro de:- una de las librerías de procedimientos alocadas por el sistema,- una librería particular, alocada a nivel de JOB (JOBCAT)- una librería particular, alocada a nivel de paso (STEPCAT).

En el caso de ser un procedimiento in-stream este debe estar definido alprincipio del JOB.

La codificación de este parámetro se ajusta al siguiente formato:

PROC=nombre_procedimiento

Ejemplos //JMP21 JOB ......//PASO2 EXEC PROC=XNATURAL//STEPCAT DD DSN=DESJMP.PROCS,DISP=SHR...

En este ejemplo, se ejecuta el procedimiento catalogado XNATURAL, siendoeste además, el nombre de un miembro de la librería DESJMP.PROCS

Page 61: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 61/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 61 de 374

2.5.3 ACCT

Parámetro de palabra clave

Este parámetro sirve para contabilizar el tiempo de ejecución del paso,debiéndose ajustar a las especificaciones de la instalación.

En el caso de que hubiera que codificar subparametros, el valor de esteparámetro ira delimitado por paréntesis, y los subparametros separados enel interior por comas.

Y si algún parámetro contuviera apóstrofes (') o ampersands (&) secodificaran dobles, si bien serán considerados por el sistema comosi fueran sencillos.

La longitud total máxima de este parámetro es de 142 bytes.

Su codificación al ser de palabra clave, se ajusta al siguiente formato:

ACCT[.nom_paso_proc]=valor

Donde VALOR sigue las reglas dadas en la ficha JOB con la informacion decontabilidad.

Ejemplo:

01 //JMP11 JOB (123,456),'JMP-PRU',CLASS=X,02 // MSGLEVEL=(1,1),NOTIFY=T97661403 //PROCESO PROC04 //PASO@0 EXEC ...05 ...06 //PASO@1 EXEC ...07 ...08 // PEND09 //* ------------------ fin procedimiento10 //PASO1 EXEC PGM=PROGRAM1,ACCT=13511 ...12 //PASO2 EXEC PGM=PROGRAM2,ACCT=(123,567)13 ...14 //PASO3 EXEC PROC=PROCESO,ACCT=(123,999)15 ...16 //PASO4 EXEC PROCESO,ACCT.PASO@1=(123,555)

...

Page 62: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 62/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 62 de 374

donde, la línea :

10 Determina la informacion contable para PASO1

12 En este caso la informacion contable tiene subparametros.

14 asigna informacion contable para todos los pasos delprocedimiento PROCESO.

16 Asigna informacion contable al PASO@1 del procedimiento. Elresto de los pasos se contabiliza donde indique la informacioncontable de la ficha JOB.

Page 63: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 63/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 63 de 374

2.5.4 ADDRSPC

Parámetro de palabra clave

Este parámetro especifica cómo se ha de ejecutar el PASO en el que se haespecificado.

Su codificación al ser de palabra clave, se ajusta al siguiente formato:

ADDRSPC[.nom_paso_proc]=valor

donde el valor puede ser : - VIRT- REAL

Por defecto asume VIRT a no ser que se haya especificado a nivel de JOB.

Como ya se dijo en la explicación de la sentencia JOB, la diferenciaentre ambos valores estriba en el hecho de que haya o no paginación.

En el caso de que se especifique este parámetro a nivel de JOB, y a nivelde EXEC, solo se tendrá en cuenta lo especificado a nivel de JOB,ignorándose los especificados a nivel de paso. Por tanto cuando se quieraejecutar unos pasos en memoria real y otros en memoria virtual deberáespecificarse este parámetro solo a nivel de EXEC.

Ejemplo

01 //JMP12 JOB (123,456),'JMP-PRU',CLASS=X,02 // MSGLEVEL=(1,1),NOTIFY=T97661403 //PROCESO PROC04 //PASO@0 EXEC ...05 ...06 //PASO@1 EXEC ...07 ...08 // PEND09 //* ------------------ fin procedimiento10 //PASO1 EXEC PGM=PROGRAM1,ADDRSPC=REAL11 ...12 //PASO2 EXEC PGM=PROGRAM2,ADDRSPC=VIRT13 ...14 //PASO3 EXEC PROC=PROCESO,ADDRSPC=VIRT15 ...

16 //PASO4 EXEC PROCESO,ADDRSPC.PASO@1=REAL...

Page 64: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 64/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 64 de 374

donde, la línea :

10 Determina que PASO1 se ejecute en memoria REAL.

12 Determina que PASO2 se ejecute en memoria VIRTual.

14 Determina que todos los pasos del procedimiento se ejecuten enmemoria VIRTual.

16 Determina que PASO@1 del procedimiento se ejecute en memoriaREAL.

Page 65: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 65/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 65 de 374

2.5.5 COND

Parámetro de palabra clave

Este parámetro especifica la condición que de forma general deben cumplirlos códigos de retorno de los distintos pasos del JOB previos para que seejecute el paso en el que se encuentra codificado.

Como ya se vio a nivel de JOB, la codificación de este parámetro seajusta al siguiente formato:

COND[.nom_p_p]=((cod,op[,n_p_p]),(c,o[n])...EVEN)COND[.nom_p_p]=((cod,op[,n_p_p]),(c,o[n])...ONLY)

siendo nom_p_p: el nombre del paso del procedimiento

y donde

cod es un numero decimal de 0 a 4095, y representa el valorcon el que se debe comparar el código de retorno de lospasos.

op Especifica como debe ser el código de retorno para quese ejecute el paso.Los valores posibles de este campo son:

GT Mayor que (greater than)GE Mayor o igual (greater equal)LT Menor que (less than)LE Menor o igual (Less equal)EQ Igual (equal)NE No igual (Not equal)

EVEN (incluso)especifica que este paso se ha de ejecutar aun cuandoalgún paso anterior haya terminado anormalmente.

ONLY (solo)especifica que este paso solo se ejecuta si algún pasoanterior se ha terminado anormalmente.

Se puede especificar hasta 8 condiciones distintas, y solo seespecificaran los paréntesis internos si se incluye mas de una condición.

En este caso las distintas condiciones funcionan como la operación lógicaOR.

Si se especifica el parámetro COND a nivel de JOB y a nivel de EXEC, elespecificado a nivel de paso tiene prioridad sobre el parámetro CONDespecificado a nivel de JOB.

Page 66: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 66/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 66 de 374

Ejemplos

1 //PASO07 EXEC PROCESO1,COND=(0,NE)2 //PASO22 EXEC PROGRAMA,COND=((4,EQ,PASO01),(4,EQ,PASO02))3 //CARGAA4 EXEC PGM=IEFBR14,COND=(4,EQ,PASO04),4 //CARGAB5 EXEC PROCESO4,COND=(7,LT),5 //COPIDO1 EXEC PGM=IEBGENER,COND=EVEN

donde:

1 se ejecuta PROCESO1 si todos los pasos anteriores han devuelto uncódigo de retorno distinto de 0.

2 Se ejecuta PROGRAMA si el código devuelto por PASO01 Y PASO02 ha sido4.

3 Se ejecuta el programa IEFBR14 si el programa ejecutado en el pasoPASO04 devolvio un código de retorno igual a 4.

4 Se ejecuta PROCESO4 si todos los pasos anteriores han devuelto uncódigo de retorno menor que 7.

5 Se ejecuta el programa IEBGENER siempre

Page 67: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 67/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 67 de 374

2.5.6 PARM 

Parámetro de palabra clave

Este parámetro sirve para pasar datos a los programas que se ejecutan.

En el caso de un programa COBOL, estos parámetros son recogidos a travésde la LINKAGE SECTION.

La longitud máxima de este area de parámetros es de 100 caracteres.

La codificación de este parámetro se ajusta al siguiente formato:

PARM=valor

donde:

valor Representa la informacion que se pasa al programa. En el caso deque este formada por mas de una expresión, estas irán separadaspor comas, las cuales pasan al programa, y todo el conjunto debeir encerrado entre paréntesis o apóstrofes, los cuales no pasanal programa.

Ejemplos

El siguiente paso ejecuta el programa de utilidad SORT, al cual se lepasa el parámetro ABEND

//*******************************************************************//* ELIMINAR REFERENCIAS DUPLICADAS//*******************************************************************//SORT00 EXEC PGM=SORT,PARM='ABEND'//*//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(10,50))//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(10,50))//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(10,50))//SYSPRINT DD SYSOUT=*//SYSOUT DD SYSOUT=*//SYSUDUMP DD DUMMY//SORTIN DD DSN=DESJMP.ENTRADA,DISP=OLD//SORTOUT DD DSN=DESJMP.SALIDA,DISP=(OLD,CATLG,KEEP),// UNIT=SYSDA,SPACE=(CYL,(1,1),RLSE),

// DCB=*.SORTIN//SYSIN DD *SORT FORMAT=CH,FIELDS=(1,19,A)SUM FIELDS=NONE

/*//*******************************************************************

Page 68: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 68/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 68 de 374

El siguiente es un JCL genérico que sirve para buscar la cadena

'CCCCCCCC' entre los miembros de la librería especificada por LLLLLLLL

//DESJMPBT JOB (123,DES),'JMP-PRU',CLASS=T,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(1,1)//*****************************************************************//* BUSCAR CADENA EN DIRECTORIO//*****************************************************************//BUSCAR EXEC PGM=ISRSUPC,PARM=(SRCHCMP,'ANYC')//NEWDD DD DISP=SHR,DSN=LLLLLLLL//OUTDD DD SYSOUT=X//SYSIN DD *SRCHFOR 'CCCCCCCC'

/*

En este caso, el programa ISRSUPC recibe dos parámetros, los que sepasan como valor del parámetro PARM

Page 69: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 69/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 69 de 374

El siguiente ejemplo muestra un esqueleto de JCL para localizar el

&MODULO en las distintas librerías de la Base 10.

//DESJMPSM JOB (123,DES),'JMP-PRU',CLASS=Q,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(0,0)//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//* BUSCAR ALGUN OBJETO MEDIANTE SYSMAIN//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//*******************************************************************//* PROCEDIMIENTO XNATURAL//*******************************************************************//XNATURAL PROC BPID=0//PASO1 EXEC PGM=DESNATB,// PARM='INTENS=1,MT=0,FSIZE=64,ESIZE=64,BPID=&BPID'//STEPLIB DD DSN=PRU.NATURAL.PRO.LOAD,DISP=SHR

//DDKARTE DD DUMMY//DDDRUCK DD SYSOUT=*//DDPRINT DD SYSOUT=*//CMPRINT DD SYSOUT=*//SYSOUT DD SYSOUT=*//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(1,01))//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(1,01))//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(1,01))//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(1,01))//SORTWK05 DD UNIT=SYSDA,SPACE=(CYL,(1,01))//SORTWK06 DD UNIT=SYSDA,SPACE=(CYL,(1,01))//DDCARD DD DSN=PRU.PRO.OPTION(RUNUSERM),DISP=SHR// DD DSN=PRU.PRO.OPTION(RUNTIME),DISP=SHR// PEND//*------------------------------------------------------------//SYSMAIN EXEC XNATURAL,REGION=2048K,TIME=1400,DPRTY=(13,9),// DPID=10//DDPRINT DD SYSOUT=*//CMPRINT DD SYSOUT=*//CMSYNIN DD *%*LIBRERIA/USUARIO/PASSWORDSYSMAIN FIND ALL MODULO IN * where DBID 10 FNR 9FIN

/*

Cabe resaltar en este ejemplo que los parámetros que se envían alprocedimiento XNATURAL sirven para sustituir los valores declarados pordefecto en el procedimiento in-stream XNATURAL, concretamente se envíacomo parámetro la variable BPID

el %* es un parámetro que especifica que no se liste en el LOG el nombrede la librería a la que se accede, el nombre del usuario, ni la passwordque se especifique.

Page 70: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 70/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 70 de 374

2.5.7 REGION

Parámetro de palabra clave

Como ya se vio al hablar del JOB, este parámetro tiene distintosignificado según se haya especificado en el parámetro ADDRSPC el valorREAL o el valor VIRT.

Si se ha especificado ADDRSPC=REAL, el tamaño definido en el parámetroREGION indica el tamaño de la memoria real que se planifica para laejecución del paso.

Si se ha especificado ADDRSPC=VIRT, el tamaño definido en el parámetroREGION indica el máximo tamaño de memoria virtual que se puede admitir enlas GETMAIN que se ejecuten en la ejecución del paso.

Al igual que en los parámetros anteriores, si se especifico un parámetroREGION a nivel de JOB se ignoran los especificados a nivel de EXEC.

La codificación de este parámetro se ajusta al siguiente formato:

REGION=nREGION=nKREGION=mM

donde n es el numero de octetos, de Kb o de Mb que representa el tamañoasignado o limitado.

Ejemplo

//PASO0010 EXEC PGM=NBATBASE,REGION=3000K,// PARM='IM=D,MADIO=0,MT=0,INTENS=1'

Page 71: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 71/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 71 de 374

2.5.8 TIME

Parámetro de palabra clave

Este parámetro expresa el tiempo máximo que un paso del Job puede haceruso de la CPU. En el caso de que un paso alcanzara el valor especificadoel paso terminaría su ejecución.

A diferencia de los parámetros anteriores, si se especifico un parámetroTIME a nivel de JOB, y otro a nivel de EXEC, los dos tienen validez, perocada uno para su entorno. Es decir, el especificado a nivel de JOB limitael tiempo total del JOB, y el especificado a nivel de paso limita eltiempo para ese EXEC concreto. Si la suma de los tiempos de ejecución delos distintos pasos superara el tiempo especificado en el JOB, esteterminaría anormalmente.

La codificación de este parámetro se ajusta al siguiente formato:

TIME=([minutos],[segundos])

donde minutos puede tomar los valores de 1 a 1440segundos puede tomar los valores de 0 a 59

En el caso de que no se especifique el subparametro SEGUNDOS, no esnecesario especificar los paréntesis.

Cuando se especifica TIME=1440 , es decir 24 horas, se esta indicando queno hay limite para el uso de la CPU en ese paso.

Ejemplo 1

//JMP16 JOB (123,456),'JMP-PRU',CLASS=X,// MSGLEVEL=(1,1),TIME=5//PROCESO PROC//PASO00 EXEC DESNAT...//PASO01 EXEC PGM=PPP0,TIME=(1,30)...// PEND//* ------------------ fin procedimiento//PASO1 EXEC PGM=PROGRAM1,TIME=(,30)...

//PASO2 EXEC PGM=PROGRAM2,TIME=3...

Page 72: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 72/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 72 de 374

2.6 Sentencia DD : Definición de datos

Esta sentencia se utiliza para especificar al sistema los recursos que seconsideran necesarios para ejecutar el programa indicado en la sentenciaEXEC.

En cada paso deben especificarse tantas sentencias DD como ficheros senecesiten, ya que estas fichas establecen la relación entre el nombreutilizado en el programa y el nombre del Dataset físico que soporta losdatos. En consecuencia no pueden existir varias sentencias DD con el mismonombre para un mismo paso.

A diferencia de las sentencias anteriores, esta sentencia, lógicamente, solopuede definirse a nivel de paso.

En el caso de que un fichero lógico se compusiera de varios ficherosfísicos, se especificara solo la primera DD con el nombre lógico asignado ala Ddname y el DSN del primer fichero físico. A continuación seespecificaran tantas sentencias DD sin nombre como sean necesarias,especificando en cada una de ellas el DSN de cada uno de los ficherosfísicos. En este caso se dice que los ficheros definidos son una EXTENSIONdel primer fichero especificado, y que ambas sentencias DD estánconcatenadas.

Ejemplo 1

//PASO00 EXEC PGM=IEBGENER//* ----------- fichero de entrada//SYSUT1 DD DSN=ALIAS.JMP.FICHERO1,DISP=SHR// DD DSN=ALIAS.JMP.FICHERO2,DISP=SHR//* ----------- fichero de salida//SYSUT2 DD DSN=ALIAS.JMP.FICHERO3,DISP=OLD//* ----------- otros ficheros necesarios//SYSIN DD DUMMY

En este caso se usa la utilidad de IEBGENER para copiar los ficherosespecificados en la Ddname: SYSUT1 , obteniendo el fichero de salidaespecificado en la Ddname: SYSUT2.

La Ddname SYSIN es el fichero de entrada de comandos, y debe definirseobligatoriamente ya que es un fichero de entrada de datos, y por lo tantonecesario para la ejecución del programa IEBGENER, aunque no contenga

informacion, como es el caso. (ver utilidad IEBGENER)Al igual que las dos sentencias vistas anteriormente, esta sentencia tambiéntiene parámetros posicionales y de palabra clave. Son los siguientes:

Page 73: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 73/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 73 de 374

2.6.1 * (asterisco)

Parámetro Posicional. Si se usa, debe ser el primero.

Cuando la sentencia DD tiene como parámetro un * esta expresando que losdatos asociados a la DDname especificada vienen en las siguientes fichasdel JCL.

Por omisión el final del fichero definido de esta forma, viene definidopor la secuencia de caracteres "/*" situada en las columnas 1 y 2. Noobstante, las siguientes secuencias de caracteres también especifican elfin del fichero:- Sentencia vacía //- EOF (end of File)- Delimitador definido previamente como parámetro. (ver parámetro DLM)

Este parámetro puede ir acompañado del parámetro DCB en el que seespecifiquen los subparametros BLKSIZE, BUFNO, donde:

BLKSIZE especifica el tamaño del bloque en bytesBUFNO especifica el numero de buffers que debe mantener

Existe una restricción en el uso de esta sentencia: No puede usarse lasentencia DD con el parámetro * dentro de un procedimiento, ya sea InStream o catalogado.

Ejemplo //JMP15 JOB (123,456),'JMP-PRU',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614//**********************************//PROCESO PROC//PASO00 EXEC ......//PASO01 EXEC ......// PEND//**********************************//PASO1 EXEC PGM=PROGRAM1,ACCT=135//ENTRADA DD *19941231/*//*---------------------------------//PASO2 EXEC PROCESO//PASO00.ENTRADA DD *

P94-A8.../*//*---------------------------------//PASO3 EXEC PGM=PROCESO//PASO00.ENTRADA DD *,DCB=(BLKSIZE=80,BUFNO=5)P01-XX

...//

Page 74: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 74/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 74 de 374

2.6.2 DATA 

Parámetro Posicional. Si se usa debe ser el primero.

Este parámetro es idéntico al anterior, con la salvedad de que noconsidera la secuencia // en las columnas 1 y 2 como fin de JOB y enconsecuencia fin de fichero.

Se usa normalmente cuando los datos que siguen a este parámetro son lassentencias de control de otro JOB.

La restricción de este parámetro es que los datos no pueden contener unasentencia DD DATA.

Tampoco puede aparecer dentro de un procedimiento. En caso de

necesitarlo, se añadirá este fichero como dummy en el procedimiento, y sereferenciara la DDname en el paso que invoca al procedimiento.

Ejemplo

//DESJMPCA JOB (44,123),'DESARROLLO',CLASS=C,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(0,1)//PASO0030 EXEC PGM=IEBGENER,COND=(0,LT)//SYSUT2 DD SYSOUT=(A,INTRDR)//SYSPRINT DD SYSOUT=*//SYSIN DD DUMMY//SYSUT1 DD DATA,DLM=WB//DESJMPCA JOB (55,456),'TEST',CLASS=C,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(0,1)//********************************************************************//* FUSIONAR LOS REGISTROS 01 Y 11 EN UN UNICO FICHERO **//* EN LOS CASOS EN QUE HAYA 01 Y 11 DEJAR UNO SOLO CON LA SUMA: 1B **//********************************************************************//PASO03 EXEC TSORT//SORTIN DD DSN=DESJMP.WSALOPER.PRO.WORK01S,DISP=(OLD,DELETE,KEEP)// DD DSN=DESJMP.WSALOPER.PRO.WORK11S,DISP=(OLD,DELETE,KEEP)//SORTOUT DD DSN=DESJMP.WSALOPER.PRO.WORK99,// DISP=(NEW,CATLG,DELETE),// UNIT=(ACL1,,DEFER),VOL=(,,,30),LABEL=(1,SL),// DATACLAS=DFBXP,LRECL=52//SYSIN DD *

SORT FORMAT=CH,FIELDS=(16,19,A)

SUM FIELDS=(14,2,ZD)/*WB

Este ejemplo muestra como se puede submitir un Job desde otro JOB, pueslo que hace es copiar los datos que vienen en la misma cadena, acontinuación, sobre la cola "A", de entrada de trabajos (INTRDR).

Page 75: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 75/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 75 de 374

El objetivo de este JOB es ejecutar en otro entorno, el de TEST

(notar que cambia la informacion de contabilidad de las fichas JOB), elprocedimiento TSORT para clasificar el fichero de entrada fusionandoregistros, tal y como lo describe el comentario del propio JOB.

Si no fuera por el parámetro DATA al encontrarse en la segunda ficha dedatos con la secuencia // daría por cerrado el JOB. De esta forma elprograma IEBGENER toma toda la secuencia como el fichero de entrada y lacopia sobre la salida.

Page 76: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 76/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 76 de 374

2.6.3 DLM 

Parámetro de palabra clave.

Este parámetro, nemonico de delimitador, se usa conjuntamente con losparámetros anteriores a fin de definir el delimitador que se usara comofin de fichero.

Evidentemente este parámetro se usa cuando dentro del fichero de datosque siguen a la sentencia DD figura la secuencia /* formando parte delos datos, y por lo tanto no puede interpretarse como fin de fichero.

Cuando el delimitador definido contiene caracteres especiales, debe irencerrado entre apóstrofes.

Ejemplo

//PASO1 EXEC PGM=IEBGENER//SYSUT2 DD SYSOUT=(A,INTRDR)//SYSDUMP DD DUMMY//SYSUT1 DD *,DLM='$$'//DESJMP01 JOB ......$$

Page 77: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 77/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 77 de 374

2.6.4 DUMMY

Parámetro posicional

Este parámetro define un fichero ficticio o fantasma, ya que estableceuna relación entre una ddname y nada. De esta forma, si su definición seconsiderara obligatoria para la ejecución del programa, estaría definido,aunque realmente no se ha definido físicamente. Cuando quieran leerse losdatos asociados a este fichero daría EOF ya que no tiene datos, y, si porel contrario el programa quisiera escribir en el, iría simulando queescribe los datos, pero realmente no se escribirían.

//PASO1 EXEC PGM=IEBGENER//SYSUT1 DD DSN=DESJMP.JCL(PRUEBA),DISP=SHR//SYSUT2 DD SYSOUT=(A,INTRDR)

//SYSIN DD DUMMY

Caso particular: Cuando en una secuencia de DDs concatenadas existealguna con el parámetro DUMMY, todas las que le sigan se considerarantambién como DUMMY, aunque no sea eso lo que tenga especificado.

Por otra parte, existe un nombre especial de fichero NULLFILE queequivale a este parámetro. Es decir:

//FICHERO DD DSN=NULLFILE equivale a //FICHERO DD DUMMY

Page 78: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 78/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 78 de 374

2.6.5 SYSOUT ( para ficheros de impresión)

Parámetro de palabra clave

Se utiliza para especificar las características del fichero de salida,sabiendo que este se envía al SPOOL para su impresión.

El formato de este parámetro es:

SYSOUT=*SYSOUT=([clase],[,programa][,formulario])

donde

clase especifica la clase de la cola de salida del spool a laque se envía el fichero para su impresión.

En el caso de que se especifique * la salida se envía ala misma clase a la que se envían los mensajes del JOB, yque se ha definido en la sentencia JOB con el parámetroMSGCLASS.

Programa En el caso de que dicha salida deba ser tratada por algúnprograma para escribirle, ese será el nombre del programaque se especifique aquí.Existen dos nombres especiales:- INTRDR : nemonico de INTernal ReaDeR- STDWTR : nemonico de STandarD WriTeR

Formulario Este es el nombre del formulario que debe usarse paraimprimir la salida.Este nombre estará compuesto por una palabra de hasta 4caracteres.

Cuando se especifica INTRDR lo que le indicamos al sistema es que elfichero de salida sea enviado a la entrada del JES ya que el resultado esun conjunto de fichas de control. Es decir, es un JOB.

Ejemplo //JMP15 JOB (123,456),'DESARROLLO',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614//PASO1 EXEC PGM=IEBGENER//SYSUT2 DD SYSOUT=(A,INTRDR)//SYSUT1 DD DATA,DLM='$$'//JMP15C JOB (999,H,234),'PRODUCCION',CLASS=Q,

// MSGLEVEL=(1,0).../*//PASO2 EXEC PGM=IEBGENER//SYSUT2 DD SYSOUT=*//SYSUT1 DD *.../*$$

Page 79: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 79/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 79 de 374

Este parámetro puede ir acompañado de los siguientes parámetros:

OUTLIM=n

donde n representa un numero comprendido entre 1 y 16777215. Pordefecto se asume que no hay limite.

Este parámetro limita el numero de registros escritos.

Su formato es :

En el caso de que se alcance el numero especificado, se cede elcontrol a una rutina del SMF para determina lo que se debe hacer. Encaso de que no exista dicha rutina, se termina el JOB.

Ejemplo:

//SALIDA DD SYSOUT=*,DEST=RMT55,OUTLIM=5000

COPIES=n

Este parámetro especifica el numero de copias a imprimir.

HOLD=YES

Este parámetro especifica que la salida quede en HOLD hasta serliberado por el usuario o por el operador.

DEST=dispositivo 

Este parámetro especifica la dirección de la impresora de salida. Pordefecto se asume DEST=LOCAL

DCB=(par1[,par2[...]]) 

Este parámetro no es obligatorio, pero puede especificarse paradefinir atributos complementarios a la salida mediante los siguientes

subparametros:

Page 80: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 80/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 80 de 374

Para impresora

PRTSP=n especifica el espaciado. Por defecto asume PRTSP=1

RECFM=fc especifica el formato y los caracteres de control,donde:

f Puede tomar los valores:F (fijo) V (variable) U (indeterminado)

c Puede tomar los valores:A : Para usar los caracteres de control ASAM : Para usar los caracteres de control maquina

Para lectora y perforadora

 MODE=C especifica que se usen columnas binarias, es decir dosposiciones por carácter, por lo que en este casoBLKSIZE,LRECL y BUFL=160

 MODE=E especifica que se usen columnas de EBCDIC (es el valorasumido por defecto).

UCS (Universal Character Set)

Este parámetro especifica el conjunto de caracteres a usar, pues pideal operador la cadena que debe colocar en la impresora.

Solo puede usarse este parámetro en sentencias donde UNIT especifiqueuna impresora.

El formato de este parámetro es el siguiente:

UCS=(código,FOLD,VERIFY)

FCB (Form Control Buffer)

Este parámetro especifica el formato que debe usar la impresora.

El formato de este parámetro es el siguiente:

FCB=(formato[,ajuste])

donde:

formato especifica el formato que debe usar, estando este definidopor un nombre de 4 caracteres alfanuméricos. IBM proporcionade forma standard los siguientes formatos, pero puedendefinirse los que se deseen en la instalación.

Page 81: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 81/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 81 de 374

STD1 y STD6 para 6 líneas por pulgada en 11 (vertical y

apaisado)

STD2 y STD8 para 8 líneas por pulgada en 8.5 (idem)

STD3 para 8 líneas por pulgada (para impresoras3800)

ajuste Puede tomar los siguientes valores:

ALIGN Especifica que el operador chequee que la impresoraesta ajustada antes de imprimir.

VERIFY Este parámetro es parecido al anterior, puesespecifica que el operador verifique que la salida

que se esta imprimiendo es la que se pide.

BURST=Y

Este parámetro especifica que la salida se haga en hojas separadas(BURST=Y) o en papel continuo (BURST=N). Aunque lo normal en lasinstalaciones es tener asignado uno de estos valores a cada una de lascolas de salida,

CHARS=(tabla0[,tabla1[,tabla2[,tabla3]]])

Este parámetro especifica el conjunto de caracteres que se debe usaren la impresión. En el caso de especificarse mas de una tabla se debeespecificar además el parámetro siguiente:

DCB=OPTCB=J

para indicar que el segundo byte de cada línea es un carácter decontrol que especifica la tabla que se debe usar pudiendo tomar losvalores de 0 a 3

 MODIFY=(modulo,tabla_n)

Este parámetro especifica el nombre del modulo contenido en lalibrería SYS1.IMAGELIB que se usara para tratar datos o blancos de las

líneas impresas.Tabla_n especifica el numero de tabla a usar, correspondiendo su valorcon el conjunto que se debe usar especificado en el parámetro CHAR.

Page 82: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 82/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 82 de 374

2.6.6 COPIES (salida de impresión)

Parámetro de palabra clave

Este parámetro especifica el numero de copias que se desean imprimir delmismo fichero.

Como es lógico, este parámetro solo puede especificarse en fichas DD queenvían su salida al SPOOL para su posterior impresión.

El formato de este parámetro es:

COPIES=numero

donde NUMERO especifica el numero de copias a realizar. Su valor debeestar comprendido en el rango 1 a 255.

Por defecto asume 1

Ejemplo

//JMP18 JOB (123,456),'DESARROLLO',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614//PASO1 EXEC PGM=IEBGENER//SYSUT2 DD SYSOUT=K,COPIES=5//SYSUT1 DD DSN=DESJMP.JCL(EJEMPLO),DISP=SHR//SYSIN DD DUMMY

Page 83: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 83/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 83 de 374

2.6.7 DEST ( ficheros de impresión )

Parámetro de palabra clave

Este parámetro especifica la dirección de la impresora por la que sedesea realizar la impresión del fichero.

Este parámetro, como en los anteriores, solo puede especificarse enfichas DDs que envían su salida al SPOOL para su impresión.

El formato de este parámetro es:

DEST=dirección

donde DIRECCION especifica la identificación de la impresora a la que se

envía el fichero a imprimir.

Ejemplo

//JMP18 JOB (123,456),'DESARROLLO',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614//PASO1 EXEC PGM=IEBGENER//SYSUT2 DD SYSOUT=K,COPIES=5,DEST=RMT57//SYSUT1 DD *.../*//PASO2 EXEC PGM=IEBGENER//SYSUT2 DD SYSOUT=K,COPIES=5,DEST=LOCAL//SYSUT1 DD *.../*

Por defecto, en el caso de no especificarse este parámetro, los trabajosquedan asignados a la impresora LOCAL.

Page 84: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 84/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 84 de 374

2.6.8 HOLD (para ficheros de impresión )

Parámetro de palabra clave

Este parámetro especifica que el fichero no se imprima hasta que no sealiberado desde la cola de salida por el operador, cosa que se hace con elcomando de línea 'A' en el panel del SDF correspondiente a los trabajosde salida.

Este parámetro, como en los anteriores, solo puede especificarse enfichas DDs que envían su salida al SPOOL para su impresión.

El formato de este parámetro es:

HOLD=YES/NO

Ejemplo

//JMP18 JOB (123,456),'DESARROLLO',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614//PASO1 EXEC PGM=IEBGENER//SYSUT2 DD SYSOUT=K,COPIES=5,DEST=RMT57,// HOLD=YES//SYSUT1 DD *.../*

En el caso de no especificarse este parámetro, el JES asume por defectoel valor HOLD=NO

Page 85: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 85/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 85 de 374

2.6.9 FREE (para ficheros de impresión y de datos)

Parámetro de palabra clave.

Este parámetro especifica que el fichero asociado a este parámetro selibere:

- cuando se termine de ejecutar el paso en que se encuentra definido. Esdecir cuando termine de ejecutarse el programa.

- o cuando el programa cierre el fichero, no esperando por tanto a quetermine el paso.

Este parámetro tiene sentido en programas de largo tiempo de ejecución yen ficheros de impresión.

El formato de este parámetro es:

FREE=END/CLOSE

Ejemplo

//JMP18 JOB (123,456),'DESARROLLO',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614

//PASO1 EXEC PGM=BATCHP1//ENTRADA1 DD DSN=DESJMP.JMP.PARAM1,// DISP=SHR,FREE=END//ENTRADA2 DD DSN=DESJMP.JMP.FICHERO,DISP=SHR.../*

En el caso de no especificarse este parámetro, el JES asume por defectoel valor FREE=END

Page 86: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 86/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 86 de 374

2.6.10 DSNAME (DSN)

Parámetro de palabra clave.

Este parámetro especifica el nombre del fichero que contiene o contendrálos datos tratados por el programa que ejecuta el paso donde estadefinida esta DD.

El formato de este parámetro es:

(1) DSN=nombre_fichero(2) DSN=librería(miembro)(3) DSN=nombre_fichero(numero_versión)(4) DSN=nombre_temporal(5) DSN=*.nombre_DD

(6) DSN=*.nombre_paso.nombre_DD(7) DSN=*.nombre_paso.Nombre_paso_proc.nombre_DD(8) DSN=NULLFILE

En cualquiera de los formatos definidos, se puede utilizar tanto lapalabra clave DSN como la palabra clave DSNAME.

El nombre del fichero sigue las reglas generales, es decir, estaráformado por grupos de cualificacion de 1 a 8 caracteres separados porpuntos, no pudiendo sobrepasar todo el conjunto los 44 caracteres. Cadacualificador deberá comenzar por un carácter alfabético (A-Z) o loscaracteres especiales ($,@,=).

Como particularidad figura que el nombre de un fichero en cinta no puedecontener mas de 17 caracteres.

El formato (1) especifica el nombre del fichero secuencial que seutilizara en la ejecución del paso, ya sea de entrada, de salida o deentrada/salida.

//SORTIN DD DSN=DESJMP.SECUENC,DISP=(OLD,DELETE,KEEP)

El formato (2) especifica el nombre del miembro de una librería.

//SORTIN DD DSN=DESJMP.JCL(ENTRADA),DISP=SHR

Page 87: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 87/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 87 de 374

El formato (3) especifica el numero de versión para los ficheros

generacionales (GDG).

Un fichero generacional es aquel que bajo el mismo nombre mantienediversas versiones, hasta 255. Estas versiones se referncian como:

(0) la ultima,(+1) la próxima,(-1) la anterior.

La longitud máxima del nombre de un fichero GDG es de 35 caracteres.

//** **************************************************************** **//COPIAF01 EXEC PGM=IEBGENER//SYSUT1 DD DSN=DESJMP.HISTORIA(0),DISP=SHR// DD DSN=DESJMP.MVTOS,DISP=(OLD,DELETE,KEEP)//SYSUT2 DD DSN=DESJMP.HISTORIA(+1),

// DISP=(,CATLG,DELETE),// DATACLAS=DFBXP,LRECL=133//SYSIN DD DUMMY//SYSPRINT DD DUMMY//** **************************************************************** **

El formato (4) especifica el nombre de un fichero temporal que seutilizara como continente receptor de informacion para un paso posteriordel mismo JOB.Se entiende por fichero temporal un fichero que se crea en un paso de unJOB y desaparece cuando termina el JOB. La única diferencia con respectoa los ficheros permanentes, estriba en el nombre, que en los temporalesempiezan por & o &&.Los ficheros temporales no admiten cualificadores.

//********************************************************************//PASO1 EXEC PGM=PROGRAMA//CMPRINT DD SYSOUT=W//SALIDA DD DSN=&&BAJAS,// DISP=(NEW,PASS),// SPACE=(TRK,(20,10)),// DCB=(LRECL=64,BLKSIZE=6144,RECFM=FB),// UNIT=SYSDA//********************************************************************

Page 88: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 88/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 88 de 374

El formato (5) especifica un fichero por referencia, es decir, especifica

el nombre de la ficha DD en la que se encuentra definido el nombre delfichero con el parámetro DSN. El asterisco (*) significa que la ficha DDreferenciada pertenece al mismo paso de la ficha DD en la que se definela referencia.

//********************************************************************//PASO2 EXEC PGM=PROGRAMA//CMPRINT DD SYSOUT=W//ENTRADA1 DD DSN=&&BAJAS,OLD//ENTRADA2 DD DSN=*.ENTRADA1//SALIDA DD DSN=DESJMP.LISTADO,// DISP=(NEW,CATLG),// SPACE=(TRK,(20,10)),// DCB=(LRECL=64,BLKSIZE=6144,RECFM=FB),

// UNIT=SYSDA//********************************************************************

El formato (6) es parecido al anterior, pero en este caso, la ficha DDreferenciada se encuentra en un paso distinto al de la ficha DD quedefine la referencia.

//********************************************************************//PASO3 EXEC PGM=PROGRAMA//SYSPRINT DD SYSOUT=W//SYSUT1 DD DSN=*.PASO2.SALIDA,DISP=SHR//SYSUT2 DD SYSOUT=K,DEST=RMT11//********************************************************************

El formato (7) también es parecido al anterior, pero en este caso, laficha DD referenciada se encuentra en un procedimiento, y por eso sereferencia especificando el nombre del paso que llama al procedimiento, yel nombre del paso dentro del procedimiento, ya que este procedimientopuede tener varios pasos.

El formato (8) es un formato que especifica como nombre del fichero unnombre especial, el nombre NULLFILE, lo cual indica al sistema que no leasigne recursos, pero que le contemple como si existiera. Es decir esenombre define un fichero fantasma.

//FICHERO DD DSN=NULLFILE equivale a //FICHERO DD DUMMY

Page 89: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 89/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 89 de 374

2.6.11 DDNAME

Parámetro de palabra clave.

Este parámetro referencia el nombre de una DDname del JCL que se deseaejecutar en el que esta definido el nombre o nombres de ficheros que sedesean definir con esta sentencia DD.

El formato de este parámetro es:

DDNAME=*.nombre_DDDDNAME=*.nombre_paso.nombre_DD

En el caso de que no se especificara la DDname referenciada, se asumiriacomo DUMMY el valor de este parámetro.

Page 90: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 90/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 90 de 374

2.6.12 DISP

Parámetro de palabra clave.

Este parámetro especifica la situación o disposición que tiene el ficherocuando se inicia el paso, cuando finaliza bien el paso, y cuando finalizacon error.

El formato de este parámetro es:

DISP=(dis_inicial,disp_fin_normal,disp_fin_anormal)

La disposición inicial puede ser una de las siguientes:

NEW no existe el fichero

OLD El fichero ya existeSHR El fichero es compartidoMOD Los datos se apendizan al fichero existente., Si no se especifica, se asume NEW por defecto.

La disposición en el caso de que el paso finalice normalmente puede seruna de las siguientes:

,DELETE El fichero se borrara,KEEP El fichero se mantendrá,PASS El fichero se utilizara en pasos posteriores del mismo

JOB.,CATLG El fichero se guardara y además se catalogara.,UNCATLG El fichero se guardara, pero se borrara la entrada del

catalogo., En el caso de no especificar ningún parámetro, asume:

- DELETE para estado inicial NEW- KEEP para estado inicial OLD

La disposición en el caso de que el paso finalice anormalmente puede seruna de las siguientes:

,DELETE El fichero se borrara,KEEP El fichero se mantendrá,CATLG El fichero se guardara y además se catalogara.

,UNCATLG El fichero se guardara, pero se borrara la entradadel catalogo.

Page 91: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 91/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 91 de 374

La diferencia entre KEEP y PASS estriba solo en como se codifica la

sentencia DD, ya que si la primera vez que codificamos la DDespecificamos KEEP, al referenciar de nuevo el fichero en un pasoposterior debemos especificar todos los parámetros de ese fichero,mientras que si hubiéramos especificado la primera vez PASS , ya no serianecesario codificar toda esa informacion en los pasos siguientes.

Restricción: En los ficheros temporales no se admite la disposiciónKEEP.

Cuando la DDname referencia un fichero particionado, lo que esteparámetro especifique se aplica al fichero completo, no a un miembroconcreto, incluso si se especifica en el DSN el nombre de un miembro.

En el caso de trabajar con cintas, si se especifica KEEP, el sistema

descargara la cinta cuando termine el paso, mientras que si se especificaPASS no se descarga la cinta.

Ejemplo //JMP20 JOB (123,456),'DESARROLLO',CLASS=X,// MSGLEVEL=(1,1),NOTIFY=T976614//PASO1 EXEC PGM=BATCHP1//ENTRADA1 DD DSN=&&FILE1,DISP=(MOD,PASS)//ENTRADA2 DD DSN=DESJMP.JMP.JCL(EJEMPLO),DISP=SHR.../*

En general, todas las fichas JOBLIB, JOBCAT, STEPLIB, STEPCAT, SYSLIB,SYSLMOD, COBLIB deben llevar obligatoriamente DISP=SHR.

Page 92: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 92/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 92 de 374

2.6.13 SPACE

Parámetro de palabra clave.

Este parámetro especifica el espacio que se desea asignar a un fichero.

El formato de este parámetro es :

SPACE=(unidad,(c_pri[,c_sec][,c_dir]),[,RLSE][modo][,ROUND])

Donde :

UNIDAD Especifica la unidad en la que se mide la asignación derecursos que se solicitan para el fichero. Puede ser:

- TRK : La cantidad especifica numero de pistas.- CYL : La unidad especifica numero de cilindros.- nnnn : donde nnnn representa la longitud de bloque

c_pri Cantidad PrimariaEspecifica el numero de unidades que se asignan inicialmenteal fichero.

c_sec Cantidad SecundariaEspecifica el numero de unidades que se asignaran al ficheroen el caso de que no fuera suficiente la cantidad primariaasignada.El sistema hará hasta 16 extensiones de un mismo fichero encada volumen, dando en cada extensión la cantidad especificadacomo cantidad secundaria.Esto esta establecido así a fin de no reservar espacioinnecesariamente, e ir ampliando el fichero cuando senecesite.

c_dir Este parámetro especifica dos cosas distintas:

- en el caso de que e trate de un fichero particionado:Numero de Bloques de 256 bytes que se dedican comodirectorio del fichero.

- Y, si es un fichero secuencial-indexado:Numero de cilindros que se asignan al area de índices.

RLSE Este parámetro especifica al sistema que cuando se cierre elfichero se libere el espacio que no haya sido utilizado.Para seguir las normas generales de los parámetrosposicionales, en el caso de no especificarse este parámetro,debe escribirse una coma, si es que siguen otros parámetros.

Page 93: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 93/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 93 de 374

modo Este parámetro puede tener los siguientes valores:

CONTIG Con este valor indicamos al sistema que el espacioque se asigne como cantidad primaria debe asignarseen un espacio contiguo del disco.

MXIG Este valor especifica casi lo mismo que el valoranterior, con la diferencia de que en este casoespecificamos al sistema que asigne el espaciocontiguo, si es que dispone de él.

ALX Con este valor, especificamos al sistema que asignepara la cantidad primaria, hasta 5 areas contiguasdel tamaño especificado como cantidad primaria.

Ejemplo

//*===================================================================//P010 EXEC PGM=IDCAMS//SYSPRINT DD SYSOUT=*//I DD DSN=DESJMP.SAP2060.DB1,DISP=(SHR)//O DD DSN=DESJMP.JMP31785.DB1(+1),DISP=(,PASS),// SPACE=(CYL,(25,2),RLSE,,ROUND),// UNIT=(SYSALLDA,01),// VOL=(SER=),// LABEL=(000),// DCB=(MODEL,LRECL=16377,BLKSIZE=16384,RECFM=VB)//SYSIN DD DSN=DESJMP.CONTROL(JMP00000),DISP=(SHR)//*===================================================================

En el siguiente ejemplo el espacio asignado se especifica dando lalongitud del bloque.

// SPACE=(09076,(003140,001046),RLSE,,ROUND),

Page 94: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 94/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 94 de 374

2.6.14 VOLUME

Parámetro de palabra clave.

Este parámetro especifica el volumen en el que residirá el fichero.También puede usarse la palabra abreviada VOL.

Este parámetro es opcional, ya que el sistema, en el caso de que no seespecifique, hará la asignación del espacio solicitado en cualquiera delos volúmenes que en ese momento se encuentren montados.

El formato de este parámetro es:

VOL=([PRIVATE][,RETAIN][,sec][,cuenta][,ser_ref])

Donde:

PRIVATE especifica que el volumen es un volumen privado, y por tantoeste se asigna como de utilización exclusiva para el paso enel que figura este parámetro.

RETAIN especifica que el volumen en cinta no se desmonte, ya que deno especificar este parámetro, el volumen se desmontara cuandoacabe el paso.

sec especifica la posición del fichero dentro del volumen de cintamontado.

cuenta Numero de volúmenes que necesita un fichero multivolumen, esdecir, aquel fichero que ocupa varias cintas.

ser_ref Este parámetro puede tomar los siguientes formatos:

SER=num_serie Especifica el numero de serie del volumen

REF=nom_fichero Con este formato le indicamos al sistema quese desea asignar para el nuevo fichero elmismo volumen que el que tiene asignado elfichero cuyo nombre especificamos en esteparámetro.

REF=*.nombre_DD Es parecido al anterior, con la diferencia que

en este caso especificamos el fichero medianteel nombre de la DD que le referencia.

En el caso de que se necesite especificar mas de un numero de serie,estos se especificaran separándolos por comas, y encerrándolos entreparéntesis para seguir las normas generales de codificación de parámetrosposicionales.

Page 95: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 95/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 95 de 374

Ejemplos

El siguiente paso de JOB muestra cómo se puede copiar un fichero sobrecinta. En este caso son varios ficheros físicos los que se copian,aunque, al tener DDs concatenadas, son todos considerados como un unicofichero lógico. El fichero de salida puede tener hasta 30 volúmenes ocintas.

//******************************************************//* COPIAR FICHERO DE DISCO A CINTA//*- - - - - - - - - - - - - - - - - - - - - - - - - - -//PASO1 EXEC PGM=IEBGENER//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA

//SYSUT1 DD DSN=DESJMP.WTZZ0D0X.PRO,DISP=OLD// DD DSN=DESJMP.WTZZ0D0X.PRO@01,DISP=OLD// DD DSN=DESJMP.WTZZ0D0X.PRO@02,DISP=OLD// DD DSN=DESJMP.WTZZ0D0X.PRO@03,DISP=OLD//* ----------- FICHERO DE SALIDA//SYSUT2 DD DSN=DESJMP.WTZZ0D0X.PRO.REPORT11,DISP=(NEW,CATLG,),// UNIT=(ACL1,,DEFER),VOL=(,,,30),LABEL=(1,SL),// DCB=*.SYSUT1//SYSIN DD DUMMY

El siguiente ejemplo ejecuta la utilidad IEBCOPY. Esta utilidad ejecutalo que se le indica en el fichero que contiene los comandos de entrada,identificado por la DDname SYSIN. Lo que se dice a través de esta entradaes que copie la DDname indicada en IN-DD sobre la DDname especificada enOUT-DD. En este caso se especifica que no desmonte el volumen porque,posiblemente, se quiera usar el fichero siguiente.

//*****************************************************//PASO1 EXEC PGM=IEBCOPY//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA//LIB1 DD DSN=LINKLIB,DISP=(OLD,PASS),UNIT=482,// LABEL=(1,SL),VOL=(,RETAIN,SER=ENE001)//* ----------- FICHERO DE SALIDA//LIB2 DD DSN=DESJMP.SECLOAD,DISP=SHR//SYSIN DD *COPY INDD=LIB1,OUTDD=LIB2

/*//******************************************************

Page 96: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 96/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 96 de 374

2.6.15 UNIT

Parámetro de palabra clave.

Este parámetro se usa para definir al sistema la unidad física, o tipo deunidad en la que se ubicara el nuevo fichero, ya que si el fichero yaexiste, y esta catalogado, este parámetro es ignorado si se especifica.

El formato de este parámetro es:

UNIT=([parm1][,parm2][,DEFER])

donde:

parm1 es el primer subparametro, y sirve para determinar donde se

ubicara el nuevo fichero, pudiendo especificarse de tres formasdistintas:

- dando la Dirección de la unidad

es decir especificando la dirección lógica de la unidadelegida.

- dando el tipo de la unidad

es decir especificando un nombre conocido por el sistema queagrupa unidades del mismo tipo de dispositivo.Ejemplo: 2314,3330,...

- dando el nombre genérico.

es decir especificando un nombre genérico, que identifica auna serie de dispositivos.Estos nombres, que constan de 1 a 8 caracteres, son definidosen tiempo de generación del sistema, y por tanto dependen decada instalación.Ejemplo:- SYSDA : Dispositivos de acceso directo- ALLSYSDA : Dispositivos de acceso directo- SYSSO : Dispositivos secuenciales- TAPE : Dispositivo en cinta- etc..

parm2 Este subparametro, opcional, puede tomar los siguientes valores:

- cuenta :

especifica el numero de unidades que se necesitan para elfichero.

Page 97: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 97/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 97 de 374

- P :

si se especifica el valor "P" le estamos indicando al sistemaque los volúmenes especificados deben montarse en unidadesdistintas, es decir, en p_aralelo.

DEFER Este subparametro se utiliza para indicarle al sistema que losvolúmenes deben montarse cuando el programa ejecute el open delfichero, no cuando comience la ejecución del paso.

Como particularidad de este parámetro figura el hecho de que es el unicoparámetro necesario de las sentencias DD de los ficheros temporales encinta magnética.

Ejemplo

//PASO1 EXEC PGM=PROG0001//ENTRADA1 DD DSN=FICHERO1,DISP=OLD,UNIT=(2400,,DEFER)//ENTRADA2 DD DSN=FICHERO2,UNIT=123,DISP=OLD//ENTRADA3 DD DSN=FICHERO3,UNIT=SYSDA,VOL=SER=DES92//SALIDA01 DD DSN=DESJMP.JMP,DISP=SHR,UNIT=2400//SALIDA02 DD DSN=&FILE1,UNIT=3330,...//SALIDA03 DD DSN=.../*

En el anterior ejemplo, la sentencia DD:

ENTRADA1 especifica que el FICHERO1 se encuentra ubicado en la unidadde cinta (tipo 2400) pero no se desea que se monte hasta queel programa ejecute el OPEN del fichero.

ENTRADA2 especifica que el FICHERO2 se encuentra ubicado en la unidadque tiene por dirección 123. Este tipo de designacion se usapara ficheros no catalogados.

ENTRADA3 especifica que el FICHERO3 se encuentra en la unidad de discoque tiene por numero de serie DES92

SALIDA01 Define un fichero sobre una unidad del tipo 2400 quecorresponde a cinta magnética.

SALIDA02 Define el fichero temporal sobre un disco del tipo 3330. Comono se especifica VOLUMEN, el sistema elegirá un dispositivo delos que tiene montados, del tipo 3330 y no declarado comoPRIVATE para ubicar en él el nuevo fichero.

Page 98: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 98/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 98 de 374

2.6.16 DCB

Parámetro de palabra clave.

Este parámetro es el que determina el formato interno del registro delfichero que se esta definiendo. Este parámetro solo es obligatorio en elmomento de crear un fichero, por lo que si el fichero tiene DISP=MOD/OLDno es necesario especificarlo.

El formato de este parámetro es:

DCB=(parm1,parm2,...)

donde los distintos subparametros que configuran el parámetro son todosde palabra clave, razón por la que pueden ir en el orden que se desee.

Los parámetros mas usados son:

RECFM especifica el tipo de formato del registro, pudiendo tomar lossiguientes valores:

- U : Indefinido- V : Variable- VB : Bloqueado de longitud variable.- F : Fijo- FB : Fijo bloqueado.- FBA: Fijo Bloqueado con carácter control de carro

LRECL especifica la longitud del registro en bytes.

BLKSIZE especifica el tamaño de bloque o registro físico, expresándoleen numero de bytes.

DSORG Especifica el tipo de organizacion del fichero, pudiendo tomarlos siguientes valores:

- PS : Secuencial- IS : Secuencial indexado.- DA : Organización directa.- PO : Organización particionada.

DEN Especifica el tipo de densidad de grabación, pudiendo tomar los

siguientes valores:2 para 800 bpi (Bits per Inche)3 para 1600 bpi4 para 6250 bpi

Page 99: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 99/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 99 de 374

Ejemplo

//PASO1 EXEC PGM=PROG0001//ENTRADA1 DD DSN=FICHERO1,DISP=OLD//SALIDA01 DD DSN=DESJMP.JMP.JCL(EJEMPLO),// DISP=SHR,UNIT=2400,// DCB=(LRECL=80,RECFM=FBA,BLKSIZE=23440)

En el anterior ejemplo, la sentencia DD:

SALIDA01 Define un fichero que tiene una longitud de registro de 80Bytes, agrupados en bloques de 293 registros, es decir enbloques de 23440 octetos.El formato del registro es Fijo, bloqueado y se utilizara elprimer octeto del registro como informacion de control para la

impresora.

El siguiente ejemplo muestra 2 DCBs típicas de un fichero en cinta y otroen disco. Solo hay que ajustar los valores del tamaño del bloque enfunción del tamaño del registro, lo cual, dependiendo de lasinstalaciones se suele hacer usando el comando de TSO BLKSIZE, aunque enotras instalaciones se usa SPACE2, o alguno parecido.

//CMWKF04 DD DSN=DESJMP.WRK49406.D22,DISP=(NEW,CATLG,CATLG),// UNIT=(ACL1,,DEFER),VOL=(,,,30),LABEL=(1,SL),// DCB=(RECFM=FB,LRECL=4538,BLKSIZE=18152)//*//SYSUT2 DD DSN=DESJMP.WTZZ0D0X.PRO.XXX,DISP=(NEW,CATLG,),// UNIT=SYSDA,SPACE=(CYL,(4,1),RLSE),// DCB=(LRECL=33,BLKSIZE=23464,RECFM=FB)

Page 100: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 100/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 100 de 374

2.6.17 DATACLASS 

Parámetro de palabra clave.

Este parámetro especifica el nombre de una clase definida por eladministrador del sistema que permite simplifica las labores de alocacionde los nuevos ficheros, siendo ignorado este parámetro en el caso de queya exista el fichero.

Los parámetros estándar que cubre este parámetro son:

- LRECL y RECFM (subparametros de DCB)- SPACE- VOL

El formato de este parámetro es:

DATACLAS=nombre_clase

donde nombre_clase es el nombre de una clase definida por el administradordel sistema que puede tener de 1 a 8 caracteres y que sigue la normageneral de empezar por carácter.

Page 101: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 101/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 101 de 374

2.6.18 LABEL

Parámetro de palabra clave.

Este parámetro especifica el tipo de etiqueta utilizado por eldispositivo sobre el que se encuentra el fichero definido en la sentenciaDD.

El formato de este parámetro es:

LABEL=([secuencia][,tipo][,password][,expiración])

donde :

secuencia Especifica la posición relativa del fichero con respecto alorigen dentro del volumen de cinta.Por omisión se asume el valor 1, es decir es el primero dela cinta.

tipo Especifica el tipo de etiqueta usado. Puede tomar lossiguientes valores:

SL Usa Etiquetas estándar IBMSUL Usa Etiquetas estándar IBM de usuarioAL Usa Etiquetas ANSAUL Usa etiquetas ANS de usuarioNSL No usa etiquetas estándarNL No usa ninguna etiquetaLTM El sistema debe ignorar la marca de cinta de relleno

en la cabecera.BLP El sistema no debe procesar etiquetas de fichero de

cinta.

Por omisión, se asume el valor SL.

password especifica la protección asociada al fichero. Puede tomarlos siguientes valores:

PASSWORD en este caso, el fichero no podrá leerse nimodificarse ni borrarse a menos que se

especifique la clave que le protege.NOPWREAD en este caso, la clave de protección no será

necesaria para leer el fichero, pero si paraactualizarlo o borrarlo.

expiración Especifica la fecha en la que expira el fichero.

Page 102: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 102/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 102 de 374

Ejemplo

//PASO1 EXEC PGM=PROG0001//ENTRADA1 DD DSN=FICHERO1,DISP=OLD//SALIDA01 DD DSN=DESJMP.JMP.JCL(EJEMPLO),// DISP=SHR,UNIT=2400,// DCB=(LRECL=80,RECFM=FBA,BLKSIZE=80),// LABEL=(3,SL),VOL=SER=JMP94

En el anterior ejemplo, la sentencia DD:

SALIDA01 Define el tercer fichero de la cinta montada en la unidad detipo 2400 y cuyo numero de serie del volumen es JMP94.

Page 103: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 103/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 103 de 374

2.7 Sentencia OUTPUT

Esta sentencia esta íntimamente ligada al parámetro OUTPUT de la sentenciaDD, y permite especificar características especiales para cada uno de losarchivos de SYSOUT, pudiéndose incluso usar para enviar un mismo archivo avarias impresoras.

La etiqueta de esta sentencia debe ser única a nivel de JCL

//PASO1 EXEC PGM=PROGRAMA//GOYA OUTPUT DEST=RMT111//BARNA OUTPUT DEST=RMT222//SALIDA DD SYSOUT=A,OUTPUT=(GOYA,BARNA)

Esta sentencia solo es aplicable para MVS/XA y MVS/ESA, y los parámetros que

pueden especificarse son:

BURST Para especificar tipo de papel (separado o continuo)

CHARS Para especificar conjunto o conjuntos de caracteres a usar en laimpresión.

CKPTLNS=líneas

Especifica el máximo numero de líneas que puede contener una páginalógica. Debe estar comprendido en el rango 0-32767.

CKPTPAGE=paginas

Especifica el máximo numero de páginas lógicas que se puedenimprimir. Debe estar comprendido en el rango 0-32767.

CKPTSEC=segundos

Especifica el tiempo de CPU, expresado en segundos, transcurridoentre checkpoints del sysout.

CLASS=clase

Este parámetro especifica la clase de salida, y se debe usar cuandose ha especificado un valor nulo en el parámetro de la fiche DD.

//PASO1 EXEC PGM=PROGRAMA//GOYA OUTPUT DEST=RMT111,CLASS=A//BARNA OUTPUT DEST=RMT222,CLASS=J//SALIDA DD SYSOUT=(,)A,OUTPUT=(*.GOYA,*.BARNA)

Page 104: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 104/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 104 de 374

2.8 Sentencias DD especiales

Una vez vista la estructura de las fichas DD y los parámetros que la puedenconfigurar, se pasa a estudiar una serie de fichas DD cuyo nombre tienesignificado propio para el sistema, pero que por ser sentencias DD siguenlas reglas generales vistas para estas fichas.

JOBLIB

Esta sentencia especifica la localización dentro del sistema delas librerías en las que se encuentran los programas que sedesean ejecutar en este JOB.

Por defecto cuando un JOB en un paso quiere ejecutar el programa

indicado en la sentencia EXEC, le busca en la libreríaSYS1.LINKLIB.

En consecuencia, esta DD se utilizara para especificar todasaquellas librerías en las que debe buscar los programas que sedesean ejecutar en los distintos pasos del JOB, cesando estabúsqueda cuando encuentre el primer miembro cuyo nombre coincidacon el nombre del programa a ejecutar.

Esta sentencia tiene validez para todo el JOB, es decir debeespecificarse a nivel de JOB, y por tanto tiene como restricciónque debe seguir inmediatamente a la sentencia JOB.

JOBCAT

Esta sentencia tiene un significado parecido al de la fichaanterior, con la salvedad de que especifica el catalogo VSAM enel que se encuentran catalogados los ficheros VSAM que use elJOB.

Para sistemas que usen el SMS esta fiche no puede usarse.

Al igual que la anterior, esta ficha por su propio significado,debe especificarse a nivel de JOB, y tiene como particularidadque si se especifica la sentencia JOBLIB, esta debe preceder a laficha JOBCAT.

Page 105: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 105/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 105 de 374

STEPLIB

Esta ficha es igual a la ficha JOBLIB, con la diferencia de queaquella se especifica a nivel de JOB y esta, como su propionombre indica, se especifica a nivel de paso.

En el caso de especificarse en un mismo JOB ficha JOBLIB y en unode los pasos STEPLIB, la ficha JOBLIB es ignorada en dicho paso.

Otra diferencia con la ficha JOBLIB consiste en que no esnecesario especificarla como primera DD del paso, pues puedeocupar cualquier posición del mismo.

STEPCAT

Esta ficha, es similar a la ficha JOBCAT, con la diferencia deque en este caso le indicamos al sistema que ignore la fichaJOBCAT si es que se ha especificado, y que busque los ficherosVSAM del paso en el catalogo que se especifica en esta ficha.

SYSABEND

Esta ficha referencia un fichero en el que se desea volcar lamemoria en el caso de que el programa termine anormalmente.

La zona de memoria volcada a fichero es:- Nucleo del sistema- Area del programa problema- tabla del TRACE

SYSUDUMP

Esta ficha referencia, igual que la anterior, un fichero en elque se desea volcar la memoria en el caso de que el programatermine anormalmente.

La zona de memoria volcada a fichero es únicamente el Area delprograma problema.

Page 106: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 106/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 106 de 374

2.9 Procedimiento

Como se ha dicho al hablar del parámetro PROC de la ficha EXEC, el nombreque acompaña a este parámetro especifica el nombre del procedimiento que sedesea ejecutar. En cambio, la Sentencia PROC define el comienzo de unprocedimiento, y la etiqueta de esta ficha PROC establece el nombre delprocedimiento.

Se entiende por PROCEDIMIENTO un conjunto de n pasos que se ejecutan deforma inseparable tantas veces como sea llamado el procedimiento. Estosprocedimientos tienen la restricción de que los pasos contenidos en ellosno pueden invocar a otros procedimientos.

Los datos variables se referencian en el procedimiento como nombres devariables, empezando por un &. Dichas variables pueden definirse al

principio del procedimiento a fin de asignarlas valores por defecto.

En el caso de tener que definir ficheros temporales en el procedimientos, elnombre asignado debe ir precedido de dos && a fin de diferenciarlos delas variables del procedimiento.

Se entiende por PROCEDIMIENTO CATALOGADO un conjunto de pasos que seencuentran catalogados en la librería definida al efecto, y que precisamentepor estar catalogados no es necesario incluir en el JOB; no obstante, estese expandirá cuando el JES interprete el JCL.

Normalmente es la librería SYS1.PROCLIB la que contiene los procedimientoscatalogados del sistema, si bien puede ser cualquier otra concatenada conesta.

Existe una restricción en la definición de los procedimientos, y es quedentro de un procedimiento no se puede especificar una DD con el parámetro *o DATA.

Como ejemplo se acompaña el JCL que sirve para:

- generar el DBRM del interface de un producto. Es decir, la rutina queDB2 ejecutara para manejar los datos de la tabla de una aplicacion.

- precompilar el modulo obtenido- compilar- linkeditar- Hacer BIND

Page 107: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 107/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 107 de 374

//DESJMP19A JOB TBJMP,'PRODUCTO',

// CLASS=C,NOTIFY=DESJMP19,MSGCLASS=V//*******************************************************************//COMPILAR PROC MODULO=@@@@@@@@//*------------------------------------------------------------------//SQLGEN EXEC PGM=XXXSQLGN,PARM='&MODULO',REGION=4096K//STEPLIB DD DSN=DESJMP.XXX2060.LINKLIB,DISP=SHR//CT DD DISP=SHR,DSN=DESJMP.XXX2060.DB1//MF DD DISP=SHR,DSN=DESJMP.XXX2060.DB1//II DD DISP=SHR,DSN=JMP.JMP35071.II.DIC//IIPUR DD DISP=SHR,DSN=JMP.JMP35078.PUR//IIDAT DD DISP=SHR,DSN=JMP.JMP35072.II.DAT//IISEC DD DISP=SHR,DSN=JMP.JMP35074.II.SEC//TEMP DD DSN=DESJMP.JMP.FONTSQL(&MODULO),DISP=SHR//OUT DD SYSOUT=*

//*------------------------------------------------------------------//PC EXEC PGM=DSNHPC,PARM='HOST(ASM),SOURCE,XREF',REGION=4096K//DBRMLIB DD DSN=DESJMP.DBRMLIB(&MODULO),DISP=SHR//SYSCIN DD DSN=&&DSNHOUT,DISP=(,PASS),UNIT=SYSDA,// SPACE=(800,(500,500))//SYSIN DD DSN=DESJMP.JMP.FONTSQL(&MODULO),DISP=SHR//SYSPRINT DD SYSOUT=*,OUTLIM=999999//SYSTERM DD SYSOUT=*//SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA//*------------------------------------------------------------------//ASM EXEC PGM=IEV90,// PARM='LOAD,NODECK'//SYSIN DD DSN=&&DSNHOUT,DISP=(OLD,DELETE)//SYSLIB DD DSN=DESJMP.XXX2060.MACLIB,DISP=SHR// DD DSN=SYS1.MACLIB,DISP=SHR//SYSGO DD DSN=&&LOADSET,DISP=(,PASS),UNIT=SYSDA,// SPACE=(800,(500,500))//SYSTERM DD SYSOUT=*//SYSPRINT DD SYSOUT=*,OUTLIM=999999//SYSUDUMP DD SYSOUT=*//SYSUT1 DD SPACE=(TRK,(50,5)),UNIT=SYSDA,DISP=(,DELETE)//SYSUT2 DD SPACE=(TRK,(36,5)),UNIT=SYSDA,DISP=(,DELETE)//SYSUT3 DD SPACE=(TRK,(36,5)),UNIT=SYSDA,DISP=(,DELETE)//*------------------------------------------------------------------//LKED EXEC PGM=IEWL,PARM='REUS,XREF,LIST,MAP',// COND=((4,LT,ASM),(4,LT,PC))//SYSLIB DD DISP=SHR,DSN=SYS1.DB2CT.DSNLOAD//SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE)// DD DDNAME=SYSIN//SYSLMOD DD DSN=DESJMP.XXX.LOAD(&MODULO),DISP=SHR//SYSPRINT DD SYSOUT=*,OUTLIM=999999//SYSUDUMP DD SYSOUT=*//SYSUT1 DD SPACE=(1024,(50,50)),UNIT=SYSDA

Page 108: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 108/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 108 de 374

//*-----------------------------------------------------------------

//*---------- BIND PACKAGE ------------------------//*-----------------------------------------------------------------//BINDPACK EXEC PGM=IKJEFT01,DYNAMNBR=20//SYSTSPRT DD SYSOUT=*//SYSPRINT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSTSIN DD DUMMY//COMPILAR PEND//*----------- FIN PROCEDIMIENTO -------------//*******************************************************************//STEP20 EXEC COMPILAR,MODULO=JMPL20T <--- CAMBIAR EN LOS 3 SITIOS//LKED.SYSIN DD *

NAME JMPL20T(R)/*

//BINDPACK.SYSTSIN DD *DSN SYSTEM(DBT1)BIND PACKAGE(JMPL01T) OWNER(DESJMP) MEMBER(JMPL20T) -LIBRARY('DESJMP.DBRMLIB') -VALIDATE(BIND) ISOLATION(CS) RELEASE(DEALLOCATE) -EXPLAIN(Y)

END/*//*******************************************************************

Al llamar a este procedimiento, mediante la ficha EXEC correspondiente, sepasa como parámetro el nombre del Modulo, que sustituirá al nombre dado pordefecto en el procedimiento: "@@@@@@@@"Así mismo, se pasan dos ficheros que sustituyen a los definidos en elprocedimiento, la DDname SYSIN del paso LKED y la DDname SYSTSIN del pasoBINDPACK.

Page 109: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 109/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 109 de 374

2.10 Utilidades

Dentro de este apartado se estudian diversos programas de utilidadproporcionados por MVS para facilitar la gestión de las librerías yficheros.

Estos programas reciben este nombre porque van a librar al usuario decodificar rutinas y códigos para realizar funciones de uso común, talescomo:

- Mantener y manipular datos del Sistema.- Reorganizar, cambiar, comparar o manipular datos y/o ficheros deusuario.

Es de resaltar el hecho de que estas utilidades operan sobre ficheros

particionados y/o secuenciales, y que todos los programas de utilidad puedenacceder a datos que estén en cualquier tipo de dispositivo: cintas, discos,etc.

Estas utilidades no se diferencian en nada de cualquier programa deaplicacion, a no ser por su finalidad, y pueden ejecutarse como cualquierotro, bien mediante un procedimiento de comandos, clist por ejemplo, o através de un trabajo batch, siendo esta ultima forma la mas normal.

Los programas de utilidad necesitan para su control dos tipos de sentencias:- las sentencias propias del JCL, para asignación de recursos; y- las sentencias de control de la utilidad, para especificar lo que debeejecutar.

Por otra parte, cada programa de utilidad tiene sus diferentes sentencias deJCL y sus diferentes sentencias de control de utilidades, que se verán endetalle cuando se vea cada uno de ellos.

El formato general de un paso que ejecuta un programa de utilidad es:

//etiqueta EXEC PGM=utilidad//SYSPRINT DD ... salida de los mensaje//SYSIN DD *fichas de control de la utilidad

/*//ddname1 DD ...//ddname2 DD ...

//...donde la DDname

SYSPRINT define donde se escribirán los mensajes devueltos por la utilidad.

SYSIN contiene las fichas de control de la utilidad.

Page 110: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 110/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 110 de 374

El formato de las fichas de control es el siguiente.

nombre operación operando1,operando2,... comentario

donde cada elemento va delimitado por blancos, y

nombre comienza en la columna 1 y consta de 1 a 8 caracteres

operación Identifica la operación a realizar

operandos Es el area siguiente, y esta compuesta por parámetros depalabras clave separadas por comas.

comentarios Ira separado por blancos después del ultimo parámetro.

Como ya se ha dicho, las sentencias de control de utilidades se codificandentro de una sentencia SYSIN, siguiendo las normas generales de cualquierficha DD ya vista, por lo tanto, las fichas de control pueden especificarse:

1.- mediante una entrada 'in stream' de formato//SYSIN DD *

2.- o, dentro de un fichero secuencial o miembro de un particionado de 80caracteres de longitud.

//SYSIN DD DSN=USER424.DATOS.UTIL,DISP=SHR// DD DSN=USER525.SENTEN.UTIL(miembro),DISP=SHR

El contenido de estos dos ficheros serán las sentencias decontrol de utilidades específicas para una función y utilidadparticular.

Dentro de una misma SYSIN pueden codificarse varias sentencias decontrol de utilidades.

Page 111: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 111/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 111 de 374

2.10.1 IEFBR14

Este programa de utilidad realmente solo ejecuta un "FIN DE PROGRAMA".

La utilidad de este programa radica en la posibilidad de manejar lacreación , catalogación o borrado de ficheros mediante una adecuadacombinación de fichas DD y parámetros de DISP.

Las DDnames de este paso no tienen significado, pudiendo especificarse oconcatenarse tantas como sean necesarias, en función de los ficheros quese quieran tratar.

El siguiente ejemplo muestra este hecho.

El primer paso, ejecuta el programa IEFBR14 y la única DD que existe,

esta asociada a un fichero con disposición MOD, lo cual quiere decir que:

- Si el fichero no existe, debe crearle con las especificaciones quesiguen (DCB,UNIT,SPACE)

- Si el fichero existe, los datos se apendizan a los ya existentes. (Esteprograma no genera informacion)

A continuación, se ejecuta el programa, y termina, con lo que el ficheroanterior, en base al parámetro DISP, se borra, pues ha terminado bien.

En una palabra, este paso asegura que cuando se termina de ejecutar noexiste el fichero de la DD especificada en el mismo.

//**************************************************************//* BORRAR FICHEROS//*//BORRAR EXEC PGM=IEFBR14//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//D1 DD DSN=DESJMP.CMWKF01,DISP=(MOD,DELETE,)// UNIT=SYSDA,SPACE=(CYL,(4,1),RLSE),// DCB=(DSORG=PS,RECFM=FB,LRECL=205,BLKSIZE=23370)//*----------------------------------------------------------//* COPIAR FICHEROS//*//PASO1 EXEC PGM=IEBGENER//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*

//* ----------- FICHERO DE ENTRADA//SYSUT1 DD DSN=DESJMP.FILE01,DISP=SHR//* ----------- FICHERO DE SALIDA//SYSUT2 DD DSN=DESJMP.CMWKF01,// DISP=(NEW,CATLG,DELETE),// UNIT=SYSDA,SPACE=(CYL,(4,1),RLSE),// DCB=(DSORG=PS,RECFM=FB,LRECL=205,BLKSIZE=23370)//SYSIN DD DUMMY//**************************************************************

Page 112: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 112/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 112 de 374

2.10.2 IEBGENER 

La utilidad de este programa se basa en copiar ficheros, conindependencia de cual sea el dispositivo donde se encuentra el ficheroorigen o de destino, ya que básicamente lo que hace es copiar el ficheroque tiene por DDname SYSUT1 sobre el fichero especificado en la DDnameSYSUT2.

La DDname SYSIN, de especificación obligatoria, contendrá las fichas decontrol. Estas fichas solo son obligatorias en el caso de que lascaracterísticas del fichero de salida no coincidan con las del fichero deentrada. En caso contrario puede definirse como DUMMY.

Las fichas de control en este ultimo caso podrán contener:

GENERATE Esta palabra especifica que los registros de salida sondistintos a los de entrada.

MAXFIELDS = n

Este es el unico parámetro que puede llevar esta ficha decontrol, y con el se indica al sistema que en la ficha decontrol RECORD se va a encontrar con N parámetros FIELD.

RECORD Esta ficha de control especifica el diseño del registro desalida mediante la concatenacion de tantos parámetros depalabra clave FIELD como sean necesarios..

El parámetro FIELD se ajustara al siguiente formato

FIELD=(num_bytes,pos_ini,conv,pos_sal)

donde cada subparametro especifica:

num_bytes Tamaño del campopos_ini Posición inicial en el registro de entradaconv Posible conversiónpos_sal Posición del registro de salida donde

depositarla

Un caso particular le constituye el que los datos a copiar (SYSUT1) esténdefinidos en la propia cadena. En este caso debe especificarse la DCB en

la DDname SYSUT2.

Page 113: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 113/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 113 de 374

El siguiente ejemplo muestra cómo se usa esta utilidad para copiar tres

ficheros físicos sobre una impresora determinada.

//*******************************************************//* LISTAR POR IMPRESORA//*******************************************************//IMPRIMIR EXEC PGM=IEBGENER//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA//SYSUT1 DD DSN=DESJMP.RESUMEN1,DISP=SHR// DD DSN=DESJMP.RESUMEN2,DISP=SHR// DD DSN=DESJMP.RESUMEN3,DISP=SHR//* ----------- FICHERO DE SALIDA//SYSUT2 DD SYSOUT=F,DEST=RMT5,COPIES=32

//SYSIN DD DUMMY//*******************************************************

El siguiente ejemplo muestra cómo copiar un fichero editando la salida,de modo que:En la posición 1 del registro de salida se coloquen los 30 octetos que seencuentran en la posición 1 y siguientes del registro de entrada. YEn la posición 50 del registro de salida se coloquen los 175 bytes que seencuentran en la posición 31 y siguientes del registro de entrada.Los octetos 31 a 49 ambos inclusive del registro de salida quedaranrellenos a ceros binarios.

//*****************************************************************//PASO1 EXEC PGM=IEBGENER//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA//SYSUT1 DD DSN=DESJMP.FILE01,DISP=SHR//* ----------- FICHERO DE SALIDA//SYSUT2 DD DSN=DESMGO.CMWKF01,// DISP=(NEW,CATLG,DELETE),// UNIT=SYSDA,SPACE=(CYL,(4,1),RLSE),// DCB=(DMYDCB,DSORG=PS,RECFM=FB,LRECL=205,BLKSIZE=23370)//SYSIN DD *GENERATE MAXFLDS=2RECORD FIELD=(30,1,,1),FIELD=(175,31,,50)

/*//*****************************************************************

Page 114: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 114/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 114 de 374

El siguiente ejemplo muestra cómo copiar un fichero especificando que las

características del fichero de salida las asume de las del ficherofuente.

//*****************************************************************//* COPIAR FICHERO DE CINTA A CINTA//*----------------------------------------------------------------//PASO1 EXEC PGM=IEBGENER//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA//SYSUT1 DD DSN=DESJMP.PRUEBA.WORK99S,DISP=OLD//* ----------- FICHERO DE SALIDA//SYSUT2 DD DSN=DESJMP.PRUEBA.WORK99S.SEC,DISP=(NEW,CATLG,),// UNIT=(ACL1,,DEFER),VOL=(,,,30),LABEL=(1,SL),

// DCB=*.SYSUT1//SYSIN DD DUMMY//*****************************************************************

El siguiente ejemplo muestra como enviar a la cola de entrada detrabajos, un job que se encuentra escrito en el fichero asociado a laDDname SYSUT1.

//DESJMP01 JOB (44,123),'DESARROLLO',CLASS=C,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(0,1)//*-------------------------------------------------------//PASO0030 EXEC PGM=IEBGENER//SYSPRINT DD SYSOUT=*//SYSUT1 DD DSN=DESJMP.JOBPROD,DISP=(OLD,DELETE,KEEP)//SYSUT2 DD SYSOUT=(A,INTRDR)//SYSIN DD DUMMY

Page 115: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 115/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 115 de 374

2.10.3 IEBCOPY

Este programa de utilidad se usa para:

- Pasar fichero particionado a secuencial- copiar fichero particionado a fichero particionado- restaurar fichero desde cinta

En el caso de que la salida sea un fichero secuencial, y el fichero deentrada un fichero particionado, copia en él todos los miembros a no serque se especifique otra cosa con las fichas de control.

Las fichas de control en este programa son obligatorias, ya que es elmedio de que se dispone para indicarle lo que debe realizar. Estas fichaspueden ser:

COPY Esta ficha se usa para indicar al programa cuales son lasDDnames de entrada y de salida, mediante el uso de losparámetros de palabra clave siguientes:

INDD=DDname_entradaOUTDD=DDname_salida

SELECT Esta ficha se usa para indicar que miembros queremos copiar,lo cual se hace mediante el uso del parámetro de palabra clavesiguiente:

MEMBER=(miembro1[,miembro2[,...]])

EXCLUDE esta ficha se usa para indicar que miembros se quieren excluirde la copia. Se hace mediante el uso del parámetro de palabraclave MEMBER visto en la ficha SELECT

Las opciones SELECT y EXCLUDE deben siempre ir acompañadas de unasentencia COPY.

El formato de la especificación del MIEMBRO en el parámetro de palabraclave MEMBER es:

(1) nombre_miembro(2) (nombre_fuente,nombre_destino)(3) (nombre_fuente,nombre_destino,R)

(4) (nombre_miembro,,R)

Page 116: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 116/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 116 de 374

donde cada formato se usa para:

(1) especificar el nombre de un miembro.

(2) copiar cambiando de nombre al miembro.

(3) Copiar cambiando el nombre, y si existe en el destino,reemplazar el existente.

(4) Copiar sin cambiar el nombre, pero en caso de miembros con elmismo nombre, reemplazar el de la librería de destino.

Evidentemente, estos formatos solo son aplicables al parámetro MEMBERusado en la ficha de control SELECT.

Ejemplo 1

// EXEC PGM=IEBCOPY//SYSPRINT DD SYSOUT=*//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(1,1))//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(1,1))//SEC@IN DD DSN=DESJMP.ENTRADA,DISP=SHR SECUENCIAL ENTRADA//SEC@OUT DD DSN=DESJMP.SALIDA,DISP=OLD SECUENCIAL SALIDA//PDS@IN DD DSN=DESJMP.ENTRADA,DISP=SHR LIBRERIA ENTRADA//PDS@OUT DD DSN=DESJMP.SALIDA,DISP=OLD LIBRERIA SALIDA//SYSIN DD *COPY INDD=PDS@IN OUTDD=SEC@OUT

/*

Las DDnames SYSUT3 y SYSUT4 son definiciones que puede necesitar paratrabajo el propio programa, y que en caso de no especificarlas en el JCL,cuando se interrumpe el trabajo por necesitarlas, presenta en el log delJOB el mensaje explicativo de que no se ha especificado la SYSUTncorrespondiente.

En el ejemplo anterior se copia toda la librería de entrada sobre elfichero secuencial especificado como salida.

Ejemplo 2 : Copia en el secuencial los miembros M1, M2 y M5.

//SYSIN DD *COPY INDD=PDS@IN OUTDD=SEC@OUTSELECT MEMBER=(M1,M2,M5)

/*

Page 117: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 117/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 117 de 374

Ejemplo 3 : Copia todos los miembros de la librería de entrada,

excluyendo los miembros M6, M7 y M9.

//SYSIN DD *COPY INDD=PDS@IN OUTDD=SEC@OUTEXCLUDE MEMBER=(M6,M7,M9)

/*

Ejemplo 4: Copia todos los miembros de la librería de entrada, a la desalida. Los miembros duplicados no los copia.

//SYSIN DD *COPY INDD=PDS@IN OUTDD=PDS@OUT

/*

Ejemplo 5: Copia todos los miembros desde el secuencial de entrada a lalibrería de salida. Se excluye de la copia el miembro EJEMPLO.

//SYSIN DD *COPY INDD=SEC@IN OUTDD=PDS@OUTEXCLUDE MEMBER=(EJEMPLO)

/*

Ejemplo 6: Copia todos los miembros de las dos librerías especificadasENTRADA1 Y ENTRADA2 sobre el fichero particionado o secuencial asociado ala DDname SALIDA.Y también copia todos los miembros de la librería especificada en laDDname ENTRADA3 sobre la librería asociada a la DDname SALIDA3. En elcaso de que algún miembro de la librería destino tuviera el mismo nombreque el de la librería fuente, seria reemplazado.

//SYSIN DD *COPY INDD=(ENTRADA1,ENTRADA2) OUTDD=SALIDACOPY INDD=((ENTRADA3,R)) OUTDD=SALIDA3

/*

Page 118: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 118/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 118 de 374

2.10.4 IEBPTPCH

Este programa de utilidad se usa para imprimir o perforar lo siguiente:

- un fichero secuencial o particionado completo- Miembros específicos de un fichero particionado- Registros seleccionados de un fichero secuencial o particionado- el directorio de un fichero particionado- Versión editada de un fichero secuencial o particionado.

El fichero de entrada se especifica en la DDname SYSUT1, y el de salidaen la SYSUT2.

Las fichas de control en este programa son obligatorias, ya que es elmedio de que se dispone para indicarle lo que debe realizar. Estas fichas

pueden ser:

PRINT Esta ficha se usa para especificar determinadascaracterísticas mediante los siguientes parámetros de palabraclave:

TYPORG=valor especifica el tipo de organizacion del ficheroasociado a la DDname SYSUT1Puede tomar los valores:- PO : Organizacion particionada- PS : Organizacion secuencial.

MAXFLDS=n1 Especifica el numero de parámetros FIELD que seespecifican en la ficha de control RECORD

MAXNAME=n2 Especifica el numero de parámetros NAME que seespecifican en la ficha de control MEMBER

STRTAFT=n3 Especifica que empiece a listar desde elregistro n3

STOPAFT=n4 Especifica que pare después de escribir n4registros.

SKIP=n5 Especifica que deje una línea en blanco cada 5registros escritos

MAXGPS=n6 Este parámetro especifica el numero deparámetros IDENT que aparecen en fichas RECORD.Estos parámetros especifican tipos de registro.

MAXLITS=n7 Este parámetro especifica el numero decaracteres que componen el tipo de registro.

Page 119: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 119/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 119 de 374

PREFORM=p Especifica que el primer carácter del registro

es un carácter de control, y por tanto no seráimpreso.Los posibles valores de P son:PREFORM=A para caracteres de control ASAPREFORM=M para caracteres de control maquina

TOTCONV=t Este parámetro especifica el tipo de conversiónque se hará para imprimir la entrada.Los posibles valores de T son:TOTCONV=XE se imprime en formato hexadecimal,

Es decir dos caracteres porcarácter de entrada.

TOTCONV=PZ Con este parámetro se indica que laentrada viene en formatoempaquetado. La impresión se

realizara usando dos caracteresnuméricos por cada uno de entrada.

CNTRL=n8 Especifica el espaciado del fichero de salida.Los posibles valores son 1,2 o 3.Por defecto asume el espaciado simple =1

INITPG=n9 Especifica el numero de página inicial. Pordefecto asume el valor 1, y no puede exceder elvalor 9999

MAXLINE=nn Especifica el numero de líneas por página,incluyendo títulos, líneas en blanco yespaciado.

PUNCH Esta ficha es parecida a la anterior, tiene la misma finalidady los mismos parámetros, con la salvedad de que inserta ensalida un blanco cada 5 columnas.Para evitar este efecto, en el caso de salida impresa, podríaexpecificarse una ficha RECORD con el parámetro FIELD=(80).

MEMBER Esta ficha sirva para indicar al sistema, cuando existe, losmiembros de la librería que se desean listar. En el caso deque no se defina esta ficha, se asume que son todos.

NAME=miembro Este parámetro se usa para especificar elnombre del miembro a listar

Page 120: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 120/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 120 de 374

RECORD Esta ficha de control se usa para especificar el formato del

registro de salida.

FIELD=(num_bytes,pos_ini,conv,pos_sal)

donde cada subparametro especifica:

num_bytes Tamaño del campopos_ini Posición inicial en el registro de entradaconv Posible conversiónpos_sal Posición del registro de salida donde

depositarlaTITLE Este parámetro sirve para especificar un literal para la

cabecera del listado, el cual ira acompañando al parámetro depalabra clave ITEM, el cual tiene el siguiente formato:

ITEM=('titulo',nn)

donde nn especifica el offset o margen izquierdo.

Cuando no se especifica DCB en el fichero de salida, asume la siguiente:

DCB=(LRECL=121,BLKSIZE=121,RECFM=FBA)

Ejemplo

// EXEC PGM=IEBPTPCH//SYSPRINT DD SYSOUT=*//SYSUT1 DD DSN=FICHERO,DISP=SHR//SYSUT2 DD SYSOUT=*//SYSIN DD *PRINT TYPORG=PO,MAXFLDS=1,STOPAFT=100RECORD FIELD=(80)

/*

Con estas fichas de control especificamos:- Organizacion del fichero de entrada: Particionada- Hay 1 parámetro FIELD en la ficha RECORD- Listar todos los miembros del fichero- Listar solo los 100 primeros registros de cada miembro.- listar los 80 primeros bytes de cada registro.

Page 121: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 121/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 121 de 374

//SYSIN DD *PRINT TYPORG=PO,MAXFLDS=2,MAXNAME=1,SKIP=5MEMBER NAME=EJEMPLOTITLE ITEM=('cabecera listado',40)RECORD FIELD=(40,25,,1),FIELD=(25,1,,41)

/*

Con estas fichas de control especificamos:

- Organizacion del fichero de entrada: Particionada- Hay 2 parámetro FIELD en la ficha RECORD- Hay 1 parámetro NAME en la ficha MEMBER- dejar una línea en blanco cada 5 registros- Escribir como cabecera del listado 'CABECERA SALIDA'

- escribir en la posición 1 del registro de salida los 40 bytes quese encuentran en el registro de entrada desde la posición 25.

- Escribir los 25 primero bytes del registro de entrada sobre lasposiciones 41 y siguientes del registro de salida.

//SYSIN DD *PRINT TYPORG=PS,MAXFLDS=2,STRTAFT=12,STOPAFT=200RECORD FIELD=(1,1,XE,2),FIELD=(70,2,,4)

/*

Con estas fichas de control especificamos:- Organizacion del fichero de entrada: secuencial- Hay 2 parámetros FIELD en la ficha RECORD- Listar los 200 registros que siguen al registro 12 del fichero deentrada.

- Escribir en la posición 2 del registro de salida el primer bytedel registro de entrada, pero en formato hexadecimal.- Escribir los 70 bytes del registro de entrada que se encuentran enlas posiciones 2 y siguientes sobre las posiciones 4 y siguientes delregistro de salida.

//SYSIN DD *PRINT MAXFLDS=3,MAXGPS=3,MAXLITS=1RECORD IDENT=(1,'A',1),FIELD=(75,2,,6)RECORD IDENT=(1,'B',1),FIELD=(70,5,6)RECORD IDENT=(1,'C',1),FIELD=(50,10,6)

/*Con estas fichas de control especificamos:- Hay 3 parámetros FIELD en fichas RECORD- Hay 3 tipos de registros (MAXGPS)- El tipo de registro tiene una longitud de 1 carácter.- Cuando en la primera posición de un registro, se encuentra elcarácter 'A', se utilizara el PARAMETRO FIELD de la primera ficha decontrol RECORD- Si fuera 'B' se utilizaría la segunda ficha RECORD.- Y, si fuera 'C' se utilizara la ultima.

Page 122: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 122/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 122 de 374

El siguiente ejemplo muestra cómo pasar todos los miembros de un fichero

particionado a un miembro de otro fichero particionado.

//******************************************************//IEBPTPCH EXEC PGM=IEBPTPCH//SYSPRINT DD SYSOUT=*//SYSUT1 DD DISP=SHR,DSN=DESJMP.SEC.DBCOBOL//SYSUT2 DD DISP=SHR,DSN=DESJMP.SEC.SALIDAS(DBCOBOL)//SYSIN DD *PRINT TYPORG=PO,MAXFLDS=1RECORD FIELD=(80)

/*//*******************************************************

El siguiente ejemplo muestra cómo listar un directorio.

Cabe resaltar el hecho de que hay que especificar el parámetro DCB en laSYSUT1 que especifica el nombre de la librería de entrada; y el parámetroTYPORG=PS en la ficha de control PUNCH.El definir el parámetro DCB=LRECL=43 es para que salga encolumnada lasentradas del directorio.

//******************************************************//IEBPTPCH EXEC PGM=IEBPTPCH//SYSPRINT DD SYSOUT=*//SYSUT1 DD DISP=SHR,DSN=DESJMP.SEC.DBCOBOL,

DCB=(RECFM=U,BLKSIZE=256)//SYSUT2 DD SYSOUT=X,DCB=LRECL=43//SYSIN DD *PUNCH TYPORG=PS

/*//*******************************************************

En el anexo se incluye la ejecución de un JCL para listar un directorio.

Page 123: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 123/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 123 de 374

2.10.5 IEBCOMPR  

Esta utilidad permite comparar ficheros particionados o secuenciales.

IEBCOMPR considerará que dos ficheros secuenciales son iguales si:

- Contienen el mismo número de registros.- Cada registro tiene la misma información que su correspondiente en el

otro fichero.

IEBCOMPR, considerará que dos ficheros particionados son iguales si:

- Los directorios de los ficheros son iguales.- Los miembros correspondientes de los dos ficheros son iguales.- Los datos de esos miembros son iguales.

Las DDnames necesarias para esta utilidad son:

//SYSPRINT Fichero de salida de mensajes de IEBCOMPR

//SYSUT1 Sentencia DD para asignación del fichero de entrada.

//SYSUT2 Sentencia DD para asignación del fichero de salida.

//SYSIN Sentencia DD para entrada de sentencias de controlde utilidades.

Esta utilidad, IEBCOMPR, solo tiene una sentencia de control, la cual seajusta al siguiente formato:

COMPARE=TYPORG=tipo

donde

COMPARE Es una sentencia obligatoria, que expresa además la función arealizar.

TYPORG Especifica la organizacion del fichero, Para lo cual, TIPOpuede tomar los valores:

PS Secuencial.Es el valor que asume por defecto.

Si se comparan ficheros secuenciales no hace faltacodificar este parámetro, y la SYSIN puede tener DUMMY.

PO Particionado.

Page 124: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 124/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 124 de 374

2.10.6 IEBUPDATE 

Esta utilidad se usa para crear o modificar ficheros, ya seansecuenciales o miembros de un particionado, pero siempre tomando comoreferencia registros lógicos de 80 posiciones (imagen ficha).

Las posibles operaciones que se pueden realizar con esta utilidad son:

- Añadir un nuevo miembro a un fichero particionado.- Sustituir un miembro- Añadir un registro a un fichero secuencial o particionado.- Borrar un registro lógico.- Convertir un fichero secuencial en particionado.

Las fichas de control de esta utilidad, IEBUPDTE, tienen como

particularidad, la obligatoriedad de llevar './' en las columnas 1 y 2 dela ficha, a fin de diferenciarlas de las fichas de datos que pudieran iren la misma cadena.

Por otra parte, la sentencia EXEC puede ir acompañada de los siguientesparámetros:

PARM=NEW o MOD

en función de que se vaya a crear o modificar una librería.Por defecto asume MOD

Las DDnames utilizadas por esta utilidad son las siguientes:

//SYSPRINT Fichero de salida de mensajes de la utilidad

//SYSUT1 Esta DDName se usa para especificar el fichero deentrada cuando sea necesario.Por ejemplo, para crear una librería no seespecifica pues no hay entrada.

//SYSUT2 Esta ficha no es necesaria cuando se modificanficheros.

//SYSIN Sentencia DD para entrada de sentencias de controlde utilidades.

Page 125: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 125/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 125 de 374

Las fichas de control en este programa son las siguientes:

./ ADD Esta sentencia hace que se añada un miembro al fichero PDSespecificado en SYSUT1. Concretamente el especificado con elparámetro NAME en esta ficha.

Los datos para crear ese nuevo miembro pueden venir acontinuación de esta ficha, en la propia cadena.

./ ADD NAME=miembro,LIST=ALL

./ REPL Esta sentencia reemplaza el miembro especificado con elparámetro NAME de la librería de SYSUT1, con los datos quevienen a continuación en la cadena.

También puede llevar el parámetro LIST=ALL

./ REPL NAME=miembro,LIST=ALL

./ NUMBER Esta sentencia se usa para numerar, y en caso de usarse debeseguir a la ficha ADD o REPL.Admite los parámetros:NEW1=nnnnINCR=incremento

./ REPRO Esta sentencia copia el miembro o el secuencial especificadodesde SYSUT1

Puede llevar el parámetro LIST=ALL

./ REPRO NAME=miembro,LIST=ALL

La siguiente sentencia copia el fichero secuencialespecificado en SYSUT1 como miembro de la libreríaespecificada en SYSUT2, con el nombre especificado en la ficha

./ REPRO NEW=PO,MEMBER=miembro,LIST=ALL

La próxima sentencia es la inversa a la anterior, pues copiael miembro de la librería especificada en SYSUT1, como unfichero secuencial con el nombre especificado en la fichaSYSUT2.

./ REPRO NEW=PS,NAME=miembro,LIST=ALL

Page 126: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 126/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 126 de 374

./ CHANGE Esta sentencia precede a una sentencia DELETE o NUMBER o a

fichas de datos que updatan un fichero. Para ficherossecuenciales se puede omitir el parámetro NAME.

./ CHANGE NAME=miembro,LIST=ALL

Cuando se especifica la opción COLUMN=dd se esta indicando quelas columnas dd a 80 de los registros de datos que siguen aesta sentencia reemplazaran a las mismas columnas de aquellosregistros del fichero cuya secuencia coincida con la secuenciadel registro de datos.

./ CHANGE NAME=miembro,LIST=ALL,COLUMN=dd

Cuando se especifica la opción UPDATE=INPLACE se esta

indicando que los registros de datos que siguen a estasentencia reemplazaran a aquellos registros del fichero cuyasecuencia coincida con la secuencia del registro de datos.

./ CHANGE NAME=miembro,LIST=ALL,UPDATE=INPLACE

./ DELETE Esta sentencia va precedida por una ficha CHANGE, y borratodos los registros comprendidos entre sec1 y sec2

./ DELETE SEQ=sec1,SEQ=sec2

./ NUMBER Puede haber mas de una ficha NUMBEREl conjunto debe ir precedido por una ficha CHANGELo que hace esta ficha es renumerar un miembro o una parte delmismo. utilizando para ello los valores que se especifican enNEW1 e INCRemento.

./ NUMBER SEQ1=ALL,NEW1=val_ini,INCR=incremento

./ ENDUP Esta sentencia marca el final de todas las sentencias decontrol.

./ ENDUP

Las fichas ADD, REPL, CHANGE y REPRO pueden contener, además lassiguientes opciones:

LIST=ALL Esta opción hace que también se copie sobre SYSPRINT elmiembro.

SEQFLD=ccl Esta opción especifica que las columnas CC y la longitud Ldonde ira la secuencia de numeración. El valor de CC no puedeexceder de 80 y la longitud de 8, asumiéndose por defecto elvalor 738.

Page 127: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 127/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 127 de 374

LEVEL=hh Esta opción especifica el nivel de modificación. HH es un

valor hexadecimal, y el valor que representa es guardado en eldirectorio del miembro de salida, para ser usado en elmantenimiento de los sectores de los niveles modificados.

El siguiente ejemplo muestra un paso de un JCL que ejecuta esta utilidad.

//************************************************************//PASO1 EXEC PGM=IEBUPDTE,PARM=NEW//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA//SYSUT1 DD DSN=DESJMP.JMP.ESKELETX,DISP=SHR//* ----------- FICHERO DE SALIDA//SYSUT2 DD DSN=DESJMP.JMP.ESKELETF,DISP=(NEW,CATLG,),

// SPACE=(TRK,(10,5,10),RLSE),UNIT=SYSDA,// DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440)//SYSIN DD *./ ADD NAME=INTUTIPS,LIST=ALL

*************************************************************** IMPRIME LIBRERIA SOBRE UN SECUENCIAL************************************************************

./ ENDUP/*

Page 128: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 128/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 128 de 374

2.10.7 IEHINITT 

Este programa de utilidad del sistema se utiliza para inicializar cintasy cartuchos formateandolos para que puedan contener ficheros einformación de control.

La información y el formato de inicialización que se logra con esteprograma es el siguiente:

- Etiqueta de volumen de cinta: Contiene el número de serie delvolumen de cinta.

- 80 bytes de etiqueta de cabecera: Son rellenados y conforman laetiqueta de tipo HDR1 que serárellenada al hacer uso de la

cinta.

- Una marca de cinta física.

Cuando una cinta inicializada es usada para contener datos, las sucesivasetiquetas de ésta quedan como sigue:

- La etiqueta de volumen de cinta queda inalterada.

- El registro HDR1 creado por IEHINITT es rellenado con información defechas de creación del fichero que va a rellenar la cinta e informacióndel sistema.

- Se crea un registro HDR2 conteniendo características físicas (DCB) delfichero creado.

- Se crea una marca de cinta a continuación.

- Los datos son escritos a continuación.

Las DDnames utilizadas por la utilidad IEHINITT son:

//SYSPRINT Fichero para la salida de mensajes del programaIEHINITT.

//etiqueta Esta DD define la unidad de cinta que va a serusada en la operación de inicialización. Se pueden

referenciar en un mismo paso varias unidades decinta.

Debe ajustarse al siguiente formato:

//etiqueta DD DCB=DEN=n,UNIT=(TAPE,n,DEFER)

Page 129: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 129/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 129 de 374

donde

DCB=DEN=n Este parámetro es obligatorio, ya que Nespecifica la densidad de grabacióncorrecta.Esta densidad se encuentra codificadade acuerdo con la siguiente tabla:

2 Densidad de grabación 800BPI3 Densidad de grabación 1600BPI4 Densidad de grabación 6200BPI.Por defecto se asume DCB=DEN=4

UNIT=(TAPE,n,DEFER)

Indica que se insertan n dispositivosde unidad de cinta para las operacionesde inicialización.El valor por defecto es 1.

El valor DEFER obliga a la sentencia ano asignar el dispositivo hasta que elprograma IEHINITT pida el montajefísico de la cinta.

//SYSIN DD Indica la entrada de las sentencias de control para elIEHINIT.

Esta utilidad, IEHINIT, solo tiene una sentencia de control, la cual seajusta al siguiente formato:

DDname INITT SER=nun_serie,NUMBTAPE=n

donde

DDname el nombre de la etiqueta dado a la ficha DD que describela unidad y la densidad.

INITT Palabra clave para la sentencia de control.

SER Este parámetro especifica el numero de serie con el quese quiere inicializar la/s cinta/s.

NUMBPTAPE Este parámetro especifica el numero de cintas que quieranser inicializadas.El valor por defecto de este parámetro es 1.

Page 130: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 130/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 130 de 374

Si el NUMBTAPE es mayor que 1, el sistema irá asignando

números de serie a las sucesivas cintas que se vayaninicializando incrementando de uno en uno a partir del nºde serie que se haya especificado en el parámetro SER.

Ejemplos:

El primer paso del siguiente JOB muestra cómo se inicializa una cintaasignandola el numero de serie, (que se grabarán en la etiqueta devolumen), 2500, y con una densidad de grabación de 1600 BPI.

//USER5000 JOB CLASS=X,MSGCLASS=X,MSGLEVEL=(1,1)//PASO1 EXEC PGM=IEHINITT//SYSPRINT DD SYSOUT=*//CINTA2 DD DCB=DEN=3,UNIT=(TAPE,,DEFER)

//SYSIN DD *CINTA2 INITTSER=002500

/*

Este 2º paso, inicializa cuatro cintas con números de serie consecutivos,empezando por el 3000 y usando para esta operación dos dispositivos deunidad de cinta. Las cintas tienen una densidad de grabación de 67200BPI.

//PASO EXEC PGM=IEHINITT//SYSPRINT DD SYSOUT=*//CINTA3 DD DCB=DEN=4,UNIT=(TAPE,2,DEFER)//SYSIN DD *CINTA3 INITTSER=003000,NUMBTAPE=4

/*

Page 131: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 131/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 131 de 374

2.10.8 IEHLIST 

Este programa de utilidad se usa para:

- Listar la VTOC de un volumen- Listar el directorio de un fichero particionado

La informacion que proporciona esta utilidad respecto a directorios deficheros particionados es la siguiente:

- Nombre miembro.- Punto de entrada.- Dirección relativa de comienzo del miembro.- Indicadores del sistema.- Bloques de directorio libres.

Mientras que la informacion que proporciona respecto a la VTOC (VolumeTable Of Contents) la obtiene de las DSCB de la VTOC, siendo lasiguiente:

- Información de espacio disponible en el volumen en pistas y cilindros(DSCB 0).

- Longitud de registro y tamaño del bloque (ficheros).- Alocaciones primarias y secundarias.- Formatos de registros.- Nombre del fichero.- Fechas de creación y expiración.- Organización del fichero.- Extensiones.

Las DDnames utilizadas por esta utilidad son las siguientes:

//SYSPRINT Fichero de salida de mensajes de la utilidad

//DDn Sentencia DD para descripción del volumenreferenciado en la ficha de control de la utilidad.Habrá tantas DDn como volúmenes se referencien.El hecho de codificar esta DD por cada volumen aprocesar, es para que el sistema reserve ese volumenmientras se ejecuta el paso, pues le asigna altrabajo.

//SYSIN Sentencia DD para entrada de sentencias de controlde utilidades.

Page 132: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 132/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 132 de 374

Las fichas de control en este programa son las siguientes:

LISTPDS Esta sentencia hace que se liste el directorio de un ficheroparticionado.

Los parámetros que acompañan a esta ficha se ajustan alsiguiente formato:

DSNAME=dsn,VOL=tipo_disp=num_serie,formato

LISTVTOC Esta sentencia hace que se liste la VTOC del volumen que seespecifique, pudiendo listarse o bien entera o bien parcial,dependiendo que de que se especifique el parámetro DSNAME ono.

Los parámetros que acompañan a esta ficha se ajustan alsiguiente formato:

VOL=tipo_disp=num_serie,formato,DSN=(dsn1[,dsn2[,...])

donde

VOL= Este parámetro describe la unidad y el numero de serie delvolumen que se quiere tratar, pues:

tipo_disp especifica el tipo de dispositivo en el que se hamontado el volumen

num_serie especifica el numero de serie del volumen.Este numero de serie es el que sirve pararelacionar la DDname con esta ficha de control.

formato especifica como se desea el listado:FORMAT : formateadoDUMP : en hexadecimal.

El siguiente ejemplo muestra estos extremos

//*****************************************************//LVTOC EXEC PGM=IEHLIST,PARM='LINECNT=56'//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//DD1 DD DISP=SHR,UNIT=3390,VOL=SER=DES100//SYSIN DD *LISTVTOC VOL=3390=DES100,DSN=DESJMP.JMP.ESKELETOLISTPDS VOL=3390=DES100,DSN=DESJMP.JMP.ESKELETO

/*

Al final del tema puede verse listada la ejecución de esta utilidad.

Page 133: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 133/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 133 de 374

2.10.9 IEHPROGM  

Esta utilidad permite realizar las siguientes operaciones:

- Borrar, catalogar, descatalogar y renombrar un fichero- Borrar y renombrar un miembro de un fichero particionado.

Las DDnames utilizadas por esta utilidad son las siguientes:

//SYSPRINT Fichero de salida de mensajes de la utilidad

//DDn Sentencia DD para descripción del volumenreferenciado en la ficha de control de la utilidad.Habrá tantas Ddn como volúmenes se referencien.El hecho de codificar esta DD por cada volumen a

procesar, es para que el sistema reserve ese volumenmientras se ejecuta el paso, pues le asigna altrabajo.

//SYSIN Sentencia DD para entrada de sentencias de controlde utilidades.

Las fichas de control en este programa son las siguientes:

CATLG Esta sentencia sirve para catalogar en el volumen que seindica, el DSNname especificado como parámetro en esta ficha.

El formato de esta ficha se ajusta al siguiente:

DSN=nombre_fichero,VOL=tipo_disp=etiqueta

UNCATLG Esta sentencia borra del catalogo, el DSname especificado,pero no borra el fichero, por lo que se mantiene en elvolumen, direccionado desde la VTOC.

SCRATCH Esta sentencia borra el fichero cuyo Dsname se especifica.Requiere especificar la etiqueta del volumen donde seencuentra el fichero.

En el caso de querer borrar solo un miembro del ficheroparticionado especificado con el parámetro DSN, hay queespecificar el parámetro MEMBER=nombre_miembro.

Esta sentencia puede ir acompañada del parámetro PURGE, elcual especifica que se borren el fichero aunque no hayaexpirado.

RENAME Este parámetro permite renombrar un fichero, dando el nombreque acompaña al parámetro NEW al fichero cuyo DSN seespecifica también en esta ficha.

En el caso de querer renombrar un miembro habría queespecificar su nombre con el parámetro MEMBER, y entonces elque acompaña al parámetro NEW seria el nuevo nombre delmiembro especificado.

Page 134: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 134/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 134 de 374

Page 135: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 135/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 135 de 374

Los siguientes ejemplos muestran el uso de todos estos parámetros.

//*****************************************************//IEHPROGM EXEC PGM=IEHPROGM//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//DD1 DD DISP=SHR,UNIT=3390,VOL=SER=DES100//SYSIN DD *CATLG DSN=DESJMP.JMP.PRUIEH01,VOL=3390=DES100CATLG DSN=DESJMP.JMP.PRUIEH02,VOL=TAPE=(002365,1,153,1)UNCATLG DSN=DESJMP.JMP.ESKELETOSCRATCH DSN=DESJMP.JMP.ESKELETO,VOL=3390=DES100,PURGESCRATCH DSN=DESJMP.JMP.ESKELETO,VOL=3390=DES100,MEMBER=PPPPPSCRATCH DSN=DESJMP.JMP.ESKELETO,VOL=3390=DES100RENAME DSN=DESJMP.JMP.ESKELETO,VOL=3390=DES100,

NEWNAME=DESJMP.JMP.EJEMPLO2RENAME DSN=DESJMP.JMP.ESKELETO,VOL=3390=DES100,

NEWNAME=EJEMPLO3,MEMBER=PRUEBA/*

Page 136: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 136/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 136 de 374

2.11 Programas especiales 

2.11.1 IEKFJ01 

Este programa no es uno de los programas mas importantes del sistema, yaque es el propio TSO ejecutado en BATCH.

Este programa es invocado cada vez que se desee ejecutar un comando deTSO, constituyendo estos comandos las fichas de control de este programa.Dichas fichas deben especificarse asociadas a la DDName SYSTSIN.

La Ddname SYSTSPRT especifica dónde se desea recoger los mensajesdevueltos por la ejecución del TSO.

En el siguiente ejemplo lo que se hace es invocar al programa EDIT para

generar una serie de cambios en el fichero que se especifica comoparámetro.

//XXXXXXLM JOB (123,456),'JMP-PRU-4',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1)//*====================================================================//* TSO EN BATCH//*====================================================================//*//EDITAR EXEC PGM=IKJEFT01//*//SYSTSPRT DD SYSOUT=*//SYSTSIN DD *EDIT 'DESJMP.TMP' OLD CNTL NONUMC * 999 'CCCCCCC' 'PRUEBA'SAVE 'DESJMP.TMP1'

/*

Page 137: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 137/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 137 de 374

2.11.2 SORT 

Este programa es usado para copiar los registros de un fichero de entradaen otro de salida, cambiando la secuencia en la que se encuentran estos.

Las Ddnames necesarias para la ejecución de este programa son:

SORTIN Esta Ddname especifica el fichero a clasificar

SORTOUT Esta Ddname especifica el fichero de salida

SYSIN Esta Ddname especifica las fichas de control para realizar laclasificación.

Las sentencias de control de este programa deben comenzar en la columna 2

o posterior, y son las siguientes:

SORT Esta sentencia establece los parámetros para la clasificacióndel fichero.

MERGE Esta sentencia es idéntica a la sentencia SORT, con lasalvedad de que en este caso se mezclan registros de hasta 16ficheros en lugar de los registros de un unico fichero.

RECORD Esta sentencia establece el formato del registro de salida enel caso de que se desee editar, es decir que no coincida conel de entrada.

ALTSEQ Esta sentencia permite cambiar el valor, a efectos declasificación de determinados caracteres.

INCLUDE Esta sentencia especifica los campos que permiten seleccionarlos registros del fichero de entrada en un sort

OMIT Esta sentencia especifica los campos que permiten excluirregistros del fichero de entrada en un sort

INREC Esta sentencia reformatea el registro de entrada antes deejecutar el sort, de modo que solo se ejecute la clasificacióncon aquellos campos que interesan.

OUTREC Esta sentencia reformatea el registro de salida después de

ejecutar el sortSUM Esta sentencia especifica al programa que escriba en el

fichero de salida un registro totalizando los n registros deigual clave del fichero de entrada.

Para poder llevar a buen fin su trabajo, este programa necesita alocaruna serie de recursos, definidos con las Ddnames SORTWKnn tal y como semuestra en el siguiente ejemplo suficientemente autocomentado:

Page 138: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 138/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 138 de 374

//********************************************************************

//PSORT PROC// EXEC PGM=SORT,PARM='ABEND'//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(10,50))//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(10,50))//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(10,50))//SYSPRINT DD SYSOUT=*//SYSOUT DD SYSOUT=*//SYSUDUMP DD DUMMY//SORTIN DD DUMMY//SORTOUT DD DUMMY//SYSIN DD *// PEND//********************************************************************//* ELIMINAR LOS REGISTROS TIPO 01 DUPLICADOS **

//*-----------------------------------------------------------------**//PASO01 EXEC PSORT//SORTIN DD DSN=DESJMP.TRABAJO1.WORK01,DISP=SHR//SORTOUT DD DSN=DESJMP.TRABAJO1.WORK01S,DISP=(NEW,CATLG,),// UNIT=(SYSDA,3),// DATACLAS=DFBXP,LRECL=050,SPACE=(CYL,(4,1),RLSE)//SYSIN DD *

SORT FORMAT=CH,FIELDS=(16,19,A)SUM FIELDS=NONE

/*//********************************************************************//* ELIMINAR LOS REGISTROS TIPO 11 DUPLICADOS *//*-----------------------------------------------------------------**//PASO02 EXEC PSORT//SORTIN DD DSN=DESJMP.TRABAJO1.WORK11,DISP=SHR//SORTOUT DD DSN=DESJMP.TRABAJO1.WORK11S,DISP=(NEW,CATLG,),// UNIT=(SYSDA,3),// DATACLAS=DFBXP,LRECL=050,SPACE=(CYL,(4,1),RLSE)//SYSIN DD *

SORT FORMAT=CH,FIELDS=(16,19,A)SUM FIELDS=NONE

/*//********************************************************************//* FUSIONAR LOS REGISTROS 01 Y 11 EN UN UNICO FICHERO **//* EN LOS CASOS EN QUE HAYA 01 Y 11 DEJAR UNO SOLO CON LA SUMA: 1B **//*-----------------------------------------------------------------**//PASO03 EXEC PSORT//SORTIN DD DSN=DESJMP.TRABAJO1.WORK01S,DISP=(OLD,DELETE,)// DD DSN=DESJMP.TRABAJO1.WORK11S,DISP=(OLD,DELETE,)//SORTOUT DD DSN=DESJMP.TRABAJO1.WORK99,DISP=(NEW,CATLG,),// UNIT=(SYSDA,3),// DATACLAS=DFBXP,LRECL=050,SPACE=(CYL,(4,1),RLSE)//SYSIN DD *

SORT FORMAT=CH,FIELDS=(16,19,A)SUM FIELDS=(14,2,ZD)

/*//********************************************************************//* ELIMINAR DEL FICHERO RESULTANTE LOS REGISTROS SUMA 1B Y 01 **//*-----------------------------------------------------------------**//PASO04 EXEC PSORT//SORTIN DD DSN=DESJMP.TRABAJO1.WORK99,DISP=(OLD,DELETE,DELETE)

Page 139: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 139/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 139 de 374

//SORTOUT DD DSN=DESJMP.TRABAJO1.WORK99S,DISP=(NEW,CATLG,),

// UNIT=(SYSDA,3),// DATACLAS=DFBXP,LRECL=050,SPACE=(CYL,(4,1),RLSE)//SYSIN DD *

SORT FORMAT=CH,FIELDS=(01,08,A)OMIT COND=(14,2,CH,EQ,C'1B',OR,14,2,CH,EQ,C'01')

/*

Page 140: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 140/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 140 de 374

SORT 

Esta sentencia establece los parámetros para la clasificación delfichero.

El formato de esta sentencia es :

SORT FIELDS=(clave1[,clave2[,...[,claven]]]),[FILSZ=En],[FORMAT=formato],[SKIPREC=n][CKPT][EQUALS][NOEQUALS]

donde:

clave determina cada una de las claves de clasificación.Esta formada por un cuarteto con la siguienteinformacion:

Pos_ini,longitud,formato,orden

siendo

Pos_ini : la posición inicialLongitud : El numero de bytes que configuran la claveFormato : El formato de la clasificaciónOrden : Tipo de ordenación Ascendente/Descendente

El formato de la clasificación puede ser uno de los siguientes:

cod x Descripción

CH Carácter EBCDICZD s Zoned DecimalPD s Packed DecimalFI s Fixed PointBI BinaryFL s Floating PointCSL s Numeric Character, Leading separate signCST s Numeric Character, trailing separate sign

CLO s Numeric Character, Leading overpunch signCTO s Numeric character, trailing overpunch signAC ASCII characterASL s ASCII numeric character, leading separate signAST s ASCII numeric character trailing separate signAQ EBCDIC character alternative collating sequence set

byinstallation

Donde

Cod: representa el código a incluir en el cuartetoX : Especifica si admite el signo

Page 141: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 141/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 141 de 374

Ejemplo:

SORT FIELD=(3,25,CH,A,50,5,CH,D),FILSZ=E1000

Este ejemplo estima clasificar 1000 registros, de acuerdo con dos lasdos claves de clasificación dadas con las cuartetas siguientes:

3,25,ZD,A lo cual quiere decir que la primera clave se correspondecon los 25 bytes que se encuentran en las posiciones 3 ysiguientes del fichero de entrada. El formato a seguir seráel código EBCDIC y en Ascendente.

50,5,CH,D En el caso de que existan claves primarias repetidas, los

registros seguirán esta segunda clave, la cual especificaque tiene una longitud de 5 posiciones, concretamente lasque se encuentran en las posiciones 50 a 54, se seguirá elcódigo EDCDIC, y el orden será descendente.

Page 142: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 142/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 142 de 374

El resto de parámetros de esta ficha de control son optativos, y son

los siguientes:

FILSZ Establece una estimación del numero de registros aclasificar, lo cual hace mas eficiente el SORT.

FORMAT En el caso de que todas las claves sean del mismo formato,se puede extraer el tercer campo del cuartetoespecificandole con este parámetro, y dejando los cuartetoscon tres campos, tal y como se muestra en el siguienteejemplo que es el mismo que el anterior:

SORT FORMAT=CH,FIELD=(3,25,A,50,5,D),FILSZ=E1000

SKIPREC Con este parámetro se le dice al programa que no clasifique

los n primeros registros del fichero

EQUALS Con este parámetro se especifica que en el caso de queexistan varios registros con idéntica clave, se mantenga elorden de los registros del fichero de entrada.

NOEQUALS Con este parámetro se especifica que en el caso de queexistan varios registros con idéntica clave, no esnecesario mantener el orden de los registros del fichero deentrada.

Page 143: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 143/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 143 de 374

 MERGE 

Esta sentencia es idéntica a la sentencia SORT, con la salvedad de queen este caso se mezclan registros de hasta 16 ficheros en lugar de losregistros de un unico fichero.

Como particularidad de esta sentencia, las DDnames que especifican losficheros de entrada tienen por nombre :SORTINnn donde nn puede tomar los valores 01 a 16 debiendoespecificarse además en secuencia.

Podría usarse incluso la sentencia SORT, simplemente habría queconcatenar los distintos ficheros de entrada a la DDname SORTIN, peroel resultado no seria tan eficiente como con el uso de esta sentencia.

Aparte de esto, la sentencia MERGE se diferencia de la sentencia SORTen:

- FILSZ no es necesaria para estimar los registros deentrada- SKIPREC y EQUALS si se codifican son ignorados.

En cambio, esta sentencia tiene las siguientes reglas especiales:

- el parámetro RECFM de todos los ficheros asociados a lasDDname SORTINnn deben ser iguales.

- el parámetro LRECL para los registros de longitud fijadeben ser iguales.

- El parámetro BLKSIZE no tiene por qué coincidir en todoslos ficheros de entrada, pero en este caso, el fichero conel tamaño de bloque mayor deberá ser el asociado a laSORTIN01.

Page 144: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 144/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 144 de 374

RECORD

Esta sentencia establece el formato del registro de salida en el casode que se desee editar, es decir que no coincida con el de entrada.

El formato de los parámetros de esta ficha de control es:

RECORD LENGTH=(n1,n2,n3,n4,n5),TYPE=tipo

donde:

tipo puede tomar los valores siguientes:F : para registros de longitud fijaV : Para registros de longitud variable en EBCDICD : Para registros de longitud varaible en ASCII

n1 Establece la longitud del registro de entrada

n2 Establece la longitud del registro de salida

n4 Especifica la longitud de registro mínima

n5 Especifica la longitud modal, es decir para registros delongitud variable, es la longitud de registro mas normal.Este dato aumenta la eficiencia del sort.

ALTSEQ

Esta sentencia permite cambiar el valor, a efectos de clasificación dedeterminados caracteres.

El formato de esta sentencia es:

ALTSEQ CODE=hhiiALTSEQ CODE=(hhii,jjkk,..)

donde- HH representa el valor hexadecimal en EBCDIC del valor a cambiar- II representa el valor hexadecimal en EBCDIC del valor dado a HH

Ejemplo :

SORT FIELD=(3,25,CH,A,50,5,CH,D),FILSZ=E1000

ALTSEQ CODE=4161

Cambia la "A" mayúscula por la "a" minúscula.

Page 145: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 145/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 145 de 374

INCLUDE / OMIT

Esta sentencia especifica los campos que permiten seleccionar losregistros del fichero de entrada en un sort

El formato de esta sentencia es:

INCLUDE COND=(campo1,operador,campo2)

donde:

campo1 Especifica un campo del registro de entrada, el cual quedadefinido mediante el trió siguiente:

pos_ini,longitud,formato

operador Establece el operador mediante el que se compararan los doscampos.EQ equalNE not equalGT Greater thanGE greater than or equalLT less thanLE less than or equal

campo2 Puede ser un campo o una constante.En el caso de ser una constante hexadecimal se especificaentre comillas y precedida por la letra XEn el caso de ser una constante alfanumérica se especificaentre comillas y precedida por la letra C.

INCLUDE COND=(10,6,CH EQ, C'PRUEBA')INCLUDE COND=(10,1,BI NE, X'00110100')INCLUDE COND=(10,6,CH GT, 20,6,CH)

Las reglas aplicables a esta sentencia son

- Se permite el uso de tantos AND y OR como sean necesarios.- Solo se permite el uso de los formatos BI CH PD ZD O FI- Los campos a comparar deben encontrarse en los primeros 4092 bytesdel registro.

- Se permite la agrupación de condiciones con la siguiente secuenciade paréntesis: COND=(..(..(..))) pero no con las secuencias de lostipos siguientes: COND=(..(..)..(..)), o COND=(((...)))

- A falta de paréntesis, las condiciones AND son evaluadas antes quelas condiciones OR

- La longitud máxima de un campo es de 256 bytes.- Los campos con formato carácter son rellenados a blancos.- Los campos con formato numérico son rellenados a ceros.

Page 146: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 146/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 146 de 374

INREC / OUTREC

La sentencias INREC reformatea los registro de entrada antes deejecutar el sort, de modo que solo se ejecute la clasificación conaquellos campos que interesan. Mientras que la sentencia OUTRECformatea el registro de salida después de ejecutar el sort

La sentencia INREC reformatea los registros después de serseleccionados por INCLUDE u OMIT.

El formato de las sentencias SORT, MERGE, OUTREC o SUM esta referido,en el caso de contar con una sentencia INREC al resultado delreformateado.

El formato de esta sentencia es :

INREC FIELDS=(nX,pos_ini,longitud,alineación,...)

donde:

nX es opcional y representa n blancos

Pos_ini especifica la posición inical del registro de entrada

Longitud especifica el numero de octetos del campo.

Alineación es opcional y especifica el tipo de alineación, pudiendoser:H : Media palabraF : Palabra completaD : Doble palabraPor omisión se asume que no se desea alineación.

Ejemplo: Supuesto que el registro de entrada contiene:

1234567890ABCDEFGHIJ

Si se especifican las siguientes fichas de control:

INREC FIELDS=(5,6)OUTREC FIELDS=(5X,11,5,1,4,5X,5,6)

El registro de salida contendrá:

ABCDE1234_____567890

Las reglas aplicables a esta sentencia son

- El parámetro LRECL de la DDname SORTOUT tienen que especificarse sise cambia la longitud del registro.

- Si se realiza MERGE o una copia, se tiene que incluir una ficha decontrol RECORD

- Para registros de longitud variable, se anteponen al registro desalida 4 bytes especificando la longitud del registro.

- Para copiar en registros de longitud variable, la informacion quehay desde un byte determinado hasta el final, basta con especificar

Page 147: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 147/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 147 de 374

la posición de comienzo, sin especificar longitud.

SUM

Esta sentencia hace que se escriba en el fichero de salida un unicoregistro que totalice los n registros de igual clave del fichero deentrada. Los registros son sumados después de la clasificación.

El formato de esta sentencia es:

(1) SUM FIELDS=(campo1[,campo2[,...]])(2) SUM FIELDS=NONE

donde:campo=pos_ini,longitud,formatoformato = BI,FI,PD,ZD o FL

El formato (2) se usa cuando no se desea totalizar nada, simplementese desea eliminar registros repetidos.

Las reglas aplicables a esta sentencia son

- No se pueden totalizar campos clave- No se pueden totalizar campos que se superponen.- Si se produce overflow, se trunca el resultado y no se produce error- Los campos a sumar deben encontrarse en los primeros 4096 bytes delregistro.

Page 148: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 148/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 148 de 374

2.11.3 IDCAMS 

Este programa es invocado para el tratamiento de los ficheros de accesodirecto, VSAM e ISAM.

Puede usarse este programa para:- Mantener catálogos- Definir ficheros generacionales o GDGs- Copiar ficheros- Listar ficheros- Borrar ficheros

No siendo objetivo de este libro el estudio de estos tipos de ficheros,se pasa directamente a describir los comandos mas elementales de esteprograma:

Las DDnames que requiere este programa son :

//SYSPRINT Fichero de salida de mensajes del programa

//DDn DDnames para describir los ficheros de entrada y desalida.

//SYSIN DDname asociada al fichero que contiene lassentencias de control.

Las sentencias de control se codifican entre las columnas 2 y 72, y en elcaso de necesitar su continuación en otra línea, se especificaescribiendo un guión.

REPRO -INFILE(ENTRADA)

Catalogo

Los ficheros VSAM no pueden ser creados desde un JCL, como cualquierotro dataset, ya que requiere una serie de especificaciones que solo sele pueden dar a través de comandos AMS.

El primer paso para la creación de un fichero VSAM es la definición deun catalogo, la cual puede hacerse mediante el siguiente paso de JCL:

Page 149: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 149/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 149 de 374

//********************************************** **

//CATALOGO EXEC PGM=IDCAMS//SYSPRINT DD SYSOUT=*//DDname1 DD UNIT=dispositivo,VOL=SER=volumen,DISP=OLD//SYSIN DD *DEFINE MASTERCATALOG -

(NAME (nombre_catalogo) -FILE(ddname1) -VOL(volumen) -

RECORDS(can_primaria can_secundaria) -MASTERPW(password) -UPDATEPW(password) -READPW(password) -

)/*

//********************************************** **

donde

DDname1 sirve para definir el volumen que contendrá el catalogo.Puede especificarse cualquier nombre de DD

RECORDS puede ser sustituido por CYLINDERS o TRAKS, pero en estecaso, las unidades especificadas como cantidades primarias ysecundarias se referiran no a numero de registros sino a launidad de medida indicada.

Después de crear el catalogo maestro,puede crearse catálogos deusuario. Estos catálogos se crean de forma similar a la del catalogomaestro, con la salvedad de que la sentencia DEFINE debe referenciaral catalogo maestro.

//********************************************** **//USERCAT EXEC PGM=IDCAMS//SYSPRINT DD SYSOUT=*//DDname1 DD UNIT=dispositivo,VOL=SER=volumen,DISP=OLD//SYSIN DD *DEFINE USERCATALOG -

(NAME (nombre_catalogo) -FILE(ddname1) -VOL(volumen) -

RECORDS(can_primaria can_secundaria) -MASTERPW(password) -UPDATEPW(password) -READPW(password) -CATALOG(nom_cat_maestro/password) -

)/*//********************************************** **donde son aplicables todas las consideraciones hechas en la anteriordefinición, incluida la de la definición de RECORDS.

Page 150: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 150/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 150 de 374

Para usar un catalogo de usuario en un JOB mediante la DDname JOBCAT

solo debe especificarse el DSN del catalogo y DISP=shr tal y como semuestra en el siguiente ejemplo.

//DESJMPJC JOB (123,456),'JMP-IDCAMS',MSGCLASS=(1,1)//JOBLIB DD DSN=DESJMP.LINKLIB,DISP=SHR//JOBCAT DD DSN=nombre_catalogo,DISP=SHR//PASO1 EXEC ...//STEPCAT DD DSN=nombre_catalogo,DISP=SHR...

Una vez creados los catálogos, debe asignarse (alocarse) el espacioque será usado por todos los ficheros VSAM del catalogo, lo cual sehace siguiendo la siguiente estructura:

//********************************************** **//ESPACIO EXEC PGM=IDCAMS//SYSPRINT DD SYSOUT=*//DDname1 DD UNIT=dispositivo,VOL=SER=volumen,DISP=OLD//SYSIN DD *DEFINE SPACE -

(VOLUME(volumen) -FILE(ddname1) -RECORDS(can_primaria can_secundaria) -RECORDSIZE(media máximo) -CATALOG(nom_cat_maestro/password) -

)/*//********************************************** **

También aquí es aplicables la consideración realizada en la primeradefinición sobre el parámetro de palabra clave RECORDS.

Page 151: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 151/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 151 de 374

Por ultimo, una vez reservado el espacio, debe reservarse el espacio aasignar a un fichero concreto. Esto es lo que realiza la siguienteestructura:

//********************************************** **//FICHERO EXEC PGM=IDCAMS//SYSPRINT DD SYSOUT=*//SYSIN DD *DEFINE CLUSTER -

(NAME(nombre_fichero) -VOLUME(volumen) -INDEXED -RECORDS(can_primaria can_secundaria) -RECORDSIZE(media máximo) -

FREESPACE(intervalo total) -KEYS(longitud posición) -UPDATEPW(password) -READPW(password) -ATTTEMPTS(0) -

)CATALOG(nom_cat_maestro/password)

/*//********************************************** **

donde :

RECORDS Admite los mismos comentarios de todos los DEFINEsanteriores.

RECORDSIZE especifica los tamaños medios y máximo de losregistros. Para el caso de registros de longitud fija,estos valores deben coincidir.

FREESPACE Este parámetro especifica el porcentaje que se debedejar como espacio libre en el intervalo de control(interval) y el porcentaje que se debe dejar comoespacio libre del fichero (total)

ATTEEMPTS(0) Solo debe codificarse en el caso de que se codifiquelos parámetros UPDATEPW O READPW

Para listar las entradas de un catalogo puede usarse el comando de

TSO: LISTCAT CATALOG(nombre_catalogo/password)

Page 152: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 152/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 152 de 374

Fichero generacional (GDG) 

Para poder usar un grupo de ficheros GDG o generacionales antes debedefinirse este mediante una estructura similar a la siguiente:

//********************************************** **//gdg EXEC PGM=IDCAMS//SYSPRINT DD SYSOUT=*//SYSIN DD *DEFINE GDG -

(NAME (nombre_fichero) -LIMIT(numero) -[EMPTY] -[SCRATCH] -

) -CATALOG(nombre_catalogo/password)

/*//********************************************** **

donde:

NAME este parámetro de palabra clave sirve para especificar elnombre del fichero genérico

LIMIT Establece el numero de versiones a mantener. Debe estarcomprendido en el rango 1-255

EMPTY Este parámetro es opcional, y en el caso de codificarsedescataloga todos los ficheros cuando se supera el limite.

NOEMPTY Este parámetro es el que se asume en el caso de nocodificarse EMPTY; y especifica que en el caso de superarseel limite, descatalogue la versión mas vieja.

SCRATCH Este parámetro es opcional, y lo que especifica es que enel caso de que se codifique, el fichero al descatalogarseque se borre.

NOSCRATCH Este parámetro es el que se asume en el caso de nocodificarse SCRATCH, y lo que significa es que cuando unaversión se descatalogue, que se mantenga, es decir que no

se borre.

Page 153: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 153/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 153 de 374

Copiar ficheros 

También puede usarse el programa IDCAMS para realizar las siguientesacciones de copia de ficheros:

- Copiar fichero secuencial no-VSAM sobre fichero VSAM- Copiar VSAM sobre VSAM- Copiar VSAM sobre secuencial no-VSAM- Copiar fichero ISAM o secuencial no-VSAM sobre fichero VSAM

La ficha de control que se debe incluir en SYSIN para ejecutar estacopia es:

REPRO Este comando es el que especifica que se va a realizar una

acción de copiado. Los parámetros que admite son:

INFILE(ddname_fichero_fuente)OUTFILE(ddname_fichero_destino)

Otros parámetros opcionales son:

COUNT(n1) especifica que se copien los n primerosregistros.

SKIP(n2) especifica que no se copien los n2 primerosregistros.

//**************************************************//* REPRO (CARGA DESDE SECUENCIAL)//* - - - - - - - - - - - - - - - - - - - - -//PASO1 EXEC PGM=IDCAMS//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVOL1 DD DSN=DESJMP.PRUEBA,DISP=SHR//OUTVOL1 DD SYSOUT=X//SYSIN DD *REPRO INFILE(INVOL1) OUTFILE(OUTVOL1) COUNT(50)

/*//**************************************************

Page 154: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 154/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 154 de 374

Listar ficheros 

Otro uso del programa IDCAMS es para imprimir ficheros. En este caso laestructura del paso a incluir en el JOB se ajusta a la siguiente:

//********************************************** **//LISTAR EXEC PGM=IDCAMS//SYSPRINT DD SYSOUT=A,DEST=RMT55//entrada DD DSN=...//SYSIN DD *INFILE(entrada) formato

/*//********************************************** **

donde:

entrada referencia el fichero a listar

formato especifica el formato en el que deseamos realizar laimpresión del fichero. Puede tomar los siguientes valores:

CHAR en formato carácterHEX en formato hexadecimal - cada carácter 2 bytes.DUMP Cada registro se imprime con los dos formatos.

Page 155: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 155/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 155 de 374

Borrar ficheros 

Por ultimo, también puede usarse el programa IDCAMS para borrarficheros.

La ficha de control que se debe incluir en SYSIN para ejecutar esteborrado puede ser cualquiera de las siguientes:

DELETE(dsn) Esta sentencia borra el fichero cuyo DSN seespecifica como argumento.

FILE(ddname) Esta sentencia borra el fichero asociado a la DDnameespecificada.

PURGE Esta sentencia borra todas los ficheros cuya fechade expiración se haya sobrepasado.

ERASE Esta sentencia borra y sobreescribe ceros binariossobre los escritos borrados para que no se puedarecuperar.

SCRATCH Esta sentencia es obligatoria para borrar ficherosno-VSAM.

CATALOG(nom_cat) esta sentencia especifica el nombre del catalogo

//********************************************** **//BORRAR01 EXEC PGM=IDCAMS//SYSPRINT DD DUMMY//SYSIN DD *DELETE DESJMP.PRUEBA.BORRADOSET MAXCC=0

//********************************************** **

Page 156: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 156/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 156 de 374

2.11.4 PRINTDS (comando de TSO)

Este no es un programa normal, es un comando de TSO, y se usa paraimprimir un fichero secuencial o particionado.

El hecho de incluirlo en este capitulo es debido a la importancia quetiene en el entorno de desarrollo, pues como ya se ha dicho es elprograma invocado para listar con formato cualquier fichero.

Cuando el fichero a imprimir es un particionado, se puede imprimir, o losmiembros (MEMBERS) o el directorio (DIRECTORY) o ambos (ALL). Por defectose imprimen todos los miembros del PDS.

También pueden añadirse títulos al listado generado, conteniendo estetitulo el nombre del Dataset, la fecha, hora y el numero de página

impresa.

Los posibles opciones son:

DATASET Estas opciones, sinónimas, especifican el nombre físico delDA fichero a ser impreso.

TODATASET Estas opciones, sinonimas, direccionan la salida a un nuevoTODSNAME fichero. No es necesario que exista este fichero, ya que si no

existe este comando le crea.

PR DATASET('DESJMP.SALIDA') TODATASET('DESJMP.TMP')

FILE Estas opciones sinonimas se usan cuando en lugar deDDNAME especificar el nombre físico del fichero, se usa el nombre

lógico a DDname.

PR FILE(SALIDA) TODATASET('DESJMP.TMP')

COLUMNS Esta opción se usa para especificar las columnas del ficherode entrada que se desean imprimir en salida. Las columnas seespecifican dando el numero de los octetos inicial y final, yseparando cada grupo por blancos o por comas, tal y comomuestra el siguiente ejemplo.

PRINTDS DATASET('DESJMP.TMP') COLUMNS(1:71 86:126)

En salida cada grupo especificado se va adosando uno acontinuación del otro. En el ejemplo dado las columnas 86 a126 se escriben en las columnas 72 y siguientes.

LINES Esta opción permite especificar los registros del fichero queserán escritos. En este caso debe especificarse la línea decomienzo y de final, yendo ambas separadas por una coma.

Page 157: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 157/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 157 de 374

TRUNCATE Esta opción permite especificar la columna en la que se

truncara el registro de salida.

FOLD Esta opción es usada para cortar los datos en la columnaespecificada. En este caso los datos continúan escribiéndoseen sucesivas líneas.

PAGELEN Este parámetro se usa para especificar el numero de líneas queserán impresas en cada página.

LMARGIN Este parámetro se usa para especificar el margen izquierdo. Suvalor indica el numero de columnas a usar como margen.

TMARGIN Esta opción se usa para especificar el numero de líneas que sedejan como margen superior en la página impresa.

BMARGIN Esta opción se usa para especificar el numero de líneas que sedejan como margen inferior en la página impresa.

COPIES Esta opción se usa para especificar el numero de copias que sedesean obtener del fichero de entrada.

El siguiente ejemplo muestra cómo ejecutar el programa PRINTDS paraimprimir un fichero por una impresora determinada.

//*=====================================================================//* IMPRIMIR TEMPORAL CON MARGEN//*=====================================================================//IMPRIMIR EXEC PGM=IKJEFT01//*//SYSTSPRT DD SYSOUT=*//SYSTSIN DD *PRINTDS DATASET('DESJMP.TMP') DEST(RMT55) CLASS(I) +COLUMNS(1:71 86:126) LMARGIN(15)

/*

Page 158: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 158/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 158 de 374

2.12 Ejemplo 1: Listar un directorio (IEBPTDIR) 

Directorio a listar:****************************************************************************EDIT --- DESJMP.JMP.ESKELETO ---- --------------------- ROW 00001 OF 00005COMMAND ===> SCROLL ===> CSR

NAME VV.MM CREATED CHANGED SIZE INIT MOD IDINTUTIPS 01.09 95/01/11 95/05/10 17:26 19 19 0 DESJMPJMPINT53 01.13 94/09/27 95/03/28 10:24 38 19 37 DESJMPJMP16500 01.00 95/03/15 95/03/15 09:19 25 25 0 DESJMPPSSEC 01.01 95/03/16 95/03/16 18:53 19 19 0 TEST33SYSMAIN 01.02 95/01/09 95/01/09 19:45 17 17 0 DESJMP**END**

****************************************************************************

Jcl para listar directorio:****************************************************************************EDIT ---- DESJMP.JMP.JCL(IEBPTPCH) - 01.03 --------------- COLUMNS 001 072COMMAND ===> SCROLL ===> CSR****** ****************************** TOP OF DATA ************************000001 //XXXXXXIE JOB (123,DES),'JMP-PRU',CLASS=T,MSGCLASS=X,000002 // NOTIFY=XXXXXX,MSGLEVEL=(1,1),RESTART=*000003 //* - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - -000004 //* LISTAR DIRECTORIO000005 //* - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - -000006 //PASO1 EXEC PGM=IEBPTPCH000007 //STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR000008 //SYSPRINT DD SYSOUT=*000009 //* ----------- FICHERO DE ENTRADA000010 //SYSUT1 DD DSN=DESJMP.JMP.ESKELETO,000011 // DISP=SHR,DCB=(RECFM=U,BLKSIZE=256)000012 //* ----------- FICHERO DE SALIDA000013 //SYSUT2 DD SYSOUT=X,DCB=LRECL=43000014 //SYSIN DD *000015 PUNCH TYPORG=PS000016 //****** **************************** BOTTOM OF DATA ***********************

Salida de la ejecucion, y forma de pasar a modo hexadecimal:***************************************************************************SDSF OUTPUT DISPLAY DESJMPIE JOB12636 DSID 4 LINE 17 COLUMNS 02- 81COMMAND INPUT ===> SET HEX ON SCROLL ===> CSR

IEF375I JOB /DESJMPIE/ START 95145.1200IEF376I JOB /DESJMPIE/ STOP 95145.1200 CPU 0MIN 00.03SEC SRB 0MINPRINT/PUNCH DATA SET UTILITYPUNCH TYPORG=PS

EOF ON SYSINEND OF DATA FOR SDS OR MEMBER\INTUTIPS n n DESJMPJMPINT53 m n " DESJMPJMP16500 n n DESJMPPSSEC n ^ n ^ TEST33SYSMAIN n n DESJMP

****************************************************************************

Page 159: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 159/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 159 de 374

Salida en formato hexadecimal:

****************************************************************************SDSF OUTPUT DISPLAY DESJMPIE JOB12636 DSID 4 LINE SET COMMANDCOMPLETECOMMAND INPUT ===> SCROLL ===> CSR----------------------------------------------------------------------------END OF DATA FOR SDS OR MEMBER4CDC4DC4CCEC4CDD4ECE4DD4DCDCCD44444444444444444444444444444444444444444444440554066041310669024206904542590000000000000000000000000000000000000000000000----------------------------------------------------------------------------\INTUTIPS n n DESJMP0ECDEEECDE000000010901091012010100EEDCFE4444444444444444444444444444444444440095343972023F1907051F053F76030300327782000000000000000000000000000000000000----------------------------------------------------------------------------JMPINT53 m n " DESJMP

44DDDCDEFF001000030920090712020102EEDCFE4444444444444444444444444444444444440014795353019F1D03047F058F04060305327782000000000000000000000000000000000000----------------------------------------------------------------------------JMP16500 n n DESJMP

44DDDFFFFF002000010904090401010100EEDCFE4444444444444444444444444444444444440014716500006F1007057F057F99090900327782000000000000000000000000000000000000----------------------------------------------------------------------------PSSEC n ^ n ^ TEST33

44DEECC444000000040905090515010100EEDCFF4444444444444444444444444444444444440072253000011F1101057F057F83030300327733000000000000000000000000000000000000----------------------------------------------------------------------------SYSMAIN n n DESJMP

44EEEDCCD4001000050909090914010100EEDCFE4444444444444444444444444444444444440028241950004F1207050F050F95010100327782000000000000000000000000000000000000----------------------------------------------------------------------------

44FFFFFFFF00000000000000000000000000000000444444444444444444444444444444444400FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000----------------------------------------------------------------------------00004444444444444444444444444444444444444444444444444444444444444444444444440000000000000000000000000000000000000000000000000000000000000000000000000000----------------------------------------------------------------------------****************************************************************************DSLIST -- DESJMP.JMP.ESKELETO ------------------------- ROW 00001 OF 00005COMMAND ===> SCROLL ===> CSR

NAME RENAME VV.MM CHANGED SIZE INIT MOD IDINTUTIPS 01.09 95/05/10 17:26 19 19 0 DESJMPJMPINT53 01.13 95/03/28 10:24 38 19 37 DESJMPJMP16500 01.00 95/03/15 09:19 25 25 0 DESJMPPSSEC 01.01 95/03/16 18:53 19 19 0 TEST33SYSMAIN 01.02 95/01/09 19:45 17 17 0 DESJMP**END**

****************************************************************************

Page 160: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 160/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 160 de 374

2.13 Ejemplo 2: Listado de la VTOC y el directorio de un PDS IEHLIST.1

//XXXXXXIE JOB (123,DES),'JMP-PRU',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1)//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//* LISTAR VTOC DE LOS DISCOS ESPECIFICADOS EN DDXX//* HAY QUE REPETIR LA SYSIN SI SE QUIERE MAS DE UN DISCO//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//LVTOC EXEC PGM=IEHLIST,PARM='LINECNT=56'//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//DD1 DD DISP=SHR,UNIT=3390,VOL=SER=GEST00//SYSIN DD *LISTVTOC VOL=3390=GEST00,DSN=DESJMP.JMP.ESKELETOLISTPDS VOL=3390=GEST00,DSN=DESJMP.JMP.ESKELETO

/*1 J E S 2 J O B L O G -- S Y S T E M C 0 8 3 -- N017.01.13 JOB10807 IRR010I USERID DESJMP IS ASSIGNED TO THIS JOB.17.01.14 JOB10807 ICH70001I DESJMP LAST ACCESS AT 17:00:21 ON THURSDAY, MAY17.01.14 JOB10807 $HASP373 DESJMPIE STARTED - INIT 46 - CLASS T - SYS C08317.01.14 JOB10807 IEF403I DESJMPIE - STARTED - TIME=17.01.1417.01.14 JOB10807 - --TIMINGS (MINS.)-17.01.14 JOB10807 -JOBNAME STEPNAME PROCSTEP RC EXCP CPU SRB17.01.14 JOB10807 -DESJMPIE LVTOC 00 30 .00 .00 .17.01.14 JOB10807 IEF404I DESJMPIE - ENDED - TIME=17.01.1417.01.14 JOB10807 -DESJMPIE ENDED. NAME-JMP-PRU-4 TOTAL CPU TIME=17.01.14 JOB10807 $HASP395 DESJMPIE ENDED

0------ JES2 JOB STATISTICS ------- 25 MAY 2001 JOB EXECUTION DATE- 18 CARDS READ- 69 SYSOUT PRINT RECORDS- 0 SYSOUT PUNCH RECORDS- 4 SYSOUT SPOOL KBYTES- 0.01 MINUTES EXECUTION TIME

1 //DESJMPIE JOB (123,DES),'JMP-PRU',CLASS=T,MSGCLASS=X,// NOTIFY=DESJMP,MSGLEVEL=(1,1),// TIME=5/*JOBPARM TIME=30//*** JOB SUBMITIDO POR DESJMP FECHA: 95.145 HORA: 17:01:13//***//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//* LISTAR VTOC DE LOS DISCOS ESPECIFICADOS EN DDXX//* HAY QUE REPETIR LA SYSIN SI SE QUIERE MAS DE UN DISCO//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

2 //LVTOC EXEC PGM=IEHLIST,PARM='LINECNT=56'3 //STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR4 //SYSPRINT DD SYSOUT=*5 //DD1 DD DISP=SHR,UNIT=3390,VOL=SER=GEST006 //SYSIN DD *

Page 161: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 161/373

TSO para desarrolladores: JCL Autor: José M. Peco

Página 161 de 374

ICH70001I DESJMP LAST ACCESS AT 17:00:21 ON THURSDAY, MAY 25, 2001IEF236I ALLOC. FOR DESJMPIE LVTOCIEF237I 692 ALLOCATED TO STEPLIBIEF237I JES2 ALLOCATED TO SYSPRINTIGD103I SMS ALLOCATED TO DDNAME DD1IEF237I JES2 ALLOCATED TO SYSINIGD103I SMS ALLOCATED TO DDNAME SYS00001IGD104I DESJMP.JMP.ESKELETO RETAINED, DDNAME=SYS00001IEF142I DESJMPIE LVTOC - STEP WAS EXECUTED - COND CODE 0000IEF285I SYS1.LINKLIB KEPTIEF285I VOL SER NOS= MVSR9Y.IEF285I DESJMP.DESJMPIE.JOB10807.D0000102.? SYSOUTIGD104I SYS95145.T170114.RA000.DESJMPIE.R0216853 RETAINED, DDNAME=DD1IEF285I DESJMP.DESJMPIE.JOB10807.D0000101.? SYSIN

IEF373I STEP /LVTOC / START 95145.1701IEF374I STEP /LVTOC / STOP 95145.1701 CPU 0MIN 00.03SEC SRB 0MINIEF375I JOB /DESJMPIE/ START 95145.1701IEF376I JOB /DESJMPIE/ STOP 95145.1701 CPU 0MIN 00.03SEC SRB 0MIN

1 SYSTEMS SUPPORT UTILITIES---IEHLIST-DATE: 2001.145 TIME: 17.01.14

CONTENTS OF VTOC ON VOL GEST00 <THIS IS AN SMS MANAGED VOLUME>----------------DATA SET NAME--------------- CREATED DATE.EXP FILEDESJMP.JMP.ESKELETO 1994.270 00.000 PARTITIONED S

1 SYSTEMS SUPPORT UTILITIES---IEHLIST-DATE: 2001.145 TIME: 17.01.14DIRECTORY INFO FOR SPECIFIED PDS ON VOL GEST00DESJMP.JMP.ESKELETO

0 MEMBERS TTRC VARIABLE USER DATA ---(USER DATA AND TTRINTUTIPS 0002030F 0109001700 95011F0095 130F172600 130013000JMPINT53 0001190F 010D003300 94270F0095 087F102400 260013002JMP16500 0000260F 0100001700 95074F0095 074F091900 190019000PSSEC 0001010F 0101004100 95075F0095 075F185300 130013000SYSMAIN 0000140F 0102005700 95009F0095 009F194500 110011000

OF THE 00010 DIRECTORY BLOCKS ALLOCATED TO THIS PDS, 00009 ARE(IS) COMPLETELY

Page 162: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 162/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 162 de 374

Tema 3 : CLIST 

3.1 Introducción

CLIST significa lista de comandos. pero esa palabra puede tener dossignificados:

- Lenguaje de alto nivel, interprete de comandos propios y de TSO.

- Fichero secuencial que contiene el procedimiento, o conjunto decomandos a ejecutar.

En si, este lenguaje por su funcionalidad es parecido al JCL por lacapacidad que tiene para hacer uso de los recursos del sistema, pero se

diferencia del JCL en que no envía ningún trabajo al JES para su ejecuciónya que él puede realizar este cometido directamente, de forma interactiva,enviando mensajes al usuario y tratando la informacion que este introduce enel sistema.

Como se vera a lo largo de este tema, el lenguaje de clist es un lenguajesencillo, pero no por ello deja de ser potente. Puede hacer uso de todos loscomandos estándar del TSO, pero, para poder ejecutar un procedimiento declist solo es necesario estar en una sesión de TSO, aunque no es necesarioestar directamente en ISPF, ya que desde cualquier lenguaje de programaciónde aplicaciones, COBOL por ejemplo, se puede hacer una llamada y ejecutar enconsecuencia, un procedimiento escrito en lenguaje de CLIST.

Una de las ventajas que tiene la ejecución de una clist, es la de tenerprogramadas aquellos comandos que mas habitualmente se usan en el sistema,evitando los errores en el tecleo de nombres largos.

Por ultimo, también cabe destacar que este lenguaje de CLIST se puede usarpara escribir aplicaciones, si bien las sentencias para la manipulación dedatos, o de bifurcación no gozan de la flexibilidad que tienen en otroslenguajes orientados al manejo de datos.

Una combinación muy interesante es la que integra este lenguaje con lospaneles de ISPF para crear diálogos.

Por otra parte, al ser un lenguaje interprete, no necesita de compilaciónprevia, por lo que una vez escrita la secuencia de comandos a ejecutar, esta

puede ejecutarse directamenteComo cualquier lenguaje de programación, cada una de las líneas de queconsta un fichero de comandos o CLIST, configura lo que se denomina unasentencia, la cual puede:

Page 163: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 163/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 163 de 374

- Asignar valores a variables

- Hacer uso de funciones- Ejecutar comandos de TSO- Alocar ficheros- Controlar ficheros en entrada y/o salida

En consecuencia, a lo largo de este tema, se definirán los distintoselementos de este lenguaje:

- Variables- Funciones- Control de errores- Tratamiento de ficheros

Page 164: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 164/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 164 de 374

3.2 Librerías de CLISTs 

Como ya se ha dicho en la introducción, una clist no es mas que un ficherosecuencial, y en consecuencia se almacena en el sistema como tal. Noobstante, y con objeto de facilitar grandemente, entre otras, las tareasmecánicas del desarrollo, el sistema entiende distintos defectos para laejecución de CLISTs.

El nombre del fichero o dataset que contiene la clist, ya sea un ficheroPDS, o secuencial, puede tener hasta 44 caracteres, y seguir las reglasgenerales para la construcción de los nombres de ficheros.

Se recomienda usar ficheros particionados para almacenar CLISTs, entreotras, por las siguientes razones:

- Normalmente las CLIST son ficheros pequeños, y en consecuencia, lagestión de su almacenamiento físico es gestionada mejor en unalibrería que en un fichero secuencial.

- Permite la agrupación lógica de CLISTs.

El registro del fichero que contiene una CLIST, debe cumplir los siguientesrequisitos:

- Si son de longitud fija: no puede superar los 255 bytes de longitud,reservándose los últimos 8 bytes de la longitud definida para elnumero de secuencia.

- Si son de longitud variable: pueden tener una longitud de hasta 259bytes, ya que el sistema coloca a los ficheros de longitud variable 4bytes en la cabecera del registro para especificar la longitud delmismo. En este caso, la secuencia se especifica en los 8 bytessiguientes a los de longitud.

En general, se recomienda el uso de del formato de longitud fija, no pornada en especial, sino porque admite tanto los ficheros numerados (NUMBERON) como los no numerados (UNNUM).

Page 165: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 165/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 165 de 374

3.3 Como se invoca a un procedimiento de CLIST 

Un procedimiento de comandos, o clist, puede invocarse por cualquiera de losmodos que se indican a continuación:

3.3.1 De forma explícita: 

Invocando un procedimiento mediante la palabra clave EXEC.

Los siguientes ejemplos ilustran esta forma de invocar a la clist:

COMMAND ===> tso ex 'DESJMP.clist.jmp(lnatddm)' 'test'COMMAND ===> tso ex 'DESJMP.clist.jmp(lnatddm)','test'

En estos dos casos, se invoca la misma clist pasando como parámetro la

cadena TEST.

Los siguientes ejemplos muestran como el propio TSO nos indica cual es eldefecto que entiende cuando se invoca una clist erróneamente.

COMMAND ===> tso ex (lnatxxx)

IKJ56520I MEMBER LNATXXX NOT IN DATASET JMPDES.CLIST***

En este caso, el sistema busca el dataset 'JMPDES.CLIST(LNATXXX)' y comono le encuentra, devuelve el mensaje que se acompaña.

COMMAND ===> tso ex clist.jmp(lnatddm)

IKJ56228I DATA SET JMPDES.CLIST.JMP.CLIST NOT IN CATALOG OR CATALOG CANNOT BE ACCESSED***

En este ejemplo se espera que el sistema anteponga el prefijo del usuariotal y como hace con cualquier nombre de fichero, pero el resultado esotro, ya que por defecto el sistema no solo antepone el prefijo definidoen el PROFILE del usuario, sino que también pone como sufijo de lalibrería que es invocada con EXEC el cualificador 'CLIST', conindependencia de que se llame a un procedimiento que sea miembro de unParticionado, o que se encuentre en un fichero secuencial, como muestrael siguiente ejemplo.

COMMAND ===> tso ex JMPCOMMAND ===> tso ex 'JMPDES.JMP.CLIST'

En ambos casos estamos invocando al mismo procedimiento, suponiendo queel usuario tenga definido JMPDES como PREFIX en su perfil. (Ver anexodedicado al PROFILE del usuario)

Page 166: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 166/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 166 de 374

3.3.2 De forma implícita 

En este caso, se invoca procedimientos que se encuentran en las libreríasalocadas.

Existe una librería especial de procedimientos clist, la SYSPROC, que sealoca o asigna al usuario, al hacer el LOGON de TSO, y que contieneaquellos procedimientos generales de la instalación para uso común.

Además de esta, el usuario puede alocar su propia librería utilizando loscomandos de TSO:

- ALLOC para alocar la librería

- ALTLIB para asignarla como librería de comandos del usuario, tal

y como muestra el siguiente ejemplo.

/* ------------------------------------------ LLAMADA PANEL INICIAL *//* */

ALLOCATE FI(SYSUPROC) DS('DESJMP.OPER.OPERCLIB') SHR REUSEALTLIB ACTIVATE USER (CLIST)ISPEXEC SELECT PANEL(MENU000P)ALTLIB DEACTIVATE USER (CLIST)EXIT

/* */

TSO para la búsqueda del comando a ejecutar, examina todas las libreríasde CLIST alocadas en el sistema, en el orden inverso al de su alocacion,lo cual quiere decir que se puede anular una clist de uso general,creando una clist con el mismo nombre que la de uso general, de forma quecuando se mande ejecutar dicho procedimiento se ejecute antes el delusuario que el general.

Cuando se desee ejecutar una clist de la librería SYSPROC, y además, sedesea que el sistema solo busque en SYSPROC, se debe anteponer alcomando el símbolo %

El siguiente ejemplo muestra la forma de invocar un procedimiento declist usando la forma implícita, y además buscando solo en la libreríaSYSPROC. (forma implícita extendida)

COMMAND ===> tso ex %NATDESA

Este procedimiento establece el entorno de NATURAL-DESARROLLO y nosintroduce en el.

Para conocer las librerías que se encuentran alocadas, es decir,definidas o asignadas en el entorno de cada usuario, se puede ejecutar elcomando de TSO: LISTALL con la opción STATUS.

Page 167: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 167/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 167 de 374

3.3.3 Desde READY 

Cuando un usuario ejecuta el procedimiento de logon, esta puede dejarle enel primer panel de ISPF o bien le deja en el sistema, apareciendo elmensaje READY en el terminal. Este es el caso. Desde esta pantalla sepuede ejecutar el comando ISPSTART o el comando EXEC con formatoexplícito.

El formato de este comando es el siguiente:

ISPSTART CMD(nombre_clist)

3.3.4 Desde otra clist 

Ejecutando el comando EXEC o el comando ISPEXEC para invocar al servicioSELECT de ISPF con la opción CMD tal y como se vera en el temacorrespondiente.

Los formatos de ambas llamadas se ajustan a los siguientes:

- EXEC '&nomclist'- ISPEXEC SELECT CMD('&nomclist')

Page 168: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 168/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 168 de 374

3.3.5 Desde un programa de aplicacion 

Casi todos los programas de aplicacion disponen de la sentencia CALL parapoder invocar y ejecutar programas o rutinas escritas en un lenguajedistinto al que hace la llamada.

Este es el caso de COBOL y PL/I, que pueden invocar el procedimiento declist mediante la llamada a cualquiera de las rutinas siguientes:

COBOL: - CALL 'ISPEXEC' USING longitud parametro1- CALL 'ISPLINK' USING servicio longitug parametro2

PL/I - CALL ISPEXEC (longitud,parametro1)- CALL ISPLINK ('SELECT',longitud,parametro2)

donde

LONGITUD especifica la longitud del parámetro (1 o 2) que le sigueen formato PIC 9(6)

PARAMETRO1 Este parámetro debe especificar el servicio y el nombre dela clist que se desea ejecutar, debiendo ajustarse sucontenido a:

SELECT CMD(nomclist)

PARAMETRO2 Este parámetro debe especificar solo el nombre del comandoa ejecutar ya que el nombre del servicio invocado seespecifica en el primer parámetro, por lo que su contenidodebe ajustarse a:

CMD(nomclist)

El siguiente ejemplo escrito en COBOL muestra una forma practica derealizar esta llamada:

...WORKING-STORAGE SECTION

77 SERVICIO PIC X(8) VALUE 'SELECT'.77 LONGITUD PIC 9(6) VALUE 70 COMP.77 PARAMETRO PIC X(70)

...

PROCEDURE DIVISION...MOVE 'CMD(DESJMP.JMP.CLIST)' TO PARAMETRO.CALL 'ISPLINK' USING SERVICIO LONGITUD PARAMETRO....MOVE 'SELECT CMD(DESJMP.JMP.CLIST)' TO PARAMETROCALL 'ISPEXEC' USING LONGITUD PARAMETRO....

Page 169: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 169/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 169 de 374

Otro ejemplo que ilustra esta llamada le constituye el siguiente ejemplo,

mediante el cual se invoca a una clist, concretamente la raíz de lasutilidades desarrolladas en este libro, desde el entorno de NATURAL.

************************************************************* Programa : JMP-ISPP* Autor : JMP* Fecha : 28/10/94* Objetivo : Ejecutar utilidades TSO desde NATURAL************************************************************DEFINE DATA LOCAL

1 W-SERVICIO (A8) INIT <'SELECT'>1 W-LONGITUD (I4) INIT <50>1 W-COMANDO (A50)

END-DEFINE

*INPUT MARK 2 AND SOUND ALARM08/5 '***********************************************************'09/5 '* EJECUTAR PROCEDIMIENTO DE CLIST DESDE ENTORNO NATURAL *'10/5 '***********************************************************'11/5 ' '12/5 '* COMANDO:' *OUTIN W-COMANDO13/5 ' '14/5 '==========================================================='15/5 'PF3: RETORNO PF4:MENU DE UTILIDADES DE TSO'

*DECIDE ON FIRST VALUE OF *PF-KEY

VALUE 'PF3' RESET W-COMANDOVALUE 'PF4' MOVE 'EX '''Jmpdes.JMP.CLIST''' TO W-COMANDONONE VALUE IGNORE

END-DECIDEIF W-COMANDO = ' '

ESCAPE ROUTINEEND-IF

*CALL 'ISPLINK' W-SERVICIO W-LONGITUD W-COMANDOEND

Page 170: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 170/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 170 de 374

3.4 Variables 

Puesto que podemos considerar una Clist como un programa, necesitaremos usarvariables para controlar su flujo. Este es el objetivo de este apartado:

- conocer cuales son las variables del sistema que podemos utilizar,- cómo se puede definir una variable ; y- cómo se pueden cargar las variables de usuario.

3.4.1 Variables de control 

Las siguientes variables contienen el valor que se especifica, y pueden ono modificarse por el procedimiento que se ejecuta según se especifica enla tercera columna.

&SYSUID Contiene la identificación del usuario. no

&SYSPROC Contiene el nombre del procedimiento de LOGON que nose ejecuto cuando se conecto al sistema.

&SYSPREF Prefijo de los Datasets. no

&LASTCC Ultimo código de retorno devuelto por la ultima sifunción ejecutada.

&MAXCC Máximo código de retorno devuelto si

&SYSICMD Nombre del procedimiento invocado 'implícitamente' nopor el usuario. Si la invocacion fue de formaexplícita, su contenido esta a blancos.

&SYSSCAN limita al numero contenido en esta variable, el sinumero de sustituciones simbólicas que realizaraTSO en una línea.

&SYSDLM Delimitador de terminal usado con TERMIN no

&SYSDVAL Parámetros de terminal usado con READDVAL si

&SYSNEST Indicador de nivel de anidamiento no

&SYSPCMD Nombre del comando primario actual no

&SYSSCMD Nombre del subcomando actual no

&SYSDATE Fecha actual no

&SYSTIME Hora actual no

Page 171: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 171/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 171 de 374

&SYSOUTLINE&n Esta variable se usa cuando se quiere capturar la no

salida de un comando.Es una variable compuesta por la cadena SYSOUTLINEy un contador que hace referencia a la línea quealmacena el sistema.

&SYSOUTTRAP Numero de líneas a capturar si

Page 172: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 172/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 172 de 374

3.4.2 Variables de usuario simples 

Las variables de usuario, para su definición, siguen las normasgenerales, es decir nombres que comiencen por un & seguido por un máximode 31 caracteres alfanuméricos, debiendo ser el primero alfabético.

Para asignar un valor a una variable se usa la sentencia SET, quedando apartir de ese momento definida la variable localmente para la Clist quese esta ejecutando.

Por ejemplo: SET &CONTA = 0SET &FICHERO = ALIAS.JMP.LISTDSSET &FICHERO1 = &SYSUID..JMP.LISTDS

en este ejemplo, se asigna:

- el valor numérico 0 a la variable CONTA- el valor alfanumérico 'ALIAS.JMP.LISTDS' a la variable FICHERO- el valor resultante de concatenar el contenido de la variable del

sistema &SYSUID (supongamos que es JMPDES) con la cadena '.JMP.LISTDS',por lo que estaríamos asignando el valor 'JMPDES.JMP.LISTDS' a lavariable FICHERO1.

Es de resaltar el hecho de que no existe diferencia entre continentespara variables numéricas y alfanuméricas; incluso para la asignación devalores no es necesario emplear los apóstrofes o las comillas paradiferenciar su contenido.

Page 173: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 173/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 173 de 374

3.4.3 Variables de usuario compuestas 

Una variante en la forma de definir nombres de variables, es decir,continentes, consiste en concatenar cadenas de caracteres con contenidosde variables.

Por ejemplo: SET &CONTA = 0SET &SALIDA&CONTA = &FICHERO

En este ejemplo, se asigna el contenido de la variable FICHERO a lavariable SALIDA0, nombre que se ha formado concatenando la cadena SALIDAy el contenido de la variable CONTA.

3.4.4 Uso del doble & (&&) : Variables anidadas 

En el punto anterior se ha visto como configurar el nombre de unavariable utilizando el contenido de otra variable mediante el uso de un&. En este punto se expone como asignar a una variable el valor contenidoen el continente definido por otra variable. Esto se hace usando el doble& al principio de la variable emisora. Es decir:

Por ejemplo: SET &CONTA = 0SET &ENTRADA&CONTA = ESTO_ES_UN_EJEMPLOSET &NOMBRE = ENTRADA&CONTASET &SALIDA&CONTA = &&NOMBRE

En este ejemplo se asigna :- el valor 0 a la variable CONTA.- el valor ESTO_ES_UN_EJEMPLO a la variable ENTRADA0- el valor ENTRADA0 a la variable NOMBRE- el valor contenido en la variable cuyo nombre se encuentra en lavariable NOMBRE, es decir el valor contenido en la variable ENTRADA0,(ESTO_ES_UN_EJEMPLO) se asigna a la variable SALIDA0.

Page 174: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 174/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 174 de 374

3.4.5 Variables indexadas 

Una vez vistos los casos anteriores, es fácil suponer como trata estelenguaje las variables indexadas, tan necesarias para procesosrepetitivos.

Esto lo hace concatenando el nombre de la variable y el indice,obteniendo de esta forma nombres de variables distintos en lugar de unnombre unico y un índice variable, aunque el resultado es el mismo.

Como ejemplo se presenta un fragmento de la Clist 'JMPLIB05' en el que semuestra cómo se puede escribir por pantalla todos los elementosalmacenados previamente en un conjunto de variables similar a una tablaindexada.

...LOOP1: IF condición THEN GOTO EXIT1

...SET &NOMBRE&CONTA = &&SYSOUTLINE&CONTA 00001302GOTO LOOP1 00001305

EXIT1: SET &CONTA = 0 00001306WRITE NUMERO DE ELEMENTOS: &ULTIMO 00001307

/* */ 00001308LOOP2: SET &CONTA = &CONTA + 1 00001309

IF &CONTA > &ULTIMO THEN GOTO LISTAR 00001310SET &SALIDA = &&NOMBRE&CONTA 00001311WRITE &SALIDA 00001312GOTO LOOP2 00001313

/* */ 00001318LISTAR: SET &FICHERO= &SYSUID..JMP.LISTDS 00001320

Donde, la línea:

1306 inicializa la variable CONTA1307 muestra el numero de elementos que tiene la Tabla1309 incrementa en 1 el valor de la variable CONTA1310 examina si el valor de CONTA excede el numero de elementos

y si es así, bifurca al párrafo etiquetado con LISTAR (Línea 1320)1311 asigna a la variable SALIDA el contenido de la variable que tiene

por nombre NOMBRE1 , NOMBRE2 , ... , NOMBRE19 , etc...1312 Escribe en pantalla el contenido de la variable SALIDA1313 Bifurca incondicionalmente el flujo al párrafo etiquetado como

LOOP2 (Línea 1309)1320 Cuando se quiere concatenar contenidos de variables, estas debendelimitarse con un punto, tal y como se explico en el puntodedicado a las variables.

Page 175: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 175/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 175 de 374

3.5 Operadores y expresiones

Los operadores que un procedimiento admite en la evaluación de susexpresiones o condiciones son:

Operadores aritméticos: + Adicción- Sustracción* Multiplicación/ División** Exponenciacion// Resto o división modular

El rango de los valores contenidos en una variable numérica es-2.147.483.648 a +2.147.483.648 (= 2^31)

Operadores de Comparación = EQ igualØ= ^= NE no igual< LT Menor que> GT Mayor que<= LE Menor o igual que>= GE Mayor o igual queØ> ^> NG No mayor queØ< ^< NL No menor que

Operadores Lógicos && AND|| OR

Como ejemplo se presenta un fragmento de la Clist JMPLIB05, si bien puede

utilizarse cualquier otro fragmento, pues se usa en cualquier clist./* ============= MEMORIZAR SALIDA ====================== */ 00001220/* */ 00001230LOOP1: SET &CONTA = &CONTA + 1 00001300

IF &CONTA > &ULTIMO THEN GOTO LISTAR 00001301SET &NOMBRE&CONTA = &&SYSOUTLINE&CONTA 00001302GOTO LOOP1 00001305

LISTAR: SET &CONTA = 0 00001306WRITE NUMERO DE ELEMENTOS: &ULTIMO 00001307

En esta segunda parte, se carga una variable tabulada con cada una de laslíneas memorizadas, esto es necesario ya que el próximo comando que seejecute inicializa las variables del sistema SYSOUTLINE&nnn

La línea:

1300 Incrementa el contador de línea

1301 Examina si el numero de línea es mayor que el numero de líneascapturadas y que se encuentra contenido en la variable ULTIMO.En el caso de que sea así, bifurca al párrafo etiquetado comoLISTAR.

1302 Carga en la variable de usuario &NOMBREnnn el contenido de lavariable del sistema SYSOUTLINEnnn que contiene la línea nnncapturada en la ejecución del comando.

Page 176: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 176/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 176 de 374

Es de resaltar el hecho de que a pesar de comenzar por && la

variable, no es una variable anidada, pues &SYSOUTLINE es unavariable del sistema.

1305 cede el control al párrafo etiquetado como LOOP1.

El resto de la clist se comenta al final del presente tema.

Page 177: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 177/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 177 de 374

3.6 Etiquetas 

Las etiquetas son nombres que permiten identificar puntos del procedimientoa los que poder bifurcar el flujo de ejecución.

Estos nombres pueden tener de 1 a 8 caracteres alfanuméricos, y deben irseguidos por el carácter ':' (dos puntos).

Existen dos restricciones al uso de etiquetas:

- No pueden usarse en sentencias PROC- TSO no lista nunca las etiquetas, incluso cuando se esta depurando uncomando usando la opción de control CONLIST que se estudiara mas adelante.

Como ejemplo de este apartado puede tomarse cualquier ejemplo de este tema,

ya que son usadas ampliamente en todos ellos.

Page 178: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 178/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 178 de 374

3.7 Sentencias del lenguaje de CLIST 

Como se decía en la introducción de este tema, el lenguaje de CLIST es unomas de los lenguajes de programación. Entre sus características se encuentrala de ejecutar comandos de TSO de forma directa. En consecuencia, junto alos comandos propios de TSO pueden considerarse las siguientes instruccioneso sentencias, las cuales han sido agrupadas en base a la función querealizan.

Para control ATTN define la rutina de atenciónCONTROL Establece opciones de controlDATA-ENDDATAERROR para manejo de erroresEXIT salir de la clistGLOBAL define variables globales

GOTO salto incondicionalPROC Primera instrucciónRETURN regresoTERMIN Suspensión temporal de la clistWRITE escribir datos en terminalWRITENR escribir sin ejecutar CR

Para asignación de READ leer datos desde el terminalvalores READDVAL Separa contenido de &SYSDVAL

SET asignar valor a variable

Para bifurcación IF-THEN-ELSE bifurca en función de condiciónDO-WHILE-END repite bucle si condiciónWHEN TSO comando

Para acceso a ficheros OPENFILE abrir ficheroGETFILE leer ficheroPUTFILE escribir en ficheroCLOSEFILE cerrar fichero

Por lo general, la sintaxis de las sentencias incluidas en losprocedimientos de CLIST se ajusta a las siguientes reglas básicas:

- El verbo u operación va separado de los operandos por al menos 1blanco.

- La continuación de una sentencia en otro línea puede especificarsecon:

- el signo '-' concatena la siguiente línea ignorando losblancos de final de una y principio de otra.- el signo '+'concatena la línea siguiente incluyendo losblancos de principio de la segunda línea.

- Todas las sentencias pueden ir acompañadas de una etiqueta.

Antes de pasar a analizar cada una de las sentencias citadas, es necesariocomentar tres puntos importantes para la codificación de una clist:- Una CLIST siempre se escribe en mayúsculas- Los comentarios se delimitan con /* al principio y */ al final- La primera instrucción ejecutable de una CLIST es siempre la instrucciónPROC.

Page 179: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 179/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 179 de 374

El siguiente ejemplo muestra estos aspectos. Las dos primeras líneas de la

CLIST son líneas de comentarios, mientras que la tercera establece que estaCLIST no tiene ningún parámetro de entrada, pues eso es lo que indica elnumero que acompaña a la palabra clave PROC

/* <<<<<<<<<<<<<<<<<<<<<< JMPLIB00 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ==== PIDE LIBRERIA DE LA QUE SE DESEA CONOCER LOS MIEMBROS ===== */

PROC 0...EXEC 'DESJMP.CLIST.JMP(JMPLIB05)','&LIBRERIA'EXIT

Este otro ejemplo muestra las primeras líneas de la CLIST llamada por elprocedimiento anterior. En ellas se observa cómo esta clist tiene unparámetro obligatorio, LIBRERIA, y otro optativo, TEST que puede venir o no

informado, tal y como se vera al hablar de la sentencia PROC.

/* <<<<<<<<<<<<<<<<<<<<<< JMPLIB05 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ====== CAPTURA LOS MIEMBROS DE UNA LIBRERIA ===================== */

PROC 1 LIBRERIA TEST...

Page 180: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 180/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 180 de 374

3.7.1 CONTROL : Estable opciones para el proceso de la CLIST

Esta sentencia establece las opciones básicas de control que tendránefecto en la ejecución de la Clist, tales como si se hará, o no, ecosobre la pantalla de las instrucciones que se ejecuten , antes o despuésde las sustituciones de las variables, etc.

El formato de esta instrucción es :

CONTROL [opcion1 [opcion2 [ ... opcionn]]]

donde las posibles opciones, sus opuestas y su significado, son:

MSG NOMSG mostrar mensajesPROMPT NOPROMPT especificar el prompt del terminal

LIST NOLIST Listar comandos de TSOCONLIST NOCONLIST Listar sentencias de la CLISTSYMLIST NOSYMLIST Listar las líneas de la clistFLUSH NOFLUSH Limpiar stackMAIN Determinar procedimiento ppal.END(Cadena) define la cadena que cierra bucle

Como las opciones que se establezcan, normalmente se desea que surtanefecto desde el principio, esta sentencia suele seguir a la sentenciaPROC, yendo por lo tanto, al principio de la CLIST.

El siguiente ejemplo muestra una codificación que permite, con soloasignar un valor a la variable TESTEAR, que se activen unas u otrasopciones para la ejecución de la CLIST.

/* <<<<<<<<<<<<<<<<<<<<<< LISTAR >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */PROC 0 TESTEARIF &TESTEAR = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOCONLIST MSG...Notar que normalmente se usa siempre MSG.

En este ejemplo, si se llama a la clist con:

TSO EX (LNAT),'TEST'

como se asigna el valor TEST a la variable TESTEAR, se activaran las

opciones de :- Visualizar en pantalla todas las sentencias de CLIST y los comandos deTSO antes de sustituir las variables pos sus valores. (SYMLIST)

- Visualizar en pantalla todas las sentencias de CLIST después desustituir los nombres de las variables por sus valores. (CONLIST)

- Visualizar en pantalla los mensajes que devuelven los comandos de TSO olas sentencias de la CLIST.

Page 181: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 181/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 181 de 374

Por el contrario, si se llama a la clist con:

TSO EX (LNAT)

como no se asigna ningún valor a la variable TESTEAR, que se ha definidocomo optativa, pues el numero de parámetros posicionales es 0 (PROC 0) seactivaran las opciones de :

- No visualizar en pantalla todas las sentencias de CLIST después desustituir los nombres de las variables por sus valores. (CONLIST)

- Visualizar en pantalla los mensajes que devuelven los comandos de TSO olas sentencias de la CLIST.

A continuación se explica cada una de las opciones.

MSG / NOMSG

Esta opción establece que se muestren o se supriman los mensajesdevueltos por las ejecuciones de los comandos incluidos en la clist.

TSO por defecto tiene definida la opción CONTROL MSG

PROMPT / NOPROMPT

Esta opción establece si se permite o no el prompt para pedir losvalores de los parámetros posicionales en las clist llamadas, ya quepara la clist actual, tuvo efecto el valor que tuviera este parámetroen el profile del usuario.

El siguiente ejemplo muestra de una forma mas clara este extremo:

COMMAND ===> Tso Profile

Al ejecutar el comando PROFILE, el sistema devuelve los valores queeste tiene asignados a cada uno de los parámetros que integran elperfil del usuario.

IKJ56688I CHAR(0) LINE(0) PROMPT INTERCOM ....

Pues bien, al invocar la clist que se muestra de fondo. sin losvalores de los parámetros posicionales, el sistema muestra un mensajepidiendo el valor de cada uno de los parámetros que no se haninformado.

Page 182: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 182/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 182 de 374

EDIT ---- DESJMP.CLIST.JMP(LISTAR) - 01.00 --------------------------

COMMAND ===> tso ex 'DESJMP.clist.jmp(listar) SCROLL ===>CSR

/* */ 00001318/* <<<<<<<<<<<<<<<<<<<<<<< LISTAR >>>>>>>>>>>>>>>> */ 00000100/* */ 00001205/* === LISTAR POR RMT101 EN VERTICAL Y LETRA PEQUE#A ==*/ 00000100/* */ 00001205

PROC 9 FICHERO 00000200FORMATO 00000200REMOTO + 00000200CLASE + 00000200CABECERA + 00000200DERECHA + 00000200IZQUIERDA + 00000200

PIE + 00000200LRCL 00000200

/* */ 00001205SET &TEST = TESTNO 00000210IF &TEST = TEST THEN CONTROL LIST CONLIST */ 00001205

IKJ56700A ENTER POSITIONAL PARAMETER FICHERO -ejemplos(salida)

IKJ56700A ENTER POSITIONAL PARAMETER FORMATO -v

IKJ56700A ENTER POSITIONAL PARAMETER REMOTO -...

Al cambiar ahora el parámetro PROMPT del Profile del usuario medianteel siguiente comando:

COMMAND ===> Tso Profile NOPROMPT

Para validar que se ha modificado, se ejecuta de nuevo el comando sinopciones.

COMMAND ===> Tso Profile

el sistema devuelve:IKJ56688I CHAR(0) LINE(0) NOPROMPT INTERCOM ....

Page 183: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 183/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 183 de 374

y al ejecutar exactamente igual la misma clist, se obtiene el mensaje

que se muestra.

EDIT ---- DESJMP.CLIST.JMP(LISTAR) - 01.00 --------------------------COMMAND ===> tso ex 'DESJMP.clist.jmp(listar) SCROLL ===>CSR

IKJ56701I MISSING POSITIONAL PARAMETER FICHEROPROC 9 FICHERO FORMATO REMOTO CLASE CABECERA DERECHA IZQUIERDA PIE LRECL***y se da por concluida la clist.

Así pues, cuando en una clist se establece el parámetro de lasentencia CONTROL como NOPROMPT, no se cambia el PROFILE del usuariocomo se ha hecho en este ejemplo, pero se activa ese valor desde que

se ejecuta la sentencia CONTROL hasta que se termine la ejecución dela clist, y por lo tanto, si ese procedimiento llama a otro sinpasarle todos los parámetros posicionales requeridos, el procedimientoinvocado sacara el mensaje IKJ56701I y dará por terminada suejecución.

TSO por defecto tiene definida la opción CONTROL NOPROMPT

LIST / NOLIST

Esta opción de control establece si se desea listar o no los comandosde TSO y los subcomandos después de que se sustituyan las variablespor sus valores.

TSO por defecto tienen definida la opción CONTROL LIST

CONLIST / NOCONLIST

Esta opción de control establece si se desea o no listar lassentencias de la clist después de sustituir las variables por susvalores.

TSO por defecto tienen definida la opción CONTROL NOCONLIST

SYMLIST / NOSYMLIST

Esta opción de control establece si se desea o no listar lassentencias de la clist, y los comandos y subcomandos de TSO antes desustituir las variables por sus valores

TSO por defecto tienen definida la opción CONTROL NOSYMLIST

Page 184: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 184/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 184 de 374

FLUSH / NOFLUSH

El stack de TSO es una cola en la que se especifica a TSO la fuente dedonde debe recoger la próxima entrada, pudiendo tener los valores determinal o clist.

Cuando se produce un error en una clist, TSO hace un borrado o FLUSHdel STACK, y como TSO por defecto tiene definida la opción FLUSH, elpróximo input siempre le leerá del terminal, a menos que seespecifique NOFLUSH.

Esta es la función de esta opción de control, evitar el borrado delstack, para que así la próxima entrada la lea del stack, si es quehabía. Esta opción solo se activa si el código de retorno es mayor que12, por lo que hay que combinar esta opción con rutinas de error.

MAIN

Esta opción define la clist que se tomara como de primer nivel cuandose ejecute en una clist llamada, es decir de un nivel inferior, lasentencia EXIT QUIT.

END(cadena)

Esta opción establece la cadena que actuara como delimitadora en losgrupos de instrucciones. Estos grupos siempre empezaran por lainstrucción DO y terminaran cuando se encuentren con el delimitadorque se establezca aquí.

TSO por defecto tienen definida la opción CONTROL END(END)

Es decir tiene definida la cadena END como delimitadora de los gruposde instrucciones.

Ejemplo : CONTROL END(END-DO)

En este caso se establece la cadena END-DO como cadena delimitadora.

IF condición THEN +DO

sentenciasEND-DO

Page 185: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 185/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 185 de 374

3.7.2 PROC : Primera instrucción de una CLIST

Esta instrucción establece el numero de parámetros posicionales que sedeben pasar para que se ejecute el procedimiento o CLIST.

El formato de esta instrucción es :

PROC n [variable1 [variable2 ... [variable n]]]]

donde n es el numero que representa el numero de parámetros posicionalesobligatorios que se deben pasar, asignandose cada parámetro pasado a cadauna de las variables que se establecen como receptores en esta sentencia.

En el caso de que no se pasen parámetros, el valor de n debe ser 0.

En el caso de pasar parámetros con palabra clave, los parámetros puedenvenir en el orden que se quiera ya que el valor acompaña a la palabraclave como argumento.

Ejemplo PROC 0 REMOTO(RMT20) FICHERO('JMPDES.SALIDA')

El siguiente ejemplo muestra un procedimiento o clist que edita unfichero que contiene el esqueleto de un JCL, (no confundir con unesqueleto de ISPF). Este procedimiento lo que hace es editar eseesqueleto, cambiar esos nombres genéricos por los valores reales, lanzaral JES el JCL, y salir dejando el esqueleto como estaba.

La siguiente CList seria llamada desde la línea de comando como sigue:

TSO EX JMP(LNAT),'PROGRAMA','PRUEBAS'

/* <<<<<<<<<<<<<<<<<<<<< LNAT >>>>>>>>>>>>>>>>>>>>> */ 000100/* LISTA OBJETO POR RMT101 EN VERTICAL Y LETRA PEQUEÑA */ 000200PROC 2 OBJETO LIBRERIA 000300/* CONTROL LIST CONLIST */ 000400EDIT 'JMPDES.JMP.JCLTIPO(LISTAPGM)' OLD CNTL NONUM 000500C * 999 'YYYYYYYY' '&OBJETO' ALL 000600TOP 000700C * 999 'ZZZZZZZZ' '&LIBRERIA' ALL 000800SUBMIT 000900END NOSAVE 001000

Las líneas:

0100 es un comentario que establece el nombre de la CLIST

0200 es un comentario que especifica el objetivo de la misma.

0300 es la primera instrucción ejecutable, y establece que para suejecución necesita dos parámetros posicionales obligatorios: Elprimero le asignara a la variable OBJETO y el segundo le asignara ala variable LIBRERIA.

0400 es un comentario que sirve para depurar la clist cuando deja de sercomentario.

Page 186: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 186/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 186 de 374

0500 llama al programa EDIT pasándole como parámetro el nombre del

fichero a editar así como las características de disposición : OLD,el tipo de fichero que es : CNTL , y un parámetro del ficheroNOMUN, que especifica la característica de NO NUMERADO de superfil. (Este parámetro afecta a cómo definir los parámetros deedición del fichero)

0600 especifica al editor que cambie desde la línea que se encuentra, yen cualquier posición de la línea, la cadena YYYYYYY por elcontenido de la variable OBJETO, y que esto lo haga en todo elfichero (ALL)

0700 también es un comando del editor mediante el que se le indica quese posicione en el comienzo del fichero.

0800 especifica que sustituya desde la línea actual (la primera) hastala 999 la cadena ZZZZZZZZ por el contenido de la variable LIBRERIA

0900 submite el fichero resultante

1000 hace que termine la ejecución del programa EDIT y que salga sinsalvar el fichero resultante.

El fichero editado : 'JMPDES.JMP.JCLTIPO(LISTAPGM)' realiza el listado deun modulo de Natural por una impresora especifica, pero los nombres delmodulo a listar y de la librería en la que se encuentra se han codificadoen dicho esqueleto de forma genérica como YYYYYYYY y ZZZZZZZZ.Su contenido es el siguiente:

Page 187: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 187/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 187 de 374

//XXXXXXLP JOB (123,456),'JMP-PRU ',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1)//*=======================================================//* PASAR OBJETO NATURAL A FICHERO TEMPORAL//*======================================================//*//NATBATCH EXEC DESNAT//*//DDPRINT DD DUMMY SYSOUT=*//CMPRINT DD DUMMY SYSOUT=*//CMPRT01 DD DSN=JMPDES.JMP.TMP,DISP=OLD//CMSYNIN DD DSN=JMPDES.JMP.JCL(LOGONPGM),DISP=SHR//*********************************************************// DD *

JMP0001PZZZZZZZZYYYYYYYYFIN/*//*========================================================//* IMPRIMIR TEMPORAL CON MARGEN//*========================================================//*//IMPRIMIR EXEC PGM=IKJEFT01//*//SYSTSPRT DD SYSOUT=*//SYSTSIN DD *PRINTDS DATASET('JMPDES.JMP.TMP') DEST(RMT101) CLASS(I) +COLUMNS(1:124) LMARGIN(8)

/*

Es de resaltar el hecho de que al ser NONUM, no tiene la numeración delas líneas que figura en otros ejemplos.

Por otra parte, la DDname CMSYNIN se compone de 2 sentencias DDconcatenadas.La primera DD referencia los parámetros necesarios para entrar enNatural, tales como LIBRERIA, USUARIO Y PASSWORD, y que por ser comunes atodos los JCL, se han escrito como miembro independiente ya que de estaforma, cuando cambia la password solo hay que cambiarla en un sitio.La segunda DD contiene realmente lo que se desea realizar, ejecutar elprograma JMP0001P, el cual espera recibir dos datos: El primerorepresenta la librería y el segundo el programa a listar.

Page 188: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 188/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 188 de 374

3.7.3 ERROR : rutina para el tratamiento de errores

Esta instrucción establece el conjunto de instrucciones que se ejecutarancuando se produzca una situación de excepción, o un código de retornodistinto de cero. Dicho conjunto de instrucciones vendrá enmarcado por lapareja DO - END, suponiendo que sea END la cadena definida con lasentencia de CONTROL END

El formato de esta sentencia es :

(1) ERROR sentencia

(2) ERROR +DO

sentenciasEND

(3) ERROR OFF

Los formatos (1) y (2) son similares, con la única salvedad de que en elformato 1 solo se ejecuta una sentencia cuando se bifurca a esta rutina,mientras que en el formato (2) se ejecuta el grupo de sentenciasincluidas entre los limitadores DO y END. Es la mas normal

El formato (3) desactiva la rutina de error.

Esta instrucción, no es una etiqueta aunque tiene un funcionamientosimilar.

La rutina para el tratamiento de los errores estará activa desde que elflujo ejecute la instrucción ERROR, hasta que se ejecute una nuevasentencia ERROR o se termine la clist, si bien no se ejecutaran susinstrucciones mas que en el caso ya dicho anteriormente de que sedevuelva un código distinto de 0.

Un caso particular de esta instrucción viene representado por el formato(3), ya que cuando se ejecuta ERROR OFF, deja de estar activa la rutinade error que lo estuviera.

En un procedimiento puede haber tantas sentencias ERROR como se

consideren necesarias, pero solo estará activa la correspondiente a laultima sentencia ERROR ejecutada. Esto quiere decir que no esindependiente de donde se encuentre dentro del procedimiento, como sueleocurrir con otros lenguajes, pues debe ejecutarse la sentencia para quese active.

Page 189: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 189/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 189 de 374

La siguiente secuencia se corresponde a la rutina de tratamiento de

errores de la clist DISPLAY1.

El sistema bifurcara incondicionalmente a esta rutina cada vez que seproduzca una situación de excepción, como por ejemplo, detectar el fin defichero al ejecutarse una sentencia de lectura.

ERROR + 00008100DO 00008200

SET RETCOD = &LASTCC 00008300IF &RETCOD = 8 THEN + 00008400

DO 00008500IF &PASO = EXAMEN THEN + 00008600

DO 00008700SET EXISTE = NO 00008800

RETURN 00008900END 00009000

WRITENR YA EXISTE LA TABLA JMPALO01. 00009100READ SEGUIR 00009200EXIT CODE(99) 00009300

END 00009400IF &RETCOD = 400 THEN + 00009500

DO 00009600SET EOF = SI 00009700RETURN 00009800

END 00009900ELSE + 00010000

DO 00010050WRITE error en la ejecución RC : &RETCOD 00010070EXIT CODE(&RETCOD) 00010100

END 00010150END 00010200

8300 memoriza el código de retorno que ha generado la cesión delcontrol a esta rutina. Dicho código se encuentra contenido enla variable del sistema &LASTCC.

8400 Examina si el código de retorno es 8, y si es así ejecuta lasinstrucciones contenidas entre las línea 8500 a 9400.

8600 Examina el contenido de una variable que se carga en el flujode ejecución normal, y que sirve para detectar el punto desdeel que ha bifurcado a esta rutina ya que el código de retorno8 es devuelto por mas de una función. Concretamente estaexaminando si la variable PASO contiene la cadena EXAMEN,valor que se carga en el flujo normal de la clist.

8800 En el caso de que contenga dicho valor, quiere decir que noexiste la fila que se esta buscando, cosa que es correcta yaque se quiere dar de alta una fila en una tabla indexada, ypara ello necesitamos que no exista. Por esta razón es por loque se carga la variable EXISTE con el valor NO. En el caso deque exista la fila buscada, el código de retorno es 0 y nobifurca a la rutina de error.

8900 Retorna al punto desde el que se bifurco a esta rutina.

Page 190: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 190/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 190 de 374

9100 Escribe el mensaje de que se quiere crear una tabla que yaexiste.Hay que tener en cuenta que el código de retorno 8 también esdevuelto cuando se quiere crear una tabla que ya existe.

9200 Se interrumpe la ejecución de la clist hasta que el usuariopulse INTRO. Esto se consigue indicando al sistema que leadesde el terminal el valor de la variable SEGUIR, la cual nosirve mas que para interrumpir la ejecución de la clist, a laespera de que se pulse INTRO.

9300 Se sale de la clist.

9500 En el caso de que el código que provoco esta bifurcación

incondicional no fuera el 8 (línea 8400) , se examina si es400, código generado cuando en la lectura de un fichero se hadetectado el fin de fichero.

9700 si se ha detectado esta condición, se carga la variable deusuario EOF con el valor SI y se regresa con RETURN al puntodesde el que se bifurco a esta rutina de errores.

10000 En el caso de no ser ninguno de estos errores, se ejecutan lasinstrucciones de las líneas 10050 a 10150.

10100 Escribe en el terminal un mensaje con el código de error queno se controla, y sale de la clist con EXIT y devuelve alprocedimiento llamante el código de retorno que ha provocadoel ERROR.

Como puede observarse en esta rutina de ERROR confluyen muchasbifurcaciones, todas unidas únicamente por el código de retorno, y por lotanto, puede usarse como elemento discriminador variables que indiquen suprocedencia, como es el caso de la variable PASO.

Las siguientes sentencias constituyen el procedimiento para el que se haescrito la rutina de errores previa. Con el fin de poder seguir esteejemplo, y dado que todavía no se han explicado todas las instruccionesusadas, es por lo que se comentan estas.

El objetivo de esta clist es presentar en un panel ISPF un ficherosecuencial que contiene el nombre de todas las librerías alocadas por elsistema, y que se ha cargado previamente con una clist previa.

Page 191: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 191/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 191 de 374

ALLOC FI(ENTRADA) DA('&FICHERO') SHR REUSE 00010300ISPEXEC TBCREATE JMPALO01 NOWRITE NAMES(ELEMENTO,COMENTA) 00010400OPENFILE ENTRADA INPUT 00010500/* */ 00010600GETFILE ENTRADA 00010700/* */ 00010900GETFILE ENTRADA 00011000

10300 Aloca el dataset cuyo nombre se encuentra contenido en lavariable FICHERO para ser usado de entrada con disposiciónSHARED, y le asigna el nombre lógico de ENTRADA.

10400 Llama a la función de ISPF : TBCREATE para crear una tablaISPF en memoria (NOWRITE) con los campos de nombre ELEMENTO y

COMENTA.ISPF, por haber invocado una de sus funciones, nos devuelvesiempre un código de retorno. Si este código de retorno no es0 salta a la rutina de errores que se ha comentado. Como lonormal es que en este caso sea 0, pues no existe la tabla yaque es en memoria, sigue en secuencia.

10500 Abre el fichero ENTRADA en modo INPUT.

10700 Lee el primer registro, que no interesa ya que solo contieneun texto de cabecera fijo.

11000 Lee el siguiente registro, el cual contiene informacionvalida. Por lo tanto, con un registro valido leido, se entraen la repetitiva siguiente:

SET EOF = NO 00011099DO WHILE &EOF = NO 00011100

SET ELEMENTO = &STR(&SUBSTR(01:44,&ENTRADA)) 00011200SET COMENTA = &STR(&SUBSTR(45:60,&ENTRADA)) 00011300

/* */ 00011400SET PASO = EXAMEN 00011500SET EXISTE = SI 00011600ISPEXEC TBEXIST JMPALO01 00011700IF &EXISTE = NO + 00011750

THEN ISPEXEC TBADD JMPALO01 SAVE(ELEMENTO,COMENTA) 00011800GETFILE ENTRADA 00011900

END 00012000CLOSFILE ENTRADA 00012100FREE FI(ENTRADA) 00012200

11099 Inicializa la variable de usuario EOF (End of File)

11100 Repetitiva mientras el contenido de EOF sea NO

11200 Carga en la variable ELEMENTO las posiciones de 1 a 44 de lavariable ENTRADA (buffer que contiene el registro leído)

11300 Carga en la variable COMENTA las posiciones 45 a 60 deENTRADA.

Page 192: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 192/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 192 de 374

11500 Carga en la variable PASO la cadena EXAMEN. Esta variable es

la que se examina en la rutina de ERROR.

11600 Carga en la variable EXISTE la cadena SI

11700 Llama a la función de ISPF : TBEXIST para saber si existe unafila en la tabla ispf de nombre JMPALO01

Llegados a este punto se puede producir una situación deexcepción, pues puede existir o no una fila con el valorcontenido en la variable ELEMENTO, dependiendo de que esténduplicados los nombres de las librerías (contenido del ficheroque se esta tratando), con lo que esta función puede retornar:- el código 0 si existe la fila, y sigue en secuencia, o- el código 8 si no existe la fila, y por tanto bifurca a la

rutina de error.Una vez en esta rutina, pregunta por el código, y como sabe dedonde viene por el contenido de la variable PASO, carga elvalor NO en la variable EXISTE y retorna a la siguientesentencia a la que provocó su bifurcación. Es decir, retorna ala sentencia 11750

11750 Pregunta por el contenido de la variable EXISTE.

11800 En el caso de que el contenido sea NO, es decir no existe unafila con la entrada dada, llama a la función de ISPF: TBADDpara añadir la fila a la tabla, con los campos ELEMENTO YCOMENTA.

11900 Lee un nuevo registro del fichero ENTRADA

12000 Cierra el bucle de la repetitiva DO-WHILE. Este bucle serepetira hasta que al leer un nuevo registro se detecte el finde fichero, con lo que se bifurcara de nuevo a la rutina deerror, y al comprobar que el código de retorno es 400, cargaren la variable EOF el valor SI, por lo que al retornar denuevo a este punto, e ir a la cabecera de la repetitiva,comprobara que el contenido de la variable EOF no es NO, ysaltara a la línea 12100.

12100 Cierra el fichero asociado al nombre lógico ENTRADA

12200 Libera para el sistema el fichero físico asociado al nombrelógico ENTRADA.

Page 193: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 193/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 193 de 374

Con lo cual, al llegar a este punto ya se dispone de una tabla ISPF

cargada con los datos que interesan.

Las siguientes sentencias presenta la parte de la clist que muestra latabla en un panel, y permite tratar la informacion contenida en cada unade sus líneas.

ERROR OFF 00012300ISPEXEC TBSCAN JMPALO01 ARGLIST(ELEMENTO) NEXT 00012400ISPEXEC TBSORT JMPALO01 FIELDS(ELEMENTO,C,A) 00012500

12300 ejecuta una nueva sentencia ERROR pero esta vez con elparámetro OFF por lo que la anterior rutina deja de estaractiva.

12400 establece como argumento de búsqueda para un SCAN , el campoELEMENTO, y la búsqueda se realizara hacia delante.

12500 Clasifica la tabla por el campo ELEMENTO, en ascendente, y sucontenido, aunque sea numérico, será tratado como caracteresalfanuméricos.

El siguiente fragmento contiene una repetitiva a fin de tratar todos loselementos de la tabla.

SET &SIGUE = SI 00012600DO WHILE &SIGUE = SI 00012700

ISPEXEC TBTOP JMPALO01 00012800ISPEXEC TBDISPL JMPALO01 PANEL(JMPALO02) 00012900IF &LASTCC = 8 THEN - 00013000

DO 00013100ISPEXEC TBCLOSE JMPALO01 00013200EXIT 00013300

END 00013400

12600 Inicializa la variable SIGUE con el valor SI

12700 Inicia un bucle que se ejecutara mientras la variable SIGUEcontenga el valor SI

12800 posiciona el puntero en el la primera fila de la tablaclasificada.

12900 LLama a la función de ISPF para presentar en un panel lasfilas de la TABLA. ISPF ya se encarga de la paginación, numerode filas por página, etc.

13000 Al no haber una rutina de error a la que bifurcar, después decada llamada se debe preguntar por el código de retorno quedevuelve ISPF. Esto es lo que se hace en esta línea.En el caso de que el código sea 8 , es decir no hay filas,cierra la tabla, y sale de la clist.

Las siguientes líneas preparan los datos de ELEMENTO, LIBRERIA y FICHEROde la fila seleccionada.

Page 194: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 194/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 194 de 374

SET &ELEMENTO = &ELEMENTO 00013500

SET &LIBRERIA = &LIBRERIA 00013600SET &FICHERO = &LIBRERIA.(&ELEMENTO.) 00013700

El resto de esta clist se limita a examinar la marca utilizada paraseleccionar la fila y ejecutar la acción correspondiente.

Es de resaltar el hecho de que ISPF se encarga de seleccionar la filacorrespondiente a la primera marca realizada en el campo MARCA.

IF &MARCA = B THEN - 00013800DO 00013900

ISPEXEC BROWSE DATASET('&FICHERO') 00014000SET &COMENTA = 'VISUALIZADA' 00014100

END 00014200

IF &MARCA = E THEN - 00014300DO 00014400

ISPEXEC EDIT DATASET('&FICHERO') 00014500SET &COMENTA = 'EDITADA ' 00014600

END 00014700IF &MARCA = M THEN - 00014800

DO 00014900EXEC 'JMPDES.CLIST.JMP(JMPZZZ0M)','&FICHERO' 00015000

END 00015100SET &MARCA = &STR( ) 00015200

END 00015300

14000 llama a la función de ISPF : BROWSE pasándole como argumentoel contenido de la variable FICHERO.

14100 Mueve el texto VISUALIZADA en la variable COMENTA de la filaseleccionada.

14500 llama a la función de ISPF : EDIT pasándole como argumento elcontenido de la variable FICHERO.

14100 Mueve el texto EDITADA en la variable COMENTA de la filaseleccionada.

15000 Llama a la clist JMPZZZ0M, pasándole como argumento elcontenido de la variable FICHERO con el fin de presentar losmiembros de una librería.

15200 mueve blancos a la variable MARCA

15300 Cierra el bucle de la repetitiva.

Al final del tema se muestra la pantalla resultante, acompañando allistado completo de esta clist.

Page 195: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 195/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 195 de 374

3.7.4 GOTO : salto incondicional

Esta sentencia se usa para ceder el control de la ejecución de una clistal párrafo etiquetado con el nombre que sirve de parámetro a estasentencia.

El formato de esta instrucción es :

GOTO etiquetaGOTO &variable

Como se ve, la etiqueta puede ser dinámica, es decir que un mismo GOTObifurcara a un párrafo o a otro en función del valor que se haya asignadoa la variable, en base a determinadas condiciones.

El siguiente ejemplo sigue siendo un fragmento de la clist JMPLIB05. Enél se pretende escribir en un fichero el contenido de la variableindexada que se ha cargado previamente en la captura de la salida delcomando.

SET &CONTA = 6 00003200GRABAR: SET &CONTA = &CONTA + 1 00003300

IF &CONTA > &ULTIMO THEN GOTO CERRAR 00003411SET &LINEA = &&NOMBRE&CONTA 00003600SET &SALIDA = &LINEA 00003610PUTFILE SALIDA 00003700

/* WRITE &SALIDA */ 00003800GOTO GRABAR 00003900

CERRAR: CLOSFILE SALIDA 00004000/* FREE FILE(SALIDA) */ 00004100

La línea:

3200 inicializa el contador a 6 pues las 7 primeras líneas no contieneninformacion significativa.

3300 Aquí comienza un párrafo, etiquetado como GRABAR, y como unaetiqueta no puede ir sin una sentencia que le acompañe, seaprovecha esta línea para incrementar el valor de la variableCONTA en 1.

3411 Esta sentencia examina el contenido de la variable CONTA para

saber si ha sobrepasado el valor de la ultima posición del índice.Si es así, salta al párrafo etiquetado con CERRAR.

3600 Asigna a la variable temporal LINEA el contenido de la variablecuyo nombre se forma concatenando la cadena NOMBRE con elcontenido de la variable CONTA.

3610 Asigna al buffer de salida el contenido de la variable temporalLINEA.

3700 Escribe en el fichero de salida el buffer cargado previamente.

3800 Ahora figura como comentario, pero en el caso de que no fuera así,

Page 196: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 196/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 196 de 374

escribiría en pantalla el contenido de la variable escrita en el

fichero.

3900 Salta incondicionalmente al párrafo GRABAR.

4000 Esta línea contiene el nombre del párrafo CERRAR , y comosentencia ejecutable, la que cierra el fichero en el que se haescrito la tabla.

4100 Libera ese fichero para que pueda ser usado por el sistema.

El siguiente ejemplo ilustra el GOTO dinámico.

IF &RC = 8 THEN SET &LABEL = CERRARIF &RC = 4 THEN SET &LABEL = ABRIR

IF &RC = 0 THEN SET &LABEL = SEGUIRGOTO &LABEL

Page 197: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 197/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 197 de 374

3.7.5 EXIT : Salir de la clist

Esta sentencia termina la ejecución de una clist.

El formato de esta instrucción es :

EXITEXIT CODE(nn)EXIT QUIT

donde nn es un valor numérico que se devuelve como código de retorno alprocedimiento llamante, para que este sepa como fue la ejecución de laCLIST llamada.

El código de retorno devuelto puede ser cualquier expresión numérica,

donde el valor se encuentre en el rango 0 - 16.777.215

Cuando se usa el parámetro QUIT se sale de la clist actual y se retorna ala clist de nivel mas alto si está protegida, es decir que tenga lassentencias de control : CONTROL MAIN NOFLUSH , y en el caso de que noexista un nivel protegido, se termina la ejecución de la clist.

Como ejemplo se muestra un fragmento de la rutina de error comentada enla sentencia ERROR.

ERROR + 00008100DO 00008200

SET RETCOD = &LASTCC 00008300IF &RETCOD = 8 THEN + 00008400

DO 00008500IF &PASO = EXAMEN THEN + 00008600

DO 00008700SET EXISTE = NO 00008800RETURN 00008900

END 00009000WRITENR YA EXISTE LA TABLA JMPALO01. 00009100READ SEGUIR 00009200EXIT CODE(99) 00009300

END 00009400...

Page 198: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 198/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 198 de 374

3.7.6 RETURN : Retornar al punto desde el que se bifurco a una rutina

Esta sentencia hace que el control de la ejecución pase a la sentenciasiguiente a la que provoco la bifurcación a la rutina de error o a la deatención a fin de continuar la secuencia lógica normal de la clist. Enconsecuencia esta sentencia solo puede encontrarse en las rutinas deERROR o de ATTN.

El formato de esta instrucción es :

RETURN

Como ejemplo se muestra un fragmento de la rutina de error comentada enla sentencia ERROR.

ERROR + 00008100DO 00008200

SET RETCOD = &LASTCC 00008300IF &RETCOD = 8 THEN + 00008400

DO 00008500IF &PASO = EXAMEN THEN + 00008600

DO 00008700SET EXISTE = NO 00008800RETURN 00008900

END 00009000WRITENR YA EXISTE LA TABLA JMPALO01. 00009100READ SEGUIR 00009200EXIT CODE(99) 00009300

END 00009400...

8900 Esta línea, una vez comprobado que es normal que no exista unafila con el nombre que se quiere dar de alta, y enconsecuencia que el código de retorno devuelto por la funciónes el normal, cede de nuevo el control a la instrucciónsiguiente a la de la función que provoco que se bifurcara a larutina para el manejo de errores, a la 11750, para dar de altala fila en la tabla.

Page 199: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 199/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 199 de 374

3.7.7 WRITE : Escribir datos en el terminal

Esta instrucción se usa para enviar mensajes al usuario desde la clist.No espera respuesta, solo escribe el mensaje en pantalla.

El formato de esta instrucción es :

WRITE mensaje

El mensaje estará formado por cualquier secuencia de palabras yvariables. En tiempo de ejecución, estas serán sustituidas por susvalores. En el caso de que se desee evaluar y escribir el resultado deuna expresión, se debe utilizar la función &VAL.

Como ejemplo se muestra un fragmento de la rutina de error comentada en

la sentencia ERROR.

...DO 00010050

WRITE error en la ejecución RC : &RETCODE 00010070EXIT CODE(&RETCODE) 00010100

END 00010150...

10070 Escribe en el terminal un mensaje y el valor del código deretorno que ha provocado que la secuencia de ejecución pasepor esta línea.

Page 200: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 200/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 200 de 374

3.7.8 WRITENR : Escribir en el terminal y no ejecutar el <CR>

Esta instrucción se usa para enviar mensajes al usuario desde la clist,pero en este caso, este mensaje suele servir de prompt para que elusuario sepa que es lo que tiene que contestar al sistema, ya quenormalmente esta sentencia va seguida de la sentencia READ.

En este caso, no se ejecuta el salto de línea por lo que los datos aintroducir se escriben a continuación del mensaje enviado por la clist.

El formato de esta instrucción es :

WRITENR mensaje

El siguiente ejemplo es un fragmento del procedimiento LNATDDM. En el se

muestra cómo se pregunta por pantalla cual es el nombre del objeto alistar.

WRITENR NOMBRE DE LA DDM A LISTAR : 00001000READ &DDM 00001100

Este otro ejemplo muestra un fragmento de la rutina de error comentada enla sentencia ERROR, con un uso muy particular de esta sentencia.

ERROR + 00008100DO 00008200

SET RETCOD = &LASTCC 00008300IF &RETCOD = 8 THEN + 00008400

DO 00008500IF &PASO = EXAMEN THEN + 00008600

DO 00008700SET EXISTE = NO 00008800RETURN 00008900

END 00009000WRITENR YA EXISTE LA TABLA JMPALO01. 00009100READ SEGUIR 00009200EXIT CODE(99) 00009300

END 00009400...

9100 Esta línea saca un mensaje en pantalla.

9200 Esta sentencia interrumpe temporalmente la ejecución de laclist a la espera de que el usuario pulse INTRO.Una vez pulsado este, carga el valor tecleado por el usuarioen la variable SEGUIR.Realmente esta sentencia solo sirve para interrumpir laejecución de la clist hasta que se pulse INTRO, ya que elcontenido de la variable seguir no se examina ni se trata.

Page 201: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 201/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 201 de 374

3.7.9 READ : Lee datos desde el terminal

Esta instrucción se usa para leer datos desde el terminal cargando lavariable que sirve de parámetro a esta sentencia.

Normalmente esta instrucción va precedida por la WRITENR para escribir unmensaje que informa al usuario de que es lo que espera recibir elsistema.

El formato de esta instrucción es :

READ &variable

Como ejemplo se muestra la clist usada para imprimir por una impresoradeterminada una vista de un fichero ADABAS o DDM.

/* <<<<<<<<<<<<<<<<<<<<<< LNATDDM >>>>>>>>>>>>>>>>>>>>>>> */00000100/* ====== lista una DDM de Natural por la impresora RMT101 */00000200

PROC 0 TEST 00000300/* */00000400

IF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG 00000600ELSE CONTROL MSG 00000700

/* -------------------------------------------------------- */00000800/* */00000900

WRITENR NOMBRE DE LA DDM A LISTAR : 00001000READ &DDM 00001100EDIT 'JMPDES.JMP.JCLTIPO(LNATDDM)' OLD CNTL NONUM 00001200C * 999 'VVVVVVVV' '&DDM' ALL 00001300

/* LIST */00001400SUBMIT 00001500END NOSAVE 00001600EXIT 00001700

En la línea:

1000 se presenta un mensaje explicativo de lo que se desea delusuario: El nombre de la DDM a listar.

1100 se lee el nombre que escriba el usuario en el terminal y seguarda en la variable DDM.

1200 se ejecuta el programa EDIT del sistema, pasándole como

parámetro el nombre de un fichero que contiene un JCL genéricoque es quien realmente va a listar la DDM por la impresorapredeterminada.

1300 Esta línea contiene un subcomando del programa EDIT que tienepor misión cambiar la cadena VVVVVVVV por el contenido de lavariable DDM (leído desde pantalla).

1400 Esta línea, ahora comentario, solo sirve para comprobar que seha realizado lo que se pretendía. Es un subcomando de EDIT yesta enmarcado como comentario por resultar innecesario quesalga listado por pantalla el JCL con las modificacionesrealizadas.

Page 202: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 202/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 202 de 374

1500 Este subcomando de EDIT, envía al JES el contenido del ficheroactual, es decir submite el fichero modificado. También es unsubcomando del programa EDIT.

1600 Este subcomando finaliza la ejecución del programa EDIT y nosalva los cambios, con lo que el programa genérico siguesiendo genérico.

1700 Termina la ejecución de la clist.

A fin de completar el ejemplo, se incluye a continuación el JCL genéricoque edita la clist anterior. En el no se ha incluido la numeración ya quesu profile especifica NONUM.

//XXXXXXLD JOB (123,456),'JMP-PRU ',CLASS=U,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1)//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//* PASAR DDM A TMP MEDIANTE CLIST//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//NATBATCH EXEC DESNAT//DDPRINT DD SYSOUT=*//CMPRINT DD SYSOUT=*//CMPRT01 DD DSN=JMPDES.JMP.TMP,DISP=OLD//CMSYNIN DD DSN=JMPDES.JMP.JCL(LOGONPGM),DISP=SHR//*********************************************************// DD *JMP002PVVVVVVVVFIN

/*//*===========================================================//* IMPRIMIR TEMPORAL CON MARGEN//*===========================================================//*//IMPRIMIR EXEC PGM=IKJEFT01//*//SYSTSPRT DD SYSOUT=*//SYSTSIN DD *PRINTDS DATASET('JMPDES.JMP.TMP') DEST(RMT101) CLASS(I) +COLUMNS(1:71 86:126) LMARGIN(15) COPIES(1)

/*

El primer paso de este JCL se encarga de llamar a un procedimiento paraejecutar un programa de NATURAL en batch. Cuando se ejecute el programa,pedirá como entrada el nombre de la DDM a listar, y ese es el que figuraen forma genérica como VVVVVVVV y dejando la salida en el ficheroasociado a la DDname CMPRT01, es decir en el fichero JMPDES.JMP.TMP, queya existe.

El segundo paso, ejecuta el TSO en batch para ejecutar el comando de TSO:PRINTDS que se encarga de listar el dataset especificado como argumentodel parámetro clave DATASET, listandole, en la clase dada en el parámetroCLASS, por la impresora especificada como argumento del parámetro DEST.Deja un margen a la izquierda de 15 posiciones, y escribiendo acontinuación las columnas 1 a 71 y 86 a 126.

Page 203: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 203/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 203 de 374

Page 204: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 204/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 204 de 374

3.7.10 IF-THEN-ELSE : Para bifurcación

Esta sentencia se usa para ejecutar una u otra instrucción, en base a quese cumpla la condición que acompaña a la palabra clave IF.

El formato de esta instrucción es :

IF condición THEN +DO

sentenciasEND-DO

ELSE +DO

sentenciasEND-DO

En el caso de que se cumpla dicha condición, se ejecuta la instrucciónasociada a la palabra clave THEN, y en caso contrario, se ejecuta laasociada a la palabra clave ELSE si es que existe, ya que es optativa.

Como ejemplo de esta sentencia se incluye un fragmento de la clistDISPLAY1 que se explica detalladamente al final del tema. Este fragmentopermite alocar un fichero si ya existe, o crearlo si no existe.

/* */ 001400/* ============= ESCRIBIR SALIDA EN FICHERO =========== */ 001500/* */ 001600

IF &SYSDSN('&FICHERO') = OK THEN + 001611ALLOC FILE(SALIDA) DATASET('&FICHERO') OLD REUSE 001620

ELSE ALLOC FILE(SALIDA) DATASET('&FICHERO') NEW CATALOG + 001630UNIT(3380) RECFM(F B) LRECL(80) + 001640BLKSIZE(6240) TRACKS SPACE(3 1) REUSE 001650

OPENFILE SALIDA OUTPUT 001800SET &SALIDA = 'CONTENIDO DE :' &LIBRERIA 001810

1611 antes de examinar la condición contenida en esta línea hay queexplicar que &SYSDSN('nombre_fichero') es una función delsistema que devuelve la cadena OK si existe el fichero que sele pasa como argumento.En consecuencia, la condición expresada en esta línea examinasi existe el data set cuyo nombre esta contenido en la

variable FICHERO.1620 En el caso de que exista, ejecuta el comando ALLOC a fin de

alocar dicho dataset asignándole el nombre lógico de SALIDA.

1630 En el caso de que no exista el fichero, le crea, para lo cualse especifican todos los parámetros necesarios para lacreación de un fichero.

Page 205: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 205/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 205 de 374

A veces, en lugar de ejecutar una única instrucción se desea ejecutar un

conjunto de instrucciones. En este caso, estas deben enmarcarse entre DOy END.

Como ejemplo de este punto se muestra un fragmento de la rutina para elmanejo de errores de la clist DISPLAY1 que se explica en detalle al finaldel tema.

ERROR + 00002000DO 00002100

SET &RC = &LASTCC 00002200IF &RC = 400 THEN + 00002300

WRITE FIN NORMAL DE LA CLIST 00002400ELSE + 00002500

DO 00026000

WRITE INESPERADO FIN DE CLIST 00002610WRITE RC ES &RC 00002700WRITE LINEA 00002700EXIT 00002800

END 00002900END 00003000

2610-2900 todas estas sentencias se ejecutaran en el caso de que elcontenido de la variable RC no sea 400

Page 206: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 206/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 206 de 374

3.7.11 SET : permite asignar valores a variables

Esta sentencia se encarga de asignar un valor a una variable, o elresultado de evaluar una expresión aritmética.

El formato de esta instrucción es :

SET &variable = valor

Los valores, ya sean numéricos o alfanuméricos, se ajustan a laizquierda. En el caso de no querer que se realice esta justificación sedebe hacer uso de la función &STR. También se usara dicha función cuandoel valor asignado sea una cadena que contenga signos aritméticos, a finde que no intente evaluar las expresiones.

Como ejemplo se presenta un fragmento de la clist JMPALO00 que captura lasalida de un comando pasándola a un fichero y que se explica con detalleal final del tema.

SET &CONTA = 0 00001300SET &ULTIMO = &SYSOUTLINE 00001400

/* */00001500/* ============= MEMORIZAR SALIDA ===================*/00001600/* */00001700LOOP1: SET &CONTA = &CONTA + 1 00001800

IF &CONTA > &ULTIMO THEN GOTO LISTAR 00001900SET &TABLA&CONTA = &&SYSOUTLINE&CONTA 00002000GOTO LOOP1 00002100

1300 Inicializa la variable CONTA asignandola el valor 0

1400 Inicializa la variable ULTIMO asignándola el valor contenidoen la variable del sistema SYSOUTLINE. Es de resaltar el hechode que para asignar a una variable el contenido de otra, seindica anteponiendo el símbolo & al nombre de la variable.

1800 Esta línea incrementa el valor de la variable CONTA en unaunidad.

2000 Esta línea asigna a la variable TABLAnnn el contenido de lavariable del sistema &SYSOUTLINEnnn.En este caso es de resaltar el hecho de que las variables

indexadas se forman concatenando el índice a la variable.Lo mismo ocurre con la variable del sistema &SYSOUTLINEnnn,solo que en este caso se trata de asignar a las variablesTABLA1, TABLA2, ... el contenido de las variables cuyo nombrees &SYSOUTLINE1, ...Este es un caso particular del uso del && visto en lasvariables anidadas, ya que en este caso solo hay que tratarlocomo con un unico & ya que el segundo & forma parte del nombrede la variable por ser del sistema.

Page 207: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 207/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 207 de 374

3.7.12 DO-WHILE END : Repetitiva mientras se cumple una condición.

Esta sentencia establece una estructura repetitiva mediante la cual seejecutaran todas las instrucciones que se encuentren entre la sentenciaDO WHILE y END mientras se cumpla la condición que sirve de parámetro ala sentencia.

El formato de esta estructura es :

DO WHILE condiciónsentencia1...sentencian

END

Como ejemplo se presenta la repetitiva para leer un fichero que formaparte de la clist DISPLAY1 que se explica al final del tema.

OPENFILE ENTRADA INPUT 001000GETFILE ENTRADA 001010IF &LASTCC = 400 THEN SET &EOF = SI 001020

ELSE SET &EOF = NO 001030DO WHILE &EOF = NO 001040

SET MIEMBRO = &STR(&SUBSTR(1:10,&ENTRADA)) 001050ISPEXEC TBADD JMPLIB01 SAVE(MIEMBRO) 001060GETFILE ENTRADA 001070IF &LASTCC = 400 THEN SET &EOF = SI 001080

END 001090CLOSFILE ENTRADA 002000

1000 Abre el fichero físico asociado al nombre lógico ENTRADA

1010 Lee un registro del fichero lógico ENTRADA

1020-1030 Examina el código de retorno, y si es 400 carga la variableEOF con el valor SI que especifica que es fin de fichero, y encaso contrario, carga el valor NO en dicha variable.

1040 Cabecera de repetitiva con la condición que debe cumplirsepara que entre en la estructura.

1050 asigna a la variable MIEMBRO una cadena formada con los

octetos 1 a 10 del buffer que contiene el registro leído.1060 Añade a la tabla de ISPF JMPLIB01 una fila con la columna

MIEMBRO

1070 Lee un nuevo registro del fichero ENTRADA.

1080 Examina el código de retorno devuelto. y en caso de detectarseel fin de fichero carga la variable EOF con el valor SI.

1090 devuelve el control a la línea 1040.

2000 Cuando no se cumpla la condición de la línea 4 se pasara a

Page 208: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 208/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 208 de 374

ejecutar esta sentencia ya que es la siguiente al bucle.

Page 209: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 209/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 209 de 374

3.7.13 OPENFILE : Abrir fichero

Esta sentencia abre un fichero lógico.

El formato de esta sentencia es :

OPEN fichero INPUTOPEN fichero OUTPUTOPEN fichero UPDATE

Este formato es lo suficientemente explicativo por si solo, no obstante,cabe comentar que para poder definir un fichero con el parámetro INPUTdebe existir el fichero.

Por defecto, los ficheros abiertos se abren con el modo de INPUT.

En el caso de definir un fichero como UPDATE, se permite leer y escribiren el mismo fichero, y en este caso, cuando se da la orden de escribir,se machaca el ultimo registro leído con el contenido movido al buffer.

Como ejemplo se presenta un fragmento de la clist JMPALO00 comentada masextensamente al final del tema.

SET &FICHERO= &SYSUID..JMP.LISTDS 001610IF &SYSDSN('&FICHERO') = OK THEN + 001611

ALLOC FILE(SALIDA) DATASET('&FICHERO') OLD REUSE 001620ELSE ALLOC FILE(SALIDA) DATASET('&FICHERO') NEW CATALOG + 001700

UNIT(3380) RECFM(F B) LRECL(80) + 001710BLKSIZE(6240) TRACKS SPACE(3 1) REUSE 001720

OPENFILE SALIDA OUTPUT 001800SET &SALIDA = 'LA SALIDA CONTIENE:' 001810PUTFILE SALIDA 001820

1610 Asigna a la variable FICHERO la cadena que se forma alconcatenar el prefijo del usuario a la cadena ".JMP.LISTDS"

1611 Examina si existe el fichero, y si es así le aloca; y si no esasí, establece los parámetros para su creación y le aloca.

1800 Abre para salida el fichero designado como SALIDA

1810 Carga en el buffer SALIDA la cadena que se indica.

1820 Escribe en el fichero físico el contenido del buffer.

Page 210: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 210/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 210 de 374

3.7.14 GETFILE : Lee el siguiente registro de un fichero secuencial

Esta sentencia lee un registro de un fichero secuencial, dejando sucontenido en el buffer que tiene como nombre el nombre lógico asociado alfichero físico en la sentencia ALLOC.

El formato de esta sentencia es :

GETFILE nombre_fichero

Cuando al ejecutar esta instrucción el sistema devuelve el código deretorno 400 es porque ha detectado el fin del fichero.

Como ejemplo se presenta el mismo fragmento de la clist DISPLAY1comentado con la sentencia ERROR, pero ligeramente modificado.

ERROR OFF 00010299ALLOC FI(ENTRADA) DA('&FICHERO') SHR REUSE 00010300ISPEXEC TBCREATE JMPALO01 NOWRITE NAMES(ELEMENTO,COMENTA) 00010400OPENFILE ENTRADA 00010500/* */ 00010600GETFILE ENTRADA 00010700IF &LASTCC ^= 0 THEN EXIT CODE(88) 00010750/* */ 00010900GETFILE ENTRADA 00010925SET RC = &LASTCC 00010950IF &RC = 400 THEN SET EOF = SI 00011960

ELSE EXIT CODE(89) 00011099

10299 desactiva la rutina de errores si la había.

10300 Aloca el dataset cuyo nombre se encuentra contenido en lavariable FICHERO para ser usado de entrada con disposiciónSHARED, y le asigna el nombre lógico de ENTRADA.

10400 Llama a la función de ISPF : TBCREATE para crear una tablaISPF en memoria (NOWRITE) con los campos de nombre ELEMENTO yCOMENTA.

10500 Abre el fichero ENTRADA

10700 Lee el primer registro, que no interesa ya que contiene un

texto fijo.10750 Examina si el código de retorno es distinto de 0, y si es así,

sale de la clist devolviendo el código de retorno 88

10925 Lee el siguiente registro, el cual contiene informacionvalida. Por lo tanto, con un registro valido leído, se entraen la repetitiva que sigue a esta instrucción.

10950 Memoriza en la variable RC el código de retorno devuelto porel sistema al leer el siguiente registro.

11960 Examina el código de retorno memorizado. Si es el

Page 211: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 211/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 211 de 374

correspondiente al fin de fichero, carga la variable EOF con

el valor SI.

11099 en caso contrario sale de la clist devolviendo el código deretorno 89 para ser tratado como corresponda.

Page 212: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 212/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 212 de 374

3.7.15 PUTFILE : Escribe un registro en un fichero físico.

Esta sentencia escribe el contenido de un buffer como un registro en unfichero secuencial.

El formato de esta sentencia es :

PUTFILE nombre_fichero

Como ejemplo se presenta el mismo fragmento de la clist DISPLAY1comentada con la sentencia OPENFILE.

SET &FICHERO= &SYSUID..JMP.LISTDS 001610IF &SYSDSN('&FICHERO') = OK THEN + 001611

ALLOC FILE(SALIDA) DATASET('&FICHERO') OLD REUSE 001620

ELSE ALLOC FILE(SALIDA) DATASET('&FICHERO') NEW CATALOG + 001710UNIT(3380) RECFM(F B) LRECL(80) + 001720BLKSIZE(6240) TRACKS SPACE(3 1) REUSE 001730

OPENFILE SALIDA OUTPUT 001800SET &SALIDA = 'LA SALIDA CONTIENE:' 001810PUTFILE SALIDA 001820

1800 Abre para salida el fichero designado como SALIDA

1810 Carga en el buffer SALIDA la cadena que se indica.

1820 Escribe en el fichero físico el contenido del buffer.

Page 213: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 213/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 213 de 374

3.7.16 CLOSEFILE : Cierra el fichero

Esta sentencia cierra un fichero lógico.

El formato de esta sentencia es :

CLOSEFILE fichero1[,fichero2[,... ficheron]]])

Este formato es lo suficientemente explicativo por si solo, no obstante,cabe comentar que para poder liberar el fichero, en el caso de que sea desalida, es necesario ejecutar la sentencia FREE(fichero).

Como ejemplo se presenta un fragmento de la clist DISPLAY1 comentada masampliamente al final del tema.

ALLOC FI(ENTRADA) DA('&FICHERO') SHR 000100ISPEXEC TBCREATE JMPLIB01 NOWRITE NAMES(MIEMBRO) 000200OPENFILE ENTRADA INPUT 000300/* */ 000400

GETFILE ENTRADA 000500/* SET LIBRERIA = &STR(&SUBSTR(1:45,&ENTRADA)) */ 000600/* */ 000700GETFILE ENTRADA 000800DO WHILE &EOF = NO 000900

SET MIEMBRO = &STR(&SUBSTR(1:10,&ENTRADA)) 001000ISPEXEC TBADD JMPLIB01 SAVE(MIEMBRO) 001100GETFILE ENTRADA 001200

END 001300CLOSFILE ENTRADA 001400FREE FI(ENTRADA) 001500

0100 Aloca el fichero físico cuyo nombre se encuentra contenido enla variable FICHERO, y le asigna el nombre lógico de ENTRADA.

0300 Abre el fichero ENTRADA como de lectura

1400 cierra el fichero ENTRADA

1500 Libera para el sistema el fichero ENTRADA

Page 214: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 214/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 214 de 374

3.7.17 ATTN : Rutina de ATENCION

Esta sentencia establece la rutina de atención, la cual controlara lasalida de una clist después de pulsar la tecla de atención (ATTN).

Esta sentencia es muy similar a la rutina de ERROR en el sentido de quesolo estará activa desde que el flujo de proceso ejecute esta sentencia,pero no se ejecutara mientras no se pulse la tecla de atención ATTM.

El formato de esta sentencia es :

(1) ATTN sentencia(2) ATTN DO

sentenciasEND

(3) ATTN OFF

Los formatos 1 y 2 son similares, con la única salvedad que en el formato1 solo se ejecuta una sentencia cuando se bifurca a esta rutina, mientrasque en el formato 2 se ejecuta el grupo de sentencias incluidas entre loslimitadores DO y END.

El formato 3 desactiva la rutina de atención.

Un ejemplo de esta rutina le constituye el siguiente fragmento:

ATTN DO 00100WRITENR Desea terminar la ejecución (S/N) ? 00200READ &CONTESTA 00300IF &CONTESTA = S THEN 00400

DO 00500CLOSEFILE ENTRADA 00600FREE FILE ENTRADA 00700EXIT QUIT 00800

END 00900ELSE RETURN 01000END 01100

200 Pregunta se si desea terminar la ejecución de la clist

400 En el caso de que la respuesta sea S cierra el fichero y lelibera para que no se quede "pillado" por el sistema.

800 Esta sentencia provoca la salida de la clist hasta el nivelsuperior protegido. (ver sentencia EXIT)

1000 En el caso de que no se desee terminar la ejecución de laclist se retorna al punto desde el que se bifurco a ejecutaresta rutina.

Page 215: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 215/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 215 de 374

3.7.18 TERMIN 

Esta sentencia suspende temporalmente la ejecución de una clist,devolviendo el control de entrada de comandos al terminal.Al ejecutar desde el terminal el comando RETURN se continuara con laejecución de la clist suspendida.

El formato de esta sentencia es :

TERMIN

El siguiente ejemplo puede ilustrar el uso de esta sentencia:

ATTN DO 00100WRITE Para regresar con esta clist escriba RETURN 00200

TERMIN 00300RETURN 00400END 00500

0100 Establece la rutina de atención de la clist

0200 Saca un mensaje recordando que se va a salir temporalmente dela clist, pero que para volver a ella basta con ejecutar elcomando RETURN

0300 Sale temporalmente al sistema a fin de ejecutar comandos deTSO.

0400 Cuando se retorne a esta clist, por haber ejecutado el comandoRETURN desde el sistema, se retorna al punto desde el que sebifurco a esta rutina de atención.

Page 216: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 216/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 216 de 374

3.7.19 READDVAL : Separar la informacion contenida en &SYSDVAL

Esta sentencia se usa para separar en distintas variables el contenido dela variable &SYSDVAL. Esta variable del sistema puede contener:

- la ultima entrada leída desde el terminal cuando se ejecuto unasentencia READ sin el nombre de una variable; o

- un valor cargado directamente en la clist.

El formato de esta sentencia es :

READDVAL var1 [var2 [... varn]]

El siguiente ejemplo ilustra el uso de esta sentencia:

WRITE Escribe tu nombre y dos apellidos : 00100READ 00200READDVAL &NOMBRE &APE1 &APE2 00300WRITE TU NOMBRE ES &NOMBRE 00400WRITE Y TUS APELLIDOS SON &APE1 &APE2 00500

0200 Como se ejecuta la sentencia READ sin ningún nombre devariable, lo que se hace es cargar la variable SYSDVAL

0300 Asigna la primera palabra a la variable NOMBRE. El carácterblanco actúa de delimitador.La segunda a APE1 y la tercera a APE2 y desprecia el restoen el caso de que lo haya.

0400-0500 Escribe los datos para validacion

Page 217: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 217/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 217 de 374

3.7.20 GLOBAL : define variables globales 

La comunicación de informacion entre procedimientos de clist puedehacerse pasando el contenido de las variables como parámetros cuando sellama a otra clist, la cual a su vez, mediante las variables definidas enla sentencia PROC asigna los valores recogidos a las variablesespecificadas.

Existe una segunda forma de pasar informacion a una clist: usar variablesglobales, con lo cual no es necesario pasar parámetros a la segundaclist, y en consecuencia, no declarar las variables en la sentencia PROC.

Pero, para poder usar variables globales, es necesario definirlasmediante la sentencia GLOBAL tanto en la clist primaria como en la clistllamada.

El formato de esta sentencia es:

GLOBAL &var1 &var2 ... &varn

El siguiente ejemplo es una clist que pide el nombre de una librería parapoder listar sus miembros. Si se especifica un nombre, este es pasado aotra clist para tratar dicha librería.

/* <<<<<<<<<<<<<<<<<<<<<< JMPLIB00 >>>>>>>>>>>>>>>>>>> */ 0010100/* ====== CAPTURA LOS MIEMBROS DE UNA LIBRERIA ========= */ 0010200

PROC 0 0010300CONTROL MSG 0010400SET RC = 0 0010500GLOBAL &LIBRERIA 0010600SET &LIBRERIA = &SYSUID.. 0010700ISPEXEC DISPLAY PANEL(JMPLIB01) CURSOR(LIBRERIA) 0010800SET RC = &LASTCC 0010900IF &LIBRERIA = &STR() THEN EXIT 0010000EXEC 'DESJMP.CLIST(JMPLIB05)' 0011000EXIT 0011100

10600 Define como GLOBAL la variable LIBRERIA

10700 Carga la variable con el identificador del usuario

10800 Saca un panel para que el usuario especifique la librería de

la que se desea listar los miembros.11000 Invoca a la clist que realizara esta función sobre la librería

que el usuario especifique en el panel.

Page 218: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 218/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 218 de 374

/* */

/* <<<<<<<<<<<<<<<<<<<<<< JMPLIB00 >>>>>>>>>>>>>>>>>>>>>>>>*/ 00000100/* */ 00001030

PROC 0 00001040CONTROL NOLIST NOCONLIST 00001050GLOBAL &LIBRERIA 00001055SET &SYSOUTTRAP = 999 00001060LISTDS '&LIBRERIA' MEMBERS 00001070...

1055 Establece como global la variable LIBRERIA

1070 Hace uso del contenido de esa variable para ejecutar elcomando de TSO LISTDS con el parámetro LIBRERIA y con laopción MEMBERS a fin de obtener una lista de los miembros de

un fichero particionado..

El resto de la clist es similar a la que captura las librerías alocadas.

Page 219: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 219/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 219 de 374

3.8 Comandos de TSO 

Este apartado trata los comandos de TSO de uso mas frecuente, presentandojunto al nombre del comando, la abreviatura admitida, y una brevedescripción del mismo.

 ALLOCATE ALLOC este comando se usa para incluir en el entorno delusuario la librería o el fichero que le acompaña comoparámetro.

 ALTLIB Este comando se usa para añadir hasta dos niveles delibrerías al fichero SYSPROC a fin de poder ejecutarclist invocandolas de forma implícita.

 ATTRIB ATTR  Este comando se usa para definir características deficheros

CALL Este comando se usa para ejecutar el programa contenidoen la librería(miembro) que se especifique.

CANCEL Este comando cancela la ejecución del job cuyo JOBID seespecifica como parámetro.

COPY Este comando, que puede no estar disponible en lainstalación, se usa para copiar ficheros desde un fuenteal fichero que se especifica como destino detrás de lapalabra clave TO. En el caso de que el fichero destino noexistiera, le crea.

DEFINE DEF Este comando se usa para crear entradas en el catalogodel sistema referenciando ficheros u objetos VSAM.

DELETE DEL Este comando se usa para borrar ficheros.

EDIT E Este comando permite crear o modificar los datos de unfichero.

END Este comando termina la ejecución de un procedimiento.

EXEC EX Este comando permite ejecutar un procedimiento de CLIST oun comando REXX

FORMAT FORM  Este comando es usado para formatear datos que vayan aser impresos, con control de páginas, cabeceras, etc.

FREE Este comando libera, es decir desasigna, recursosdefinidos con el comando ALLOC

HELP H Este comando invoca a la aplicacion de ayudas del TSO

Page 220: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 220/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 220 de 374

LINK Este comando invoca al programa linkador-editor para

convertir la salida del compilador en código ejecutable.

LIST L Lista el contenido de un fichero por el terminal. Puedeno estar disponible en la instalación.

LISTALC LISTA  Este comando lista todos los recursos que están asignadosa la sesión de quien ejecuta el comando.

LISTBC LISTB Este comando lista los mensajes dejados para el usuarioen la librería de BROADCAST.

LISCAT LISTC Este comando lista el catalogo del sistema.

LISTDS LISTD Este comando lista características de los ficheros odatasets.

LOADGO LOAD Este comando se usa para convertir la salida delcompilador en un programa ejecutable, y ejecutarlodirectamente.

LOGOFF Termina la sesión de TSO.

 MERGE M  Este comando se usa para unir en un fichero datos devarios ficheros. Puede ser que no este disponible en lainstalación el uso de este comando.

OUTDES Este comando se usa para definir características del

fichero de SYSOUT.

OUTPUT OUT Este comando se usa para escribir la salida de un Job enun fichero.

PRINT Este comando se usa para imprimir ficheros VSAM.

PROFILE PROF Este comando se usa para cambiar característicasasociadas al perfil del usuario.

PROTECT PROT Este comando se usa para crear o cambiar la password deficheros. Es ignorado si la instalación dispone de RACF.

RENAME REN Este comando se usa para cambiar el nombre de un fichero.

REPRO Este comando es usado para copiar ficheros.

RUN Este comando se usa para compilar, cargar y ejecutar elcódigo fuente del fichero pasado como parámetro.

SEND SE Este comando se usa para enviar mensajes a otro terminalde usuario.

STATUS Este comando se usa para chequear el estado de un job queesta en ejecución.

Page 221: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 221/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 221 de 374

SUBMIT SUB Este comando se usa para enviar al JES un JCL para su

ejecución.

TERMINAL TERM  Este comando es usado para cambiar características delterminal.

TEST Este comando se usa para testear un programa.

TIME Este comando visualiza la fecha y hora, así como otrasestadísticas.

 VERIFY VFY Este comando es usado para verificar la informacion delcatalogo con la del fichero VSAM.

 WHEN Este comando se usa para ejecutar condicionalmentefunciones en base al código de retorno devuelto por elprograma que le precede.

Page 222: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 222/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 222 de 374

3.9 Funciones estándar 

3.9.1 &DATATYPE : Determinar tipo de variable

Esta función se usa para determinar si el contenido de una variable esnumérica o alfanumérica.

Los valores devueltos son: "NUM" o "CHAR" dependiendo del contenido.

Ejemplo: SET &TIPO = &DATATYPE(&VARIABLE)IF &TIPO = CHAR +

THEN SET ....ELSE SET ....

3.9.2 &EVAL : Evaluar el contenido de una expresión

Esta función se usa normalmente en sentencias WRITE para evaluar elcontenido de una expresión y escribir el resultado.

Ejemplo: SET &VAL1 = 5SET &VAL2 = 3WRITE &VAL1 + &VAL2 = &EVAL(&VAL1 + &VAL2)

3.9.3 &LENGTH : Determinar la longitud de una expresión

Esta función se usa normalmente para determinar la longitud de una cadenade caracteres o el contenido de una variable.

Suele usarse en combinación con la función &SUBSTR.

Ejemplo: SET &LONGITUD = &LENGTH(&VARIABLE)

3.9.4 &NRSTR : Determina que no se realicen sustituciones con &&

Esta función especifica que en el caso de que la cadena que sirve deargumento a esta función contenga un doble ampersand (&&), no se realicela sustitución de la variable.

Page 223: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 223/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 223 de 374

3.9.5 &STR : Determina que el contenido del argumento es una cadena

Esta función especifica que la cadena pasada como argumento sea tratadacomo cadena de caracteres, no debiendo efectuarse sustituciones nievaluarse expresiones.

Ejemplo: Sentencia Contenido

SET &VAL1 = UN EJEMPLO "EJEMPLO"SET &VAL2 = &STR( UN EJEMPLO ) " EJEMPLO "SET &VAL3 = ESTADOS R3-R5 Error al evaluar expresiónSET &VAL4 = &STR(ESTADOS R3-R5) "ESTADOS R3-R5"

3.9.6 &SUBSTR : Extrae una subcadena de una cadena o de una variable

Esta función extrae de una cadena o de una variable la subcadena que seindica, de acuerdo con el siguiente formato:

&SUBSTR(octeto_inicio:octeto_final,variable)

Ejemplo: SET &ELEMENTO = &SUBSTR(2:5,EJEMPLO) "JEMP"SET &VARIABLE = EJEMPLOSET &ELEMENTO = &SUBSTR(1:3,&VARIABLE) "EJE"

3.9.7 &SYSCAPS : Pasa a mayúsculas el argumento

Esta función se usa para convertir a mayúsculas el argumento de lafunción.

Ejemplo: SET &VARIABLE = &SYSCAPS(&VARIABLE)

3.9.8 &SYSDSN : Determina si existe como dataset el argumento

Esta función se usa para saber si existe un fichero determinado.

Los valores devueltos por la función son:- "OK" si existe , o- "DATASET NOT FOUND" si no existe.

Page 224: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 224/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 224 de 374

3.9.9 &SYSINDEX : Buscar un carácter en una cadena

Esta función se usa para determinar la posición que ocupa un determinadocarácter en una cadena.

Ejemplo: SET &POSICION = &SYSINDEX(HOLA,ESTO SIRVE PARA BUSCAR HOLA)WRITE SE ENCUENTRA EN &POSICIONAl ejecutar aparece:

SE ENCUENTRA EN 24

3.9.10 &SYSLC : Pasa a minúsculas el argumento pasado

Esta función se usa para convertir a minúsculas el valor que se le pasecomo argumento.

Ejemplo: SET &VARIABLE = &SYSLC(&VARIABLE)

3.9.11 &SYSNSUB : Determina el nivel de sustituciones.

Esta función se utiliza para controlar el nivel de sustitución devariables simbólicas y expresiones.

Ejemplo :

SET &VALOR1 = EJEMPLOSET &VALOR2 = &&VALOR1SET &VALOR3 = &&VALOR2WRITE &SYSNSUB(0,&VALOR3)WRITE &SYSNSUB(1,&VALOR3)WRITE &SYSNSUB(2,&VALOR3)WRITE &SYSNSUB(3,&VALOR3)

Al ejecutar este procedimiento, aparece escrito en pantalla:

&VALOR3

&VALOR2&VALOR1EJEMPLO

Page 225: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 225/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 225 de 374

3.10 Ejemplos 

3.10.1 JMPALO00 : Paso a fichero de las librerías alocadas

Salida del comando de TSO LISTA ejecutado directamente:

 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ------------------- MENU PARTICULAR DE JMP ------------------------OPTION ===> tso lista

1 ...

X EXIT - SALIR DEL MENU

TERMFILEDESJMP.JMP.PANELDESJMP.ISPF.ISPPROFDESJMP.INT.TABLA ***

 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 

Page 226: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 226/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 226 de 374

Listado del procedimiento de comandos:

/* <<<<<<<<<<<<<<<<<<<<<< JMPALO00 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* =========== CAPTURA Las librerías alocadas ==================== */

PROC 0CONTROL MSGSET CABECERA = <<< Librerías alocadas >>>SET RC = 0EXEC 'DESJMP.CLIST.JMP(JMPSEG01)','A'CONTROL NOLIST NOCONLISTSET &SYSOUTTRAP = 999LISTASET &SYSOUTTRAP = 0SET &NOMBRE = TABLASET &CONTA = 0

SET &ULTIMO = &SYSOUTLINE/* *//* ============= MEMORIZAR SALIDA ============================= *//* */LOOP1: SET &CONTA = &CONTA + 1

IF &CONTA > &ULTIMO THEN GOTO LISTARSET &NOMBRE&CONTA = &&SYSOUTLINE&CONTAGOTO LOOP1

EXIT1: SET &CONTA = 0WRITE NUMERO DE ELEMENTOS: &ULTIMO

/* */LOOP2: SET &CONTA = &CONTA + 1

IF &CONTA > &ULTIMO THEN GOTO LISTARSET &SALIDA = &&NOMBRE&CONTAWRITE &SALIDAGOTO LOOP2

/* */LISTAR: SET &FICHERO= &SYSUID..JMP.CMD/* WRITE *//* WRITENR LA SALIDA CONTIENE &ULTIMO LINEAS *//* WRITE *//* *//* ============= ESCRIBIR SALIDA EN FICHERO =================== *//* */

IF &SYSDSN('&FICHERO') = OK THEN +ALLOC FILE(SALIDA) DATASET('&FICHERO') OLD REUSE

ELSE ALLOC FILE(SALIDA) DATASET('&FICHERO') NEW CATALOG +UNIT(3380) RECFM(F B) LRECL(80) +BLKSIZE(6240) TRACKS SPACE(3 1) REUSE

/* */OPENFILE SALIDA OUTPUTSET &SALIDA = 'LA SALIDA CONTIENE:'PUTFILE SALIDA

/* */

Page 227: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 227/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 227 de 374

SET &RC = 0

ERROR +DO

SET &RC = &LASTCCIF &RC = 400 THEN +

WRITE FIN NORMAL DE LA CLISTELSE +

DOWRITE INESPERADO FIN DE CLISTWRITE RC ES &RCWRITE LINEAEXIT

ENDEND

/* */

SET &CONTA = 6GRABAR: SET &CONTA = &CONTA + 1

IF &CONTA > &ULTIMO THEN GOTO CERRARSET &LINEA = &&NOMBRE&CONTASET &SALIDA = &LINEAPUTFILE SALIDA

/* WRITE &SALIDA */GOTO GRABAR

CERRAR: CLOSFILE SALIDAFREE FILE(SALIDA)EXEC 'DESJMP.CLIST.JMP(DISPLAY1)','&FICHERO'

Page 228: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 228/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 228 de 374

Salida del comando :

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>------------------- MENU PARTICULAR DE JMP ------------------------OPTION ===> tso lista

1 ...

X EXIT - SALIR DEL MENU

TERMFILEDESJMP.JMP.PANELDESJMP.ISPF.ISPPROFDESJMP.INT.TABLA

***<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Page 229: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 229/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 229 de 374

3.10.2 DISPLAY1 : visualizar en panel el fichero generado con JMPALO00

Panel que se desea obtener:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>@JMP-94----------------- Lista de librerías --------- ROW 1 TO 16 OF 94OPCION====> SCROLL ==> CSR

Opciones : B Browse <<< LIBRERIAS ALOCADAS >>>_______E EditM Miembros

m Librerías Observaciones- -------------------------------------------- ---------------SYS1.BRODCASTDESJMP.JMP.ESKELETO

DESJMP.JMP.MENSAJESDESJMP.JMP.PANELDESJMP.JMP.TABLASDESJMP.JMP.TABLAS(JMPINT00)DESJMP.SPFLOG1.LIST

************************* BOTTOM OF DATA *****************************

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

A continuación se muestra el listado de la clist que sirve paravisualizar con un panel el contenido de un fichero secuencial. Aunque eneste caso dicho fichero contienen las librerías alocadas, que han sidocargadas previamente en el ejemplo anterior.

Los comentarios a este ejemplo pueden verse ampliamente en la sentenciaERROR.

/* <<<<<<<<<<<<<<<<<<<<<< DISPLAY1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* =========== CAPTURA Las librerías alocadas ==================== */

PROC 1 FICHERO/* *//* ============= DISPLAYA LA TABLA DE ELEMENTOS ==================== *//* */CONTROL MSG

SET EOF = NOSET PF3 = &LASTCCSET RETCOD = 0SET RC = 0ERROR +DOSET RETCOD = &LASTCCIF &RETCOD = 8 THEN +

DOIF &PASO = EXAMEN THEN +

DOSET EXISTE = NORETURN

Page 230: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 230/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 230 de 374

END

WRITENR YA EXISTE LA TABLA JMPALO01. NO PUEDO CREARLAREAD SEGUIREXIT

ENDIF &RETCOD = 400 THEN +

DOSET EOF = SIRETURNEND

ELSE +EXIT

ENDALLOC FI(ENTRADA) DA('&FICHERO') SHR REUSEISPEXEC TBCREATE JMPALO01 NOWRITE NAMES(ELEMENTO,COMENTA)

OPENFILE ENTRADA/* */

GETFILE ENTRADA/* SET LIBRERIA = &STR(&SUBSTR(1:45,&ENTRADA)) *//* */GETFILE ENTRADADO WHILE &EOF = NO

SET ELEMENTO = &STR(&SUBSTR(01:44,&ENTRADA))SET COMENTA = &STR(&SUBSTR(45:60,&ENTRADA))

/* */SET PASO = EXAMENSET EXISTE = SIISPEXEC TBEXIST JMPALO01IF &EXISTE = NO THEN ISPEXEC TBADD JMPALO01 SAVE(ELEMENTO,COMENTA)GETFILE ENTRADA

ENDCLOSFILE ENTRADAFREE FI(ENTRADA)ERROR OFFISPEXEC TBSCAN JMPALO01 ARGLIST(ELEMENTO) NEXTISPEXEC TBSORT JMPALO01 FIELDS(ELEMENTO,C,A)SET &SIGUE = SIDO WHILE &SIGUE = SI

ISPEXEC TBTOP JMPALO01ISPEXEC TBDISPL JMPALO01 PANEL(JMPALO02)IF &LASTCC = 8 THEN -

DOISPEXEC TBCLOSE JMPALO01EXIT

ENDSET &ELEMENTO = &ELEMENTOSET &LIBRERIA = &LIBRERIASET &FICHERO = &LIBRERIA.(&ELEMENTO.)IF &MARCA = b THEN -

DOISPEXEC BROWSE DATASET('&FICHERO')SET &COMENTA = 'VISUALIZADA'

ENDIF &MARCA = E THEN -

DOISPEXEC EDIT DATASET('&FICHERO')

Page 231: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 231/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 231 de 374

SET &COMENTA = 'EDITADA '

ENDIF &MARCA = M THEN -

DOEXEC 'DESJMP.CLIST.JMP(JMPLIB05)','&FICHERO'

ENDSET &MARCA = ' '

END

Page 232: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 232/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 232 de 374

Panel JMPALO02:

)ATTR default($+_)? TYPE(INPUT) INTENS(low) CAPS(off) JUST(LEFT)# TYPE(OUTPUT) INTENS(high) CAPS(ON) JUST(LEFT) pad(_)

)BODY$------------------------- Lista de librerías -------------------------$ OPCION====>_Zcmd +SCROLL ==> _scin+$+ Opciones :$B+Browse #cabecera ++ $E+Edit+ $M+Miembros+ m Librerías Observaciones+ - -------------------------------------------- ---------------)MODEL ROWS(ALL)

+ _z?elemento +?comenta +)INIT&SCIN= Csr.zvars = marca&marca = ' '

)END

Page 233: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 233/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 233 de 374

3.10.3 JMPLIB00 : capturar los miembros de una librería

/* <<<<<<<<<<<<<<<<<<<<<< JMPLIB00 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ====== CAPTURA LOS MIEMBROS DE UNA LIBRERIA ===================== */

PROC 0 TESTCONTROL MSGSET RC = 0SET LIBRERIA = &SYSUID..ISPEXEC DISPLAY PANEL(JMPLIB01) CURSOR(LIBRERIA)SET RC = &LASTCCIF &LIBRERIA = &STR() THEN EXITEXEC 'DESJMP.CLIST.JMP(JMPLIB05)','&LIBRERIA'

/* */

Page 234: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 234/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 234 de 374

3.10.4 JMPLIB05 :

/* <<<<<<<<<<<<<<<<<<<<<< JMPLIB05 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ====== CAPTURA LOS MIEMBROS DE UNA LIBRERIA ===================== *//* */

PROC 0 LIBRERIA TEST/* */

CONTROL NOLIST NOCONLISTSET &SYSOUTTRAP = 999LISTDS '&LIBRERIA' MEMBERSSET &SYSOUTTRAP = 0SET &NOMBRE = TABLASET &CONTA = 0SET &ULTIMO = &SYSOUTLINE

/* */

/* ============= MEMORIZAR SALIDA ============================= *//* */

IF &TEST = TEST THEN SET &ETIQUETA = EXIT1ELSE SET &ETIQUETA = LISTAR

/* */LOOP1: SET &CONTA = &CONTA + 1

IF &CONTA > &ULTIMO THEN GOTO &ETIQUETASET &NOMBRE&CONTA = &&SYSOUTLINE&CONTAGOTO LOOP1

/* */EXIT1: SET &CONTA = 0

WRITE NUMERO DE ELEMENTOS: &ULTIMO/* */LOOP2: SET &CONTA = &CONTA + 1

IF &CONTA > &ULTIMO THEN GOTO LISTARSET &SALIDA = &&NOMBRE&CONTAWRITE &SALIDAGOTO LOOP2

/* */LISTAR: IF &TEST = TEST THEN WRITENR LA SALIDA CONTIENE &ULTIMO LINEAS/* *//* ============= ESCRIBIR SALIDA EN FICHERO =================== *//* */

SET &FICHERO= &SYSUID..JMP.LISTDSIF &SYSDSN('&FICHERO') = OK THEN +

ALLOC FILE(SALIDA) DATASET('&FICHERO') OLD REUSE

ELSE ALLOC FILE(SALIDA) DATASET('&FICHERO') NEW CATALOG +UNIT(3380) RECFM(F B) LRECL(80) +BLKSIZE(6240) TRACKS SPACE(3 1) REUSE

OPENFILE SALIDA OUTPUTSET &SALIDA = 'LA SALIDA CONTIENE:'PUTFILE SALIDA

/* */

Page 235: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 235/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 235 de 374

SET &RC = 0

ERROR +DO

SET &RC = &LASTCCIF &RC = 400 THEN +

WRITE FIN NORMAL DE LA CLISTELSE +

DOWRITE INEXPERADO FIN DE CLISTWRITE RC ES &RCWRITE LINEAEXIT

ENDEND

/* */

SET &CONTA = 6GRABAR: SET &CONTA = &CONTA + 1

IF &CONTA > &ULTIMO THEN GOTO CERRARSET &LINEA = &&NOMBRE&CONTASET &SALIDA = &LINEAPUTFILE SALIDA

/* WRITE &SALIDA */GOTO GRABAR

CERRAR: CLOSFILE SALIDAFREE FILE(SALIDA)

/* *//* ============== DISPLAYA LA TABLA DE MIEMBROS ==================== *//* */

CONTROL MSGSET EOF = NOSET RETCOD = 0

/* */ERROR +

DOSET RETCOD = &LASTCCIF &RETCOD = 8 THEN +

DOWRITENR YA EXISTE LA TABLA jmplib01. NO PUEDO CREARLAREAD SEGUIREXIT

ENDIF &RETCOD = 400 THEN +

DOSET EOF = SIRETURNEND

ELSE +EXIT

END/* */

Page 236: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 236/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 236 de 374

ALLOC FI(ENTRADA) DA('&FICHERO') SHR

ISPEXEC TBCREATE JMPLIB01 NOWRITE NAMES(MIEMBRO)OPENFILE ENTRADAGETFILE ENTRADA/* */GETFILE ENTRADADO WHILE &EOF = NO

SET MIEMBRO = &STR(&SUBSTR(1:10,&ENTRADA))ISPEXEC TBADD JMPLIB01 SAVE(MIEMBRO)GETFILE ENTRADA

ENDCLOSFILE ENTRADAFREE FI(ENTRADA)/* -----------------------------------------------*//* PRESENTAR Y TRATAR LA TABLA */

/* -----------------------------------------------*/ERROR OFFISPEXEC TBSCAN JMPLIB01 ARGLIST(MIEMBRO) NEXTISPEXEC TBSORT JMPLIB01 FIELDS(MIEMBRO,C,A)SET &SIGUE = SIDO WHILE &SIGUE = SI

ISPEXEC TBTOP JMPLIB01ISPEXEC TBDISPL JMPLIB01 PANEL(JMPLIB02)IF &LASTCC = 8 THEN -

DOISPEXEC TBCLOSE JMPLIB01EXIT

ENDSET &MIEMBRO = &MIEMBROSET &LIBRERIA = &LIBRERIASET &FICHERO = &LIBRERIA.(&MIEMBRO.)IF &MARCA = B THEN -

DOISPEXEC BROWSE DATASET('&FICHERO')

ENDIF &MARCA = E THEN -

DOISPEXEC EDIT DATASET('&FICHERO')

ENDIF &MARCA = P THEN -

DOEXEC 'DESJMP.CLIST(IMPRIMIR)','&fichero'

ENDSET &MARCA = ' '

END

Page 237: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 237/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 237 de 374

Panel JMPLIB01:

)ATTR default($+_)? TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) PAD('_')

)BODY$----------------- Listar miembros de un directorio (PDS) -------------$ OPCION ===> _Zcmd+ +$$$+ Librería ........ : ?librería +$++

+ Esta opción lista los miembros de un fichero particionado+ dejando la salida en$&zuser..jmp.listds++$$$)INIT)PROCVER (&librería,dsname)&ZSEL = TRANS( TRUNC (&ZCMD,'.')

x,'exit'' ',' '*,'?' )

)END

Page 238: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 238/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 238 de 374

Panel JMPLIB02:

)ATTR default($+_)? TYPE(INPUT) INTENS(low) CAPS(ON) JUST(LEFT)# TYPE(OUTPUT) INTENS(high) CAPS(ON) JUST(LEFT) pad(_)

)BODY$----------------- Listado de miembros de un PDS -----------------------$ OPCION====>_Zcmd + $SCROLL == > _scin+$+ Librería ........ :#librería comandos $B+Browse $E+Edit $P+Imprimir$$ Miembros Mensaje+ * ******** ***********************************)MODEL ROWS(ALL)+ _z?miembro +#mensaje +

)INIT&SCIN= Csr.zvars = marca.cursor = marca&marca = ' '

)END

Page 239: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 239/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 239 de 374

3.10.5 LISTAR : Listar por impresora, con IEBGENER un fichero

/* <<<<<<<<<<<<<<<<<<<<<<< LISTAR >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */* */* ====== LISTAR FICHERO POR RMT101 EN VERTICAL Y LETRA PEQUE#A ==== */* *

PROC 9 FICHERO +FORMATO +REMOTO +CLASE +CABECERA +DERECHA +IZQUIERDA +PIE +LRCL

/* *SET &LABEL=LEERSET &TEST = TESTNOIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* ----------------------------------------------------------------- *

IF &LRCL = 0 THEN SET LRCL = 80/* */* */* ---------------------------------- EXAMINAR FORMATO/* *

IF '&FORMATO' = 'V' THEN GOTO VERTICAL/* */* ========================= PONER HORIZONTAL ====================== */* *HORIZONTAL: +

ALLOC FILE(SYSUT1) DATASET('DESJMP.JMP.JCL(HORIZONT)') SHR REUSEALLOC FILE(SYSUT2) DATASET('&SYSUID..JMP.TMP') OLD REUSEOPENFILE SYSUT1 INPUTOPENFILE SYSUT2 OUTPUTGETFILE SYSUT1SET &SYSUT2 = &SYSUT1PUTFILE SYSUT2CLOSFILE SYSUT1CLOSFILE SYSUT2FREE FILE(SYSUT1 SYSUT2)GOTO SEGUIR

/* *

Page 240: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 240/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 240 de 374

/* ========================= PONER VERTICAL ======================== *

/* *VERTICAL: +

ALLOC FILE(SYSUT1) DATASET('DESJMP.JMP.JCL(VERTICAL)') SHR REUSEALLOC FILE(SYSUT2) DATASET('&SYSUID..JMP.TMP') OLD REUSEOPENFILE SYSUT1 INPUTOPENFILE SYSUT2 OUTPUTGETFILE SYSUT1SET &SYSUT2 = &SYSUT1PUTFILE SYSUT2CLOSFILE SYSUT1CLOSFILE SYSUT2FREE FILE(SYSUT1 SYSUT2)

/* */* ========================= ESCRIBIR FORMATO ====================== *

/* *SEGUIR: +

FREE DA('&SYSUID..JMP.TMP')ALLOC FILE(SALIDA) DATASET('&SYSUID..JMP.TMP') MOD REUSEOPENFILE SALIDA OUTPUT

/* */* ========================= ESCRIBIR FICHERO ====================== */* *

ALLOC F(ENTRADA) REUSE DA('&FICHERO') SHRIF &LASTCC NE 0 THEN DO

WRITE ERROR EN LA ALOCACION DEL FICHERO DE ENTRADA &FICHEROFREE DA('&FICHERO')EXIT

ENDOPENFILE ENTRADA INPUTSET &RC = 0/* --------------------- RUTINA DE ERROR ------------------------ *

ERROR +DO

SET &RC = &LASTCCIF &RC = 400 THEN +

GOTO FINPASO1ELSE +

DOWRITE INESPERADO FIN DE CLIST : RETURN CODE = &RCWRITE ===========================================EXIT

ENDEND

/* =======================================================SET &BLANCOS = &STR( )SET &SALIDA = &STR(&BLANCOS &BLANCOS FICHERO: &FICHERO )PUTFILE SALIDASET &SALIDA = &BLANCOSPUTFILE SALIDAPUTFILE SALIDALEER: GETFILE ENTRADAIF &LASTCC NE 400 THEN +

DOSET &SALIDA = &STR(&BLANCOS &SUBSTR(1:&LRCL,&ENTRADA))PUTFILE SALIDA

Page 241: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 241/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 241 de 374

GOTO &LABEL

ENDFINPASO1: +CLOSFILE ENTRADACLOSFILE SALIDAFREE FILE(ENTRADA SALIDA)

/* */* ========================= IMPRMIR TEMPORAL ====================== */* *

ALLOC FILE(SYSUT1) DATASET('&SYSUID..JMP.TMP') SHR REUSEALLOC FILE(SYSUT2) SYSOUT(&CLASE) DEST(&REMOTO) REUSEALLOC FILE(SYSPRINT) DUMMY REUSEALLOC FILE(SYSIN) DUMMY REUSECALL 'SYS1.LINKLIB(IEBGENER)'FREE FILE(SYSUT1 SYSUT2 SYSPRINT SYSIN)

/* *WRITE =====>> FICHERO : &FICHERO IMPRESO POR RMT101 : < OK >

Page 242: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 242/373

TSO para desarrolladores: CLIST Autor: José M. Peco

Página 242 de 374

3.10.6 NAT 

/* <<<<<<<<<<<<<<<<<<<<<< LNAT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ====== LISTA OBJETO POR RMT101 EN VERTICAL Y LETRA PEQUE#A ====== */PROC 2 OBJETO LIBRERIA/* CONTROL LIST CONLIST */EDIT 'DESJMP.JMP.JCLTIPO(INT0051J)' OLD CNTL NONUMC * 999 'YYYYYYYY' '&OBJETO' ALLTOPC * 999 'ZZZZZZZZ' '&LIBRERIA' ALLSUBMITEND NOSAVE

DESJMP.JMP.JCLTIPO(INT0051J):

//XXXXXXLP JOB (123,456),'JMP-PRU',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(0,0)//*=====================================================================//* PASAR OBJETO NATURAL A FICHERO TEMPORAL//*=====================================================================//*//NATBATCH EXEC DNATURAL//*//DDPRINT DD DUMMY SYSOUT=*//CMPRINT DD DUMMY SYSOUT=*//*MPRT01 DD SYSOUT=I,DEST=RMT101,COPIES=1,OUTPUT=*.OUT1//OUT1 OUTPUT CHARS=GTE2,PAGEDEF=388STU,FORMDEF=STDA//CMPRT01 DD DSN=DESJMP.JMP.TMP,DISP=OLD//CMSYNIN DD DSN=DESJMP.JMP.JCL(LOGONPGM),DISP=SHR//************************************************************// DD *JMP0001PZZZZZZZZYYYYYYYYFIN/*//*=====================================================================

Page 243: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 243/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 243 de 374

Tema 4 : Diálogos ISPF 

4.1 Generalidades 

Un dialogo ISPF esta formado por la adecuada combinación de los distintoscomponentes que pueden intervenir en el mismo.

Estos componentes son:

- Paneles- Funciones- Mensajes- Tablas- Esqueletos- Tutorial

Este tema tratara de ampliar cada uno de los componentes citados acompañandocada explicación con un ejemplo aclaratorio.

Panel: Un panel es la definición de una pantalla completa tal y como lavera el usuario, pudiendo ir acompañada de procesos elementales.

En función de la finalidad del panel, se pueden considerar 4tipos distintos:

- Menu- Entrada de datos- Visualizador de datos- Pantallas de HELP

Como norma general, se debe tener en cuenta que los panelesdiferencian entre mayúsculas y minúsculas los valores que seasignen a las variables, si bien, a la hora de su codificación,se pueden escribir con mayúsculas o minúsculas, ya internamentesus especificaciones son interpretadas como mayúsculas.

Panel MENU o panel de Selección

Este tipo de panel presenta al usuario las distintas opciones quepuede elegir desde dicho panel.

La opción elegida por el usuario se recoge en una variable, y enbase a este valor se ejecutara el siguiente paso del dialogo,pudiendo ser este:

- Otro panel- Un comando- Un programa

Page 244: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 244/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 244 de 374

Panel de Entrada de datos 

Este tipo de panel pide los datos necesarios para la ejecución deuna función; o visualiza el contenido de determinadas variablespreviamente cargadas, como por ejemplo el resultado de unafunción, etc.; o una mezcla de ambas.

Panel para visualizar datos 

Este tipo de pantalla representa una particularizacion del tipoanterior, necesitando para su ejecución un proceso repetitivo,pues se utiliza para visualizar el contenido de ficheros dedatos.

La definición de este panel consiste en definir el proceso de unafila genérica. Posteriormente, en tiempo de ejecución, ISPF seencargara de procesar el fichero completo en base a la definiciónrealizada.

Panel de HELP 

Este tipo de Panel solo contiene texto, pues como su nombreindica, representan la explicación que el desarrollador hapreparado para que el usuario pueda seguir un dialogo ISPF sinproblemas.

En ISPF se dispone del comando PANELID que permite visualizar enel ángulo superior izquierdo el nombre del miembro que contieneel panel que esta en pantalla.

Función 

Se entiende por Función un procedimiento escrito en cualquierlenguaje y que tiene por finalidad proporcionar una salida en

base a determinados parámetros de entrada pasados como argumentosen el momento de llamar a la misma.

Un ejemplo de función podría ser el escribir en un fichero losnombres de las distintas librerías alocadas para su posteriortratamiento.

Page 245: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 245/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 245 de 374

 Mensajes 

Es la forma diseñada por ISPF para poder informar al usuario a lolargo del dialogo del resultado de determinadas acciones o deciertas validaciones.

Existen dos tipos de mensajes en un dialogo:

- Mensajes cortos- Mensajes largos

ISPF dispone de forma predeterminada del ángulo superior derechode la pantalla para la presentación de los mensajes cortos, y dela tercera línea de la pantalla para la presentación de losmensajes largos.

Page 246: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 246/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 246 de 374

Tablas 

Las tablas son matrices de datos de dos dimensiones, y enconsecuencia son el equivalente de los ficheros de datos, ya querepresentan:

Campo 1 ... Campo n

Fila 1

...

Fila m

Una característica importante de las tablas ISPF es que para serprocesadas deben residir en memoria, lo cual puede afectar altamaño de la tabla, ya que si esta reside en disco, debe sercargada previamente en memoria.

Esqueletos 

Se entiende por esqueleto un fichero preformateado con la salidadeseada, en el cual se han sustituido los valores variables pornombres de variables precedidos por un &.

Posteriormente, este fichero será procesado para generar la

salida deseada, y será en este proceso, llamado 'FILE TAILORING'en el que se sustituirán las variables por los valorescorrespondientes.

Tutorial 

Es la manera prevista en un dialogo para poder informar alusuario de las acciones que se ejecutaran cuando se elija cadauna de las opciones de un menu, o de los datos, formato, etc quese deben aportar para ejecutar una determinada acción.

Este dialogo se disparará automáticamente al pulsar la tecla

asociada al HELP, que normalmente será la PF1.

Page 247: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 247/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 247 de 374

4.2 Variables 

Una variable es una dirección de memoria simbólica, pero para evitarreferenciar direcciones por el peligro que esto entraña, utilizamos nombresasociados a estas direcciones.

La nomenclatura seguida para designar estas variables sigue las reglasgenerales, es decir de 1 a 8 caracteres alfanuméricos, siendoobligatoriamente el primero alfabético.

En ISPF podemos considerar tres tipos de variables:

del sistema Sus nombres están predeterminados por el sistema ycomienzan por "Z".

de usuario Sus nombres son elegidos por el desarrollador a fin de

que tengan un significado apropiado al contenido querepresenta.

de control Son variables de propósito especial y comienzan por "."

4.2.1 Variables del sistema

Como se ha dicho anteriormente, estas variables son de uso general.

La lista completa se muestra en el anexo correspondiente, no obstante, acontinuación se listan las de uso mas común, con indicación del contenidoque representan.

ZDATE Contiene la fecha en formato yy/mm/dd

ZTIME Contiene la hora en formato HH.MMZTERM Contiene el tipo de terminalZPFnn Contiene el conjunto de PFsZCMD Contiene el comando de entradaZSEL Cadena de selección desde el panel de selecciónZPRIM Flag de panel como opción primaria de menu.ZERRMSG Identificación del mensaje de errorZPARENT Nombre del panel de selección del primer nivel.

------- VARIABLES ESPECIALES DE LOS PANELES DEL TUTORIAL

ZHTOP Nombre del panel raíz del tutorial.ZCONT Nombre del panel de continuación del tutorial.ZUP Nombre del panel de nivel superior al actual.ZHINDEX Nombre del panel tutorial índice.ZIND Indicador para panel índice.

Page 248: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 248/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 248 de 374

La descripción de las variables mas usadas se muestra a continuación:

ZCMD

En esta variable del sistema se recoge el valor de la selección hechapor el usuario final, pero también puede contener cualquier comando,figure o no como opción en el panel de selección o menu. Este caso sepuede dar, por ejemplo, cuando se desea ejecutar un comando de TSO.

ISPF permite navegar directamente por los menús cuando se conocen lasdistintas opciones que marcan el camino. Esto se consigue separando laopción elegida de cada nivel por un punto ".".

Por esta razón, lo unico que debemos hacer es obtener la primera partede esta variable para saber cual es la primera opción elegida. Esto sehace con la función TRUNC, tal y como se muestra en el siguiente

ejemplo:

&ZSEL = TRUNC(TRANS(&ZCMD,'.') 1,'...'2,'...'*,'?')

El propio servicio ISPF SELECT se encargara de efectuar de formaautomática la navegación, colocando la parte truncada del comando enla variable ZCMD del siguiente panel de selección.

Otra utilidad disponible en ISPF es el uso del símbolo "=" paraindicar que las opciones elegidas deben realizarse desde el menú raíz,es decir desde el panel que tenga codificado ZPRIM=YES.

El siguiente ejemplo muestra un fragmento de un panel de selección, omenú, en el que se puede apreciar lo comentado con respecto a estavariable.

Page 249: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 249/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 249 de 374

)BODY%-------------------- Menú Principal de JMP ----------------------

%OPCION ===>~ZCMD +%% 1 +Librerías del entorno% 2 +Editar fichero +% 3 +Imprimir fichero con margen +

...% +% X +EXIT - SALIR DEL MENU)INIT&ZPRIM = YES&ZHTOP = JMPH000.HELP = JMPH100

&ZHINDEX = JMPH999)PROC

&ZSEL = TRANS(TRUNC(&ZCMD,'.')1,'CMD(EX ''Jmpdes.CLIST.INT(ENTORNO)'')'2,'PANEL(ISREDM01) NEWAPPL(JMP) '3,'CMD(EX ''Jmpdes.CLIST(PRT)'')'

...X,'EXIT'

' ',' '*,'?' )

)END

Page 250: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 250/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 250 de 374

ZSEL 

Esta variable contiene siempre una cadena especificando el comando,panel o programa que se debe ejecutar.

Debe encontrarse en los paneles de datos y de visualización de tablaspara indicar al sistema qué es lo siguiente que se debe ejecutar.

Solo es ejecutable desde un panel, ya sea de datos o de visualizaciónde tablas, debiendo ser invocado mediante el servicio DISPLAY oTBDISPL en una función.

Ejemplo: ISPEXEC DISPLAY PANEL(panelxxx)

El valor asignado a esta variable siempre tiene que ajustarse a uno delos siguientes formatos:

'CMD(comando [parámetros]) [LANG(APL)] +[NOCHECK] +[opciones_aplicacion]'

'PANEL(nombre_panel) [OPT(opción)[opciones_aplicacion]]'

'PGM(programa) [PARM(parámetros)][NOCHECK][opciones_aplicacion]'

'EXIT'

donde [opciones_aplicacion] puede ser:

NEWPOOL Esta opción especifica que se desea comenzar un nuevo poolde variables para los niveles que se inician en el panelllamado.

Cuando se regrese al panel desde el que se hace estallamada, es decir, cuando se regrese a este panel, serecuperan los valores del pool actual.

En ISPF existen 3 tipos de POOL de variables:

- de aplicacion- SHARED o compartido- Profile

Page 251: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 251/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 251 de 374

NEWAPPL [ [(id_aplicacion)] [PASSLIB] ]

Este parámetro permite indicar a ISPF que comienza unanueva aplicacion, cuyo nombre se especifica conid_aplicacion. Esto normalmente conlleva el uso de nuevospools de variables, perfiles y tablas de comandos.

Este parámetro por tanto esta especificando que se usen losmiembros de la librería PROFILE que tienen por nombre:

Perfil de la aplicacion xxxxPROF

Perfil de edición xxxxEDIT

Tabla de comandos xxxxCMDS

donde xxxx es el id_aplicacion. Si no se especificarael prefijo id_aplicacion, por defecto asumirá el valor"ISP" .

Con PASSLIB se puede especificar si se desea pasar a lanueva aplicacion las librerías que se encuentran alocadasen la aplicacion actual.

Parámetros de CMD:

LANG(APL) Con este parámetro se indica a ISPF que seinicia un entorno realizado con APL2 (lenguajede comandos)

NOCHECK Este parámetro indica a ISPF que si el caminomarcado en ZCMD no es correcto, que ignore elerror.

Parámetros de PANEL:

OPT(opción) Con este parámetro indicamos a ISPF que elija laopción especificada del nuevo panel deselección.Es equivalente a la concatenacion de opcionesvista al tratar la variable ZCMD.

Parámetros de PGM  

PARM( ... ) permite pasar valores de parámetros a unprograma.

NOCHECK Este parámetro indica a ISPF que si el caminomarcado en ZCMD no es correcto, que ignore elerror.

Page 252: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 252/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 252 de 374

Es de resaltar el hecho de que los parámetros se pasan de forma

distinta a un comando y a un programa.

Por ultimo, si se elige la cadena EXIT, simplemente ISPF retorna alpanel previo.

Ejemplo:

&opción = TRUNC(&ZCMD,'.')&resto = .TRAIL&ZSEL = TRANS(&opción 1,'PGM(programa) PARM(&resto.)' +

2,'CMD(EX JMPPRTDS &fichero)' +3,'PANEL(jmptab00) NEWAPPL(jmp)' +4,'CMD(LISTA)'X,'EXIT'

' ',' '*,'?' )

En este ejemplo, si la opción elegida es :

1 se ejecuta el programa especificado y se pasa como parámetro elresto de la variables ZCMD una vez truncada.

2 Se ejecuta el procedimiento "alias.jmpprtds.clist" y se pasa comoparámetro a dicho procedimiento el nombre del fichero a listar.

3 En este caso se elige el panel jmptab00, y se comienza una nuevaaplicacion, denominada jmp.

4 Esta opción especifica que se ejecute el comando de TSO LISTA, afin de obtener en pantalla una relación de todas las libreríasalocadas.

x Esta opción especifica que se desea retornar al menú anterior.

' ' Esta opción especifica que si pulsa INTRO sin haber elegidoninguna opción, se mantenga en el mismo panel sin que sevisualice ningún mensaje.

* Si la opción elegida no es ninguna de las anteriores, entonces elvalor devuelto a ZSEL es una interrogación, lo cual provoca quese visualice el mensaje de OPCION INVALIDA.

Page 253: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 253/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 253 de 374

ZPRIM  

Esta variable simplemente sirve para especificar que el menú que lacontenga será considerado como panel raíz.

Es de resaltar el hecho de que en ISPF se mantiene una estructura enforma de árbol invertido. Por lo tanto, esta variable especificaaquellos nudos raíces que nos permiten recorrer cada una de las ramasprincipales.

El formato de esta variable es &ZPRIM = YES

El uso habitual de esta variable esta relacionado con el comandoRETURN.

En ISPF, cuando se esta en un nivel bajo de panel, escribiendo END o

EXIT, se retorna al menú de nivel inmediatamente superior, peroescribiendo RETURN se regresa al menú raíz. Este regreso a veces puedeser problematico, ya que cuando se esta en un nivel bajo de unaaplicacion, y se ejecuta el comando RETURN, se sale de los distintospools compartidos cerrándolos sin salvarlos previamente, por lo que elusuario podría perder parte de su trabajo.

Este problema se resuelve codificando raíces intermedias mediante lavariable ZPRIM.

El siguiente ejemplo es un fragmento de un panel de selección o menú,concretamente la sección INIT, en el que se muestra la codificación deesta variable, mediante la cual se hace panel raíz a este panel.

)INIT&ZPRIM = YES&ZHTOP = JMPH000.HELP = JMPH100&ZHINDEX = JMPH999&USUARIO = &ZUSERIF (&ZUSER = DESJMP , DESMGO )

&OPCIONES = 'ES PS UN HH UU U0 JJ J M T U N A '

en dicha sección:

- Se hace a este panel raíz o principal- se define el panel JMPH100 como panel de help asociado a este- se define el panel JMPH999 como panel índice del help- se define el panel JMPH000 como panel raíz del help asociado- se carga la variable de usuario USUARIO con el contenido de lavariable del sistema ZUSER

- Si el usuario es Jmpdes o TEST33 se carga la variable OPCIONES conla cadena representada.

Page 254: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 254/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 254 de 374

ZPARENT 

Normalmente en ISPF el usuario va navegando por los distintos panelesen función de la jerarquía que representan las distintas opciones delos mismos.

Esta jerarquía puede variarse usando esta variable.

Su formato es : &ZPARENT = id_panel

Es decir, se puede llegar al panel que contenga esta variable porcualquier camino, pero al ejecutar EXIT, no se retornara al panelprevio, sino al especificado por esta variable.

Page 255: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 255/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 255 de 374

4.2.2 Variables de Usuario 

Sus nombres son elegidos por el desarrollador a fin de que tengan unsignificado apropiado al contenido que representa.

El siguiente ejemplo muestra un panel que pide la cadena a buscar y elnombre de la librería en la que buscar dicha cadena, cargando lasvariables de usuario CADENA y LIBRERIA

)ATTR DEFAULT(%@!)| TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(RIGHT) PAD(' '){ TYPE(input) iNTENS(high) CAPS(On) just(left) pad('_')} TYPE(TEXT) INTENS(LOW) CAPS(OFF)

)BODY%JMP-94@------------%Buscar una palabra en una librería@--------------@%OPCION ===>!ZCMD

@@%@ Cadena a buscar: {cadena @@ Librería ......: {librería @%@@ Esta utilidad%submite@un proceso que se dedica a@ buscar la cadena especificada entre los miembros@ la librería indicada.@@ El%resultado@le deja en la cola de salida con el@ nombre:%&Zuser@y el sufijo%ST@

@@)INITvget (zdldsnlv) profile&librería = &zdldsnlv)PROCver(&librería,dsname)&Zcmd = '99'&zdldsnlv = &libreríavput (zdldsnlv) profileif (&librería = all,'') &Zcmd = 'X'if (&cadena = all,'') &Zcmd = 'X'&ZSEL = TRANS(TRUNC(&ZCMD,'.')

99,'CMD(EX ''DESJMP.CLIST.MGO(SCANTSOC)'' ''&CADENA.,&LIBRERIA.'')'X,'EXIT'

' ',' '*,'?' )

)END

Page 256: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 256/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 256 de 374

a fin de tener el ejemplo completo se acompañan la clist y el JCLasociados.

clist: 'DESJMP.CLIST.MGO(SCANTSOC)'

/* <<<<<<<<<<<<<<<<<<<<<< SCANTSOC >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ====== BUSCA UNA CADENA EN LOS MIEMBROS QUE SE ESPECIFIQUEN ==== */

PROC 2 CADENA LIBRERIA/* */

EDIT 'Jmpdes.JMP.JCLTIPO(SCANTSOC)' OLD CNTL NONUMC * 999 'LLLLLLLL' '&LIBRERIA' ALLC * 999 'CCCCCCCC' '&CADENA' ALL

/* LIST */SUBMIT

END NOSAVEEXIT

jcl: 'Jmpdes.JMP.JCLTIPO(SCANTSOC)'

//XXXXXXBT JOB (123,456),'JMP-PRU-4',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1)//*****************************************************************//* BUSCAR CADENA EN DIRECTORIO//*****************************************************************//BUSCAR EXEC PGM=ISRSUPC,PARM=(SRCHCMP,'ANYC')

//NEWDD DD DISP=SHR,DSN=LLLLLLLL//OUTDD DD SYSOUT=X//SYSIN DD *SRCHFOR 'CCCCCCCC'

/*

Page 257: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 257/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 257 de 374

4.2.3 Variables de control

Son variables que sirven para controlar determinadas funciones en unpanel.

La lista completa de estas variables es :

.ALARM = { YES | NO }

.ATTR(&variable | .cursor) = 'nombre_attr(valor)'

.ATTRCHAR (carácter) = 'nombre_attr(valor)'

.AUTOSEL = { YES | NO }

.CURSOR = nombre_variable

.CSRPOS = { nn | &variable }

.CSRROW = { nn | &variable }

.HELP = id_panel

.MSG = id_mensaje

.PFKEY

.RESP

.TRAIL

.ZVARS

Siendo su significado el siguiente:

.ALARM Define si se activa o no la alarma del terminal.

.ATTR Permite cambiar el atributo de un campo en un panel, comopor ejemplo pasar un campo a protegido.

.ATTRCHAR Esta variable es parecida a la anterior, con la diferenciade que en este caso, cambia el atributo asociado a uncarácter. Ejemplo, en lugar de proteger todos los campos deentrada de un panel, se cambia el atributo asociado alcarácter en el sentido de decir que tal carácter que antesera de entrada ahora es de salida, con lo que los datos delos campos que antes eran de entrada, ahora quedanprotegidos.

Page 258: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 258/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 258 de 374

.AUTOSEL esta variable solo puede ser usada en los paneles devisualización de tablas, y controla que se haya seleccionado

una fila.

.CURSOR Controla el posicionamiento del cursor en la variable que seespecifique.

.CSRPOS Controla el posicionamiento del cursor dentro de unavariable del panel.

.CSRROW Esta variable solo puede ser usada en los paneles devisualización de tablas, y controla la ubicación del cursoren una fila determinada.

.HELP Esta variable contiene el nombre del panel de HELP asociadoa la función de ayuda.

.MSG Esta variable contiene el identificador del mensaje que sevisualizara en la pantalla.

.PFKEY Esta variable contiene el valor de la ultima PF pulsada.Ejemplo: If (.PFKEY = PF10 ) ...

.RESP Identifica el tipo de respuesta dado por el usuario (END oRETURN)

.TRAIL Esta variable contiene el resto de la ultima función detruncamiento realizada.

Así, por ejemplo:

&alfa = '123.456'&entero = trunc(&alfa,'.') resulta : &entero = 123&decimal = .TRAIL resulta : &decimal = 456

.ZVARS Establece la correlación entre las variables Z con su nombrelargo.

Como ya se vera al tratar la definición del panel, lalongitud de una variable viene definida por el delimitadorque se establezca. Pero si la variable tiene que tener unalongitud de 1 carácter, y con objeto de dar a las variablesde usuario nombres con significado, en la definición delpanel se define, en ese caso, como "Z", y en la seccióninicial se establece la correlación entre las variables z,ya que puede haber varias, con sus nombres largos, deacuerdo con el siguiente formato:

.ZVARS = '(variable1, variable2, ... )'

Page 259: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 259/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 259 de 374

El siguiente ejemplo muestra el panel JMPINT58 el cual haceuso de este tipo de variables, ya que las variables que

recogen los valores de TIPO ABSOLUTO y TIPO DE OBJETO en losque buscar, representan variables de 1 posición.

)ATTR DEFAULT(%@!)| TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(RIGHT) PAD(' '){ TYPE(input) iNTENS(high) CAPS(On) just(left) pad('_')} TYPE(TEXT) INTENS(LOW) CAPS(OFF)

)BODY%JMP-94@-----------%Buscar una palabra en una libreria@--------------@%OPCION ===>!ZCMD@@ Libreria ......... : {libreria@@ Máscara de fuentes : {máscara @@ Cadena a buscar .. : {cadena @

@ Reemplazar por ... : {newval @@ Valor absoluto ... : {Z@ (Y,N) (%Y@indica no buscar palabra completa)@ Tipo de Objetos .. : {Z@ (A,G,L,P,N,S,M,H,C,T,R,*)%@@ Esta utilidad%submite@un proceso que se dedica a@ buscar la cadena especificada entre los miembros@ de la libreria de NATURAL cuyo nombre se ajuste@ a la máscara especificada.@@ El%resultado@le deja en la cola de salida con el@ nombre:%&Zuser@y el sufijo%SN@@

)INIT.Zvars = '(completo,tipo)'&libreria= 'INTNAL-D'&cadena = ' '&newval = ' '&tipo = '*'&completo= 'Y')PROCver (&tipo, nb, list P,N,S,M,H,A,G,L,C,T,R,*)ver (&completo, nb, list Y,N)&Zcmd = '99'if (&libreria = all,'') &Zcmd = 'X'if (&máscara = all,'') &Zcmd = 'X'if (&cadena = all,'') &Zcmd = 'X'&ZSEL = TRANS(TRUNC(&ZCMD,'.')

99,'CMD(EX ''DESJMP.CLIST.MGO(SCANNATC)'' +''&cadena.,&libreria.,&máscara.,&completo.,&tipo.,&newval.'')'

X,'EXIT'' ',' '*,'?' )

)END

Page 260: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 260/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 260 de 374

La particularidad de este panel se centra no solo en las variables "Z"sino también en cómo siendo un panel de entrada de datos es tratado como

un panel de selección con el uso de la variable &ZSEL.

clist: DESJMP.CLIST.MGO(SCANNATC)

/* <<<<<<<<<<<<<<<<<<<<<< SCANNATC >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ====== BUSCA UNA CADENA EN LA LIBRERIA QUE SE ESPECIFIQUE ==== */

PROC 5 CADENA LIBRERIA MASCARA COMPLETO TIPO NEWVAL/*

SET &TEST = NOTESTIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL MSG/* ----------------------------------------------------------------- *//* */

EDIT 'Jmpdes.JMP.JCLTIPO(SCANNATP)' OLD CNTL NONUM

C * 999 'CCCCCCCC' '&CADENA' ALLC * 999 'LLLLLLLL' '&LIBRERIA' ALLC * 999 'MMMMMMMM' '&MASCARA' ALLC * 999 'TTTTTTTT' '&TIPO' ALLC * 999 'OOOOOOOO' '&COMPLETO' ALLC * 999 'NNNNNNNN' '&NEWVAL' ALL

/* LIST */SUBMITEND NOSAVEEXIT

/* ----------------------------------------------------------------- */

jcl: JMPDES.JMP.JCLTIPO(SCANNATP)

//XXXXXXSN JOB (123,456),'JMP-PRU-4',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(0,0)//* ------------------------------------------------------------------//* BUSCAR EN LIBRERIA NATURAL UNA CADENA JCL-CLIST//* ------------------------------------------------------------------//NATBATCH EXEC DNATURAL,PARM='IM=D,MT=0,INTENS=1'//DDCARD DD DSN=PRU.DES.OPTION(RUNUSERM),DISP=SHR// DD DSN=PRU.DES.OPTION(RUNTIME),DISP=SHR//CMPRINT DD SYSOUT=W,DEST=RMT101//CMSYNIN DD *INTNAL-D/BATCH/BATCHSCANS/CCCCCCCC/NNNNNNNN/LLLLLLLL/MMMMMMMM/TTTTTTTT/OOOOOOOO/NFIN/*

Page 261: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 261/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 261 de 374

4.3 Sentencias 

Los paneles de ISPF, mediante las sentencias que se explican a continuación,permiten, en si mismos, ejecutar una lógica sencilla, aunque no por elloincompleta, lo cual simplifica la programación del dialogo.

También permiten comentar la lógica asociada encerrando los comentariosentre las cadenas '/*' para indicar el comienzo y '*/' para el final .Ejemplo: /* ------- comentario ---------- */

Atendiendo a su finalidad, podemos agrupar las sentencias de los paneles deISPF en los siguientes grupos:

- Sentencias de asignación- Sentencias de verificación- Sentencia IF

- Sentencia VGET- Sentencia VPUT- Sentencia Referesh

4.3.1 Sentencias de asignación 

Esta sentencia permite asignar valores a variables.

Su formato es:

&Nombre_variable = valor

donde "valor" puede ser :

- un numero 123- una cadena de caracteres 'ABC'- el contenido de otra variable &fichero- el resultado de una función TRANS(&código s,si n,no)

Es de resaltar el hecho de que cuando una cadena contenga apóstrofes, secodificaran dos apóstrofes por cada apóstrofe de la cadena.

Page 262: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 262/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 262 de 374

4.3.2 Sentencias de verificación 

Estas sentencias se usan para realizar de forma sencilla y rápidavalidaciones sobre el contenido de las variables.

Su formato es:

VER ( &variable [NONBLANK | NB ] +palabra_clave +[valores] +[MSG=id-mensaje] )

donde palabra_clave representa:

ALPHA valores alfabéticos (A-Z,a-z,@,#,$)

NUM valores numéricos (0-9)

HEX Valores hexadecimales (0-9,A-F,a-f)

BIT valores binarios (0,1)

NAME Valida que sigue las reglas generalespara el nombre de variables y objetos(primer carácter alfabético y el restohasta 8 alfanuméricos)

DSNAME Valida que sigue las reglas generalespara la designación de

datasets.(Nombres de hasta ochocaracteres concatenados con puntos conuna longitud total de hasta 44posiciones)

FILEID

RANGE chequea que el valor de la variable desde,hastaesta contenido en el rangoespecificado.El numero puede tener un máximo de 16dígitos.

LIST Chequea que el valor de la variable es val1,val2,...uno de la lista especificada.

Page 263: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 263/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 263 de 374

PICT Chequea el valor de la variable con la 'cadena'máscara representada por la cadena

dada.La cadena estará formada por lossiguientes caracteres:c = carácterA = alfabéticoN | 9 = numéricoX = HexadecimalCualquier otro carácter distinto aestos se chequeara por igual.

Cada uno de los parámetros puede ir separado por comas o blancos

El parámetro NONBLANK o NB significa que el campo es obligatorio.

En caso de que la verificación no la superara, se visualiza un mensaje deerror genérico y el cursor se sitúa en la variable examinada. Y, si seespecificara el parámetro MSG se visualizara el mensaje correspondienteen lugar del genérico.

Ejemplos:

VER (&job, NB, NAME)VER (&libreria, DSNAME)VER (&fecha, PICT '99-99-9999')VER (&lregis, range 0,254 MSG=jmpcad00)VER (&estado LIST s,c,v,d)

El siguiente ejemplo se corresponde con la sección PROC del Panel

JMPINT51 diseñado para pedir una cadena y una libreria de NATURAL, ypasar esos datos a una clist para listar todos los objetos NATURAL cuyonombre se ajuste a la máscara especificada.

Como la utilidad que se desea ejecutar admite el '*' como comodín paralistar varios objetos con la misma raíz, y en el caso de especificar unaraíz muy corta puede provocar un listado demasiado grande, esteprocedimiento lo que hace es truncar la cadena con los 5 primeroscaracteres cargando la variable PREFIJO, y luego examinar si dichavariable sigue las reglas de la nomenclatura. En el caso de quecontuviera un carácter especial, como por ejemplo un '*' daría un errordiciendo que no es un nombre valido.

Page 264: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 264/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 264 de 374

)PROC&Zcmd = '99'

if (&libreria = all,'') &Zcmd = 'X'if (&objeto = all,'') &Zcmd = 'X'/* verificar longitud del nombre del objeto */&prefijo = TRUNC(&objeto,5)VER(&prefijo,NAME)&ZSEL = TRANS(TRUNC(&ZCMD,'.')

99,'CMD(EX''DESJMP.CLIST.MGO(FAGLNAT)'' +''&objeto.,&libreria.'')'

X,'EXIT'' ',' '*,'?' )

)END

Page 265: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 265/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 265 de 374

4.3.3 Sentencia IF 

ISPF permite que los paneles puedan procesar una lógica sencilla, dejandoque los problemas complejos sean resueltos por la programación de lafunción o del procedimiento. Esta sentencia es la que permite controlarla lógica condicional en los paneles.

Su formato es:

IF ( ope1 operador ope2 [,ope3 ...]) sentencia

donde :

Ope1, ope2, ope3 son los operandos ; yoperador es = o Ø=

Nota: Dependiendo del terminal el símbolo ^ equivale a Ø

Esta sentencia tiene las siguientes particularidades:

- Solo se permite el chequeo por igual o por no igual.- No se permite la opcion ELSE

Por lo que se refiere a asociar un grupo de sentencias a una ciertacondición, hay que especificar que la agrupación se implementa mediantela indentacion de las sentencias con respecto a la sentencia IF.

El siguiente ejemplo aclarara este punto:

1 IF (&var1 Ø= N)

2 IF (&var2 = val1,val2)3 set &var3 = 'cumple los dos IF'4 set &var4 = 'idem'5 set &var5 = 'cumple solo el IF de la línea 1'6 set &var6 = ...7 IF (&var7 = &var8) &var9 = ...

La línea 1 chequea que la variable 1 no es igual al valor "N"

Las líneas 2 a 5 solo se ejecutan si superan el chequeo de la línea 1.

La línea 2 solo se ejecuta si se supera el chequeo de la línea 1 por loque se están concatenando dos condiciones, y por tanto equivale aloperador lógico AND (no valido en la lógica de paneles).

La línea 2 chequea que el valor de la variable 2 sea igual al valor1 o alvalor2. Por lo tanto, equivale al operador lógico OR.

Las líneas 3 y 4 solo se ejecutan si se supera la condición de la línea 2

La línea 5 se ejecuta si se supero la condición de la línea 1, sinimportar la condición de la línea 2 ya que esta a la misma altura que elIF de dicha línea.

La línea 6 se ejecuta siempre, pues esta a la misma altura que la línea1.

Page 266: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 266/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 266 de 374

La línea 7 se ejecuta siempre y si se cumple la condición se ejecuta lasentencia de asignación que la sigue.

Este ejemplo denota la importancia de la indentacion a la hora deprogramar la lógica en los paneles ISPF.

Por lo que se refiere a la utilización o no de la cláusula ELSE, lasnuevas versiones de ISPF ya la contemplan, pero no obstante el siguienteejemplo muestra una forma de implementarla.

1 IF ( &var1 = val1 ) sentencia12 IF ( &var1 ^= val1 ) sentencia2

La línea 1 chequea una condición por igual y la línea 2 chequea la mismacondición por no-igual, por lo que equivale a ELSE.

Page 267: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 267/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 267 de 374

El siguiente ejemplo muestra un fragmento del panel JMPINT00, en el quese muestra este extremos.

)BODY%-------------------- Menú Principal de JMP ----------------------%OPCION ===>~ZCMD +%% 1 +Librerías del entorno% 2 +Editar fichero +% 3 +Imprimir fichero con margen +

...% +% X +EXIT - SALIR DEL MENU)INIT&ZPRIM = YES&ZHTOP = JMPH000

.HELP = JMPH100&ZHINDEX = JMPH999

)PROC/* ------------------------------ editar salida -------- */

IF (&OPCION = EE , ES )IF (&ZUSER = DESJMP , DESMGO )

&ZCMD = 'U.21'/* ------------------------------------------------------*/&ZSEL = TRANS(TRUNC(&ZCMD,'.')

1,'CMD(EX ''Jmpdes.CLIST.INT(ENTORNO)'')'2,'PANEL(ISREDM01) NEWAPPL(JMP) '3,'CMD(EX ''Jmpdes.CLIST(PRT)'')'

...X,'EXIT'

' ',' '*,'?' )

)END

Este ejemplo transforma la entrada escrita en línea de comando, de modoque si se escribe EE o ES y además el usuario es DESJMP o DESMGO,entonces cambia el valor escrito por el valor U.21.

¿Para que esta transformación?

Esta es una forma de generar abreviaturas para realizar acciones,personalizandolas para un usuario determinado.La opcion U nos lleva a otro panel, del cual elegimos la opcion 21. y loque hace es editar un fichero secuencial de uso general, de nombre fijoy que se puede usar entre otras cosas, para recoger la salida del spool,o para editar ficheros excesivamente grandes.

Page 268: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 268/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 268 de 374

/* <<<<<<<<<<<<<<<<<<<<<< INTUTI21 >>>>>>>>>>>>>>>>>>>>>>>>> *//* */

PROC 0 LIBRERIAISPEXEC EDIT DATASET('Jmpdes.JMP.SALIDA')EXIT

En resumen, cuando el usuario Jmpdes o el usuario TEST33 escriba en lalínea de comando EE o ES lo que se ejecutara automáticamente será laedición del dataset o fichero 'DESJMP.JMP.SALIDA'.

El hecho de colgar esta opcion de otro panel en lugar de especificar laacción a realizar en el propio panel de selección es con objeto de tenerun panel que recoja la abreviatura y su significado, aunque entiendo quepuede haber muchas formas de realizar esta funcionalidad.

El siguiente ejemplo, es otro fragmento del mismo panel, y limita las

opciones U, T, ... para ser usadas solo por los usuarios DESJMP o DESMGO,ya que si algún usuario que no sea alguno de los dos especificadosselección cualquiera de las opciones se cambiara ese valor por "X", porlo que abandonaría el panel.

IF (&OPCION = U , T , J , M , A , TE)IF (&ZUSER ^= DESJMP)

IF (&ZUSER ^= DESMGO)&ZCMD = 'X'

&ZSEL = TRANS(TRUNC(&ZCMD,'.')1,'CMD(EX ''DESMGO.XXX.CLIST(ENTORNO)'')'2,'PGM(ISREDIT) PARM(P,ISREDM01) NEWAPPL'3,'PANEL(MGOUTI00)'

...

P,'CMD(EX ''DESJMP.CLIST.MGO(JMPLLL00)'')'S,'PANEL(ZSDSFOP2) NEWAPPL(ISF)'X,'EXIT'

' ',' '*,'?' )

&ZTRAIL = .TRAIL)END

Page 269: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 269/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 269 de 374

4.3.4 Sentencia VGET 

Esta sentencia es usada para leer el contenido de variables del pool quese especifique.

Su formato es:

VGET (var1 var2 ... varn) pool

Siendo POOL el nombre del pool del que se desea leer el contenido de lasvariables var1, var2, ... varn.

Como ejemplo se recomienda ver el que acompaña a la sentencia VPUT.

Page 270: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 270/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 270 de 374

4.3.5 Sentencias VPUT 

Esta sentencia es usada para escribir contenidos de variables en otrosPOOLs.

Su formato es:

VPUT (var1 var2 ... varn) pool

Siendo POOL el nombre del pool en el que se desea guardar el contenido delas variables var1, var2, ... varn.

Por ejemplo, al ejecutar el siguiente panel, este nos pide una cadenapara buscarla entre los miembros de la libreria que se especifique.

Con objeto de no tener que estar escribiendo el nombre de la libreria

cada vez que se ejecute este panel, lo que se hace es:En la sección INIC, previa a la presentación del panel, se lee elcontenido de la variable ZDEDSNLV recuperando su contenido desde elperfil activo. A continuación asignamos el valor de esta variable a lavariable LIBRERIA.

Una vez que se presenta el panel, y a fin de memorizar el contenido de lavariable LIBRERIA, para que cuando se vuelva a ejecutar este panel, serecupere el ultimo valor, hay que grabar su contenido, lo cual se hacecon la sentencia VPUT.

)BODY%JMP-94@----------%Buscar una palabra en una libreria@-----------@%OPCION ===>!ZCMD

%@ Cadena a buscar: {cadena @@ Libreria ......: {libreria @...)INITvget (zdldsnlv) profile&libreria = &zdldsnlv)PROCver(&libreria,dsname)&Zcmd = '99'&zdldsnlv = &libreriavput (zdldsnlv) profileif (&libreria = all,'') &Zcmd = 'X'if (&cadena = all,'') &Zcmd = 'X'&ZSEL = TRANS(TRUNC(&ZCMD,'.')

99,'CMD(EX ''JMPDES.CLIST.MGO(SCANTSOC)'' +''&CADENA.,&LIBRERIA.'')'

X,'EXIT'' ',' '*,'?' )

)END

Nota: El hecho de usar la variable ZDLDSNLV es porque es una variablepropia del ISPF, concretamente es la variable que en el panel querepresenta la opcion general 3.4 (utilidades), representa el campo nombredel DSN, y así el usuario puede ahorrase el tener que escribir el nombrede la libreria, si antes se ha usado esta variable.

Page 271: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 271/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 271 de 374

Page 272: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 272/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 272 de 374

4.3.6 Sentencias REFRESH

Esta sentencia es usada para refrescar el contenido de las variables delpanel.

Page 273: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 273/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 273 de 374

4.4 Mensajes 

En la introducción de este tema, se comento que ISPF diseña sus pantallasreservando dos zonas para mensajes, el ángulo superior derecho y la terceralínea de la pantalla.

Mediante estos mensajes el desarrollador puede planificar la informacion queofrecerá al usuario a lo largo del dialogo, bien para informarle delresultado de la acción desarrollada, bien del porqué no se ha superado unavalidación, etc.

Existen dos tipos de mensajes en un dialogo:

- Mensajes cortos : Aparecerán en el ángulo superior derecho- Mensajes largos : Apareceran en la tercera línea

Un mensaje se compone de :

Id-mensaje obligatorio Identificador del mensaje

mensaje-corto opcional texto del mensaje con una longitud máximade 24 caracteres.

Panel-help obligatorio Identificador del panel de help asociado aeste mensaje.

ind-alarma opcional Indicador de si ejecuta la alarma (en elcaso de que el hardware lo permita)

mensaje-largo texto mensaje largo con un longitud máxima

de 78 caracteres.

Estos 5 atributos de un mensaje se graban en dos líneas de un miembro de lalibreria de mensajes, siendo el diseño de estas líneas :

ID-MENSAJE ['m_corto'] [.HELP={panel | *}] [.ALARM={YES|NO}]'mensaje largo'

Los componentes que intervienen en esta definición ya han sido comentados,con la excepción del siguiente:

ID-MENSAJE: debe tener de 4 a 8 caracteres.Tiene que ajustarse al formato : AAAAA999Y

siendo AAAAA de 1 a 5 caracteres alfabéticos (a-z,$,@,#)

999 3 caracteres numéricos (0-9)

Y un carácter alfabético como sufijo. Opcional

m_corto El texto del mensaje corto

panel El identificador del panel de ayuda

En base al identificador del mensaje se determina el miembro en el que se

Page 274: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 274/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 274 de 374

grabara dicho mensaje truncando dicho identificador por el segundo dígito.Dentro del miembro asignado, los mensajes son grabados secuencialmente,

siendo por tanto necesario para la recuperación del mensaje que dichalibreria de mensajes (o miembro) sea recorrida secuencialmente.

Ejemplo:

JMPTB01A 'tabla &tabla no existe' .ALARM = YES'No se puede abrir la tabla &tabla porque no existe'JMPTB01B 'Tabla &tabla borrada ' .HELP=*'Se ha borrado con exito la tabla &tabla'JMPTB02 .ALARM=YES'Pulse ''PF1'' para invocar al HELP.'JMPTB10'Miembro salvado OK'...

Pues bien, estos mensajes se grabaran en el miembro JMPTB01 de la libreriaespecificada para mensajes.

Como puede verse en el ejemplo, un mensaje puede contener en su definiciónnombres de variables para que en el momento de su ejecución sean sustituidaspor el valor correspondiente, truncando el resultado en el caso de que seexcediera del tamaño especificado.

Es importante asegurarse de que el profile de este miembro tenga NUMBER OFFya que si no se machacarian las posiciones 72 a 80 por la numeración, para locual, estando editando el miembro, se ejecutaran desde línea de comando lossiguientes:

PROFILE NUMBER ON para activar la numeración de las líneasPROFILE UNNUM para limpiar de numeración las columnas 72 a 80PROFILE NUMBER OFF Para que desde ahora no numere las líneas.

Como puede observarse en el formato del mensaje, el mensaje corto esopcional, mientras que el largo es obligatorio. ISPF usara el mensaje largoen caso de que no se hubiera especificado el mensaje corto.

La notación "*" en el componente .HELP para especificar a ISPF que utilicecomo panel de help el panel de help asociado al panel que se esteprocesando.

Para invocar un mensaje se pueden utilizar diversas formas. El siguienteejemplo adelanta lo que se vera en el próximo apartado, las funciones, ymuestra como invocar un mensaje desde una clist.

Page 275: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 275/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 275 de 374

/* <<<<<<<<<<<<<<<<<<<<<< SYSMAIN >>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* ========= BUSCAR UN OBJETO EN DESARROLLO =================== */

/* */PROC 0/* *//*--------------------------------------------------------------*//* */

SET &TEST = TESTNOIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* */

SET ESKELETO = SYSMAINSET DSN = '&SYSUID..SALIDA.TMP'

/* */ISPEXEC DISPLAY PANEL(SYSMAIN)IF &LASTCC NE 0 THEN EXIT

/* */FREE FI(ISPFILE)ALLOCATE FI(ISPFILE) DA(&DSN.) OLD REUSE

/* */ISPEXEC FTOPENIF &LASTCC NE 0 THEN GOTO ERROR1

/* */ISPEXEC FTINCL &ESKELETOIF &LASTCC NE 0 THEN GOTO ERROR2

/* */ISPEXEC FTCLOSEIF &LASTCC NE 0 THEN GOTO ERROR3

/* */ISPEXEC SETMSG MSG(JMPFT04)

SUBMIT &DSNIF &TEST = TEST THEN WRITE SUBMITIDO PROCESO DE BUSQUEDA OK

/* */GOTO EXIT/* --------------------- mensajes ----------------- */

ERROR1: ISPEXEC SETMSG MSG(JMPFT01)GOTO EXIT

ERROR2: ISPEXEC SETMSG MSG(JMPFT02)ISPEXEC FTCLOSEGOTO EXIT

ERROR3: ISPEXEC SETMSG MSG(JMPFT03)/* --------------------------------------------------*/

EXIT: FREE FI(ISPFILE)EXITEND

Page 276: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 276/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 276 de 374

Los siguientes ejemplos muestran distintas formas de invocar un mensajedesde un panel:

/* si el usuario no es DESJMP o DESMGO pide password */IF (&USERID ^= DESJMP , DESMGO )

VER (&PASSWORD,NONBLANK,MSG=JMPI100) /* password incorrecta */

/* si la cadena no esta a blancos visualiza el mensaje JMPI133 */

IF (&cadena ^= ' ' ).MSG = JMPI133

/* validar que el contenido de LIBRERIA sea distinto de blancos */VER (&LIBRERIA,NONBLANK,MSG=JMPP187)

Page 277: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 277/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 277 de 374

4.5 Funciones 

ISPF como cualquier otro sistema también tiene sus propias funciones.

Estas son:

TRUNC Para truncamiento de cadenas.

TRANS Para decodificación (traducción) de valores

PFK Para recoger el texto asociado a una PF.

LVLINE Para buscar la ultima línea visualizada.

Page 278: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 278/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 278 de 374

4.5.1 Función TRUNC 

Esta función permite truncar una cadena de caracteres en una posiciónfija o bien al encontrar un carácter.

Su formato es:

&variable1 = TRUNC(&variable2, {nn | 'carácter'})

En el caso de que la cadena no contenga el carácter especificado,&VARIABLE1 contiene &VARIABLE2

La diferencia entre usar el truncamiento por una posición fija y eltruncamiento por búsqueda de una carácter, es que en el primer caso lavariable .TRAIL contiene las posiciones n+1 hasta el final, mientras queen el segundo caso, el carácter buscado no pertenece a ningún resultado.

Asi, por ejemplo:

&alfa = '123.456'

&entero1 = TRUNC(&alfa,3) &entero1 = 123

&decimal1 = .TRAIL &decimal1 = .456

&entero2 = TRUNC(&alfa,'.') &entero2 = 123&decimal2 = .TRAIL &decimal2 = 456

El siguiente ejemplo presenta un fragmento de la lógica seguida, cuandose pide el nombre de un dataset, para poner el apóstrofe al final del

nombre si se ha puesto apóstrofe al principio del nombre del mismo.

&punto = '.'&comilla = ''''if (&fichero Ø= ' ')

&prefijo = TRUNC(&fichero,1) /* separar el primer carácter */IF (&prefijo = &comilla ) /* **** empieza por comilla **** */

&nombre = .TRAIL&cuerpo = TRUNC(&nombre,'''') /* separar el apóstrofe final */IF (&cuerpo = &nombre ) /* nombre no termina con comilla */

&fichero = '&fichero&comilla'IF (&prefijo ^= &comilla )

&fichero = '&comilla&zprefix&punto&fichero&comilla'

De esta forma si &fichero = 'DESJMP.JMP.CLISTse transforma en 'DESJMP.JMP.CLIST'Y si &fichero = JMP.CLISTse transforma en 'DESJMP.JMP.CLIST'y si &fichero = 'DESJMP.JMP.CLIST'no sufre ninguna transformación.

Page 279: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 279/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 279 de 374

4.5.2 Función TRANS 

Esta función transforma una cadena de caracteres en otra.

Su formato es :

&variable1 = TRANS(&variable2 cod1,valor1 +cod2,valor2 ... +[MSG=id_mensaje] )

donde :

cod1 es el valor de entrada 1

valor1 es el valor de salida 1

cod2 es el valor de entrada 2

valor2 es el valor de salida 2

id_mensaje Es el identificador del mensaje que se visualizara enel caso de que el valor de variable2 no coincida conningún valor de entrada de los distintos pares devalores especificados.

Nota: El uso de las comas es opcional, ya que el blanco sirve dedelimitador, pero el uso de la coma ayuda a dar mas claridad.

Como puede adivinarse por el formato de la función, esta lo que hace eschequear el valor contenido en variable2 con los valores de entrada decada una de las parejas de valores especificadas, y, en caso de

coincidencia, devuelve en variable1 el valor de salida de la primerapareja de valores cuyo código coincida. Si ninguno de los valores deentrada coincidiera con el valor de salida, ISPF visualizará el mensajeespecificado en el parámetro MSG, al tiempo que carga a blancosvariable1.

Otro uso frecuente de esta función es para decodificar valores devariables.

Ejemplo: &Estado=TRANS(&código S,Soltero C,Casado V,viudo )

Page 280: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 280/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 280 de 374

Como parejas de valores especiales validas, tratadas por ISPF seencuentran:

*,cadena En este caso, sea cual sea el valor de variable 2 sedevolverá en variable1 la cadena especificada como parejadel "*".

*.* En este caso, se devuelve en variable1 el valor devariable2

' ',' ' En este caso, se admite el blanco como valor, y se devuelveblanco, por lo que se queda en el mismo panel sin sacarmensaje de error.

Un uso muy normal de esta función se encuentra en los paneles deselección (tipo menú) en donde traduciremos el valor de la opcion elegida

por el comando a ejecutar, como ya se vera al estudiar dicho tipo depanel.

&ZSEL = TRANS(&opcion 1,'PGM(programa1)'2,'CMD(comando1)'3,'PANEL(panel1)'

' ',' '*,'?' )

Page 281: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 281/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 281 de 374

4.5.3 Función PFK 

Esta función permite obtener informacion asociada a una PF.

Su formato es:

&variable1 = PFK( nn | 'cadena' | &variable2 )

El contenido de variable1 será un numero en caso de que el argumento dela función sea una cadena, o una cadena en el caso de que el argumentosea un numero, correspondiendo en cualquier caso el numero con el numerode PF que tiene asociada la cadena que es pasada o recibida.

Ejemplo: &variable1 = PFK(04)&variable2 = PFK('TSO EX JMP')

En este caso el contenido de variable1 es 'TSO EX JMP',mientras que el contenido de variable2 es 4 ya que la PF4 esta programadacomo 'TSO EX JMP'.

En el caso de que hubiera varias PFs programadas con el mismo contenido,esta función devolverá el numero menor de la PF.

Page 282: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 282/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 282 de 374

4.5.4 Función LVLINE 

Esta función esta asociada a la zona definida como AREA en un panel.

Su formato es:

&variable1 = LVLINE( nombre_area )

Page 283: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 283/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 283 de 374

4.6 Panel

Como se ha comentado en la introducción de este tema, el panel es la partevisible de cualquier dialogo, y por tanto, podría decirse que es la partemas importante del mismo, ya que por lo que el usuario ve será juzgadoprobablemente el dialogo.

El diseño estándar de un panel ISPF es :

+-------------------------------------------------------------+ID-pantalla Titulo mensaje cortocomando /opcion scrollmensaje largo+-------------------------------------------------------------+

... zona aplicacion ...

+-------------------------------------------------------------+

Las secciones de que se compone la definición de un panel son:

- ATTR Definición de los caracteres que servirán de atributos

- BODY Cuerpo del Panel

- INIT Lógica anterior a la presentación del panel

- PROC Lógica posterior a la presentación del panel

- REINIT Lógica anterior a la presentación del panel en caso de que sevuelva a presentar el panel como consecuencia de un error, etc.

- MODEL Esta sección solo se utiliza en paneles de visualización dedatos, y define el modelo de una fila.

- END Esta sección establece el final de la definición del panel

Todas estas secciones tienen la siguiente sintaxis para su definición:

)Sección_id [parámetro [parámetro ... ]]

es decir todas se definen por el carácter ")" seguido del identificador dela sección.

Page 284: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 284/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 284 de 374

Cada panel debe ser un miembro de una libreria alocada previamente como depaneles, debiendo tener en el perfil de cada miembro la opcion de UNNUM, ya

que se debe disponer de las 80 columnas para el diseño de la pantalla.

El siguiente ejemplo muestra como alocar la libreria de paneles y llamar alprimer panel o panel raíz de las utilidades desarrolladas como ejemplo. Elejemplo completo se encuentra en el anexo de esta tema.

PROC 0/* ----------------------------------------- LIBRERIA DE PANELES */

ISPEXEC LIBDEF ISPPLIB DATASET ID('JMPDES.JMP.PANEL')ISPEXEC SELECT PANEL(JMPMENU0)EXIT

Como norma general, como se dijo en la introducción, se debe tener en cuentaque los paneles diferencian en los valores asignados a las variables, entre

mayúsculas y minúsculas, si bien, a la hora de su codificación, se puedenescribir con mayúsculas o minúsculas, ya internamente las especificacionesson interpretadas como mayúsculas.

Por ultimo cabe comentar el comando PANELID que activa o desactiva lavisualización del nombre del panel en el ángulo superior izquierdo delmismo. Entendiendo por nombre del panel el nombre del miembro que contienela definición del panel visualizado.

Page 285: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 285/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 285 de 374

4.6.1 Sección ATTR 

Esta sección es OPCIONAL.

Su formato es:

)ATTR [DEFAULT(abc | %+_)] 

donde abc representan los caracteres con los que definimos:

a : Texto intensificado. Por defecto ISPF asume "%"

b : Texto normal. Por defecto ISPF asume "+"

c : Campo de entrada. Por defecto ISPF asume "_"

ISPF permite no obstante asociar cualquier carácter a un conjunto deatributos básicos a fin de indicar mediante dicho carácter el tipo quevisualización que se desea para determinada variable o texto.

Dicho carácter puede ser cualquier carácter del teclado o un carácterhexadecimal.

Los atributos básicos son:

Atributo Valores

ATTN ( ON | OFF )

AREA ( DYNAMIC | GRAPHIC )

CAPS ( ON | OFF | IN | OUT )

COLOR ( WHITE | RED | BLUE | GREEN | YELOW )

DATAMOD ( código )

EXTEND ( ON | OFF )

HILITE ( BLINK | USCORE | REVERSE )

INTENS ( HIGH | LOW | NONE )

JUST ( LEFT | RIGHT | ASIS )PAD ( NULLS | USER | carácter )

PADC ( NULLS | USER | carácter )

SKIP ( ON | OFF )

SCROLL ( ON | OFF )

TYPE ( TEXT | INPUT | OUTPUT | DATAIN | DATAOUT )

USERMOD ( código )

Page 286: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 286/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 286 de 374

Siendo el significado de cada atributo el siguiente:

Atributo Significado

ATTN Campo seleccionable por lápiz luminoso (light-pen)

AREA Permite definir el tipo de datos que contendrá una zona delpanel o ventana.

CAPS Especifica si se convierte a mayúsculas la entrada alfabética (ON | OFF ) , o si esto solo se hace en la entrada de datos (IN)o en la salida (OUT).

COLOR Especifica el color asociado al carácter del atributo.

DATAMOD Atributo asociado al tipo de area dinámica.El area dinámica presenta mezclados en una cadena tantovariables de datos como de texto. El carácter que se defina coneste atributo permitirá cambiar el valor del campo de entradaque nos interese.

EXTEND Atributo asociado al tipo de area dinámica.Indica que la ventana o area puede extenderse a 132 columnas enel caso de que se trabaje con una pantalla que permita dichoancho.

HILITE Especifica la característica de contraste asociado al tipo decampo ( Parpadeante, Subrayado o Video-inverso).

INTENS Establece la característica de intensidad ( alta, baja oninguna).

JUST Establece la característica de Justificación (derecha oizquierda) o sin justificación (ASIS).

PAD Este atributo sirve para definir el carácter de relleno pudiendoespecificarse este tanto PAD('_') como PAD(_).Eligiendo la opcion de PAD(USER) se asumirá el carácter derelleno que el usuario tenga definido en su perfil general(opcion 0.1) del menú principal de ISPF.

PADC Este atributo, parecido al anterior en cuanto a su definición,especifica el carácter de relleno que se utilizara solo cuandoel campo contenga totalmente blancos o nulos.

SKIP Este atributo especifica si cuando en la entrada de datos sellena totalmente un campo, si salta al campo siguiente (ON) o sibloquea el teclado (OFF).

SCROLL Este atributo también esta asociado al area dinámica.

TYPE Este atributo especifica el tipo de campo :

TEXT se refiere a constantes

INPUT se refiere a campos de entrada (no protegidos)

Page 287: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 287/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 287 de 374

OUTPUT se refiere a campos de salida (protegidos)

DATAIN se refiere a datos de entrada en el area dinámica

DATAOUT se refiere a datos de salida en el area dinámica

USERMOD Este atributo esta asociado al area dinámica y especifica quequeremos detectar si el usuario ha modificado algún campo delarea, aunque solo sea sobrescribiendo los mismos caracteres.

Page 288: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 288/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 288 de 374

El siguiente ejemplo es un fragmento del panel JMPINT58 vistoanteriormente:

)ATTR DEFAULT(%@!)| TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(RIGHT) PAD(' '){ TYPE(input) iNTENS(high) CAPS(On) just(left) pad('_')} TYPE(TEXT) INTENS(LOW) CAPS(OFF)

)BODY%JMP-94@---------%Buscar una palabra en una libreria@--------------@%OPCION ===>!ZCMD@@ Libreria ............. : {libreria@@ Máscara de los fuentes : {máscara @

...

@

@ Esta utilidad%submite@un proceso que se dedica a@ buscar la cadena especificada entre los miembros@ de la libreria de NATURAL cuyo nombre se ajuste@ a la máscara especificada.@@ El%resultado@le deja en la cola de salida con el@ nombre:%&Zuser@y el sufijo%SN@

En el vemos que:

- la variable LIBRERIA es una variable de entrada, sale en pantalla enintensificado, lo que se escriba se pasa a mayúsculas, y al aparecer elpanel el campo sale relleno con el carácter '_'.

- La palabra "submite" dentro del texto explicativo apareceráintensificada pues va precedida del carácter %, y este atributo deintensificado termina cuando se encuentra con @ que especifica textonormal por definirse así en el DEFAULT.

Page 289: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 289/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 289 de 374

4.6.2 Sección BODY 

Esta sección es OBLIGATORIA.

Su formato es:

)BODY [DEFAULT(abc)] +[WIDTH(ancho)] +[EXPAND(xy)] +[CMD(campo1)] +[SMSG(campo2)] +[LMSG(campo3)] +[KANA] +[ASIS]

Siendo el significado de cada uno de los parámetros el siguiente:

DEFAULT(abc) Este parámetro tiene el mismo significado que en lasección anterior.

WIDTH(ancho) Este parámetro permite establecer el ancho de la pantalla.

EXPAND(xy) Establece los caracteres de comienzo (x) y fin (y) de lazona a expandir.

CMD(campo1) Establece el campo de comando en campo1

SMSG(campo2) Establece que el mensaje corto aparezca en el campo2

LMSG(campo3) Establece que el mensaje largo aparezca en el campo3

KANA Informa a ISPF que los caracteres KATAKANA puedenencontrarse en el BODY.

ASIS Indica que cuando el usuario cambie la posición de lalínea de comando (por ejemplo a través de la opcion 0.4del menú principal de ISPF , el panel se procesara comoesta diseñado.

Esta sección es la que realmente contiene el diseño de la pantalla, tal ycomo la vera el usuario final, siendo lo normal que únicamente secodifique )BODY si el panel va a ser llamado por una clist por ejemplo.

Para el diseño de la pantalla se combinaran tanto cadenas de texto comonombres de variables, todos ellos acompañados de los caracteres decontrol de atributos definidos en la primera sección a fin de obtener eldiseño deseado.

Las variables se identifican por ir precedidas del carácter & , y losnombres de estas variables se regirán por las reglas generales, es decir:

- Deben empezar por carácter alfabético- Deben seguir a este primer carácter hasta 7 caracteresalfanuméricos.

Page 290: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 290/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 290 de 374

Pueden concatenarse variables, pero para ello se delimitara el final dela primera variable con un punto.

Ejemplos:

&nombre = 'ABCDE12'&numero = 4

&nombre.&numero = 789 En esta caso se asigna a la variable&nombre4 el valor 789

CMD(printo &fichero.) En este caso debe delimitarse la variableFICHERO pues va seguido por otro carácterespecial.

La longitud de las variables viene definida por el limitador del campo.

Las distintas variables serán de entrada o de salida dependiendo delcarácter de atributo que se asocie en el diseño de la pantalla.

Asi, por ejemplo:

(1) )ATTR DEFAULT(%+_)(2) )BODY(3) +-----------------%iMPRIMIR FICHERO+---------------+(4) + Comando ==> _ZCMD(5) +(6) + Fichero ... : _fichero +(7) + Impresora.. : _impre+(8) +

(9) ... etc

De este ejemplo podemos hacer las siguientes puntualizaciones,correspondientes a las líneas numeradas a la derecha:

(1) Define los atributos por defecto:% Texto-intensificado+ Texto-normal_ Variable-de-entrada

(2) Define el comienzo de la sección correspondiente al cuerpo.

(3) Define el guionado como texto-normal y el texto "imprimir-fichero"en intensificado para pasar de nuevo a texto-normal.

(4) Viene el texto normal "Comando ==>" y la variable de entrada _ZCMD.Esta variable, por empezar por "Z" nos indica que es una variabledel sistema, concretamente es la variable que se utiliza en lospaneles para recoger el comando de entrada.

(5) Es una línea en blanco.

(6) Define la posición del texto "Fichero ... :" con el atributo detexto-normal; y

Page 291: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 291/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 291 de 374

La posición de comienzo de la variable FICHERO, campo de entradapor lo que no se especifica &; Es de notar que la longitud de la

variable viene delimitada por el delimitador "+", por lo que elnombre de fichero mas largo solo podrá contener 8 posiciones.

(7) Las mismas reflexiones que las de la línea 6, pero en este caso lalongitud de la variable &impre esta limitado a 5 posiciones.

Page 292: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 292/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 292 de 374

4.6.3 Sección INIT 

Esta sección es OPCIONAL.

Su formato es:

)INIT

La lógica contenida en esta sección se ejecutara antes de que el panelsea presentado al usuario.

Las sentencias que pueden contener son:

- Sentencias de asignación- Sentencias de verificación- Sentencias IF

- Sentencias VPUT- Sentencias REFRESH

Page 293: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 293/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 293 de 374

4.6.4 Sección PROC 

Esta sección es OPCIONAL.

Su formato es:

)PROC

La lógica contenida en esta sección se ejecutara después de que elusuario devuelva el control al sistema, lo cual ocurrirá al pulsar INTROo cualquier otra PF en el panel visualizado.

Las sentencias que puede contener esta sección son:

- Sentencias de asignación- Sentencias de verificación

- Sentencias IF- Sentencias VPUT- Sentencias REFRESH

Page 294: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 294/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 294 de 374

4.6.5 Sección REINIT 

Esta sección es OPCIONAL.

Su formato es:

)REINIT

La lógica contenida en esta sección se ejecutara cuando se detectenerrores en la sección PROC, ya que hace que ISPF mantenga el mismo panelen la pantalla, o bien al ser invocado de nuevo el servicio sinespecificar el nombre del PANEL.

También esta sección puede contener todos los tipos de sentenciasdefinidas en la sección INIT, si bien, las que normalmente se usaran enesta sección serán las de resaltar los campos erroneos o de invocar

determinados mensajes.

)REINITIF (&CADENA ^= ' ').CURSOR = &LIBRERIA

)PROCIF (&LIBRERIA = ' ').MSG = JMPI005

VER(&LIBRERIA,NAME)...

En el ejemplo presentado, en la sección PROC se valida que el contenidode LIBRERIA este a blancos, y si es así, visualiza el mensaje JMPI005.En el caso de que este a blancos, visualiza el mensaje y pasa a ejecutar

la sección REINIT, con lo que coloca el cursor en la variable LIBRERIA.

Si ha superado la anterior validación, examina que el contenido deLIBRERIA sigue las reglas de nomenclatura, y de nuevo, si no supera estavalidación, posiciona el cursor en la variable LIBRERIA.

Con el fin de resaltar el error detectado, esta sección puede cambiar losatributos del campo erróneo de la siguiente forma:

)REINIT.ATTR(.CURSOR) = 'HILITE(REVERSE)'

Page 295: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 295/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 295 de 374

4.6.6 Sección MODEL 

Esta sección es obligatoria pero solo en los paneles de visualización detablas.

Su formato es:

)MODEL [ROWS( ALL | SCAN )] +[CLEAR (var1 [var2...])]

El objeto de esta sección es definir la ubicación de cada uno de loscampos a visualizar de una fila genérica. El propio servicio de ISPF, elTBDISPL que se estudiara con las funciones, será el encargado de, en basea esta definición, visualizar el numero de filas que quepan, etc. perosiempre ajustándose al modelo establecido, permitiendo el scroll, etc sincodificación alguna.

Este modelo, es decir, el diseño de una fila, puede ocupar de una a ocholíneas del panel. En el caso de que en el momento de su ejecución nocupiera la informacion de una fila multilinea en la pantalla, ISPF novisualiza dicha fila.

La sintaxis de esta sección es la misma que la vista en la sección )BODY.

Si se especifica el parámetro ROWS(SCAN), el servicio de ISPF examinarael argumento de búsqueda especificado en TBSARG para presentar soloaquellas filas satisfacen la búsqueda.

Como ya se dijo en la introducción de este tema, ISPF ve las tablas comomatrices de dos dimensiones (campos y filas) donde se presupone que cada

fila contiene todos los campos, y por tanto podemos considerarlas comoregistros de longitud fija. Pero a veces, nos puede interesar definirvariables que amplíen la informacion de una fila, pero que no esténdefinidas en la tabla. Este tipo de variables, que solo acompañan a lasfilas desde que se abre la tabla hasta que se cierra, es decir solomientras esta en memoria, reciben el nombre de VARIABLES DE EXTENSION.

Las tablas para ser procesadas, deben cargarse previamente en memoria.Por eso, cuando se van leyendo las distintas filas de una tabla, cadavalor se va metiendo en su celda correspondiente dentro de la matriz a laque se ha hecho mención anteriormente. Pero las variable de extensión noforman parte de esa matriz, ya que son variables que se definen de formagenérica. Por tanto, si se cargara esa variable con un valor, alvisualizar la tabla, ese valor se visualizaría para todas las filasdisplayadas. Si se quiere que no ocurra esto, debe especificarse elparámetro CLEAR pasándole como argumento aquellas variables de extensiónque se deben resetear.

Esta sección se volverá a estudiar cuando se traten los servicios de ISPFen el apartado correspondiente a FUNCIONES.

Page 296: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 296/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 296 de 374

)ATTR default($+_)? TYPE(INPUT) INTENS(low) CAPS(off) JUST(LEFT)

# TYPE(OUTPUT) INTENS(high) CAPS(ON) JUST(LEFT) pad(_))BODY$------------------------ DSN especiales ----------------------------$ COMANDO ===>_opcion +SCROLL ==> _scin+$+ Línea: $B+Browse $M+Miembros Comando: $A+Alta DSN +tabla:$&tabla ++ $E+Edit $D+Borrar $X+Retornar$ $P+Rmt101 $V+Vput:4+ m DSN Observaciones+ - ------------------------------------------- ---------------------)MODEL ROWS(ALL)+_z?elemento +?comenta +)INIT&SCIN= Csr /* modo scrool */

.zvars = marca&marca = ' '&opcion = ' '.cursor = marca /* Donde se posiciona el cursor */

/* --------------------------------------- */)PROCVER (&MARCA LIST B,E,b,e,M,m,D,d,P,p,V,v))END

Este panel es el usado para presentar el siguiente resultado. En el sepuede apreciar cómo se usa la sección MODEL, definiendo las tresvariables usadas en una línea: MARCA (que es una Zvariable), ELEMENTO yCOMENTA:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>------------------------------ DSN especiales ----- ROW 1 TO 12 OF 12COMANDO ===> SCROLL ==> CSRLínea: B Browse M Miembros Comando: A Alta DSN tabla: JMPINT00

E Edit D Borrar X RetornarP Rmt101 V Vput:4

m DSN Observaciones- -------------------------------------------- ----------------------JMPDES.CLIST CLIST PRIMARIASJMPDES.CLIST.MGO CLIST AP. PARTICULARJMPDES.INT.CLIST CLIST DESARROLLOJMPDES.JMP.CLIST CLIST RAIZJMPDES.JMP.ESKELETO ESQUELETOSJMPDES.JMP.JCL LIBRERIA DE JCLSJMPDES.JMP.JCLTIPO JCLS USADOS EN Proc.JMPDES.JMP.NOTAS NOTAS

******************************* BOTTOM OF DATA **********************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Page 297: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 297/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 297 de 374

4.6.7 Sección END 

Esta sección es obligatoria.

Esta sección es una sección vacía, es decir no puede contener ningún tipode sentencia, ya que su única misión es informar a ISPF que se haterminado la definición del panel.

Page 298: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 298/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 298 de 374

4.7 Tablas ISPF 

Las tablas ISPF son matrices de datos de dos dimensiones, y en consecuenciason el equivalente de los ficheros de datos, ya que representan la siguienteestructura:

Campo 1 ... Campo n

Fila 1

...

Fila m

Al representar ficheros de datos, su contenido puede residir en disco deforma permanente. No obstante, una característica importante de las tablas

ISPF es que para ser procesadas deben residir en memoria viéndose afectadala memoria disponible por el tamaño de la tabla.

ISPF proporciona para el tratamiento de estas tablas un conjunto deservicios que se estudian en el apartado correspondiente a FUNCIONES ya quenormalmente serán invocados dichos servicios dentro de alguna función.

Page 299: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 299/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 299 de 374

4.8 Función 

Se denomina FUNCION al conjunto formado por la pantalla o panel, mas lalógica asociada a los datos capturados o presentados en el mismo.

Hasta ahora se ha estudiado, cómo se define un panel y de que partes consta.Este capitulo trata sobre cómo asociar una lógica a los datos, de modo quese pueda crear un dialogo en tiempo de ejecución con el usuario.

Una función puede estar escrita en lenguaje de comandos o en cualquierlenguaje de programación (COBOL,FORTRAN,...), y tiene por objetivo larealización de una tarea concreta, para lo cual puede hacer uso una o variasveces de los servicios de ISPF.

La sintaxis de llamada de los servicios de ISPF es:

ISPEXEC servicio parámetro [parámetro ... ]

donde los servicios, agrupados por su funcionalidad son:

Uso General

DISPLAY Para visualizar paneles de DATOSSETMSG Para visualizar un mensaje en un panelSELECT Visualiza un panel de selección

Para tratamiento de tablas

TBDISPL Para visualizar un panel de TABLATBCREATE Crea tabla

TBOPEN Abre una tabla permanenteTBSORT Clasifica una tablaTBSTATS Devuelve estadísticas de una tablaTBQUERY Devuelve informacion acerca de una tablaTBSAVE Salva una tabla a discoTBCLOSE Cierra una tablaTBEND Termina de procesar una tabla sin salvarlaTBERASE Borra una tabla

Para tratamiento de filas

TBADD Añade una filaTBDELETE Borra una filaTABEXIST Chequea la existencia de una clave en una tablaTBGET lee una filaTBMOD Modifica una filaTBPUT Escribe una filaTBSARG Establece el argumento de búsquedaTBSCAN Realiza la búsqueda de las filasTBVCLEAR Hace reset de los campos de la fila que se especifican.

De posicionamiento en tablas

TBTOP Se sitúa en la primera fila de una tablaTBSKIP Salta a la siguiente filaTBBOTTOM Se sitúa en la ultima fila de una tabla.

Page 300: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 300/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 300 de 374

De FILE TAILORING

FTOPEN Abre un fichero de FILE TAILORINGFTINCL Incluye en la salida un esqueletoFTCLOSE Cierra un fichero de FILE TAILORINGFTERASE Borra el fichero de salida

De variables

VGET Lee variables de un poolVPUT escribe variables en un pool

Otros servicios

BROWSE Invoca al programa de BROWSE de ISPF

CONTROL Especifica parámetros para el control de erroresEDIT Invoca al programa de EDIT de ISPFEDREC Recupera una sesión de EDITGETMSG Lee informacion de un mensajeISREDIT Invoca al editor de macros de ISPFLIBDEF Define las librerías ISPF de un dialogoLOG Escribe los mensajes en un fichero LOGPQUERY Recupera informacion desde un area de un panel

Como respuesta a la llamada a un servicio, ISPF devuelve siempre un códigode retorno, cuyos valores, por regla general, significan :

0 Se ha ejecutado con éxito el servicio4 Se ha detectado informacion de aviso (Warning)

8 Se ha detectado error grave12 Se ha detectado error fatal

En el anexo se especifica el código de retorno y el significado para cadauno de los servicios de ISPF.

Puesto que para la realización de los ejemplos explicativos, seguiremos ellenguaje de comandos CLIST, la sintaxis para examinar el código de retornodebe ser :.

IF &LASTCC operador valor THEN sentencia

donde:

operador puede ser >,<,>=,=,=<,Ø=,Ø>,Ø<,^=,^<,^>Valor puede ser una constante, una variable o una expresión

En los párrafos siguientes se analizan los distintos servicios de ISPFenunciados.

Page 301: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 301/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 301 de 374

4.8.1 Servicios Generales 

DISPLAY

Este servicio se utiliza para visualizar paneles de DATOS, entendiendopor tal un panel para entrada o salida de datos.

El formato de la llamada a este servicio es:

ISPEXEC DISPLAY [PANEL(id-panel)] [MSG(id-mensaje)] +[CURSOR(campo)] [CSRPOS(posición)]

donde

PANEL especifica el miembro de la libreria de paneles que serávisualizado

MSG especifica el mensaje que será visualizado cuando sevisualice el panel.

CURSOR especifica el nombre del campo en el que se posicionara elcursor cuando se visualice el panel.

CSRPOS especifica la posición del campo en la que se situara elcursor cuando se visualice el panel.

Como ejemplo de este servicio, se presenta la clist JMPINT06 que sirvepara imprimir un fichero por una impresora no predeterminada,

pidiéndose estos datos por el panel JMPINT06

El comando PRINTO que usa la clist invocada es un comando de TSO quesirve para imprimir un fichero por la impresora que se defina en elparámetro de palabra clave DEST().

/* -------- jmpint06 --------- */PROC 0ISPEXEC DISPLAY PANEL(JMPINT06)IF &LASTCC Ø= 0 THEN EXITPRINTO DA(&FICHERO.) DEST(&REMOTO.)EXIT.

Page 302: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 302/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 302 de 374

Definición del panel JMPINT06:

)ATTR DEFAULT(%@!))BODY%JMP-94@-------------------%Imprimir Fichero @-------------------@%OPCION ===>!ZCMD@@ Impresora...:!remoto@%@ Fichero ....:!fichero @%%)INIT&remoto = 'RMT101'&fichero = &Zuser.cursor = fichero

.csrpos = 7)PROCver(&fichero,dsname)&Zcmd = '99'if (&fichero = all,'') &Zcmd = 'X')END

En el panel se puede poner la validación de que el nombre del ficherose ajuste a las reglas de nomenclatura de DSN, pero es en la CLISTdonde se debe validar que el fichero existe, y en el caso de que noexista mandar el mensaje correspondiente, para lo cual se deben añadirlas siguientes líneas :

IF &SYSDSN('&FICHERO') ^= OK +

THEN ISPEXEC DISPLAY MSG(JMPP001) CURSOR(&fichero)

Esta llamada al servicio DISPLAY carece del parámetro PANEL, lo cualhace que se revisualice el ultimo que se visualizo, y además, que seejecute la sección )REINIT del mismo.

Con el fin de resaltar el error detectado, esta sección puede cambiarlos atributos del campo erróneo de la siguiente forma:

)REINIT.ATTR(.CURSOR) = 'HILITE(REVERSE)'

Page 303: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 303/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 303 de 374

SETMSG 

Este servicio se utiliza para visualizar un mensaje.

El formato de la llamada a este servicio es:

ISPEXEC SETMSG [MSG(id-mensaje)]

donde MSG especifica el identificador del mensaje que sequiere visualizar.

ejemplo:

ISPEXEC TBEXIST JMPLIB01

IF &LASTCC = 8 THEN +ISPEXEC SETMSG MSG(JMPM001W) /* ya existe */

Como ya se vio en el párrafo dedicado a los mensajes JMPM001W es unmensaje contenido en el miembro JMPM00 de la libreria definida paramensajes.

Page 304: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 304/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 304 de 374

SELECT 

Este servicio esta previsto para que presente una pantalla de tipo"MENU", es decir, el diseño de la pantalla es prácticamente solo detexto informando de las distintas opciones que se pueden elegir, y uncampo para recoger la opcion elegida por el usuario.

El formato de la llamada a este servicio es:

ISPEXEC SELECT PANEL(id-panel)]

donde id-panel especifica el miembro de la libreria de paneles quese quiere visualizar.

El siguiente ejemplo muestra una clist, la cual termina presentando elpanel raíz con todas las utilidades desarrolladas en este libro, poreso lo primero que hace es alocar las distintas librerías, que seusaran en los paneles y clists invocados desde el panel invocado(JMPMENU0).

PROC 0/* ----------------------------------- LIBRERIA DE PANELES/*ISPEXEC LIBDEF ISPPLIB DATASET ID('JMPDES.JMP.PANEL')/*/* -------------------------------- LIBRERIA DE PROCEDURES/*ISPEXEC LIBDEF ISPTLIB DATASET ID('JMPDES.CLIST')

/*/* -------------------------------- LIBRERIA DE ESQUELETOS/*ISPEXEC LIBDEF ISPSLIB DATASET ID('JMPDES.CLIST.JCLTIPO')/*/* --------------------------------- LLAMADA PANEL INICIAL/*ISPEXEC SELECT PANEL(JMPMENU0)

Page 305: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 305/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 305 de 374

A continuación se muestra la definición del panel JMPMENU0

)ATTR DEFAULT($+~)| TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(RIGHT) PAD(' '){ TYPE(TEXT) INTENS(LOW) CAPS(OFF)} TYPE(TEXT) INTENS(LOW) CAPS(OFF)

)BODY+-------------------$MENU PARTICULAR DE JMP+----------------------$OPCION===>~ZCMD +$$$$ 1+Utilidades particulares +$ 2+Tratamiento de tablas +$ 3+Tratamiento de cadenas +$ 4+Miembros de una libreria +

$ 5+Borrar tabla +$ 6+Librerías alocadas +$ 7+Librerías especiales +$ 8+Testear aplicaciones +$ 9+Visualizar o no las PF's +$ +$ X+EXIT - SALIR DEL MENU)INIT&ZHTOP = USRH000.HELP = USRH100&ZHINDEX = USRH999

)PROC&ZSEL = TRANS(TRUNC(&ZCMD,'.')

1,'CMD(EX ''JMPDES.CLIST.MGO(JMP)'')'

2,'PANEL(JMPTAB00)'3,'PANEL(JMPCAD00)'4,'CMD(EX ''JMPDES.CLIST.MGO(JMPLIB00)'')'5,'CMD(EX ''JMPDES.CLIST.MGO(JMPDEL00)'')'6,'CMD(EX ''JMPDES.CLIST.MGO(JMPALO00)'')'7,'CMD(EX ''JMPDES.CLIST.MGO(JMPESP00)'')'8,'PGM(ISPYXDR) PARM(ISR) NOCHECK'9,'PGM(ISPOPF) PARM(PFK,&ZPARM)'X,'EXIT'

' ',' '*,'?' )

)END

Page 306: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 306/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 306 de 374

4.8.2 Servicios para el Tratamiento de tablas 

Como se dijo en la introducción de este tema, las tablas de ISPF tienencomo especial característica el hecho de que para su uso deben cargarseen memoria, lo cual puede imponer restricciones al tamaño de las mismas.

Estos servicios proporcionan la posibilidad de usar y mantener las tablasde ISPF.

TBDISPL

Este servicio se utiliza para visualizar FILAS de una TABLA.

El formato de la llamada a este servicio es:

ISPEXEC TBDISPL nombre-tabla [PANEL(id-panel)] +[MSG(id-mensaje)] [CSRROW(num-fila)] +[CURSOR(campo)] [CSRPOS(posición)] +[AUTOSEL(YES|NO)] +[POSITION(vname)] [ROWID(vname)]

donde

PANEL especifica el panel que será visualizado debiendo serdel tipo de visualización de tablas, es decir, debetener definida la sección )MODEL

MSG especifica el mensaje que será visualizado cuando sevisualice el panel.

CSRROW especifica el numero de la fila en la que se situara elcursor al aparecer el panel.

CURSOR especifica el nombre del campo en el que se posicionarael cursor cuando se visualice el panel.

CSRPOS especifica la posición del campo en la que se situara elcursor cuando se visualice el panel.

AUTOSEL especifica si la fila se selecciona solo con posicionarel cursor en cualquier campo de la fila (YES) , o si espreciso marcar alguna campo de selección paraseleccionar la fila, con independencia de donde se sitúeel cursor (NO).

ROWID El panel visualizara el panel especificadocorrespondiendo la primera fila visualizada del panelcon la fila que tiene por puntero (CRP : current rowpointer) el numero especificado en la variable queacompaña a este argumento.Si val1 = 0 se posionara en el TOP de la tabla.

POSITION Este parámetro es parecido al anterior, solo que en elcaso de especificarse, devuelve en la variableespecificada el valor del CRP de la fila seleccionada.

Como ejemplo de este servicio, se presenta el procedimiento JMPALO01

Page 307: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 307/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 307 de 374

visto en los ejemplos del tema de clist, el cual presenta clasificadaspor orden alfabético, las librerías que se tienen alocadas, y que en

un paso previo se han cargado en la tabla JMPALO01. Una vez elegidauna de esta librerías mediante una marca en el campo correspondientese visualizaran todos los miembros de dicha libreria.

/* -------- jmpalo01 ---------*/PROC 0...cargar en la tabla JMPTAB01 librerías alocadas...

1 ISPEXEC CONTROL DISPLAY SAVE2 ISPEXEC TBDISPL JMPTAB01 PANEL(JMPINT01)3 IF &LASTCC Ø= 0 THEN GOTO T_ERROR4 IF &MARCA Ø= STR() THEN DO5 ISPEXEC BROWSE &LIBRERIA

6 IF &LASTCC Ø= 0 THEN GOTO T_ERROR7 END8 ISPEXEC CONTROL DISPLAY RESTORE

...

Este ejemplo cuenta con llamadas a varios servicios de ISPF por lo quese comentara cada una de sus líneas a fin de aclarar los conceptoscorrespondientes, con independencia de que sean tratados con masextensión en sus apartados correspondientes.

1 Salva la situación actual para no perderla ya que se va a llamar aun servicio de TBDISPL con un nombre de panel distinto o no.

2 presenta el panel JMPALO01 con los nombres de las librerías

alocadas mas un campo para marcar la libreria de la que se deseaver los miembros.

3 Si hay algún problema a la hora de presentar ese panel se desvíael flujo del procedimiento al párrafo T_ERROR.

4 Si se ha marcado con algún carácter el campo marca, se ejecutanlas sentencias contenidas entre DO y END

5 Llama al programa BROWSE pasándole como parámetro la libreriacuyos miembros se quieren consultar.

8 Restaura la situación salvada antes de invocar al servicio BROWSE

Page 308: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 308/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 308 de 374

TBCREATE 

Este servicio se utiliza para crear una tabla, especificando losnombres de los campos (columnas) y los nombres de aquellos campos queconllevan el atributo de clave.

El formato de la llamada a este servicio es:

ISPEXEC TBCREATE nombre-tabla +[NAMES(lista1)] [KEYS(lista2)] +[WRITE | NOWRITE] [SHARE] +[LIBRARY(ddname)] [REPLACE]

donde

lista1 Especifica la lista de campos que componen una fila de latabla. Solo se especifica el nombre de la columna, no la

longitud ni el tipo.La lista de campos puede delimitarse por blancos o porcomas.

Lista2 Especifica la lista de campos que componen la clave deacceso, solo en el caso de que la tabla este indexada.

WRITE Especifica que la tabla es permanente, es decir que segrabara en disco cuando se cierre.

NOWRITE Especifica que la tabla es temporal, es decir solo existehasta que se cierre, momento en el cual desaparece.Esta es la opcion por defecto.

SHARED Este parámetro esta relacionado con el SPLIT de pantalla.Una tabla solo puede crearse para una pantalla, pero comoel identificador es el terminal, este parámetro estaespecificando si dicha tabla puede ser accesible por laotra pantalla lógica asociada al mismo terminal.

LIBRARY Este parámetro permite especificar la ddname, es decir elnombre asignado al dataset en la alocacion del fichero,el caso de que se quiera crear la tabla en unalibreria distinta a la especificada por defecto.con elservicio LIBDEF.

REPLACE Especifica que si la tabla ya existe, que la sustituyapor la nueva, y si no existe que la cree.

Los códigos de retorno devueltos por este servicio son:

8 la tabla ya existe12 La tabla esta siendo usada.

Page 309: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 309/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 309 de 374

El siguiente ejemplo muestra el panel y la clist usados para dar dealta el nombre de un dataset en la tabla que tiene por nombre el

nombre del usuario, y que contiene todos los nombres de aquellosficheros de uso mas frecuente.

/* <<<<<<<<<<<<<<<<<<<<<< JMPZZZ0A >>>>>>>>>>>>>>>>>>>>>>>>>>> *//* */

PROC 0 TESTIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* ------------------------------------------------------------- *//* */

SET CABECERA = <<< LIBRERIAS PARTICULARES >>>SET &FICHERO= DESJMP.JMP.TABLAS(&SYSUID.)

/* *//* -------------------------- PEDIR ENTRADA -------------------- */

/* */ISPEXEC DISPLAY PANEL(JMPZZZ01)IF ( &ELEMENTO = &STR( ) ) THEN EXIT

/* */INICIO: +/* */

ISPEXEC CONTROL ERRORS RETURNALLOC FI(ENTRADA) DA('&FICHERO') SHR REUSEIF &LASTCC ^= 0 THEN FREE DA('&FICHERO')

/* *//* ----------------------- DEFINIR LIBRERIA DE TABLAS OUTPUT --- *//* */

ISPEXEC LIBDEF ISPTABL DATASET ID('DESJMP.JMP.TABLAS')SET &RC = &LASTCC

/* *//* -------------------------------- ABRIR TABLA --------------- *//**/

ISPEXEC TBOPEN &SYSUID WRITESET &RC = &LASTCC

/* ----- LA TABLA ESTA ABIERTA -----*/IF &RC = 12 THEN +

DOISPEXEC TBCLOSE &SYSUIDSET RC = &LASTCCWRITE ===> CERRAR TABLA DE ENTRADA : &RCFREE DA ('&FICHERO')EXIT

END

Page 310: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 310/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 310 de 374

/* ----- NO EXISTE LA TABLA --------*/IF &RC = 8 THEN +

DO ISPEXEC TBCREATE &SYSUID NAMES(ELEMENTO,COMENTA) +WRITE REPLACE

SET &RC = &LASTCCIF &RC ^= 0 THEN +

WRITE ===> CREAR TABLA DE ENTRADA : &RCISPEXEC TBSORT &SYSUID FIELDS(ELEMENTO)SET &RC = &LASTCCIF &RC ^= 0 THEN +

WRITE ===> CLASIFICAR TABLA ......... : &RCEND

/* *//* -------------------------- PEDIR ENTRADA -------------------- *//* */

ERROR OFF/* */

ISPEXEC TBADD &SYSUID SAVE(ELEMENTO,COMENTA) ORDERSET &RC = &LASTCCIF &RC EQ 0 THEN +

DOISPEXEC TBSAVE &SYSUID NEWCOPYSET &RC = &LASTCC

ENDISPEXEC TBEND &SYSUIDFREE DA ('&FICHERO.')

/* */EXIT

Page 311: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 311/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 311 de 374

La definición del panel JMPZZZ01 es la siguiente:

)ATTR default($+_)? TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) PAD('_'))BODY$------------------- Mantenimiento de DSNs especiales -------------$++ Esta opcion da de alta en la tabla de DSNs especiales+ el nombre del DSN que se especifique a continuación.+ También se puede acompañar una peque|a reseña de su+ contenido.+$+ Nombre DSN ...... : ?elemento +$

+ Descripción breve : ?comenta +$$$)INIT&elemento= ' '&comenta = ' '&salir = ' '

)PROC/* IF ( &ELEMENTO = ALL,'') &SALIR = 'SI' *//* VER (&elemento,dsname) */)END

El resultado obtenido es el siguiente:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>---------------------- DSN especiales ----------- ROW 1 TO 12 OF 12COMANDO ===> SCROLL ==> CSR

Línea: B Browse M Miembros Comando: A Alta DSN tabla: JMPINT00E Edit D Borrar X RetornarP Rmt101 V Vput:4

m DSN Observaciones- --------------------------------- -------------------------------DESJMP.CLIST CLIST PRIMARIASDESJMP.CLIST.MGO CLIST DE APLICACION PARTICULARDESJMP.INT.CLIST CLIST DESARROLLO ParticularDESJMP.JMP.CLIST CLIST RAIZDESJMP.JMP.ESKELETO ESQUELETOS

************************** BOTTOM OF DATA *************************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Page 312: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 312/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 312 de 374

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>------------------ Mantenimiento de DSNs especiales --------------

Esta opcion da de alta en la tabla de DSNs especialesel nombre del DSN que se especifique a continuación.También se puede acompañar una pequeña reseña de sucontenido.

Nombre DSN ...... : DESJMP.JMP.JCL__________________________Descripción breve : LIBRERIA DE JCLS______________

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>-------------------- DSN especiales ------------- ROW 1 TO 12 OF 12COMANDO ===> SCROLL ==> CSR

Línea: B Browse M Miembros Comando: A Alta DSN tabla: JMPINT00E Edit D Borrar X RetornarP Rmt101 V Vput:4

m DSN Observaciones- --------------------------------- -------------------------------DESJMP.CLIST CLIST PRIMARIASDESJMP.CLIST.MGO CLIST DE APLICACION PARTICULARDESJMP.INT.CLIST CLIST DESARROLLO Particular

DESJMP.JMP.CLIST CLIST RAIZDESJMP.JMP.ESKELETO ESQUELETOSDESJMP.JMP.JCL LIBRERIA DE JCLS

************************** BOTTOM OF DATA *************************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Page 313: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 313/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 313 de 374

TBOPEN 

Este servicio se utiliza para abrir una tabla permanente, ya que latemporal desaparece cuando se cierra.

El formato de la llamada a este servicio es:

ISPEXEC TBOPEN nombre-tabla +[WRITE | NOWRITE] [SHARE] +[LIBRARY(ddname)]

donde

WRITE Especifica que la tabla se grabara en disco cuando secierre.

NOWRITE Especifica que la tabla no se grabara en disco cuando se

cierre.

SHARE Este parámetro esta relacionado con el SPLIT de pantalla.

Una tabla solo puede crearse para una pantalla, pero comoel identificador es el terminal, este parámetro estaespecificando si dicha tabla va a poder ser accedida porla otra pantalla lógica asociada al mismo terminal.

LIBRARY Este parámetro permite especificar la ddname, es decir elnombre asignado al dataset en la alocacion del fichero,en el caso de que la tabla se encuentre en una libreriadistinta a la especificada por defecto.mediante elservicio LIBDEF.

Los códigos de retorno devueltos por este servicio son:

8 la tabla NO existe12 La tabla esta siendo usada.

Ejemplo:

ISPEXEC TBOPEN &SYSUID WRITEIF &LASTCC = 8 DO +

ISPEXEC TBCREATE &SYSUID +NAMES(LIBRERIA, OBSERVA)KEYS(LIBRERIA)

END

En este caso se abre una tabla que tiene por nombre el nombre delusuario, ya que es el valor contenido en la variable del sistema&SYSUID; y, en el caso de que no exista la tabla, se crea como miembrode la libreria definida para tablas de salida, y con los camposLIBRERIA y OBSERVA, estando clasificada por el campo LIBRERIA.

Page 314: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 314/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 314 de 374

TBSORT 

Este servicio se utiliza para clasificar una tabla.

Además, este servicio se encarga de guardar la informacion relativa alsort a fin de que si en momentos posteriores a su clasificación seinsertaran nuevas filas, estas se clasificaran en el sitio que lescorresponda de acuerdo con las especificaciones dadas en esteservicio.

El formato de la llamada a este servicio es:

ISPEXEC TBSORT nombre-tabla +FIELDS(lista-tríos)

donde

lista-tríos Especifica la lista de tríos en base a los que seclasificara la tabla, siendo el formato de un trióel siguiente:

campo,C|N,A|D

donde C significa carácterN significa NuméricoA orden ascendenteD orden descendente

Los códigos de retorno devueltos por este servicio son:

0 Todo correcto12 La tabla no esta abierta16 Error en la conversión20 error grave

Ejemplo: El siguiente ejemplo muestra como clasificar una tabla poruna clave compuesta de dos campos: miembro y libreria.

ISPEXEC TBCREATE jmptab02 +NAMES(miembro libreria, observa)

ISPEXEC TBSORT FIELDS(miembro,c,a libreria,c,a)

Page 315: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 315/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 315 de 374

TBSTATS 

Devuelve estadísticas de una tabla

Este servicio se utiliza para obtener estadísticas de datos de unatabla, pudiendo estar o no abierta dicha tabla.

El formato de la llamada a este servicio es:

ISPEXEC TBSTATS nombre-tabla +[CDATE(variable_1)] +[UDATE(variable_2)] +[CTIME(variable_3)] +[UTIME(variable_4)] +[USER(variable_5)] +

[ROWCREAT(variable_6)] +[ROWCURR(variable_7)] +[ROWUPD(variable_8)] +[TABLEUPD(variable_9)] +[SERVICE(variable_10)] +[RETCODE(variable_11)] +[STATUS1(variable_12)] +[STATUS2(variable_13)] +[STATUS3(variable_14)] +[LIBRARY(nombre_dd)]

donde

CDATE devuelve la fecha de creación de la tabla en lavariable_1

UDATE Devuelva la fecha en la que se realizo la ultimamodificación a la tabla.

CTIME Devuelve la hora del día en el que se creo la tabla.

UTIME Devuelve la hora del día en el que se realizó la ultimamodificación a la tabla.

USER Devuelve en variable_5 el usuario que accedió por ultimavez a la tabla.

ROWCREAT Devuelve el numero de filas iniciales de la tabla

ROWCURR Devuelve el numero de filas actuales de la tabla.

ROWUPD Devuelve el numero de filas modificadas de la tabla.

TABLEUPD Devuelve el numero de veces que ha sido modificadala tabla

SERVICE Devuelve el nombre del ultimo servicio de ISPF queaccedió a la tabla.

RETCODE Devuelve el valor del código de retorno que devolvió esteultimo servicio.

Page 316: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 316/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 316 de 374

STATUS1 Devuelve uno de los siguientes valores:

1 - la tabla existe en la libreria de tablas deentrada alocada.2 - La tabla no existe en la libreria de tablas de

entrada alocada.3 - No se encuentra alocada la libreria de tablas

de entrada

STATUS2 Devuelve uno de los siguientes valores en función de comose haya abierto esta tabla para la pantalla lógica desdela que se hace la consulta:

1 - La tabla no esta abierta para esta pantalla.2 - esta abierta en modo NOWRITE3 - esta abierta en modo WRITE

4 - esta abierta en modo SHARED NOWRITE5 - esta abierta en modo SHARED WRITE

STATUS3 Devuelve uno de los siguientes valores en función de quese encuentra disponible para ser abierta en modo WRITE:

1 - La tabla esta disponible2 - La tabla no esta disponible

LIBRARY Este parámetro especifica el nombre lógico de otra DDdistinta a la ISPTLIB, asociado a la libreria donde seencuentra la tabla de la que se desea obtenerestadísticas.

Ejemplo:

ISPEXEC TBSTATS JMPTAB01 CDATE(FECHAC) UDATE(FECHAU)WRITE la fecha de creación de la tabla fue : &FECHACWRITE La fecha de la ultima modificación fue : &FECHAU

En tiempo de ejecución resulta:

la fecha de creación de la tabla fue : '94/11/10'La fecha de la ultima modificación fue : '95/03/12'

Page 317: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 317/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 317 de 374

TBQUERY

Este servicio devuelve informacion relativa a la tabla, la cual debeestar abierta.

ISPEXEC TBQUERY nombre-tabla +[KEYS(variable_1)] +[NAMES(variable_2)] +[KEYNUM(variable_3)] +[NAMENUM(variable_4)] +[ROWNUM(variable_5)] +[POSITION(variable_6)] +

Donde:

KEYS Devuelve una cadena con el conjunto de campos queconfiguran la clave.

NAMES Devuelve una cadena con el resto de campos

KEYNUM devuelve el numero de campos que configuran la clave

NAMENUM Devuelve el numero de campos no clave de la tabla

ROWNUM Devuelve el numero de filas de la tabla

POSITION Devuelve el valor del CRP (current row pointer), esdecir el puntero de la fila actual.

Ejemplo:

Al ejecutar el programa resulta:

ISPEXEC TBQUERY TABEJEM KEYS(CLAVE) +NAMES(NOCLAVE) +KEYNUM(CLAVEN) +NAMENUM(NOCLAVEN) +ROWNUM(FILAS)

WRITE La clave esta formada por los campos &CLAVEWRITE El resto de campos son : &NOCLAVEWRITE La clave tiene &CLAVEN camposWRITE El numero de campos no clave es &NOCLAVENWRITE La tabla tiene &FILAS filas

En tiempo de ejecución resulta:

La clave esta formada por los campos '(CLAVE1 CLAVE2)'El resto de campos son : '(CAMPO1 CAMPO2 CAMPO3)'La clave tiene 2 camposEl numero de campos no clave es 3La tabla tiene 123 filas

Page 318: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 318/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 318 de 374

TBSAVE 

Este servicio se encarga de escribir el contenido de una tabla desdememoria a disco.

El formato de la llamada a este servicio es:

ISPEXEC TBSAVE nombre-tabla [+][LIBRARY(nombre_ddname) +][NAME(nombre_miembro) +][NEWCOPY | REPLCOPY +][PAD(porcentaje) +]

donde

Nombre-tabla es el nombre de la tabla ISPF que se encuentra enmemoria.

Nombre_ddname Es el nombre lógico asociado al nombre de una libreriade tablas distinto al usado por defecto (ISPTABL)mediante una sentencia ALLOC.

Nombre_miembro Es el nombre del nuevo miembro en la libreria definidapara tablas de salida.

NEWCOPY especifica que el nuevo miembro se escriba al final dela libreria de tablas.

REPLCOPY Especifica que el nuevo miembro se escriba sobre elanterior, reemplazando al que existía, si es queexistía.

PAD Especifica el porcentaje que se debe reservar parafuturas modificaciones. Este espacio se reserva alfinal del miembro creado, y solo en creación.

Como ejemplo se muestra un fragmento de la clist que acompaña laexplicación de la sentencia TBCREATE. En el se muestra cómo se salva adisco la tabla ISPF que esta en memoria con el nombre del usuario, quees el nombre contenido en la variable del sistema &SYSUID.

DOISPEXEC TBSAVE &SYSUID NEWCOPYSET &RC = &LASTCC

END

El siguiente fragmento muestra el contenido del miembro que contienela tabla salvada. Dicho contenido se muestra en formato normal yhexadecimal.

Page 319: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 319/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 319 de 374

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

BROWSE -- JMPDES.JMP.TABLAS(JMPINT00) --- LINE 00000000 COL 001 080COMMAND ===> Hex on SCROLL ===> CSR*************************** TOP OF DATA ****************************..TIR:... .{JMPINT00....'d...0........m.?. .n.....JMPDES ...........TO...q]a..COMENTA ...q]n.........]..........JMPDES.CLIST..CLIST PRIMATO..JMPDES.CLIST.COMENTA ..CLIST PRIMARIAS.......q...b.....&.,..JMPDE..CLIST DE APLICACION PARTICULAR.ELEMENTO..JMPDES.CLIST.MGO.COMENTA ....

********************** BOTTOM OF DATA ********************************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>BROWSE -- JMPDES.JMP.TABLAS(JMPINT00) ---- LINE 00000000 COL 001 080

COMMAND ===> SCROLL ===> CSR************************* TOP OF DATA *******************************---------------------------------------------------------------------..TIR:... .{JMPINT00....'d...0........m.?. .n.....JMPDES ...........04ECD700040CDDDCDEFF008078000F00000000936140900113EEDCFE440000000000004399A006000147953000200D400600002000C43F30151F273327782000001000C000---------------------------------------------------------------------TO...q]a..COMENTA ...q]n.........]..........JMPDES.CLIST..CLIST PRIMAED01095820CDDCDEC400095900800700050102030500EEDCFE4CDCEE00CDCEE4DDCDC360008A107364553100508A5060000040A0E0C0D040C327782B339230F33923079941...

************************** BOTTOM OF DATA ***************************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Page 320: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 320/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 320 de 374

TBCLOSE 

Este servicio realiza una doble función, salva el contenido de latabla que se va a cerrar sobre disco, y borra de la memoria la tablasalvada.

El formato de la llamada a este servicio es por lo tanto similar alformato de la sentencia TBSAVE:

ISPEXEC TBCLOSE nombre-tabla [+][LIBRARY(nombre_ddname) +][NAME(nombre_miembro) +][NEWCOPY | REPLCOPY +][PAD(porcentaje) +]

donde

Nombre-tabla es el nombre de la tabla ISPF que se encuentra enmemoria.

Nombre_ddname Es el nombre lógico asociado al nombre de una libreriade tablas distinto al usado por defecto (ISPTABL)mediante una sentencia ALLOC.

Nombre_miembro Es el nombre del nuevo miembro en la libreria definidapara tablas de salida.

NEWCOPY especifica que el nuevo miembro se escriba al final de

la libreria de tablas.

REPLCOPY Especifica que el nuevo miembro se escriba sobre elanterior, reemplazando al que existía, si es queexistía.

PAD Especifica el porcentaje que se debe reservar parafuturas modificaciones. Este espacio se reserva alfinal del miembro creado, y solo en creación.

Como ejemplo se muestra un fragmento de la clist que acompaña laexplicación de la sentencia TBCREATE. En el se muestra cómo se cierrauna tabla salva a disco la tabla ISPF que esta en memoria con elnombre del usuario, que es el nombre contenido en la variable delsistema &SYSUID.

ISPEXEC TBCLOSE &SYSUID NEWCOPY

Page 321: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 321/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 321 de 374

TBEND

Este servicio se encarga de borrar de memoria la tabla especificadasin salvar su contenido a disco.

El formato de la llamada a este servicio es:

ISPEXEC TBEND nombre-tabla

Page 322: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 322/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 322 de 374

TBERASE

Este servicio se encarga de borrar una tabla de la libreria definidapor defecto, o si es distinta, de la libreria que se especifique.

El formato de la llamada a este servicio es:

ISPEXEC TBERASE nombre-tabla [+][LIBRARY(nombre_ddname) ]

donde nombre_ddname especifica el nombre de una libreria alocada, ydistinta de la ISPTABL, que es la usada por defecto.

Page 323: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 323/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 323 de 374

4.8.3 Tratamiento de filas

TBADD 

Este servicio añade una fila a la tabla especificada inmediatamentedespués de la fila actual, a no ser que se especifique el parámetroORDER o que la tabla se encuentre previamente clasificada.

El formato de la llamada a este servicio es:

ISPEXEC TBADD nombre_tabla +[SAVE(lista _campos)] +ORDER

donde

SAVE Permite especificar variables de extensión, es decir camposque no existen para todas las filas y que serán salvadosacompañando a la fila que tenga.

ORDER Este parámetro es aplicable a tablas que han sidoclasificadas previamente.

Después de llamar a este servicio debe, como siempre, chequearse elcódigo de retorno, ya que si fuera 8 especificaria que no se haañadido la fila por tener clave duplicada, es decir, que ya existeotra fila con esa clave.

Como ejemplo ilustrativo se acompaña un fragmento de la clist JMPZZZ0Aque da de alta el nombre de un DSN en la tabla que tiene por nombre elnombre del usuario.

/* <<<<<<<<<<<<<<<<<<<<<< JMPZZZ0A >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*//* */

PROC 0 TESTIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* ------------------------------------------------------------- *//* */

SET CABECERA = <<< LIBRERIAS PARTICULARES >>>

SET &FICHERO= DESJMP.JMP.TABLAS(&SYSUID.)/* *//* -------------------------- PEDIR ENTRADA -------------------- *//* */

ISPEXEC DISPLAY PANEL(JMPZZZ01)IF ( &ELEMENTO = &STR( ) ) THEN EXIT

/* */INICIO: +/* */

ISPEXEC CONTROL ERRORS RETURNALLOC FI(ENTRADA) DA('&FICHERO') SHR REUSEIF &LASTCC ^= 0 THEN FREE DA('&FICHERO')

/* */

Page 324: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 324/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 324 de 374

/* -------------------------- DEFINIR LIBRERIA DE TABLAS OUTPUT *//* */

ISPEXEC LIBDEF ISPTABL DATASET ID('DESJMP.JMP.TABLAS')SET &RC = &LASTCC/* *//* -------------------------------- ABRIR TABLA --------------- *//* */

ISPEXEC TBOPEN &SYSUID WRITESET &RC = &LASTCC

/* ----- LA TABLA ESTA ABIERTA -----*/IF &RC = 12 THEN +

DOISPEXEC TBCLOSE &SYSUIDSET RC = &LASTCCWRITE ===> CERRAR TABLA DE ENTRADA : &RCFREE DA ('&FICHERO')

EXITEND

/* ----- NO EXISTE LA TABLA --------*/IF &RC = 8 THEN +

DOISPEXEC TBCREATE &SYSUID NAMES(ELEMENTO,COMENTA) +

WRITE REPLACESET &RC = &LASTCCIF &RC ^= 0 THEN +

WRITE ===> CREAR TABLA DE ENTRADA : &RCISPEXEC TBSORT &SYSUID FIELDS(ELEMENTO)SET &RC = &LASTCCIF &RC ^= 0 THEN +

WRITE ===> CLASIFICAR TABLA ......... : &RC

END/* *//* -------------------------- PEDIR ENTRADA -------------------- *//* */

ERROR OFF/* */

ISPEXEC TBADD &SYSUID SAVE(ELEMENTO,COMENTA) ORDERSET &RC = &LASTCCIF &RC EQ 0 THEN +

DOISPEXEC TBSAVE &SYSUID NEWCOPYSET &RC = &LASTCC

ENDISPEXEC TBEND &SYSUIDFREE DA ('&FICHERO.')EXIT

Page 325: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 325/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 325 de 374

TBDELETE 

Este servicio borra una fila de la tabla que se especifique.Para tablas con sin campos clave, borrar la fila actual, mientras quepara tablas con clave borrar la fila cuya clave coincida con losvalores cargados en las variables que tengan los nombres de los camposclave.

El formato de la llamada a este servicio es:

ISPEXEC TBDELETE nombre_tabla

Después de llamar a este servicio debe, como siempre, chequearse elcódigo de retorno, ya que si fuera 8 especificaría que no se haborrado la fila, bien porque no existe una fila con la claveespecificada, o bien, para tablas sin clave, porque nos encontramos en

el TOP de la tabla, por lo que el CSR no tiene un valor determinado.

Como ejemplo ilustrativo se acompaña un fragmento de la clist JMPZZZ0Mque borra una fila de la tabla y carga el mensaje 'BORRADO' en elcampo de observaciones.

IF &MARCA = B THEN -DO

ISPEXEC CONTROL DISPLAY SAVESET &MENSAJE = BORRADOISPEXEC TBDELETE JMPLIB01ISPEXEC CONTROL DISPLAY RESTORE

END

Page 326: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 326/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 326 de 374

TBEXIST 

Este servicio chequea la existencia de una clave en una tabla

El formato de la llamada a este servicio es:

ISPEXEC TBEXIST nombre_tabla

En el caso de que no exista la clave buscada o de que la tabla no esteindexada, este servicio devuelve el código de retorno 8.

Page 327: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 327/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 327 de 374

TBGET 

Este servicio hace que ISPF se reposicione en la fila de la tabla quese especifique, y que recupere los valores de los campos de esa fila.

El formato de la llamada a este servicio es:

ISPEXEC TBGET nombre_tabla +[SAVENAME(variable_1)] +[NOREAD] +[POSITION(variable_2)] +[ROWID(variable_3)]

donde

SAVENAME este parámetro permite conocer el nombre de las variables

de extensión que se grabaron con TBADD.

NOREAD este parámetro permite posicionarse en una fila concreta,pero no lee el contenido de los campos.

POSITION estos parámetros posicionan el cursor en la fila que seROWID especifique.

En el caso de que no exista la clave buscada o de que la tabla no esteindexada, este servicio devuelve el código de retorno 8.

Page 328: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 328/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 328 de 374

TBMOD

Este servicio hace que ISPF añada una fila a la tabla si no existe unafila con la clave especificada, o , si existe, que modifique la fila.

El formato de la llamada a este servicio es:

ISPEXEC TBMOD nombre_tabla +[SAVE(lista _campos)] +ORDER

donde

SAVE Permite especificar variables de extensión, es decir camposque no existen para todas las filas y que serán salvadosacompañando a la fila que tenga.

ORDER Este parámetro es aplicable a tablas que han sidoclasificadas previamente.

En el caso de que no exista la clave buscada da de alta la fila, ydevuelve como código de retorno 8 o de que la tabla no este indexada,este servicio devuelve el código de retorno 8.

Page 329: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 329/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 329 de 374

TBPUT

Este servicio hace que ISPF modifique una fila de la tabla que seespecifique si la tabla esta indexada, o la fila actual si no lo esta.

El formato de la llamada a este servicio es:

ISPEXEC TBMOD nombre_tabla +[SAVE(lista _campos)] +ORDER

donde

SAVE Permite especificar variables de extensión, es decir camposque no existen para todas las filas y que serán salvadosacompañando a la fila que tenga.

ORDER Este parámetro es aplicable a tablas que han sidoclasificadas previamente.

En el caso de que no exista la clave buscada devuelve como código deretorno 8.

Page 330: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 330/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 330 de 374

TBSARG 

Este servicio permite definir los argumentos de búsqueda que seránusados para limitar las filas a procesar mas tarde por los serviciosTBSCAN o por TBDISPL al visualizar datos en un panel visualizador dedatos con la sección )MODEL y ROWS(SCAN).

El formato de la llamada a este servicio es:

ISPEXEC TBSARG nombre_tabla +[ARGLIST(lista)] +[NEXT | PREVIOUS] +[NAMECOND(condiciones)]

donde

lista Permite especificar las variables de extensión sobrelas que se aplicara la búsqueda, junto con los camposde la tabla.

NEXT Estos parámetros especifican que en el momento dePREVIOUS hacer la búsqueda, esta se realice desde la fila

actual hacia atrás (PREVIOUS) o hacia delante (NEXT)desde la fila actual.

condiciones representa pares de valores del tipo :(nombre1,condicion1 nombre2,condicion2 ... )Los valores posibles de condición son:EQ | NE | GE | GT | LT | LEPor defecto asume EQ.

El siguiente ejemplo muestra su uso. Concretamente se trata de laclist encargada de borrar un elemento de la tabla de DSNs especiales.Su función es simple, recibe un nombre de fichero, y debe borrar de latabla de DSNs especiales asociados a un usuario, dicho nombre de latabla que tiene por nombre el nombre del usuario. (no se borrar elfichero, solo el nombre de la tabla de nombres especiales):

/* <<<<<<<<<<<<<<<<<<<<<< JMPZZZ02 >>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* BORRAR UN ELEMENTO DE LA TABLA DE DSN ESPECIALES *//* */

PROC 1 NOMBRE/* */

SET &TEST = TESTNOIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* ------------------------------------------------------------- *//* */

SET CABECERA = <<< LIBRERIAS PARTICULARES >>>SET &FICHERO= DESJMP.JMP.TABLAS(&SYSUID.)

/* *//* ----- RUTINA DE ERRORES ------------------------------------- *//* */INICIO: +/* */

ISPEXEC CONTROL ERRORS RETURNALLOC FI(ENTRADA) DA('&FICHERO') SHR REUSE

Page 331: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 331/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 331 de 374

IF &LASTCC ^= 0 THEN FREE DA('&FICHERO')/* */

/* --------------------------- DEFINIR LIBRERIA DE TABLAS OUTPUT *//* */

ISPEXEC LIBDEF ISPTABL DATASET ID('DESJMP.JMP.TABLAS')SET &RC = &LASTCCIF &TEST = TEST THEN WRITE ===> LIBRERIA DE SALIDA : &RC

/* *//* -------------------------------- ABRIR TABLA --------------- *//* */

ISPEXEC TBOPEN &SYSUID WRITESET &RC = &LASTCCIF &TEST = TEST THEN WRITE ===> ABRIR T.ENTRADA : &RC

/* ----- LA TABLA ESTA ABIERTA -----*/IF &RC = 12 THEN +

DOISPEXEC TBCLOSE &SYSUIDSET RC = &LASTCCWRITE ===> CERRAR TABLA DE ENTRADA : &RCFREE DA ('&FICHERO')EXIT

END/* ----- NO EXISTE LA TABLA --------*/

IF &RC = 8 THEN +DO

WRITE NO PUEDO BORRAR PORQUE NO EXISTE LA TABLAEXIT

END/* */

/* -------------------------- PEDIR ENTRADA -------------------- *//* */

IF ( &NOMBRE NE STR() ) THEN +DO

SET ELEMENTO = &NOMBREISPEXEC TBSARG &SYSUID NAMECOND(ELEMENTO,EQ)ISPEXEC TBSCAN &SYSUIDSET A1 = &ELEMENTOSET A2 = &COMENTAISPEXEC TBDELETE &SYSUIDSET &RC = &LASTCCIF &TEST = TEST THEN WRITE ===> TBDELETE : &RCISPEXEC TBSAVE &SYSUIDSET &RC = &LASTCCIF &TEST = TEST THEN WRITE ===> TBSAVE : &RCISPEXEC TBCLOSE &SYSUIDSET &RC = &LASTCCIF &TEST = TEST THEN WRITE ===> TBCLOSE : &RCIF &TEST = TEST THEN WRITE BORRAR : &A1 '-' &A2SET &RC = &LASTCC

ENDISPEXEC TBEND &SYSUIDFREE DA ('&FICHERO.')

/* */EXIT

/* */

Page 332: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 332/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 332 de 374

En el caso de que no exista la clave buscada devuelve como código deretorno 8.

Page 333: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 333/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 333 de 374

TBSCAN 

Este servicio permite realiza la búsqueda en base a los argumentosdefinidos en TBSARG y recupera los datos de los campos de la filaseleccionada.

El formato de la llamada a este servicio es:

ISPEXEC TBSCAN nombre_tabla +[ARGLIST(lista)] +[NEXT | PREVIOUS] +[SAVENAME(variable_1)][NOREAD][POSITION(variable_2)][ROWID(variable_3)]

donde

lista Permite especificar las variables de extensión sobre lasque se aplicara la búsqueda, junto con los campos de latabla.En el caso de que se especifique este parámetro, ISPFignorara los argumentos especificados en TBSARG.

NEXT Estos parámetros especifican que en el momento de hacer laPREVIOUS búsqueda, esta se realice desde la fila actual hacia atrás

(PREVIOUS) o hacia delante (NEXT) desde la fila actual.

SAVENAME este parámetro permite conocer el nombre de las variablesde extensión que se grabaron con TBADD.

NOREAD este parámetro especifica que se posicione en la filabuscada, pero que no lea el contenido de los campos.

POSITION estos parámetros posicionan el cursor en la fila que seROWID especifique.

En el caso de que no exista la clave buscada devuelve como código deretorno 8.

Page 334: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 334/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 334 de 374

TBVCLEAR  

Este servicio realiza un reset, (-mueve blancos-), a todas lasvariables que tengan por nombre cualquier nombre de campo de la tablaque se especifica como unico parámetro de este servicio.

El formato de la llamada a este servicio es:

ISPEXEC TBVCLEAR nombre_tabla

Suele usarse este servicio después de escribir una fila en la tabla, afin de que la nueva fila no mantenga valores de la anterior.

Page 335: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 335/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 335 de 374

4.8.4 Servicios para el posicionamiento 

Los siguientes servicios simplemente se mencionan ya que su propiadefinición es lo suficientemente explicativa.

TBTOP 

Este servicio posiciona el puntero (CSR) en el principio de la tablaque se especifique.

El formato de la llamada a este servicio es:

ISPEXEC TBTOP nombre_tabla

Es de resaltar el hecho de que no se sitúa en la primera fila, sino enel principio de la tabla, que como se puede ver en el ejemplo que seacompaña, son conceptos distintos, pues desde el principio de la tablaal primer elemento hay informacion asociada con la tabla,estadísticas, etc.

Cuando se dice que se posicione en el principio de la tabla, estamosdiciendo que se posicione antes de la primera fila.

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>BROWSE -- JMPDES.JMP.TABLAS(JMPINT00) -------------- LINE 000COMMAND ===> =

********************************* TOP OF DATA *****************..TIR:... .{JMPINT00....'d...0........m.?. .n.....JMPDES .....TO...q]a..COMENTA ...q]n.........]..........JMPDES.CLIST..CLISATO..JMPDES.CLIST.COMENTA ..CLIST PRIMARIAS.......q...b.....&.,C..CLIST DE APLICACION PARTICULAR.ELEMENTO..JMPDES.CLIST.MGO.COLPLICACION PARTICULAR.........q...b.....&.,..JMPDES.INT.CLIST..ANTERNACIONAL.ELEMENTO..JMPDES.INT.CLIST.COMENTA ..CLIST DESARRR

El anterior ejemplo se corresponde con un BROWSE de la tabla usadapara contener DSNs asociados a una aplicacion.

Page 336: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 336/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 336 de 374

TBSKIP

Este servicio hace que ISPF se posicione en la siguiente fila de latabla que se especifique, y que recupere los valores de los campos deesa fila.

El formato de la llamada a este servicio es:

ISPEXEC TBSKIP nombre_tabla +[NUMBER(numero)] +[ROW(fila)] +[SAVENAME(variable_1)] +[NOREAD] +[POSITION(variable_2)] +[ROWID(variable_3)]

donde

NUMBER este parámetro indica a ISPF que salte un numerodeterminado de filas, el especificado como NUMERO. Pordefecto entiende NUMBER(+1)

ROW este parámetro permite ir a una fila determinada, aquellacuyo numero se especifica como argumento de este parámetro,y que debe cargarse con anterioridad.

SAVENAME este parámetro permite conocer el nombre de las variablesde extensión que se grabaron con TBADD.

NOREAD este parámetro permite poscionarse en una fila concreta,pero no lee el contenido de los campos.

POSITION estos parámetros posicionan el cursor en la fila que seROWID especifique.

Page 337: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 337/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 337 de 374

TBBOTTOM 

Este servicio sitúa el puntero (CSR) en la ultima fila de una tabla yrecupera sus datos.

El formato de la llamada a este servicio es:

ISPEXEC TBBOTTOM nombre_tabla +[SAVENAME(variable_1)] +[NOREAD] +[POSITION(variable_2)] +[ROWID(variable_3)]

donde

SAVENAME este parámetro permite conocer el nombre de las variablesde extensión que se grabaron con TBADD.

NOREAD este parámetro permite posicionarse en la ultima fila, perono lee el contenido de los campos.

POSITION estos parámetros posicionan el cursor en la fila que seROWID especifique.

Page 338: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 338/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 338 de 374

4.8.5 De FILE TAILORING 

Se entiende por esqueleto un fichero preformateado con la salida deseada,en el cual se sustituyen los valores variables por el nombre de lasvariables.

Posteriormente, este fichero será procesado para generar la salidadeseada, y será en este proceso, llamado 'FILE TAILORING' en el que sesustituirán las variables por los valores correspondientes.

Como ejemplo se incluye el esqueleto usado para copiar todos los miembrosde una libreria a un fichero secuencial: MGOUTIPS

//XXXXXXPS JOB (123,456),'JMP-PRU-4',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1)//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//* TRATAR FICHEROS//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//PASO1 EXEC PGM=IEBPTPCH//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA//SYSUT1 DD DSN=&LIBRERIA,DISP=SHR//* ----------- FICHERO DE SALIDA//SYSUT2 DD DSN=&SECUENCI.,DISP=(&DIS.,CATLG,CATLG),// SPACE=(CYL,(1,1),RLSE),UNIT=SYSDA,// DCB=(RECFM=FBA,LRECL=133,BLKSIZE=23408)//* ----------- PARAMETROS -------//SYSIN DD *PRINT TYPORG=PO,MAXFLDS=1

RECORD FIELD=(80)/*

Donde las variables son:&LIBRERIA : Nombre de la libreria&SECUENCI : Nombre del fichero secuencial&DIS : Disposición del fichero

Page 339: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 339/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 339 de 374

FTOPEN 

Este servicio abre el fichero de FILE TAILORING, es decir el ficherode salida que contendrá el resultado del proceso.

El formato de la llamada a este servicio es:

ISPEXEC FTOPEN [TEMP]

/* <<<<<<<<<<<<<<<<<<<<<< MGOUTIPS >>>>>>>>>>>>>>>>>>>>>> *//* ========= BUSCAR UN OBJETO EN DESARROLLO ============== *//* */PROC 0/* *//*-------------------------------------------------------- *//* */

SET &TEST = TESTNOIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* */

SET ESKELETO = MGOUTIPSSET FICHERO = '&SYSUID..SALIDA.TMP'

/* */ISPEXEC DISPLAY PANEL(MGOUTIPS)IF &LASTCC NE 0 THEN EXIT

/* */FREE FI(TEMPORAL)ALLOCATE FI(TEMPORAL) DA(&FICHERO.) OLD REUSE

/* */ISPEXEC FTOPEN

IF &LASTCC NE 0 THEN GOTO ERROR01/* */

ISPEXEC FTINCL &ESKELETOIF &LASTCC NE 0 THEN GOTO ERROR02

/* */ISPEXEC FTCLOSEIF &LASTCC NE 0 THEN GOTO ERROR03

/* *//* ISPEXEC SETMSG MSG(DDSM120A) */

SUBMIT &FICHEROWRITENR PROCESO SUBMITIDO OK

/* */GOTO EXIT/* -------------------------------------- */

ERROR01: ISPEXEC SETMSG MSG(JMPP001A)GOTO EXIT

ERROR02: ISPEXEC SETMSG MSG(JMPP002A)ISPEXEC FTCLOSEGOTO EXIT

ERROR03: ISPEXEC SETMSG MSG(JMPP003A)EXIT: FREE FI(TEMPORAL)

EXITEND

Asi mismo, para poder completar el ejemplo, se acompaña la definicióndel panel MGOUTIPS

Page 340: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 340/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 340 de 374

)ATTR DEFAULT(%@!)| TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(RIGHT) PAD(' ')

{ TYPE(input) iNTENS(high) CAPS(On) just(left) pad('_')} TYPE(TEXT) INTENS(LOW) CAPS(OFF))BODY%JMP-94@---%Copiar todos los miembros de un PDS a un secuencial@---@@@%@ Libreria :{libreria @@ Secuencial :{Secuenci @%@ Disposición del fichero secuencial:{dis@%@@ Esta utilidad%submite@un proceso que copia todos @

@ los miembros de una libreria en el fichero secuen-@ cial que se especifique.@)INIT&libreria = 'tspg'&secuenci = ' '&dis = 'OLD')PROC&Zcmd = '99'if (&libreria = all,'') &Zcmd = 'X'if (&secuenci = all,'') &Zcmd = 'X'VER(&libreria,dsname)VER(&secuenci,dsname)&ZSEL = TRANS(TRUNC(&ZCMD,'.')

99,'CMD(EX ''DESJMP.CLIST.MGO(MGOUTIPS)'' +''&libreria.,&secuenci.'')'

X,'EXIT'' ',' '*,'?' )

)END

Nota: De este panel cabe resaltar el hecho de que al haber sidollamado mediante el servicio DISPLAY no se tendrá en cuenta el valorde la variable del sistema &ZSEL.

Page 341: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 341/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 341 de 374

FTINCL 

Este servicio es el que copia el esqueleto en el fichero alocado comofichero de salida, y al tiempo que lo copia, realiza las sustitucionesde las variables por sus valores.

El formato de la llamada a este servicio es:

ISPEXEC FTINCL nombre_esqueleto [NOFT]

donde NOFT especifica, en caso de usarse, que el esqueleto sea copiadotal cual sobre el fichero de salida, es decir, sin realizarsustituciones (NO FileTailoring)

Un ejemplo de su uso puede verse en el servicio FTOPEN

Page 342: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 342/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 342 de 374

FTCLOSE 

Este servicio es el que cierra el fichero de salida.

El formato de la llamada a este servicio es:

ISPEXEC FTCLOSE [NAME(miembro) +[NOREPL] +[LIBRARY(nombre_dd)]

donde

NAME este parámetro especifica el nombre del miembro quecontendrá el fichero de salida en el caso de que la

alocacion del fichero de salida sea una libreria, o ficheroparticionado.

NOREPL este parámetro especifica que no se ejecute el proceso desustitución si existe un miembro con el nombreespecificado.

LIBRARY Este parámetro permite especificar el nombre lógico delfichero de salida, o DDNAME asignado al fichero de salidaen el momento de la alocacion, y que por defecto esISPFILE.

Un ejemplo de su uso puede verse en el servicio FTOPEN

Page 343: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 343/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 343 de 374

FTERASE 

Este servicio suele ser invocado para borrar el fichero de salida unavez que ha cumplido su objetivo.

El formato de la llamada a este servicio es:

ISPEXEC FTERASE miembro +[LIBRARY(nombre_dd)]

donde

miembro este parámetro especifica el nombre del miembro quecontiene el fichero de salida en el caso de que la

alocacion del fichero de salida sea una libreria, o ficheroparticionado.

LIBRARY Este parámetro permite especificar el nombre lógico delfichero de salida, o DDNAME asignado al fichero de salidaen el momento de la alocacion, y que por defecto esISPFILE.

Un ejemplo de su uso puede verse en el servicio FTOPEN

Page 344: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 344/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 344 de 374

4.8.6 De variables 

Los servicios de variable permiten intercambiar los contenidos de lasvariables desde el pool del procedimiento de clist que se esta ejecutandohasta el pool definido a nivel de aplicacion (PROFILE) o el poolcompartido por todas las aplicaciones (SHARED).

Prácticamente los servicios que se van a ver ya se estudiaron comosentencias de las secciones INIT o PROC de la definición del panel, noobstante se mencionaran otros servicios para el manejo de variables, queno van a ser tratados por estar relacionados con el intercambio deinformacion con otras aplicaciones, por lo que se sale del ámbito de estelibro.

Estos servicios son:

VGET Lee el contenido de una variable de un pool

VPUT escribe en un pool el contenido de una variable

VDEFINE Define las variables que se usaran para intercambiode informacion con un modulo de un programa

VDELETE Este servicio hace desaparecer del pool de lafunción las variables especificadas.

VCOPY Este servicio, invocado desde un programa, permiteobtener el contenido de variables del pool de lafunción en el programa.

VREPLACE Este servicio, invocado desde un programa, modificael contenido de las variables especificadas en elpool de la función.

VRESET Este servicio, invocado desde un programa, hacereset de las variables especificadas en el pool dela función.

VERASE Este servicio, parecido a VDELETE, hace desaparecerlas variables especificadas y su contenido, del poolque se especifique (SHARED o PROFILE).

Page 345: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 345/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 345 de 374

 VGET

Este servicio permite leer el contenido de una o varias variablesdesde el pool que se especifique sobre una variable que tenga el mismonombre que la variable del pool en el procedimiento o función.

El formato de la llamada a este servicio es:

ISPEXEC VGET (lista) [ SHARED | PROFILE | ASSIS ]

donde

lista especifica la lista de variables que quieren leerse.En el caso de que solo se desee recuperar el valor de una

variable, puede omitirse los paréntesis.

SHARED este parámetro especifica que los valores de las variablesespecificadas en la lista deben obtenerse del poolcompartido por todas las aplicaciones.

PROFILE este parámetro especifica que los valores de las variablesespecificadas en la lista deben obtenerse del pool definidopara la aplicacion.

ASIS este parámetro especifica que los valores de las variablesespecificadas en la lista deben obtenerse del poolcompartido por todas las aplicaciones (SHARED), y si noexiste, entonces debe leer su valor del pool de aplicacion.

En el caso de que no exista en el pool especificado la variable, elservicio devuelve como código de retorno el valor 8.

Page 346: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 346/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 346 de 374

 VPUT 

Este servicio permite escribir el contenido de una o variasvariables desde el pool de la función o procedimiento,sobre el pool que se especifique. En el caso de que noexistiera en el pool una variable con el nombreespecificado, la crearía.

El formato de la llamada a este servicio es:

ISPEXEC VPUT (lista) [ SHARED | PROFILE | ASSIS ]

donde

lista especifica la lista de variables que quiere salvarse sobreel pool.En el caso de que solo se desee recuperar el valor de unavariable, puede omitirse los paréntesis.

SHARED este parámetro especifica que los valores de las variablesespecificadas en la lista deben salvarse sobre el poolcompartido por todas las aplicaciones.

PROFILE este parámetro especifica que los valores de las variablesespecificadas en la lista deben grabarse en el pooldefinido para la aplicacion.

ASIS este parámetro especifica que los valores de las variables

especificadas en la lista deben guardarse sobre el poolcompartido por todas las aplicaciones (SHARED), y si noexiste, entonces debe guardar su valor en el pool deaplicacion.En el caso de que exista una variable con el nombre dado,en ambos pools, solo se modificara el contenido del poolcompartido (SHARED).

En el caso de que no exista en la función la variable especificada, elservicio devuelve como código de retorno el valor 8.

Page 347: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 347/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 347 de 374

4.8.7 Definición de librerias 

Este servicio es uno de los mas importantes por la trascendencia quetiene ya que es el encargado de definir los nombres lógicos o DD_namesasociados a las librerias físicas.

El formato de la llamada a este servicio es:

ISPEXEC LIBDEF tipo_libreria DATASET ID(lista_dsn) +LIBRARY ID(dd_name) +

donde

tipo_ libreria Puede tomar uno de los siguientes valores:

ISPPLIB : Libreria de módulos cargablesISPPLIB : Libreria de panelesISPMLIB : Libreria de mensajesISPTLIB : Libreria de tablas de entradaISPTABL : Libreria de tablas de salidaISPSLIB : Libreria de esqueletosISPFILE : Libreria de ficheros de salida del File

tailoring.

Lista_dsn La palabra clave DATASET permite asociar una lista dedatasets con el tipo de libreria que se especifique,quedando alocados para la aplicacion los ficheros que sedefinan en esta lista.

LIBRARY la ddname que acompaña como argumento a este parámetroespecifica el nombre de la libreria que se asocia al tipode libreria de ISPF definido con este servicio.

Cuando se usa este parámetro es necesario ejecutar elcomando ALLOC para asignar la libreria a nuestro entornode trabajo.

Como ejemplo de este servicio se acompaña la clist sencilla yautocomentada que cumple con la importantisima misión de alocar lasdistintas librerias necesarias para poder ejecutar las utilidadesdesarrolladas.

Page 348: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 348/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 348 de 374

/* <<<<<<<<<<<<<<<<<<<<<=============>>>>>>>>>>>>>>>>>>>>>>>>>>> *//* <<<<<<<<<<<<<<<<<<<<< CLIST RAIZ >>>>>>>>>>>>>>>>>>>>>>>>>>> */

/* <<<<<<<<<<<<<<<<<<<<<=============>>>>>>>>>>>>>>>>>>>>>>>>>>> */PROC 0*/

/* ----------------------------------------- LIBRERIA DE PANELES *//* */

ISPEXEC LIBDEF ISPPLIB DATASET ID('JMPDES.JMP.PANEL')/* *//* ----------------------------------------LIBRERIAIDEDPROCEDURES *//* */

ISPEXEC LIBDEF ISPTLIB DATASET ID('JMPDES.CLIST')/* *//* --------------------------------------- LIBRERIA DE ESQUELETOS *//* */

ISPEXEC LIBDEF ISPSLIB DATASET ID('JMPDES.CLIST.JCLTIPO')

/* *//* ------------------------------------------- LIBRERIA DE TABLAS *//* */

ISPEXEC LIBDEF ISPSLIB DATASET ID('JMPDES.CLIST.JCLTIPO')/* *//* ---------------------------------------- LLAMADA PANEL INICIAL *//* */

ISPEXEC SELECT PANEL(JMPMENU0)/* */

EXIT

Page 349: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 349/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 349 de 374

4.8.8 Otros servicios 

ISPF dispone de otros muchos servicios, algunos de los cuales se listan acontinuación, con una breve reseña de la función que realizan.

BROWSE Invoca al programa de BROWSE de ISPFCONTROL Especifica parámetros para el control de errores

ADDPOP activa la visualización del identificador del panelREMPOP desactiva la identificación del panel del ángulo superior

izquierdo.

EDIT Invoca al programa de EDIT de ISPFEDREC Recupera una sesión de EDITGETMSG Lee informacion de un mensajeGRxxxxxx Establece el interface con GDDM

ISREDIT Invoca al editor de macros de ISPFLIBDEF Define las librerias ISPF de un dialogoLMxxxxxx Permite hacer uso de la libreria PDF de serviciosLOG Escribe los mensajes en un fichero LOGPQUERY Recupera informacion desde un area de un panel

Para obtener una informacion mas detallada de estos servicios, serecomienda usar la opcion del TUTORIAL de ISPF.

Page 350: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 350/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 350 de 374

4.9 Tutorial 

ISPF para poder asesorar al usuario en tiempo de ejecución, permite asociarpaneles solo de texto, es decir, de salida, a la PF que se haya definidocomo de HELP.

Esto se consigue haciendo uso de la variable .HELP del sistema, asignando aesta variable, en la sección )INIT, el nombre del panel que va a servir deHELP cuando se pulse la tecla correspondiente.

Existen otras dos variables asociadas con el tutorial: &ZHTOP y &ZHINDEX,las cuales pueden cargarse con los nombres de los paneles que sirven detabla de contenidos y de índice por páginas respectivamente.

Los paneles de help o tutoriales son iguales a los de datos, con ladiferencia de que solo se usa la variable ZSEL para seleccionar opcion en el

caso de que desde un panel (índice por ejemplo) se puedan elegir distintasopciones.

Otra variable usada en estos paneles es &ZUP establece cual es, a partir deque se le asigne un valor en un panel en la sección )INIT )PROC o )REINIT,el panel anterior o padre del actual.

El comando SKIP o S hace que se salga de la aplicacion de tutorial y seregrese a la aplicacion real, ya que una vez situados en un panel deltutorial, puede navegarse por ellos como si de otra aplicacion se tratara.

El comando ENTER hace que se visualice el siguiente panel y que debecargarse en la variable &ZCONT de la sección )PROC.

El comando BACK o B hace que se retroceda un nivel en la aplicacion detutorial.

Page 351: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 351/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 351 de 374

4.10 Ejemplos: 

Page 352: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 352/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 352 de 374

4.10.1 Pasar un archivo particionado o PDS a fichero secuencial. 

Como ejemplo del uso de esqueletos se incluye el siguiente procedimientousado para copiar todos los miembros de una libreria o ficheroparticionado, a un fichero secuencial:

Clist principal:

/* <<<<<<<<<<<<<<<<<<<<<< INTUTIPS >>>>>>>>>>>>>>>>>>>>>> *//* ================ PASAR PDS A SECUENCIAL =============== *//* */PROC 0

SET &TEST = TESTNOIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* */

SET ESKELETO = INTUTIPSSET DSN = '&SYSUID..SALIDA.TMP'

/* */ISPEXEC DISPLAY PANEL(INTUTIPS)IF &LASTCC NE 0 THEN EXITIF &LIBRERIA = STR() THEN EXITIF &SECUENCI = STR() THEN EXIT

/* */FREE FI(ISPFILE)ALLOCATE FI(ISPFILE) DA(&DSN.) OLD REUSE

/* */ISPEXEC FTOPENIF &LASTCC NE 0 THEN GOTO ERROR1

/* */

ISPEXEC FTINCL &ESKELETOIF &LASTCC NE 0 THEN GOTO ERROR2

/* */ISPEXEC FTCLOSEIF &LASTCC NE 0 THEN GOTO ERROR3

/* *//* ISPEXEC SETMSG MSG(JMPH004) */

SUBMIT &DSNWRITENR PROCESO SUBMITIDO OK

/* */GOTO EXIT/* -------------------------------------- */

ERROR1: ISPEXEC SETMSG MSG(JMPH001)GOTO EXIT

ERROR2: ISPEXEC SETMSG MSG(JMPH002)ISPEXEC FTCLOSEGOTO EXIT

ERROR3: ISPEXEC SETMSG MSG(JMPH003)EXIT: FREE FI(ISPFILE)

EXITEND

Page 353: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 353/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 353 de 374

Panel: INTUTIPS

)ATTR DEFAULT(%@!)| TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(RIGHT) PAD(' '){ TYPE(input) iNTENS(high) CAPS(On) just(left) pad('_')} TYPE(TEXT) INTENS(LOW) CAPS(OFF)

)BODY%JMP-94@--%Copiar todos los miembros de un PDS a un secuencial@---@@@%@ Libreria :{libreria @@ Secuencial :{Secuenci @%@ Disposición del fichero secuencial:{dis@%

@@ Esta utilidad%submite@un proceso que copia todos@ los miembros de una libreria en el fichero secuen-@ cial que se especifique.@@@@@)INIT&libreria = 'tspg'&secuenci = ' '&dis = 'OLD')PROC

VER(&libreria,dsname)VER(&secuenci,dsname))END

Page 354: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 354/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 354 de 374

Esqueleto : INTUTIPS

//XXXXXXPS JOB (123,456),'JMP-PRU-4',CLASS=T,MSGCLASS=X,// NOTIFY=XXXXXX,MSGLEVEL=(1,1)//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//* TRATAR FICHEROS//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//PASO1 EXEC PGM=IEBPTPCH//STEPLIB DD DSN=SYS1.LINKLIB,DISP=SHR//SYSPRINT DD SYSOUT=*//* ----------- FICHERO DE ENTRADA//SYSUT1 DD DSN=&LIBRERIA,DISP=SHR//* ----------- FICHERO DE SALIDA//SYSUT2 DD DSN=&SECUENCI.,DISP=(&DIS.,CATLG,CATLG),// SPACE=(CYL,(1,1),RLSE),UNIT=SYSDA,// DCB=(RECFM=FBA,LRECL=133,BLKSIZE=23408)

//* ----------- PARAMETROS -------//SYSIN DD *PRINT TYPORG=PO,MAXFLDS=1RECORD FIELD=(80)

/*

Donde las variables son:&LIBRERIA : Nombre de la libreria&SECUENCI : Nombre del fichero secuencial&DIS : Disposición del fichero

Page 355: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 355/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 355 de 374

4.10.2 Listar archivo por impresora: 

Panel:

)ATTR DEFAULT(%@!)| TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(RIGHT) PAD(' '){ TYPE(input) iNTENS(high) CAPS(On) just(left) pad('_')} TYPE(TEXT) INTENS(LOW) CAPS(OFF)

)BODY%JMP-94@-------------------%Imprimir Ficheros@-----------------------@%OPCION ===>!ZCMD@ ---- Margenes ---@ Usuario ....: %&usuario @ Cabecera .. :%!ca@@ Impresora...:%!rm @ Derecha ... :%!de@@ Clase salida:%!Z@ Izquierda.. :%!iz@

@ Formato ....:%!z@ (Vertical/Horizontal) Pie ....... :%!pi@@ Longitud reg:%!lrg@%@ Fichero ....: {fi @%% VerticalHorizontal@@ +------------------+ +----------------------+@ ] cabecera ] ] cabecera ]@ +---+----------+---+ +---+--------------+---+@ ] d ] ] i ] ] d ] ] i ]@ ] d ] ] i ] ] d ] ] i ]@ ] d ] ] i ] +---+--------------+---+

@ ] d ] ] i ] ] pie ]@ +---+----------+---+ +----------------------+@ ] pie ]@ +------------------+)INIT&USUARIO = &Zuser.ZVARS = '(cl , ft )'&rm = 'RMT101'&cl = 'A'&ft = 'V'&ca = 5&de = 30&iz = 10&pi = 5&lrg = 80&fi = &Zuser.cursor = fi.csrpos = 7

)PROCver(&fi,dsname)ver(&ft, NB, list V,H)&Zcmd = '99'if (&fi = all,'') &Zcmd = 'X'&ZSEL = TRANS(TRUNC(&ZCMD,'.')

99,'CMD(EX ''JMPDES.CLIST.MGO(LISTAR)'' +

''&fi.,&ft.,&rm.,&cl.,&ca.,&de.,&iz.,&pi.,&lrg.'')'

Page 356: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 356/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 356 de 374

X,'EXIT'' ',' '

*,'?' ))END

Page 357: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 357/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 357 de 374

Clist LISTAR

/* <<<<<<<<<<<<<<<< LISTAR >>>>>>>>>>>>>>>>>>>>>>>>>>> *//* *//* LISTAR FICHERO POR RMT101 EN VERTICAL Y LETRA PEQUE#A *//* */

PROC 9 FICHERO +FORMATO +REMOTO +CLASE +CABECERA +DERECHA +IZQUIERDA +PIE +LRCL

/* */

/*---------------------------------------------------------*//* */

SET &LABEL=LEER/* *//*---------------------------------------------------------*//* */

SET &TEST = TESTNOIF &TEST = TEST THEN CONTROL SYMLIST CONLIST MSG

ELSE CONTROL NOMSG/* *//* --------------------------------------------------------*//* */

IF &LRCL = 0 THEN SET LRCL = 80/* */

/* */ALOCAR: SET &FILEALOC = &SYSUID..JMP.TMP/* *//* ============= ALOCAR Y/O CREAR FICHERO DE SALIDA ==*//* */

IF &SYSDSN('&FILEALOC') ^= OK THEN +DOALLOC FILE(SYSUT2) DATASET('&FILEALOC') +

NEW CATALOG +UNIT(3380) RECFM(F B) LRECL(133) +BLKSIZE(23408) TRACKS SPACE(3 1) REUSE

FREE DA('&FILEALOC')END

/* *//* ---------------------------------- EXAMINAR FORMATO/* */

IF '&FORMATO' = 'V' THEN GOTO VERTICAL/* *//* ========================= PONER HORIZONTAL ============= *//* */

Page 358: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 358/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 358 de 374

HORIZONTAL: +ALLOC FILE(SYSUT1) DATASET('Jmpdes.JMP.JCL(HORIZONT)')+

SHR REUSEALLOC FILE(SYSUT2) DATASET('&SYSUID..JMP.TMP') OLD REUSEOPENFILE SYSUT1 INPUTOPENFILE SYSUT2 OUTPUTGETFILE SYSUT1SET &SYSUT2 = &SYSUT1PUTFILE SYSUT2CLOSFILE SYSUT1CLOSFILE SYSUT2FREE FILE(SYSUT1 SYSUT2)GOTO SEGUIR

/* *//* ========================= PONER VERTICAL ============== *//* */

VERTICAL: +ALLOC FILE(SYSUT1) DATASET('Jmpdes.JMP.JCL(VERTICAL)') +

SHR REUSEALLOC FILE(SYSUT2) DATASET('&SYSUID..JMP.TMP') +

OLD REUSEOPENFILE SYSUT1 INPUTOPENFILE SYSUT2 OUTPUTGETFILE SYSUT1SET &SYSUT2 = &SYSUT1PUTFILE SYSUT2CLOSFILE SYSUT1CLOSFILE SYSUT2FREE FILE(SYSUT1 SYSUT2)

/* */

/* ========================= ESCRIBIR FORMATO ==============*//* */SEGUIR: +

FREE DA('&SYSUID..JMP.TMP')ALLOC FILE(SALIDA) DATASET('&SYSUID..JMP.TMP') +

MOD REUSEOPENFILE SALIDA OUTPUT

/* *//* ========================= ESCRIBIR FICHERO ============= *//* */

ALLOC F(ENTRADA) REUSE DA('&FICHERO') SHRIF &LASTCC NE 0 THEN DO

WRITE ERROR EN LA ALOCACION DEL FICHERO &FICHEROFREE DA('&FICHERO')EXIT

ENDOPENFILE ENTRADA INPUTSET &RC = 0

/* --------------------------------------------------- */

Page 359: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 359/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 359 de 374

ERROR DOSET &RC = &LASTCC

IF &RC = 400 THEN +GOTO FINPASO1ELSE +

DOWRITE INESPERADO FIN DE CLIST : RC = &RCWRITE ====================================EXIT

ENDEND

/* -------------------------------------------------- */SET &BLANCOS = &STR( )SET &SALIDA = &STR(&BLANCOS &BLANCOS FICHERO: &FICHERO )PUTFILE SALIDASET &SALIDA = &BLANCOS

PUTFILE SALIDAPUTFILE SALIDA

/* --------------------------------------------------- */LEER: GETFILE ENTRADA

IF &LASTCC NE 400 THEN +DOSET &SALIDA = &STR(&BLANCOS &SUBSTR(1:&LRCL,&ENTRADA))PUTFILE SALIDAGOTO &LABELEND

/* --------------------------------------------------- */FINPASO1: +

CLOSFILE ENTRADACLOSFILE SALIDA

FREE FILE(ENTRADA SALIDA)/* *//* ================ IMPRMIR TEMPORAL ====================== *//* */

ALLOC FILE(SYSUT1) DATASET('&SYSUID..JMP.TMP') SHR REUSEALLOC FILE(SYSUT2) SYSOUT(&CLASE) DEST(&REMOTO) REUSEALLOC FILE(SYSPRINT) DUMMY REUSEALLOC FILE(SYSIN) DUMMY REUSECALL 'SYS1.LINKLIB(IEBGENER)'FREE FILE(SYSUT1 SYSUT2 SYSPRINT SYSIN)WRITE =====>> FICHERO : &FICHERO IMPRESO POR RMT101 < OK >EXIT

/* */

Page 360: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 360/373

TSO para desarrolladores: ISPF Autor: José M. Peco

Página 360 de 374

Formato:

Los parámetros para poner la impresora en vertical o en horizontal seincluyen como archivos aunque pudieran especificarse directamente comovariables, pero se hace así por claridad. Son los siguientes

Horizontal: DSN=Jmpdes.JMP.JCL(HORIZONT)

1&&??% %Y2,8% %Y3,12% %Y4,1% %Y10,1% %Y5,65% %Y6,133%

Vertical : DSN=Jmpdes.JMP.JCL(VERTICAL)

1&&??% %Y2,8% %Y3,12% %Y4,1% %Y10,0% %Y5,80% %Y6,90%

Page 361: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 361/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 361 de 374

 ANEXOS

Page 362: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 362/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 362 de 374

 Anexo 1 : Perfil del Usuario 

JMP-94 ---------------- Utilidades Desarrollo Particular ------------------OPCION ===> TSO PROFILE

IKJ56688I CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE MSGID MODEWTPMSG NORECOVER PREFIX(TEST33) PLANGUAGE(ENU) SLANGUAGE(ENU)IKJ56689I DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL***

JMP-94 ---------------- Utilidades Desarrollo Particular ------------------OPCION ===> TSO PROFILE prefix(tspg8s)

JMP-94 ---------------- Utilidades Desarrollo Particular ------------------OPCION ===> TSO PROFILE

IKJ56688I CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE MSGID MODEWTPMSG NORECOVER PREFIX(TEST8S) PLANGUAGE(ENU) SLANGUAGE(ENU)IKJ56689I DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL***

--------------------- ISPF MASTER APPLICATION MENU ------------------------===> tso ex jmp

USERID - TEST8S1 ISPF/PDF - ISPF/Program Development Facility TIME - 09:42...X EXIT - Terminate ISPF using list/log defaults

Enter END command to terminate ISPF.

IKJ56228I DATA SET JMP.CLIST NOT IN CATALOG OR CATALOG CAN NOT BE ACCESSED***

Page 363: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 363/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 363 de 374

<<<<<<<<<< este error se produce por tener en el profile noprefix >>>>>>

--------------------- ISPF MASTER APPLICATION MENU ------------------------===> tso profile

IKJ56688I CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE MSGID MODEWTPMSG NORECOVER NOPREFIX PLANGUAGE(ENU) SLANGUAGE(ENU)IKJ56689I DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL***

JMP-94 ---------------- Utilidades Desarrollo Particular ------------------OPCION ===> TSO PROFILE

IKJ56688I CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE MSGID MODEWTPMSG NORECOVER PREFIX(TEST33) PLANGUAGE(ENU) SLANGUAGE(ENU)IKJ56689I DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL***

JMP-94 ---------------- Utilidades Desarrollo Particular ------------------OPCION ===> TSO PROFILE prefix(tspg8s)

JMP-94 ---------------- Utilidades Desarrollo Particular ------------------OPCION ===> TSO PROFILETEST33 95/05/05 09:59 PFs:24

IKJ56688I CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE MSGID MODEWTPMSG NORECOVER PREFIX(TEST8S) PLANGUAGE(ENU) SLANGUAGE(ENU)IKJ56689I DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL***

Page 364: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 364/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 364 de 374

<<<<<<<< otro error que se produce por tener noprefix en el profile es: >>>>>>>>

JMP-94 ----------------- Buscar una palabra en una libreria -----------------OPCION ===>

Cadena a buscar: IKJ_______________Libreria ......: TEST8S.JMP.JCL___________________________

Esta utilidad submite un proceso que se dedica abuscar la cadena especificada entre los miembrosla libreria indicada.

El resultado le deja en la cola de salida con elnombre: TEST33 y el sufijo ST

IKJ56883I DATA SET SUBMIT.D95125.T0094427.CNTL NOT ALLOCATED, REQUEST CANCELEDEDIT

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ya que no puede alocar el fichero que quiere submitir por no estar autorizado.<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Page 365: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 365/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 365 de 374

 Anexo 2 : Códigos de retorno 

Los siguientes códigos de retorno corresponden a los codigis devueltos por losservicios que se especifican cuando son invocados mediante la sentenciaISPEXEC:

CONTROL

0 normal4 Se quiere inhibir la facilidad de SPLIT cuando se trabaja en

control. Se ignora el SPLIT DISABLE20 Error grave

DISPLAY

0 Normal

4 Algun mandato en el stack no se puede encontrar8 final por end o Return12 No se encuentra el objeto invocado (panel, mensaje, cursor)16 se ha producido un truncamiento al grabar una variable definia20 Error grave

FTCLOSE

0 Normal4 ya existe el miembro y no se ha indicado NOREPL.

El miembro original se mantiene8 Archivo no abierto (no hay archivo FTOPEN previo)12 Archivo de salida en uso.16 Archivo de esqueletos o de salida no asignados

20 Error grave

FTERASE

0 Normal8 el archivo no existe12 El archivo de salida esta en uso.16 Libreria alternativa de salida no asignada20 Error grave

FTINCL

0 Normal8 el esqueleto no existe12 El esqueleto esta en uso16 La libreria de esqueletos o el archivo de salida no esta

alocado.20 Error grave

Page 366: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 366/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 366 de 374

FTOPEN

0 Normal8 el "file tailoring" ya se esta ejecutando.12 La libreria de esqueletos o el archivo de salida no están

alocado.16 El archivo de salida esta en uso.20 Error grave

GETMSG

0 Normal12 no se encuentra el mensaje20 Error grave

LIBDEF

0 Normal4 No existe una biblioteca de ese tipo8 Ya existe una biblioteca de ese tipo (COND)12 Se ha indicado ISPPROF16 no se ha alocado la libreria20 Error grave

SELECT

0 Normal por END4 Normal por RETURN o EXIT12 No se ha encontrado el panel16 Se ha trancado ZCMD o ZSEL

20 Error grave

SETMSG

0 Normal por END4 Se ha ejecutado con COND y hay un SETMSG pendiente12 Mensaje no encontrado20 Error grave

TBADD

0 Normal por END4 Se ha especificado numero de filas y solo se obtiene espacio

para una fila8 Ya existe una fila con esa clave. CRP=012 La tabla esta cerrada16 Error de conversión a numérico (SOlo en tablas clasificadas)20 Error grave

Page 367: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 367/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 367 de 374

TBBOTTOM

0 Normal8 La tabla esta vacía. CRP=012 La tabla esta cerrada16 Valor de variable truncado .20 Error grave

TBCLOSE

0 Normal12 La tabla esta cerrada16 La biblioteca alternativa de tablas no esta asignada.20 Error grave

TBCREATE

0 Normal4 Normal. Existe una tabla igual pero se ha indicado REPLACE8 Ya existe una tabla con el nombre dado y no se ha especificado

la opcion REPLACE, o bien, se ha indicado REPLACE pero la dis-posición es SHARE

12 La tabla esta en uso16 Se ha indicado WRITE y no se ha signado una biblioteca alter-

nativa20 Error grave

TBDELETE

0 Normal

8 En tablas con clave: No existe la fila a modificar (CRP=0)En tablas sin clave: el CRP esta en el TOP y ahi sigue.

12 La tabla no esta abierta.20 Error grave

TBEND

0 Normal4 La tabla no esta abierta.20 Error grave

TBERASE

0 Normal8 No existe la tabla en la libreria de salida.12 La tabla esta en uso.16 La libreria de tablas de salida no esta abierta.20 Error grave

Page 368: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 368/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 368 de 374

TBEXIST

0 Normal. El CRP se posiciona en la fila indicada.8 En tablas con clave: No existe la fila indicada (CRP=0)En tablas sin clave: No se puede invocar este servicio (CRP=0)

12 La tabla no esta abierta20 Error grave

TBGET

0 Normal.8 En tablas con clave: No existe la fila indicada (CRP=0)

En tablas sin clave: El CRP estaba en el TOP y alli se queda.12 La tabla no esta abierta16 Valor de la variable truncado20 Error grave

TBMOD

0 Normal.En tablas con clave: La fila se ha actualizado (CRP=0)En tablas sin clave: La fila se ha añadido

8 Solo en tablas con clave: La fila se ha añadido12 La tabla no esta abierta16 Error de conversión. Solo en tablas clasificadas.20 Error grave

TBOPEN

0 Normal.

8 La tabla no existe12 Fallo de ENQ: Esta en uso por este u otro usuario16 No esta signada la libreria de tablas de entrada.20 Error grave

TBPUT

0 Normal.8 En tablas con clave: La clave no coincide con la apuntada

por el CRP (el CRP se pone a 0)En tablas sin clave: El CRP esta en el TOP y alli se mantiene.

12 La tabla no esta abierta16 Error de conversión en tablas aplicadas20 Error grave

TBSAVE

0 Normal.12 La tabla no esta abierta16 No esta signada la libreria de salida.20 Error grave

Page 369: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 369/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 369 de 374

TBSKIP

0 Normal.8 El salto especificado sobrepasa el numero de filas de la tabla12 La tabla no esta abierta16 Valor de la variable truncado20 Error grave

TBSORT

0 Normal.12 La tabla no esta abierta16 Error de conversión en tablas aplicadas20 Error grave

TBTOP

0 Normal.12 La tabla no esta abierta20 Error grave

TBVCLEAR

0 Normal.12 La tabla no esta abierta20 Error grave

VCOPY

0 Normal.

8 No existe alguna variable16 Valor de la variable truncado20 Error grave

VDEFINE

0 Normal.8 No existe alguna variable16 Valor de la variable truncado20 Error grave

VDELETE

0 Normal.8 No existe alguna variable20 Error grave

Page 370: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 370/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 370 de 374

VERASE

0 Normal.8 No existe alguna variable20 Error grave

VGET

0 Normal.8 No existe alguna variable16 Valor de la variable truncado20 Error grave

VPUT

0 Normal.

8 No existe alguna variable16 Valor de la variable truncado al grabar las variables en el

pool profile20 Error grave

VREPLACE

0 Normal.16 Valor de la variable truncado.20 Error grave

VRESET

0 Normal.

20 Error grave

Page 371: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 371/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 371 de 374

 Anexo 3 : Variables del sistema en ISPF 

Este anexo especifica los nombres de variables del sistema que pueden serusados en ISPF, con indicación del pool al que pertenecen, formato ydescripción.

FECHA Y HORA  ************

-------- ---- ---- ---- ---------------------------------------------NOMBRE POOL TIPO LONG DESCRIPCION-------- ---- ---- ---- ---------------------------------------------ZDATE Shr NM 8 Fecha actualZDATEF Shr NM 8 Fecha actual con delimimtador dependiendo del

idioma (DD/MM/YY,YY/MM/DD,MM.DD.YY,...)ZDATEFD Shr NM 8 Fecha actual como en ZDATEF pero con los

caracteres que se especifiquenZDAY Shr NM 2 Día del mesZJDATE Shr NM 6 Fecha Juliana en formato (YY.DDD)ZMONTH Shr NM 2 Mes del añoZtime Shr NM 5 Hora en formato (hh:mm)Zyear Shr NM 2 Año-------- ---- ---- ---- ---------------------------------------------

GENERAL******* 

-------- ---- ---- ---- ---------------------------------------------Z Shr NM 0 Variable nulaZapplid Shr NM 8 Identificador de la aplicacionZenvir Shr NM 32 Descripción del entorno :

de 1:08 Nombre producto, versión y release9:16 Sistema operativo17:24 Entorno de operación (TSO o BATCH)25:32 Reservado

Zispfrc Shr I 8 Código de retorno de ISPSTARTZlang Pro nm 8 IdiomaZlogon Shr nm 8 Procedimiento de LogonZplace pro I/O 7 Posición de la línea de comando (ASSIS/BOTTOM)Zprefix Shr nm 8 Prefijo TSOZprofapp pro I 8 Nombre de la tabla extensión del profile poolZtempf Shr nm 44 Nombre del archivo temporal usado para el

proceso de file tailoring

Ztempn Shr nm 8 DDname del archivo temporal usado en el procesode file tailoring.Zuser Shr nm 8 Identificacion del usuarioZsysid Shr nm 4 Identificacion del entorno-------- ---- ---- ---- ---------------------------------------------

Page 372: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 372/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

Página 372 de 374

TERMINAL Y TECLAS DE FUNCION ****************************

-------- ---- ---- ---- ---------------------------------------------NOMBRE POOL TIPO LONG DESCRIPCION-------- ---- ---- ---- ---------------------------------------------ZCOLORS Shr no m 4 Numero de colores soportados por el terminalZFKA Shr no m 3 Formato del area de visualización de PFs

(Long,Short,no)ZHILITE Shr no m 3 especificación de si el terminal soporta brillo

(YES,NO)ZKEYS Prof S 4 Numero de teclas PFZPFCTL Prof E/S 5 Autorizacion al mandato PFSHOWZPFFMT Prof E/S 4 Numero de PFs visualizadas por líneaZPFSET Prof E/S 4 PFs visualizadasZPFSHOW Prof E/S 8 Estado del parámetro PFSHOW

ZPFxx Prof E/S 255 Valor asignado a la PF de numero xxZPF13-ZPF24 : primariasZPF01-ZPF12 : alternativas

ZPFLxx Prof E/S 8 Valor asignado a las etiquetas de la PF xx.ZPFL13-ZPFL24 : primariasZPFL01-ZPFL12 : alternativas

ZPRIKEYS Prof E/S 4 especifica el conjunto de PFs que será tratadocomo conjunto primario.LOW especifica el conjunto 01 A 12UPP especifica el conjunto 13 a 24

ZSCREEN Shr no m 1 Numero de pantalla lógica (rango: 1-4)ZSCREEND Shr no m 4 Numero de líneas de la pantalla disponiblesZSCREENW Shr no m 4 Numero de columnas de la pantalla disponiblesZSCRMAXD Shr no m 4 Numero máximo de líneas por pantalla

ZSCRMAXW Shr no m 4 Numero máximo de columnas de la pantallaZSPLIT Shr no m 4 Pantalla partida (YES,NO)ZTERM Shr no m 4 Tipo de terminal

definido en PROFILE de ISPF (opcion 0)-------- ---- ---- ---- ---------------------------------------------

 ARCHIVOS LOG Y LIST*******************

-------- ---- ---- ---- ---------------------------------------------NOMBRE POOL TIPO LONG DESCRIPCION-------- ---- ---- ---- ---------------------------------------------ZLOGNAME Shr no m 44 Nombre del archivo de log

ZLSTNAME Shr no m 44 Nombre del archivo de list-------- ---- ---- ---- ---------------------------------------------

Page 373: Tso Para Desarrolladores Nr 33933

7/16/2019 Tso Para Desarrolladores Nr 33933

http://slidepdf.com/reader/full/tso-para-desarrolladores-nr-33933-5634fab2742da 373/373

TSO para desarrolladores: ANEXOS Autor: José M. Peco

DESPLAZAMIENTO DE PANTALLAS***************************

-------- ---- ---- ---- ---------------------------------------------NOMBRE POOL TIPO LONG DESCRIPCION-------- ---- ---- ---- ---------------------------------------------ZSCBR Prof E/S 4 Desplazamiento en BROWSEZSCED Prof E/S 4 Desplazamiento en EDITZSCML Prof E/S 4 Desplazamiento en listas de miembrosZSCROLLA Shr S 4 Valor del despalzamiento (PAGE,MAX,numero)ZSCROLLN Shr S 4 Numero calculado dependiendo de ZSCROLLAZSCROLLD Shr S 4 Valor por omisión utilizado en visualización

de tablas y areas dinamicas.-------- ---- ---- ---- ---------------------------------------------

 Mandato PRINTG

**************

-------- ---- ---- ---- ---------------------------------------------NOMBRE POOL TIPO LONG DESCRIPCION-------- ---- ---- ---- ---------------------------------------------ZFAMPRT Func no m 4 Tipo de impresora para PRINTGZDEVNAM Func E 8 Nombre del dispositivo para PRINTGZASPECT Func E 4-------- ---- ---- ---- ---------------------------------------------

Servicio LIST*************

-------- ---- ---- ---- ---------------------------------------------NOMBRE POOL TIPO LONG DESCRIPCION-------- ---- ---- ---- ---------------------------------------------ZLSTLPP Shr no m 4 Numero de líneas por página en archivo listZLSTNUML Shr no m 4 Numero de líneas impresas en la página actualZLSTTRUN Shr no m 4 Longitud del registro-------- ---- ---- ---- ---------------------------------------------

Errores*******

-------- ---- ---- ---- ---------------------------------------------NOMBRE POOL TIPO LONG DESCRIPCION-------- ---- ---- ---- ---------------------------------------------

ZERRHM Func S 8 Nombre del panel de ayuda asociado al mensajeZERRMSG Func S 8 Identificador del mensajeZERRSM Func S 24 Texto del mensaje cortoZERRLM Func S 78 Texto del mensaje largoZERRALRM Func S 3 Indicador de alarma (YES o NO)-------- ---- ---- ---- ---------------------------------------------