Este artículo analiza 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 u obvios. Muchos de estos programas, pero no todos, coinciden con los tipos de software de utilidad .
Las siguientes listas describen programas asociados con OS/360 y sus sucesores . No se incluyen utilidades de DOS , TPF o VM .
Muchos de estos programas fueron diseñados por usuarios de IBM, a través del grupo SHARE , y luego IBM los modificó o extendió a partir de versiones escritas originalmente por un usuario.
Estos programas generalmente se invocan a través del lenguaje de control de trabajos (JCL). Suelen utilizar identificadores JCL DD comunes (en el sistema operativo, ahora sistemas operativos z/OS ) para sus conjuntos de datos:
IDCAMS ("Servicios de método de acceso") genera y modifica conjuntos de datos de método de acceso al almacenamiento virtual (VSAM) y no VSAM. IDCAMS se introdujo junto con VSAM en OS/VS ; la referencia al "Método de acceso" se deriva de la mentalidad inicial de "VSAM reemplaza todos los demás métodos de acceso" de OS/VS. IDCAMS probablemente tiene la mayor funcionalidad de todos los programas de utilidad, realizando muchas funciones, tanto para archivos VSAM como para archivos que no son VSAM.
El siguiente ejemplo ilustra el uso de IDCAMS para copiar un conjunto de datos al 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 // STEP001 EXEC PGM = IDCAMS // SYSIN DD * REPRO INFILE(FILE01) OUTFILE(FILE02) /* // FILE01 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 in-stream, pero, en su lugar, puede señalar cualquier archivo secuencial o un miembro de PDS que contenga tarjetas de control o un conjunto de datos temporal, si lo desea. Un ejemplo de uso de archivos SYSIN sería algo como este:
// SYSIN DD DSN = PROD . MI ARCHIVO . REPRO , DISP = SHR
o esto:
// SYSIN DD DSN = PROD . MILIB . 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 a nivel de registro lógico. Por lo tanto, IEBCOMPR se utiliza comúnmente 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 enumera 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 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 termina con el mensaje apropiado.
// XXXXXXXW TRABAJO XXXXXXX , AAAA . A . A , CLASE = G , MSGCLASS = 1 , NOTIFICAR = XXXXX // PASO01 EXEC PGM = IEBCOMPR , ACCT = PJ00000000 // INCLUDE MEMBER=@BATCHS //*SYSIN DD DUMMY // SYSIN DD * COMPARE TYPORG=PO /* // SYSUT1 DD DSN = XXXXXXX . OLDFILE , UNIDAD = DASD , DISP = SHR // SYSUT2 DD DSN = XXXXXXX . NUEVO ARCHIVO , 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 solo a ciertas columnas, no puede ignorar las diferencias en los espacios en blanco, no le dice en qué parte del registro ocurre 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 comparar módulos de carga que no han sido rebloqueados o verificar que una copia funcionó correctamente. Para comparar 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 requeridas para una copia son las siguientes:
// nombre de 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 declaraciones 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 declaraciones DD. Estos DDNAME se especifican en las declaraciones de control de la utilidad para indicarle a IEBCOPY el nombre de los conjuntos de datos de entrada y salida. Solo necesita una declaración DD para comprimir un PDS.
IEBDG ('Generador de datos') crea conjuntos de datos de prueba que consisten en datos modelados. Las declaraciones 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 campos según lo especificado en las declaraciones de control, por ejemplo reemplazando un campo de nombre por 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 , NOTIFICAR =& SYSUID //****************************** ***************************************** //* CREACIÓN DE UN CONJUNTO DE DATOS Para SER UTILIZADO MÁS TARDE //********************************************* ************************** // CRSTEP EXEC PGM = IEFBR14 // DDCREA DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = ( NUEVO , CATLG ) //*************************************** ***************************** //* CREACIÓN DE LOS DATOS DE PRUEBA //********** ************************************************** ********** // PASO1 EXEC PGM = IEBDG // SYSPRINT DD SYSOUT = * // SEQOUT DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = ANTIGUO // SYSIN DD DATA DSD SALIDA=(SEQOUT) FD NOMBRE=CAMPO1,LENGTH=30,STARTLOC=1,FORMAT=AL,ACTION=TL FD NAME=FIELD2,LENGTH=30,STARTLOC=31,FORMAT =AL,ACCIÓN=TR FD NOMBRE=CAMPO3,LONGITUD=10,STARTLOC=71,IMAGEN=10, X P'1234567890',INDEX=1 CREAR CANTIDAD=500,NOMBRE=(CAMPO1,CAMPO2,CAMPO3),FILL=X 'FF' FIN /* //****************************************** *************************** //* IMPRESIÓN DE LOS DATOS DE PRUEBA EN SYSOUT //************ ************************************************** ********* // PASO 2 EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = * . PASO 1 . SEQOUT , DISP = SHR // SYSIN DD DUMMY // SYSUT2 DD SYSOUT = * //********************************************* *************************** //* ELIMINAR EL CONJUNTO DE DATOS CREADO, INCLUSO SI LOS PASOS ANTERIORES SE ABERTAN //******** ************************************************** ************ // DLSTEP EXEC PGM = IEFBR14 , COND = EVEN // DDDEL DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = ( ANTIGUO , ELIMINAR , ELIMINAR ) //
IEBEDIT copia selectivamente partes de JCL.
Un ejemplo de un programa IEBEDIT:
// CUENTA DE TRABAJO IEBEDITJ , '' , CLASE = P , MSGCLASS = T , MSGLEVEL = ( 1 , 1 ), NOTIFICAR =& SYSUID // STEP0001 EXEC PGM = IEBEDIT // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = xxxxx . yyyyy . zzzzz , DISP = SHR // SYSUT2 DD SYSOUT = ( * , INTRDR ) // SYSIN DD * EDITAR TIPO=INCLUDE,STEPNAME=(STEP10,STEP5,STEP15) /* //
En este ejemplo, el conjunto de datos xxxxx.yyyyy.zzzzz debe contener trabajos (que deben incluir pasos denominados PASO5, PASO10 y PASO15). 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 EDITAR es:
[etiqueta] EDITAR [INICIO=nombre del trabajo] [,TIPO={POSICIÓN|INCLUDE|EXCLUDE}] [,STEPNAME=(lista de nombres)] [,NOPRINT]
START=jobname
especifica el nombre del trabajo de entrada al que se aplica la instrucción EDIT. Cada declaración EDIT debe aplicarse a un trabajo independiente. Si se especifica START sin TYPE y STEPNAME, la instrucción JOB y todos los pasos del trabajo especificado se incluyen en la salida.
Valor predeterminado: si se omite INICIO y solo se proporciona una instrucción EDITAR, se procesa el primer trabajo encontrado en el conjunto de datos de entrada. Si se omite START en una instrucción EDIT que no sea la primera, el procesamiento continúa con la siguiente instrucción JOB que se encuentra en el conjunto de datos de entrada.
TYPE={POSITION|INCLUDE|EXCLUDE}
especifica el contenido del conjunto de datos de salida. Estos valores se pueden codificar:
POSITION
especifica que la salida consistirá en una instrucción JOB, el paso del trabajo especificado en el parámetro STEPNAME y todos los pasos que siguen a ese paso del trabajo. Todos los pasos del trabajo que preceden al paso especificado se omiten de la operación. POSICIÓN 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 del trabajo que pertenecen al trabajo, excepto aquellos pasos especificados en el parámetro STEPNAME.
STEPNAME=(namelist)
especifica los nombres de los pasos del 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 guión (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 TIPO=POSICIÓN, STEPNAME especifica el primer paso del trabajo que se colocará en el conjunto de datos de salida. Los pasos del trabajo que preceden 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 del trabajo que se incluirán o excluirán de la operación. Por ejemplo, STEPNAME=(STEPA,STEPF-STEPL,STEPZ) indica que los pasos del trabajo STEPA, STEPF a STEPL y STEPZ deben incluirse o excluirse 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.
Valor predeterminado: la salida resultante aparece en el conjunto de datos del mensaje.
Consulte aquí para obtener 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 puede realizar IEBGENER incluyen las siguientes:
Un ejemplo de un programa IEBGENER para copiar un conjunto de datos a otro:
// CUENTA DE TRABAJO DE IEBGENER , 'COPIA DE DATOS' , MSGCLASS = J , CLASE = A // STEP010 EXEC 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 = * / / DUMMY SYSIN DD
Para tareas de copia directa, el programa de clasificación a menudo puede realizarlas más rápido que IEBGENER. Por lo tanto, muchos talleres de mainframe utilizan una opción que enruta automáticamente dichas tareas al programa ICEGENER en lugar de IEBGENER.
En algunos sistemas es posible enviar correo electrónico desde un trabajo por lotes dirigiendo la salida al " SMTP
" escritor externo . En tales sistemas, la técnica es la siguiente:
// CUENTA DE TRABAJO DE IEBGENER , 'COPIA DE DATOS' , MSGCLASS = J , CLASE = A // NORMRC EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD * , LRECL = 80 HELO <SYSTEMID> CORREO DE:<USERID @SYSTEMID> RCPT A:<USERID@SYSTEMID> DATOS De: <USERID@SYSTEMID> A: <USERID@SYSTEMID> Asunto: Correo de prueba CORREO DE PRUEBA DESDE 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 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, logotipos de empresas que se imprimirán en la página o simplemente para imprimir una "barra gris". páginas (alternando fondos horizontales grises y blancos, 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 usando 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 todavía están en uso deben convertirse a conjuntos de datos secuenciados por clave VSAM.
Antes de z/OS V1R7, se podían utilizar servicios de método de acceso para asignar un conjunto de datos secuenciados por clave VSAM y copiar un conjunto de datos ISAM en él.
IEBPTPCH ("Imprimir y perforar") 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 ITEM=('Nombre',22), ITEM=('GPA',50) TÍTULO ITEM=(' ',1) CAMPO DE REGISTRO =(25,1,,22), FIELD=(4,51,,50) /* // SYSPRINT DD SYSOUT = * // SYSUT1 DD * Persona 1 307 C Meshel Hall 3.89 Segunda persona 123 Williamson Hall 2.48 3ra persona 321 Biblioteca Maag 1.52 /* // SYSUT2 DD SYSOUT = * //
Verificación de conjunto de datos vacío: si el conjunto de datos que se va a verificar está vacío, entonces RC = 4 o 0.
// IEBPTPCH JOB // EXEC PGM=IEBPTPCH // SYSUT1 DD DSN = < nombre de archivo >, DISP = SHR // SYSUT2 DD DUMMY , // DCB = ( BLKSIZE = < tamaño de bloque >,RECFM=FA) // SYSIN DD * IMPRIMIR TYPORG=PS /* // SYSPRINT DD SYSOUT = * //
Lea 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 IEBUPDTE, pero no compatible con él.
IEBUPDTE ("UPDaTE") incorpora cambios en conjuntos de datos secuenciales o particionados. La utilidad UNIX patch
es un programa similar, pero utiliza diferentes marcadores de formato de entrada ( 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 bibliotecas fuente. Algunas de las funciones que puede realizar IEBUPDTE incluyen las siguientes:
IEBUPDTE se utiliza habitualmente para distribuir bibliotecas fuente desde cintas a DASD .
IEBUPDTE utiliza las mismas declaraciones de control de trabajo requeridas por la mayoría de las utilidades tipo IEB. Las únicas excepciones son las siguientes:
El control de trabajo utilizado por el IEUPDTE es el siguiente:
// nombre de 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 :
// CUENTA DE TRABAJO IEFBR14 , 'BORRAR CONJUNTO DE DATOS' // PASO01 EXEC PGM = IEFBR14 // DELDD DD DSN = xxxxx . yyyyy . zzzzz , // DISP = ( MOD , ELIMINAR , ELIMINAR ), UNIDAD = DASD
La secuencia de llamada para 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 como se especifica en las declaraciones DD, por lo que se usa comúnmente como una forma rápida de configurar o eliminar conjuntos de datos.
Inicialmente consistía en una sola instrucción, "Sucursal para registrar" 14. El mnemotécnico utilizado en IBM Assembler 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 tenía un error: no estableció el código de retorno. Por lo tanto, se tuvo que agregar una segunda instrucción para borrar el código de retorno para que saliera con el estado correcto.
IBM informó y solucionó un error adicional en este programa que ahora tiene dos instrucciones. Este error se debió a que el enlace del programa IEFBR14 no se editó como reingresable (utilizable simultáneamente por más de una persona que llama).
Algunos piratas informáticos tomaron IEFBR14 y cambiaron 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 módulo IEFBR14 en sí, 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 los programadores 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 .
Asigne pistas alternativas a las pistas defectuosas.
IEHDASDR [1] : 161–187 puede realizar varias operaciones para dispositivos de almacenamiento de acceso directo [b] (DASD)
IBM finalmente 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 (5740-UT1) y a los servicios de instalación de datos/conjunto de datos (5740-UT3, DF/DSS) con cargo para volcado/ restaurar.
IBM eliminó IEHDASDR en MVS/XA. [3]
IEHINITT ("INITialize Tape") inicializa las cintas escribiendo etiquetas de cinta. Se pueden etiquetar varias cintas en una ejecución de la utilidad. Se pueden escribir etiquetas estándar de IBM o ASCII .
Un ejemplo de un programa IEHINITT:
// CUENTA DE TRABAJO IEHINITT , 'CINTAS DE ETIQUETA' , MSGCLASS = J , CLASE = A // STEP0001 EXEC 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 /*
Este ejemplo etiquetará 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 será rebobinada y descargada después de ser etiquetada.
IEHIOSUP actualiza los enlaces de direcciones de seguimiento 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 ABRIR, CERRAR y EOV se realizan mediante una serie de módulos SVC que se ejecutan secuencialmente. Algunos módulos contienen tablas utilizadas por la XCTL
macro para vincularse al siguiente de la serie. Por motivos 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 hacer que estas direcciones cambien, por lo que es necesario ejecutar IEHIOSUP para instalar las direcciones correctas. [5]
Este es un ejemplo del JCL necesario para ejecutar IEHIOSUP. [1]
// TRABAJO IHEIOSUP // EXEC PGM=IEHIOSUP // SYSUT1 DD DSNAME = SYS1 . SVCLIB ~ DISP = ANTIGUO , 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:
// CUENTA DE TRABAJO IEHLIST , 'LISTA PDS' , MSGCLASS = J , CLASE = A // STEP0001 EXEC PGM = IEHLIST , REGIÓN = 8 M // SYSPRINT DD SYSOUT = A // PDS1 DD DSN = xxxx . yyyy . zzzz , DISP = ANTIGUO // SYSIN DD * LISTPDS DSNAME=xxxx.yyyy.zzzz,FORMATO /*
Este trabajo producirá una lista formateada del directorio PDS del PDS denominado xxxx.yyyy.zzzz.
Un ejemplo de un programa IEHLIST para listar un VTOC es muy similar:
// CUENTA DE TRABAJO IEHLIST , 'LISTA VTOC' , MSGCLASS = J , CLASE = A // STEP0001 EXEC 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 ( System Managed Storage ) ahora son 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 para las empresas de servicios públicos IEBGENER e IEBCOPY. Sin embargo, IEHMOVE es más poderoso. La principal ventaja de utilizar IEHMOVE es que no es necesario especificar espacio o información 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 puede copiar o mover grupos de conjuntos de datos, así como volúmenes enteros de datos. Debido a la facilidad para mover grupos de conjuntos de datos o volúmenes, los programadores de sistemas generalmente prefieren la utilidad IEHMOVE .
Un ejemplo de trabajo de IEHMOVE:
// nombre de paso EXEC PGM = IEHMOVE , PARM = 'LINECNT=xx,POWER=n' // SYSPRINT DD SYSOUT = clase // SYSUT1 DD UNIT = aaaa , VOL = SER = bbbbbb , DISP = OLD // anyname1 DD UNIT = cccc , VOL = SER = dddddd , DISP = OLD // anyname2 DD UNIT = eeee , VOL = SER = ffffff , DISP = OLD // SYSIN DD ...
Las declaraciones DD para IEHMOVE, distintas de SYSPRINT y SYSIN, se refieren a DASD o volúmenes 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 especificar DISP=OLD
se obtiene acceso exclusivo a un volumen. Por lo tanto, mientras se ejecuta su trabajo IEHMOVE, todo el volumen (y todos los conjuntos de datos que contiene) no está disponible para otros usuarios. Esto es aceptable para volúmenes privados, como cintas o volúmenes 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, tres conjuntos de datos secuenciales (SEQSET1, SEQSET2 y SEQSET3) se mueven de un volumen de disco a tres volúmenes de disco separados. Cada uno de los tres volúmenes receptores se monta cuando IEHMOVE lo requiere. Los conjuntos de datos de origen no están catalogados. El espacio lo asigna IEHMOVE.
// MOVIÓ EL TRABAJO ... // PASO1 EXEC PGM = IEHMOVE // SYSPRINT DD SYSOUT = A // SYSUT1 DD UNIDAD = disco , VOLUMEN = SER = 333333 , DISP = ANTIGUO // DD1 DD UNIDAD = ( disco ,, APLAZAR ) , DISP = ANTIGUO , // VOLUMEN = ( PRIVADO ,, SER = ( 222222 )) // DD2 DD UNIDAD = ( disco ,, DIFERIR ), DISP = ANTIGUO , // VOLUMEN = ( PRIVADO ,, SER = ( 222333 )) // DD3 DD UNIDAD = ( disco ,, DIFERIR ), DISP = ANTIGUO , // VOLUMEN = ( PRIVADO ,, SER = ( 222444 )) // DD4 DD VOLUMEN = ( PRIVADO , RETENER , SER = ( 444444 )), / / UNIDAD = disco , DISP = ANTIGUO // SYSIN DD * MOVER DSNAME=SEQSET1,TO=disk=222222,FROM=disk=444444 MOVER DSNAME=SEQSET2,TO=disk=222333,FROM=disk=444444 MOVER DSNAME=SEQSET3, A=disco=222444,DESDE=disco=444444 /*
IEHPROGM construye y mantiene datos de control del sistema. También se utiliza para cambiar el nombre y eliminar (eliminar) un conjunto de datos.
Algunas de las tareas que IEHPROGM puede realizar incluyen las siguientes:
Para catalogar:
// SYSIN DD * CATLG DSNNAME=nombre-del-conjunto-de-datos, VOL=nombre-del-dispositivo=número-de-volumen /* //
Seleccione y formatee registros SMF para errores de cinta.
Estos programas no se ejecutan bajo el control de un sistema operativo.
Formatee volúmenes de acceso directo y asigne pistas alternativas.
Volcar y restaurar volúmenes de acceso directo.
Asigne pistas alternativas, recupere y reemplace datos.
Cargue el búfer de control de formularios (FCB) y el búfer de juego de caracteres universal (UCS) en la impresora.
Estos son programas de utilidad que IBM documenta en manuales de ayuda de servicio o diagnóstico [6] . Las ayudas del servicio OS/360 originales tenían nombres que comenzaban con IFC e IM*, pero IBM cambió la convención de nomenclatura 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.
Realiza un seguimiento de eventos seleccionados del sistema, como SVC e interrupciones de E/S.
Genera el JCL necesario para aplicar a un PTF y/o aplica el PTF. Las funciones de este programa han sido incluidas en SMP .
Verifica y/o reemplaza instrucciones y/o datos en un módulo de carga, objeto de programa o 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 incluidas en IMBLIST.
Programa independiente para formatear e imprimir la cola de trabajos del sistema. No aplicable a MVS .
Formatee e imprima la cola de trabajos del sistema. No aplicable a MVS .
Formatea e imprime volcados de memoria , conjuntos de datos de intercambio de TSO y datos de seguimiento de GTF.
Programa independiente para producir un volcado de almacenamiento principal de alta o baja velocidad.
La utilidad Ordenar/Combinar es un programa que clasifica registros en un archivo en un orden específico o combina archivos preclasificados. Se utiliza con mucha frecuencia; A menudo es el programa de aplicación más utilizado en un taller de mainframe. Los programas modernos de clasificación/fusión también pueden seleccionar u omitir ciertos registros, resumir registros, eliminar duplicados, reformatear registros y producir informes simples. La clasificación/fusión es lo suficientemente importante como para que haya varias empresas, cada una de las cuales vende su propio paquete de clasificación/fusión para mainframes IBM.
El programa de clasificación/fusión OS/360 original de IBM, 360S-SM-023, nombre de programa IERRCO00 (alias SORT), solo admitía los dispositivos de almacenamiento de acceso directo (DASD) [d] y cintas (2400) de primera generación de IBM. Los productos de programas de IBM , como 5734-SM1 y el posterior 5740-SM1 ( DFSORT , alias ICEMAN, también SORT), proporcionaron soporte para 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 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 pasar registros para que el llamante los ordene y/o pasar registros ordenados de vuelta al llamante en un momento.
El funcionamiento de SORT está dirigido por declaraciones de control, que son en gran medida compatibles entre varios programas de clasificación de IBM y de terceros. La declaración SORT
o MERGE
define las claves de clasificación : los campos en los que se ordenarán o fusionarán los datos. Esta declaración identifica la posición, longitud y tipo de datos de cada clave. La RECORD
declaración describe el formato y la longitud de los registros en el archivo de entrada. Otras declaraciones permiten al usuario especificar qué registros deben incluirse o excluirse de la clasificació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 zonificados o empaquetados, binarios de punto fijo con o sin signo o hexadecimales de punto flotante. Las claves pueden ubicarse en cualquier parte del registro y no tienen que ser contiguas. La clasificación se puede especificar en cualquier combinación de secuencia ascendente y descendente por clave. [7]
El programa de clasificación de OS/360, IERRCO00, opera dividiendo los datos de entrada en secciones, clasificando 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 finales de fusión luego fusionan las secciones para producir el resultado ordenado. 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 tenía el editor Linkage, disponible en varias configuraciones. DFSMSdfp agregó Binder como alternativa para cargar módulos y como única opción para 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 otras funciones diversas. Originalmente estaba disponible en varias configuraciones según los requisitos 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 motivos de compatibilidad.
La carpeta realiza las mismas funciones que el editor de vínculos. 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.
Por lo general, un ensamblador era estándar porque era necesario para la generación y personalización del sistema (SYSGEN).
Assembler (E) estaba pensado para OS/360 ejecutándose en máquinas muy pequeñas.
El ensamblador (F) estaba diseñado para instalaciones normales de OS/360.
Assembler (XF) era el ensamblador del sistema 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) también en el ensamblador de sistemas para DOS y VM.
Assembler (H) y Assembler (H) Versión 2 son ensambladores de productos de programas que generalmente son más rápidos que los Assembler E, F y XF, aunque no son totalmente compatibles con ninguno de ellos.
IBM High Level Assembler (HLASM) es esencialmente una nueva versión de Assembler (H) Versión 2 y es el único ensamblador que IBM admite en z/OS y z/VM. Reemplaza a todos los ensambladores más 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 a un módulo objeto de lenguaje de máquina. Luego, el editor de enlaces, IEWL, debe procesar el módulo objeto del compilador 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 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 el servicio en OS/360 y sus sucesores, reemplazando, por ejemplo, el ensamblaje independiente, la edición de enlaces y los trabajos IMAPTFLE. Originalmente era una función opcional, pero es obligatoria para MVS/SP y posteriores, y la versión del producto del programa, SMP/E, se incluye en los sistemas más recientes, por ejemplo, z/OS.
Si descubre que para una aplicación de clasificación/fusión en particular, el programa de clasificación/fusión no elige la técnica más eficiente, puede solicitar que la clasificación utilice otra técnica.