En este artículo se analizan los programas de soporte incluidos o disponibles para OS/360 y sus sucesores . IBM clasifica algunos de estos programas como utilidades [1] [a] y otros como ayudas de servicio; [2] los límites no siempre son consistentes ni obvios. Muchos de estos programas, pero no todos, coinciden con los tipos del software de utilidades .
Las siguientes listas describen programas asociados con OS/360 y sus sucesores . No se incluyen utilidades DOS , TPF o VM .
Muchos de estos programas fueron diseñados por usuarios de IBM, a través del grupo SHARE , y luego modificados o ampliados por IBM a partir de versiones originalmente escritas por un usuario.
Estos programas se suelen invocar mediante lenguaje de control de tareas (JCL). Suelen utilizar identificadores DD JCL comunes (en el SO, ahora sistemas operativos z/OS ) para sus conjuntos de datos:
IDCAMS ("Access Method Services") genera y modifica conjuntos de datos de Método de acceso de almacenamiento virtual (VSAM) y no VSAM. IDCAMS se introdujo junto con VSAM en OS/VS ; la referencia al "Método de acceso" deriva de la mentalidad inicial de OS/VS de que "VSAM reemplaza a todos los demás métodos de acceso". IDCAMS probablemente tenga la mayor funcionalidad de todos los programas de utilidad, ya que realiza muchas funciones tanto para archivos VSAM como para archivos no VSAM.
El siguiente ejemplo ilustra el uso de IDCAMS para copiar un conjunto de datos en un disco. El conjunto de datos tiene registros de 80 bytes y el sistema elegirá el tamaño de bloque para la salida:
// XXXXXXXW TRABAJO XXXXXXX , AAAA , CLASE = G , MSGCLASS = 1 , NOTIFICAR =& SYSUID // PASO001 EJECUTAR PGM = IDCAMS // SYSIN DD * REPRO ARCHIVOINFILE(ARCHIVO01) ARCHIVOOUTFILE ( ARCHIVO02 ) / * // ARCHIVO01 DD DSN = PROD.ARCHIVO1.ENTRADA , disp = shr ..... // ARCHIVO02 DD DSN = PROD.ARCHIVO2 . SALIDA , // DISP = ( NUEVO , CATLG , ELIMINAR ), // UNIDAD = DASD , // ESPACIO = ( TRK ,( 100 , 10 ), RLSE ), // DCB = ( RECFM = FB , BLKSIZE = 0 , LRECL = 80 ) // SYSPRINT DD SYSOUT = * // SYSOUT DD SYSOUT = * // SYSUDUMP DD SYSOUT = * //*
En el ejemplo anterior, las tarjetas de control SYSIN provienen de un archivo en flujo, pero, si lo desea, puede apuntar a cualquier archivo secuencial o a un miembro PDS que contenga tarjetas de control o un conjunto de datos temporal. Un ejemplo de uso de archivos SYSIN sería algo como esto:
// SYSIN DD DSN = PROD . MYFILE . REPRO , DISP = SHR
o esto:
// SYSIN DD DSN = PROD . MYLIB . CNTLLIB ( REPRO ), // DISP = SHR
IEBCOMPR compara registros en conjuntos de datos secuenciales o particionados .
La utilidad IEBCOMPR se utiliza para comparar dos conjuntos de datos secuenciales o particionados . Esta comparación de conjuntos de datos se realiza en el nivel de registro lógico. Por lo tanto, IEBCOMPR se utiliza habitualmente para verificar que una copia de seguridad de un conjunto de datos sea correcta (coincidencia exacta con el original).
Durante el procesamiento, IEBCOMPR compara cada registro de cada conjunto de datos, uno por uno. Si los registros no son iguales, IEBCOMPR muestra la siguiente información en SYSOUT:
Al comparar conjuntos de datos secuenciales, IEBCOMPR considera que los conjuntos de datos son iguales si se cumplen las siguientes condiciones:
Para los conjuntos de datos particionados , IEBCOMPR considera que los conjuntos de datos son iguales si se cumplen las siguientes condiciones:
Si se encuentran diez comparaciones desiguales durante el procesamiento, IECOMPR finaliza con el mensaje apropiado.
// XXXXXXXW TRABAJO XXXXXXX , AAAA.A.A , CLASE = G , MSGCLASS = 1 , NOTIFICAR = XXXXX // PASO01 EJECUTAR PGM = IEBCOMPR , CUENTA = PJ00000000 // INCLUIR MIEMBRO=@BATCHS // * SYSIN DD DUMMY // SYSIN DD * COMPARAR TIPORG = PO / * // SYSUT1 DD DSN = XXXXXXX.ARCHIVOANTIGUO , UNIDAD = DASD , DISP = SHR // SYSUT2 DD DSN = XXXXXXX.ARCHIVONUEVO , UNIDAD = DASD , DISP = SHR // SYSUT # DD
Nota: IEBCOMPR no es un programa de comparación muy flexible ni fácil de usar. No puede restringir la comparación a determinadas columnas, no puede ignorar las diferencias en los espacios en blanco, no indica en qué parte del registro se produce la diferencia y se detiene después de 10 diferencias. Por otro lado, es rápido y está presente en todos los mainframes de IBM. Por lo tanto, es muy útil cuando se espera una coincidencia exacta, como al comparar módulos de carga que no se han vuelto a bloquear o al comprobar que una copia funcionó correctamente. Para las comparaciones de programas o informes, a menudo se utiliza el programa de comparación ISPF SuperC (ISRSUPC).
IEBCOPY copia, comprime y fusiona conjuntos de datos particionados . También puede seleccionar o excluir miembros específicos durante la operación de copia y cambiar el nombre o reemplazar miembros.
Algunas de las tareas que IEBCOPY puede realizar incluyen las siguientes:
Para la utilidad IEBCOPY , las declaraciones de control de trabajo necesarias para una copia son las siguientes:
// nombre del paso EXEC PGM = IEBCOPY // SYSPRINT DD SYSOUT = clase // MYDD1 DD DSN = xxxx . ppp . psps , DISP = SHR // MYDD2 DD DSN = xxxx . ppp . pssp , DISP = SHR // SYSIN DD * COPIAR INDD=MYDD1,OUTDD=MYDD2 SELECCIONAR MIEMBRO=(MEM1,MEM2,MEM3)/ EXCLUIR MIEMBRO=(SF,DF,SA)
Las instrucciones DD MYDD1 y MYDD2 son nombres elegidos por el usuario para los conjuntos de datos de entrada y salida particionados, respectivamente; los valores predeterminados son SYSUT1 y SYSUT2. Puede utilizar cualquier DDNAME válido para estas dos instrucciones DD. Estos DDNAME se especifican en las instrucciones de control de la utilidad para indicarle a IEBCOPY el nombre de los conjuntos de datos de entrada y salida. Solo necesita una instrucción DD para comprimir un PDS.
IEBDG ('Generador de datos') crea conjuntos de datos de prueba que consisten en datos con patrones. Las instrucciones de control definen los campos de los registros que se crearán, incluida la posición, la longitud, el formato y la inicialización que se realizará. IEBDG puede utilizar un conjunto de datos existente como entrada y cambiar los campos según se especifique en las instrucciones de control, por ejemplo, reemplazando un campo de nombre por un texto alfabético aleatorio. El contenido de cada campo se puede variar para cada registro, por ejemplo, rotando los caracteres en un campo alfanumérico hacia la izquierda o hacia la derecha para cada registro posterior.
Ejemplo:
// XXXXXXXW TRABAJO XXXXXXX , AAAA , CLASE = G , MSGCLASS = 1 , NOTIFY =& SYSUID //************************************************************************* //* CREACIÓN DE UN CONJUNTO DE DATOS PARA USAR MÁS ADELANTE //**************************************************************************** // CRSTEP EXEC PGM = IEFBR14 // DDCREA DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = ( NEW , CATLG ) //************************************************************************ //* CREACIÓN DE LOS DATOS DE PRUEBA //*************************************************************************** // PASO1 EJECUTAR PGM = IEBDG // SYSPRINT DD SYSOUT = * // SEQOUT DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = OLD // SYSIN DD DATA DSD OUTPUT=(SEQOUT) FD NOMBRE=CAMPO1,LONGITUD=30,LUGARINICIO=1,FORMATO=AL,ACCIÓN=TL FD NOMBRE=CAMPO2,LONGITUD=30,LUGARINICIO=31,FORMATO=AL,ACCIÓN=TR FD NOMBRE=CAMPO3,LONGITUD=10,LUGARINICIO=71,IMAGEN=10, X P'1234567890',ÍNDICE=1 CREAR CANTIDAD=500,NOMBRE=(CAMPO1,CAMPO2,CAMPO3),RELLENO=X'FF' FIN /* //****************************************************************************** //* IMPRIMIENDO LOS DATOS DE PRUEBA EN SYSOUT //************************************************************************* // PASO2 EJECUTAR PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = * . STEP1 . SEQOUT , DISP = SHR // SYSIN DD DUMMY // SYSUT2 DD SYSOUT = * //************************************************************************ //* ELIMINAR EL CONJUNTO DE DATOS CREADO, INCLUSO SI SE INTERRUMPIERON LOS PASOS ANTERIORES //************************************************************************ // DLSTEP EXEC PGM = IEFBR14 , COND = EVEN // DDDEL DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = ( OLD , DELETE , DELETE ) //
IEBEDIT copia selectivamente partes de JCL.
Un ejemplo de un programa IEBEDIT:
// IEBEDITJ CUENTA DE TRABAJO , '' , CLASE = P , MSGCLASS = T , MSGLEVEL = ( 1 , 1 ) , NOTIFY =& SYSUID // PASO0001 EJECUTAR PGM = IEBEDIT // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = xxxxx.yyyyy.zzzzz , DISP = SHR // SYSUT2 DD SYSOUT = ( * , INTRDR ) // SYSIN DD * TIPO DE EDICIÓN=INCLUIR,NOMBREDEPASO = (PASO10, PASO5 ,PASO15) / * //
En este ejemplo, el conjunto de datos xxxxx.yyyyy.zzzzz debe contener uno o más trabajos (que deben incluir los pasos denominados STEP5, STEP10 y STEP15). Esta rutina IEBEDIT copia los pasos seleccionados del trabajo en el archivo de salida SYSUT2 (en este ejemplo, el lector interno).
La sintaxis de la declaración EDIT es:
[etiqueta] EDITAR [INICIO=nombre_trabajo] [,TIPO={POSICIÓN|INCLUIR|EXCLUIR}] [,NOMBRE_PASO=(lista_nombres)] [,NOIMPRIMIR]
START=jobname
especifica el nombre del trabajo de entrada al que se aplica la instrucción EDIT. Cada instrucción EDIT debe aplicarse a un trabajo independiente. Si se especifica START sin TYPE ni STEPNAME, la instrucción JOB y todos los pasos del trabajo especificado se incluyen en la salida.
Predeterminado: si se omite START y solo se proporciona una instrucción EDIT, se procesa el primer trabajo encontrado en el conjunto de datos de entrada. Si se omite START en una instrucción EDIT distinta de la primera, el procesamiento continúa con la siguiente instrucción JOB que se encuentre en el conjunto de datos de entrada.
TYPE={POSITION|INCLUDE|EXCLUDE}
especifica el contenido del conjunto de datos de salida. Estos valores pueden codificarse:
POSITION
especifica que la salida debe constar de una declaración JOB, el paso de trabajo especificado en el parámetro STEPNAME y todos los pasos que siguen a ese paso de trabajo. Todos los pasos de trabajo anteriores al paso especificado se omiten de la operación. POSITION es el valor predeterminado.
INCLUDE
especifica que el conjunto de datos de salida debe contener una declaración JOB y todos los pasos del trabajo especificados en el parámetro STEPNAME.
EXCLUDE
especifica que el conjunto de datos de salida debe contener una declaración JOB y todos los pasos de trabajo que pertenecen al trabajo, excepto aquellos pasos especificados en el parámetro STEPNAME.
STEPNAME=(namelist)
especifica los nombres de los pasos de trabajo que desea procesar.
namelist
Puede ser un nombre de paso de trabajo único, una lista de nombres de pasos separados por comas o un rango secuencial de pasos separados por un guion (por ejemplo, STEPA-STEPE). Se puede utilizar cualquier combinación de estos en una lista de nombres. Si se especifica más de un nombre de paso, toda la lista de nombres debe estar entre paréntesis.
Cuando se codifica con TYPE=POSITION, STEPNAME especifica el primer paso de trabajo que se colocará en el conjunto de datos de salida. Los pasos de trabajo anteriores a este paso no se copian en el conjunto de datos de salida.
Cuando se codifica con TYPE=INCLUDE o TYPE=EXCLUDE, STEPNAME especifica los nombres de los pasos de trabajo que se incluirán o excluirán de la operación. Por ejemplo, STEPNAME=(STEPA,STEPF-STEPL,STEPZ) indica que los pasos de trabajo STEPA, STEPF a STEPL y STEPZ se incluirán o excluirán de la operación.
Si se omite STEPNAME, se copia todo el trabajo de entrada cuyo nombre se especifica en la instrucción EDIT. Si no se especifica ningún nombre de trabajo, se procesa el primer trabajo encontrado.
NOPRINT
especifica que el conjunto de datos del mensaje no debe incluir una lista del conjunto de datos de salida.
Predeterminado: la salida resultante se incluye en el conjunto de datos del mensaje.
Ver aquí para más información: [1]
IEBGENER copia registros de un conjunto de datos secuencial o crea un conjunto de datos particionado.
Algunas de las tareas que IEBGENER puede realizar incluyen las siguientes:
Un ejemplo de un programa IEBGENER para copiar un conjunto de datos a otro:
// IEBGENER JOB CUENTA , ' COPIA DE DATOS ' , MSGCLASS = J , CLASE = A // STEP010 EJEC PGM = IEBGENER // SYSUT1 DD DSN = xxxxx.yyyyy.zzzzz , DISP = SHR // SYSUT2 DD DSN = aaaaa.bbbbb.ccccc , DISP = (, CATLG ) , // UNIDAD = SYSDA , ESPACIO = ( TRK , ( 5 , 5 ) , RLSE ) , // DCB = ( RECFM = FB , LRECL = 1440 ) // SYSPRINT DD SYSOUT = * // SYSIN DD DUMMY
Para las tareas de copia directa, el programa sort puede realizarlas con mayor rapidez que IEBGENER. Por ello, muchas tiendas de mainframes utilizan una opción que envía automáticamente dichas tareas al programa sort ICEGENER en lugar de a IEBGENER.
En algunos sistemas es posible enviar correos electrónicos desde un trabajo por lotes dirigiendo la salida al " SMTP
" escritor externo . En dichos sistemas, la técnica es la siguiente:
// IEBGENER JOB ACCT , 'COPIA DE DATOS' , MSGCLASS = J , CLASS = A // NORMRC EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD * , LRECL = 80 HELO <SYSTEMID> MAIL FROM:<USERID@SYSTEMID> RCPT TO:<USERID@SYSTEMID> DATA From: <USERID@SYSTEMID> To: <USERID@SYSTEMID> Asunto: Correo de prueba CORREO DE PRUEBA DESDE EL MAINFRAME . SALIR /* // SYSUT2 DD SYSOUT = ( B , SMTP ), LRECL = 80 // SYSIN DD DUMMY
También es posible adjuntar archivos mientras se envía el correo electrónico desde Mainframe.
IEBIMAGE manipula varios tipos de definiciones (también conocidas como imágenes ) para la impresora IBM 3211, el subsistema de impresión láser IBM 3800 y la impresora IBM 4248. Los usos comunes son para los buffers de control de formularios ( FCB ), tablas de disposición de caracteres, definiciones de caracteres e imágenes de formularios que se imprimirán en la salida junto con el texto, para los logotipos de la empresa que se imprimirán en la página o simplemente para imprimir páginas de "barra gris" (fondos horizontales grises y blancos alternados, para que coincidan con el papel de barra verde anterior ). Con esta utilidad, se pueden almacenar muchos formularios o logotipos diferentes como imágenes e imprimirlos cuando sea necesario, todos utilizando el mismo papel en blanco estándar, eliminando así la necesidad de almacenar muchos formularios preimpresos y la necesidad de que los operadores detengan la impresora y cambien el papel.
IEBISAM descarga, carga, copia e imprime conjuntos de datos ISAM .
Extraído del manual de IBM SC26-7414-08 z/OS DFSMSdfp Utilities: El programa IEBISAM ya no se distribuye. A partir de z/OS V1R7, los conjuntos de datos ISAM ya no se pueden procesar (crear, abrir, copiar o volcar). Los conjuntos de datos ISAM que aún se utilizan se deben convertir en conjuntos de datos con secuencia de claves VSAM.
Antes de z/OS V1R7, se podían usar servicios de método de acceso para asignar un conjunto de datos con secuencia de claves VSAM y copiar un conjunto de datos ISAM en él.
IEBPTPCH ("PrinT y PunCH") imprime o perfora registros de un conjunto de datos secuencial o particionado.
Algunas de las tareas que IEBPTPCH puede realizar incluyen las siguientes:
// IEBPTPCH JOB // EXEC PGM=IEBPTPCH // SYSIN DD * PRINT MAXFLDS=2 TÍTULO ELEMENTO=('Nombre',22), ELEMENTO=('GPA',50) TÍTULO ELEMENTO=(' ',1) CAMPO DE REGISTRO=(25,1,,22), CAMPO=(4,51,,50) /* // SYSPRINT DD SYSOUT = * // SYSUT1 DD * Persona 1 307 C Meshel Hall 3.89 Segunda persona 123 Williamson Hall 2.48 Tercera persona 321 Maag Library 1.52 /* // SYSUT2 DD SYSOUT = * //
Comprobación de conjunto de datos vacío: si el conjunto de datos que se va a comprobar está vacío, RC=4, de lo contrario, 0.
// TRABAJO IEBPTPCH // EJECUTAR PGM=IEBPTPCH // SYSUT1 DD DSN = < nombre de archivo >, DISP = SHR // SYSUT2 DD DUMMY , // DCB = ( BLKSIZE = < tamaño de bloque >, RECFM=FA) // SYSIN DD * PRINT TYPORG=PS /* // SYSPRINT DD SYSOUT = * //
Leer registros de un lector de cartuchos de cinta 2495.
Cambia registros en un conjunto de datos secuencial o en un miembro de un conjunto de datos particionado, reemplazado por, pero no compatible con, IEBUPDTE.
IEBUPDTE ("UPDaTE") incorpora cambios a conjuntos de datos secuenciales o particionados. La utilidad UNIX patch
es un programa similar, pero utiliza marcadores de formato de entrada diferentes ( por ejemplo , "./ INSERT ..." en MVS se convierte en "@@..." en Unix Patch).
Algunos programadores lo pronuncian "IEB up-ditty".
La utilidad IEBUPDTE se utiliza para mantener las bibliotecas de origen. Algunas de las funciones que puede realizar IEBUPDTE son las siguientes:
IEBUPDTE se utiliza comúnmente para distribuir bibliotecas de origen desde cinta a DASD .
IEBUPDTE utiliza las mismas instrucciones de control de trabajos que requieren la mayoría de las utilidades de tipo IEB. Las únicas excepciones son las siguientes:
Los controles de trabajo utilizados por IEUPDTE son los siguientes:
// nombre del paso EXEC PGM = IEUPDTE , PARM = NEW // SYSPRINT DD SYSOUT = clase // SYSUT1 DD ... // SYSUT2 DD ... // SYSIN DD ...
IEFBR14 es un programa ficticio, normalmente insertado en JCL cuando la única acción deseada es la asignación o eliminación de conjuntos de datos.
Un ejemplo de un paso IEFBR14 :
// IEFBR14 CUENTA DE TRABAJO , 'ELIMINAR CONJUNTO DE DATOS' // PASO01 EJECUTAR PGM = IEFBR14 // DELDD DD DSN = xxxxx . yyyyy . zzzzz , // DISP = ( MOD , DELETE , DELETE ), UNIDAD = DASD
La secuencia de llamada de OS/360 contenía la dirección de retorno en el registro 14. Por lo tanto, una bifurcación al registro 14 saldría inmediatamente del programa. Sin embargo, antes y después de ejecutar este programa, el sistema operativo asignaría y desasignaría conjuntos de datos según lo especificado en las instrucciones DD, por lo que se utiliza comúnmente como una forma rápida de configurar o eliminar conjuntos de datos.
Consistía inicialmente en una única instrucción "Branch to Register" 14. El mnemónico utilizado en el ensamblador de IBM era BR y de ahí el nombre: IEF BR 14. IEF es el "prefijo" del subsistema de "gestión de trabajos" de OS/360.
Este programa de instrucción única contenía un error: no establecía el código de retorno. Por lo tanto, se tuvo que agregar una segunda instrucción para borrar el código de retorno y poder salir con el estado correcto.
Se informó de un error adicional que IBM corrigió en este programa, que ahora consta de dos instrucciones. Este error se debía a que el programa IEFBR14 no se podía editar mediante enlaces como reentrante (utilizable simultáneamente por más de un usuario).
Algunos piratas informáticos han tomado IEFBR14 y han cambiado la instrucción BR 14 a BR 15, creando así "el bucle más corto del mundo", ya que el registro 15 contiene la dirección del propio módulo IEFBR14, y una instrucción BR 15 simplemente volvería a invocar el módulo, para siempre.
Estas utilidades normalmente las utilizan los programadores de sistemas para mantener el funcionamiento del sistema, en lugar de utilizarlas para realizar trabajos de aplicación en el sistema.
ICKDSF ("Device Support Facility") instala, inicializa y mantiene DASD, ya sea bajo un sistema operativo o de forma independiente .
Asignar pistas alternativas a pistas defectuosas.
IEHDASDR [1] : 161–187 puede realizar varias operaciones para dispositivos de almacenamiento de acceso directo [b] (DASD)
Finalmente, IBM dejó de agregar soporte para nuevos tipos de dispositivos a IEHDASDR y dirigió a los clientes al DSF gratuito para inicializar volúmenes y al DASDR pago (5740-UT1) y a los Servicios de conjunto de datos/instalación de datos (5740-UT3, DF/DSS) para volcado y restauración.
IBM eliminó IEHDASDR en MVS/XA. [3]
IEHINITT ("INITialize Tape") inicializa las cintas escribiendo etiquetas. Se pueden etiquetar varias cintas en una sola ejecución de la utilidad. Se pueden escribir etiquetas estándar de IBM o ASCII .
Un ejemplo de un programa IEHINITT:
// IEHINITT JOB CUENTA , 'CINTAS DE ETIQUETAS' , MSGCLASS = J , CLASE = A // PASO0001 EJECUTAR PGM = IEHINITT , REGIÓN = 8 M // SYSPRINT DD SYSOUT = A // ETIQUETA DD DCB = DEN = 2 , UNIDAD = ( 3490 , 1 , APLAZAR ) // SYSIN DD * ETIQUETA INITT SER=123450,NUMBTAPE=3 /*
En este ejemplo se etiquetarán 3 cintas en una unidad de cinta magnética 3490. Cada cinta recibirá una etiqueta estándar de IBM. El VOLSER se incrementará en uno por cada cinta etiquetada. Cada cinta se rebobinará y se descargará después de etiquetarla.
IEHIOSUP actualiza los enlaces de direcciones de pista relativas (TTR) para rutinas de llamada de supervisor (SVC) de tipo IV en SYS1.SVCLIB. IEHIOSUP ya no es compatible con OS/VS2 y versiones posteriores. [4]
Las funciones OPEN, CLOSE y EOV son ejecutadas por una serie de módulos SVC que se ejecutan secuencialmente. Algunos módulos contienen tablas que la XCTL
macro utiliza para vincularse con el siguiente de la serie. Por razones de rendimiento, para evitar una búsqueda de directorio cada vez, estas tablas contienen las direcciones de disco de los módulos en lugar de los nombres. Las actualizaciones de SYS1.SVCLIB pueden provocar que estas direcciones cambien, por lo que se debe ejecutar IEHIOSUP para instalar las direcciones correctas. [5]
Este es un ejemplo del JCL necesario para ejecutar IEHIOSUP. [1]
// TRABAJO IHEIOSUP // EJECUTAR PGM=IEHIOSUP // SYSUT1 DD DSNAME = SYS1 . SVCLIB ~ DISP = OLD , UNIDAD = 2311 , // VOLUMEN = SER = 111111 // SYSPRINT DD SYSOUT = A //
IEHLIST es una utilidad que se utiliza para enumerar entradas en un directorio de conjunto de datos particionados (PDS) o para enumerar el contenido de una tabla de contenido de volumen ( VTOC ).
La utilidad IEHLIST se utiliza para enumerar las entradas contenidas en cualquiera de los siguientes:
Un ejemplo de un programa IEHLIST:
// IEHLIST JOB CUENTA , 'LISTA PDS' , MSGCLASS = J , CLASE = A // PASO0001 EJEC PGM = IEHLIST , REGIÓN = 8 M // SYSPRINT DD SYSOUT = A // PDS1 DD DSN = xxxx.yyyy.zzzz , DISP = OLD // SYSIN DD * LISTPDS DSNAME=xxxx.yyyy.zzzz , FORMATO / *
Este trabajo producirá una lista formateada del directorio PDS del PDS llamado xxxx.yyyy.zzzz.
Un ejemplo de un programa IEHLIST para listar un VTOC es muy similar:
// IEHLIST TRABAJO CUENTA , 'LISTA VTOC' , MSGCLASS = J , CLASE = A // PASO0001 EJECUTAR PGM = IEHLIST , REGIÓN = 8 M // SYSPRINT DD SYSOUT = A // VOL1 DD VOL = SER = vvvvvv , DISP = OLD // SYSIN DD * LISTVTOC VOL=SER=vvvvvv,FORMATO /*
IEHMOVE mueve o copia colecciones de datos. Sin embargo, los entornos DFSMS ( almacenamiento administrado por el sistema ) son ahora comunes e IBM no recomienda utilizar la utilidad IEHMOVE en ellos. Un movimiento se diferencia de una copia en que, después de un movimiento, el conjunto de datos original se elimina o se elimina. Algunas de las tareas que IEHMOVE puede realizar incluyen las siguientes:
A primera vista, IEHMOVE puede parecer redundante con respecto a las utilidades IEBGENER e IEBCOPY. Sin embargo, IEHMOVE es más potente. La principal ventaja de utilizar IEHMOVE es que no es necesario especificar el espacio ni la información de DCB para los nuevos conjuntos de datos. Esto se debe a que IEHMOVE asigna esta información en función de los conjuntos de datos existentes.
Otra ventaja de IEHMOVE es que permite copiar o mover grupos de conjuntos de datos, así como volúmenes completos de datos. Debido a la facilidad para mover grupos de conjuntos de datos o volúmenes, la utilidad IEHMOVE es la preferida por los programadores de sistemas .
Un ejemplo de trabajo de IEHMOVE:
// nombre del paso EXEC PGM = IEHMOVE , PARM = 'LINECNT=xx,POWER=n' // SYSPRINT DD SYSOUT = clase // SYSUT1 DD UNIDAD = aaaa , VOL = SER = bbbbbb , DISP = OLD // cualquier nombre1 DD UNIDAD = cccc , VOL = SER = dddddd , DISP = OLD // cualquier nombre2 DD UNIDAD = eeee , VOL = SER = ffffff , DISP = OLD // SYSIN DD ...
Las instrucciones DD para IEHMOVE, distintas de SYSPRINT y SYSIN, hacen referencia a volúmenes DASD o de cinta magnética en lugar de conjuntos de datos individuales . Sin embargo, hacer referencia a volúmenes puede plantear un problema, ya que al especificarlos DISP=OLD
se obtiene acceso exclusivo a un volumen. Por lo tanto, mientras se ejecuta el trabajo IEHMOVE, ese volumen completo (y todos los conjuntos de datos que contiene) no están disponibles para otros usuarios. Esto es aceptable para volúmenes privados, como volúmenes de cinta o DASD montables, pero inaceptable para volúmenes públicos.
La declaración DD SYSUT1 especifica un volumen DASD donde se asignan tres conjuntos de datos de trabajo requeridos por IEHMOVE. Debe especificar información de unidad y volumen para esta declaración DD.
IEHMOVE fue uno de los primeros sistemas desarrollados en PL/S .
En este ejemplo, se trasladan tres conjuntos de datos secuenciales (SEQSET1, SEQSET2 y SEQSET3) de un volumen de disco a tres volúmenes de disco independientes. Cada uno de los tres volúmenes receptores se monta cuando lo requiere IEHMOVE. Los conjuntos de datos de origen no se catalogan. IEHMOVE asigna el espacio.
// TRABAJO MOVIDO ... // PASO1 EJEC PGM = IEHMOVE // SYSPRINT DD SYSOUT = A // SYSUT1 DD UNIDAD = disco , VOLUMEN = SER = 333333 , DISP = OLD // DD1 DD UNIDAD = ( disco ,, APLAZAR ), DISP = OLD , // VOLUMEN = ( PRIVADO ,, SER = ( 222222 )) // DD2 DD UNIDAD = ( disco ,, APLAZAR ), DISP = OLD , // VOLUMEN = ( PRIVADO ,, SER = ( 222333 )) // DD3 DD UNIDAD = ( disco ,, APLAZAR ), DISP = OLD , // VOLUMEN = ( PRIVADO ,, SER = ( 222444 )) // DD4 DD VOLUMEN = ( PRIVADO , RETENCIÓN , SER = ( 444444 )), // UNIDAD = disco , DISP = OLD // SYSIN DD * MOVER DSNAME=SEQSET1,A=disco=222222,DESDE=disco=444444 MOVER DSNAME=SEQSET2,A=disco=222333,DESDE=disco=444444 MOVER DSNAME=SEQSET3,A=disco=222444,DESDE=disco=444444 /*
IEHPROGM crea y mantiene datos de control del sistema. También se utiliza para renombrar y borrar un conjunto de datos.
Algunas de las tareas que IEHPROGM puede realizar incluyen las siguientes:
Para catalogar:
// SYSIN DD * CATLG DSNNAME=nombre-conjunto-de-datos, VOL=nombre-dispositivo=número-volumen /* //
Seleccionar y formatear registros SMF para errores de cinta.
Estos programas no se ejecutan bajo el control de un sistema operativo.
Formatear volúmenes de acceso directo y asignar pistas alternativas.
Volcar y restaurar volúmenes de acceso directo.
Asignar pistas alternativas, recuperar y reemplazar datos.
Cargue el búfer de control de formularios (FCB) y el búfer del conjunto de caracteres universal (UCS) en la impresora.
Se trata de programas de utilidad que IBM documenta en manuales de ayudas de servicio o de diagnóstico [6] . Las ayudas de servicio originales de OS/360 tenían nombres que empezaban con IFC e IM*, pero IBM cambió la convención de nombres a HM* para OS/VS1 y a AM* para OS/VS2 . IBM no cambió la convención IFC.
Inicializa el conjunto de datos SYS1.LOGREC.
Resume e imprime registros del conjunto de datos de registro de errores SYS1.LOGREC.
Rastrea eventos del sistema seleccionados, como interrupciones de SVC y de E/S.
Genera el JCL necesario para aplicarlo a un PTF y/o aplica el PTF. Las funciones de este programa han sido absorbidas por SMP .
Verifica y/o reemplaza instrucciones y/o datos en un módulo de carga, un objeto de programa o un archivo de disco.
Formatea e imprime módulos de objetos, módulos de carga, objetos de programa y registros de identificación CSECT.
Módulos de carga de mapas. Las funciones de este programa han sido absorbidas por IMBLIST.
Programa independiente para formatear e imprimir la cola de trabajos del sistema. No aplicable a MVS .
Formatear e imprimir la cola de trabajos del sistema. No aplicable a MVS .
Formatea e imprime volcados de núcleo , conjuntos de datos de intercambio de TSO y datos de seguimiento de GTF.
Programa independiente para producir un volcado de alta o baja velocidad del almacenamiento principal.
La utilidad de ordenación/combinación es un programa que ordena los registros de un archivo en un orden específico o combina archivos previamente ordenados. Se utiliza con mucha frecuencia; suele ser el programa de aplicación más utilizado en una tienda de mainframes. Los programas de ordenación/combinación modernos también pueden seleccionar u omitir determinados registros, resumir registros, eliminar duplicados, reformatear registros y generar informes simples. La ordenación/combinación es tan importante que existen varias empresas que venden su propio paquete de ordenación/combinación para mainframes IBM.
El programa de ordenación y combinación original de IBM para OS/360, 360S-SM-023, cuyo nombre de programa era IERRCO00 (alias SORT), solo admitía dispositivos de almacenamiento de acceso directo (DASD) [d] y cintas (2400) de primera generación de IBM. Los productos de programa de IBM , como 5734-SM1 y el posterior 5740-SM1 ( DFSORT , alias ICEMAN, también SORT), proporcionaban compatibilidad con unidades de disco de segunda generación .
SORT se ejecuta con frecuencia como un programa independiente, donde normalmente lee la entrada de un archivo identificado por DD SORTIN
y escribe la salida ordenada en un archivo identificado por DD SORTOUT
. También se lo suele llamar desde otra aplicación, a través del verbo COBOL SORT
o llamadas a rutinas PL/I PLISRTx
, donde puede usar archivos SORTIN
o SORTOUT
, o recibir registros para que los ordene el que llama y/o devolver los registros ordenados al que llama de a uno por vez.
El funcionamiento de SORT está dirigido por sentencias de control, que son en gran medida compatibles entre los distintos programas de ordenación de IBM y de terceros. La sentencia SORT
or MERGE
define las claves de ordenación (los campos en los que se ordenarán o fusionarán los datos). Esta sentencia identifica la posición, la longitud y el tipo de datos de cada clave. La RECORD
sentencia describe el formato y la longitud de los registros en el archivo de entrada. Otras sentencias permiten al usuario especificar qué registros se deben incluir o excluir de la ordenación y especificar otras transformaciones que se realizarán en los datos.
Las claves pueden ser cualquier combinación de datos de caracteres EBCDIC o ASCII , decimales compactas o zonificadas, binarios de punto fijo con o sin signo, o de punto flotante hexadecimal. Las claves pueden estar ubicadas en cualquier parte del registro y no tienen que ser contiguas. La ordenación se puede especificar en cualquier combinación de secuencia ascendente y descendente por clave. [7]
El programa de ordenación OS/360, IERRCO00, opera dividiendo los datos de entrada en secciones, ordenando cada sección en la memoria principal y escribiendo la sección ordenada en conjuntos de datos intermedios en dispositivos de almacenamiento de acceso directo (DASD) o cinta magnética . Las fases de fusión finales luego fusionan las secciones para producir la salida ordenada. SORT utiliza una de varias técnicas para distribuir las secciones entre dispositivos de almacenamiento secundarios. Por lo general, SORT puede elegir la técnica óptima, pero el usuario puede anularla. [8] SORT tiene tres técnicas que se pueden utilizar si el almacenamiento intermedio es cinta y dos si es disco. [9]
Las técnicas de cinta son:
Las técnicas de disco son:
OS/360 sólo contaba con el editor Linkage, disponible en varias configuraciones. DFSMSdfp agregó el Binder como alternativa para los módulos de carga y como única opción para los objetos de programa.
El editor de vínculos crea y reemplaza módulos de carga en un conjunto de datos particionado a partir de una combinación de tarjetas de control, módulos de objetos y otros módulos de carga. Puede cambiar el nombre o reemplazar una sección de control (CSECT) y realizar varias otras funciones diversas. Originalmente estaba disponible en varias configuraciones según el requisito de almacenamiento, pero el editor de vínculos de nivel E ya no está disponible y el editor de vínculos de nivel F ahora se conoce simplemente como editor de vínculos. En z/OS, el editor de vínculos solo está presente por compatibilidad.
El enlazador, añadido en DFSMS , realiza las mismas funciones que el Editor de enlaces. Además, admite un nuevo formato, el objeto de programa, que es el equivalente funcional de un módulo de carga en Partitioned Data Set Extended (PDSE), con muchas capacidades adicionales.
Generalmente había un ensamblador estándar, porque era necesario para la generación del sistema (SYSGEN) y la personalización.
Assembler (E) fue diseñado para que OS/360 se ejecute en máquinas muy pequeñas.
El ensamblador (F) fue diseñado para instalaciones normales de OS/360.
Assembler (XF) fue el ensamblador de sistemas para OS/VS1 y OS/VS2, reemplazando a Assembler (E) y (F), aunque no era totalmente compatible con ellos. IBM pronto convirtió a Assembler (XF) en el ensamblador de sistemas también para DOS y VM.
Assembler (H) y Assembler (H) Versión 2 son ensambladores de productos de programa que generalmente son más rápidos que los ensambladores E, F y XF, aunque no son totalmente compatibles con ninguno de ellos.
IBM High Level Assembler (HLASM) es básicamente una nueva versión de Assembler (H) Version 2 y es el único ensamblador que IBM admite en z/OS y z/VM. Reemplaza a todos los ensambladores antiguos, aunque no es totalmente compatible con ellos.
Cada lenguaje de programación utilizado en una tienda de informática tendrá uno o más compiladores asociados que traducen un programa fuente en un módulo de objeto de lenguaje de máquina. Luego, el módulo de objeto del compilador debe ser procesado por el editor de enlaces, IEWL, para crear un módulo de carga ejecutable.
IGYCRCTL es un ejemplo común de compilador; es el compilador del producto IBM Enterprise COBOL para z/OS actual. (Ha habido varios compiladores IBM COBOL anteriores a lo largo de los años, con diferentes nombres, aunque los usuarios pueden proporcionar un alias COBOL
para la versión actual). Hay muchos otros compiladores para varios otros lenguajes de programación.
Los compiladores disponibles de IBM incluían ALGOL , COBOL, FORTRAN , PL/I y RPG .
El Programa de modificación del sistema (SMP) es el vehículo para instalar servicios en OS/360 y sus sucesores, reemplazando, por ejemplo, los trabajos de ensamblaje independiente, edición de enlaces e IMAPTFLE. Originalmente era una función opcional, pero es obligatoria para MVS/SP y versiones posteriores, y la versión del producto del programa, SMP/E, está incluida en los sistemas más recientes, por ejemplo, z/OS.
Si descubre que, para una aplicación de ordenación/combinación en particular, el programa de ordenación/combinación no elige la técnica más eficiente, puede solicitar que se utilice otra técnica.