Textdoc
Zipdoc
Writeurl
ListPrompter
Loading…
Estructura de un programa ********************************* Se relaciona con las tarjetas perforadas, por ende conservó una longitud de 80 columnas Columnas 1 a 6 Número de linea y tarjeta en la que te encuentras 7 Se coloca asterisco (*) para indicar que la línea es un comentario. 8 a 11 Area A: divisiones y niveles jerarquicos, nombres de parrafos. 12 a 72 Area B: subniveles, variables, sentencias, estructuras de control, etc… 72 a la 80 Comentarios, está en desuso Divisiones de un programa Cobol Idenfication division (obligatorio) program-id (obligatorio) author installation date-written date-compiled Enviroment division (obligatorio)(Ficheros de entrada y salida) configuration section source-computer object-computer input-output section file-control Data division (obligatorio) file section(referencia a archivos de entrada y salida, variables) working-storage section(variables que no se relacionan con los ficheros de entrada o salida y niveles jerarquicos) linkage section (datos de enlace que se reciben o salen del programa) Procedure division (obligatorio) declarar sentencias COBOL (siempre dinaliza con punto (.) OJO: siempre termina las líneas con . Primeros pasos ***************************************** https://github.com/platzi/curso-cobol/tree/main Iniciar MVS C:mvs Abrir sesión C:ProgramDataMicrosoftWindowsStart MenuProgramsVista TN3270 HERC01 cul8tr Crear 3 carpetas SRC, LOAD y JCL ******************************************* 1 RFE 3 UTILITIES 2 DATASET A ALLOCATE NEW DATA SET NAME OF NEW DATA SET ==> 'HERC01.PLATZI.SRC' RECORD FORMAT ==> FB LOGICAL RECORD LENGTH ==> 80 PHYSICAL BLOCK SIZE ==> 19040 VOLUME ==> PUB010 UNIT ==> ALLOCATION SPACE UNIT ==> T ( T OR C OR B ) PRIMARY SPACE QUANTITY ==> 70 SECONDARY SPACE QUANTITY ==> 5 NUMBER OF DIRECTORY BLOCKS ==> 20 A la librería SRC le corresponde el archivo que contiene la lógica del programa A la librería JCL le corresponden compilador y ejecutor. A la librería LOAD le corresponde el resultado de la compilación. Crear programa ********************************************* 1 RFE 2 EDIT TSO LIBRARY: PROJECT ===> HERC01 LIBRARY ===> PLATZI ===> ===> ===> TYPE ===> SRC MEMBER ===> PRUEBA ENTER Cargar programa ********************************************* 1 RFE 6 COMMAND Ubicarse en las líneas Click en Transfer Click en Send to Host Buscar el archivo Escribir en Target 'SYS2.PROCLIB(COBOL)' Click en Send Revisar programa cargado ********************************************* La opción 4 dentro del panel de utilidades nos permite ver los archivos en cada librería, escribiendo la ruta (Miembro.librería.tipo). 1 RFE 3 UTILITIES 4 DSLIST Data set name prefix ==> SYS2.PROCLIB v SYS2.PROCLIB v (programa que deseas ver) v visualizar e editar Ejecutar un programa cobol ************************************************** Programa Cobol>(compilador)>Objeto>(linkedit)>Modulo de carga 1) Cargar el compilador y ejecutable en la carpeta JCL 2) Ajusta nombres de programas y rutas según sea el caso 3) Ejecuta ambos programas con SUB O SUBMIT en la línea de comandos Revisar programas ejecutados ************************************************** START Crear una nueva ventana 1 RFE 3 UTILITIES 8 OUTLIST s seleccionar los jobs a revisar (en columna S) Columna de comandos ********************************************* i Insertar línea )n Indentar n espacios a la derecha (n Indentar n espacios a la izquierda d Eliminar línea dd Eliminar un bloque (debe colocarse en la primera y última línea) d99999 Eliminar todo el contenido r Repetir línea rn Repetir línea n veces rr Repetir un bloque (debe colocarse en la primera y última línea) c Copiar línea (colocar a(after) o b(before) donde la quieres pegar) cc Copiar un bloque (colocar aa(after) o bb(before) donde la quieres pegar) c99999 Copiar todo el contenido (completar con CRE XXXX) .A Generar una etiqueta Línea de comandos ********************************************* find 'xxx' Buscar f 'xxx' Buscar res Reset busqueda c xxxx XXXX Cambiar xxxx por XXXX cols Mostrar la guía de líneas, cruces y números para ver en qué columna estamos posicionados. st * Ver todos los trabajos ref Refresh cre XXXX Crear XXXX L .A Volver a la etiqueta .A Scroll ********************************************** CS Desplazamiento al cursor H Desplazamiento a la mitad PG Desplazamiento al final de la pagina Teclas de función ********************************************** F2 abrir una nueva ventana dentro del emulador. Podemos tener abiertas hasta 16 ventanas. F3 retroceder, cerrar, salir. F7 desplazamiento hacia arriba. F8 desplazamiento hacia abajo. F9 cambiar entre cada ventana, esto en modo de carrete. Al llegar al final empieza de cero. F10 desplazamiento a la derecha. F11 desplazamiento a la izquierda. F12 regresa a pantalla los comandos que hemos escrito. Finalizar sesion *********************************************** F3 hasta pantalla principal F3 shutdown logoff JCL - Job Control Language **************************************************************************** Es un lenguaje interpretado, se ejecuta de acuerdo a su ingreso al sistema. El JCL sirve de enlace entre en programa ejecutable COBOL y el sistema operativo Mainframe. JCL se compone internamente de un solo paso, haciendo referencia a un solo programa o puede tener hasta 255 llamados a distintos programas. ¿Cómo es procesado? JCL pasa por un JES (Job Entry System) que se encarga de: Interpretar el codigo JCL Verificar la existencia en memoria del programa ejecutable COBOL Verifica la existencia en memoria de los archivos de entrada y salida necesarios. Existencia en disco. Longitud Ruta de los archivos SPOOL = sistema de visualización de trabajos Estructura JCL ***************************************************** HERC0101 JOB (COBOL), 'COBOL COMPILATION', (NO puede exceder de 20) CLASS=A, MSGCLASS=H, REGION=8M,TIME=1440, NOTIFY=HERC01, MSGLEVEL=(1,1) HERC0101 nombre/etiqueta con que puedes ubicar tu programa JOB especifica el comienzo de tu programa CLASS indica la cola de entrada donde esperará el trabajo para ser ejecutado. MSGCLASS indica la cola de salida donde dejará los mensajes que genere la ejecución. MSGLEVEL indica el tipo de mensajes que ha de imprimir el sistema, se realiza mediante dos sub-parámetros el primer ´1´ indica que queremos todos los mensajes JCL que se generen en el sistema y el segundo ´1´ indica que también queremos los mensajes relacionados con la información de los ficheros que vaya a usar el Job. Si no queremos la información relacionada con los ficheros dejaremos (1, 0). NOTIFY indica el nombre del usuario al que el sistema enviará un mensaje cuando termine el trabajo. TIME indica el tiempo máximo de CPU que puede emplear el Job. REGION indica la cantidad de memoria que va a utilizar el Job en su ejecución. COND indica una condición para que los pasos del Job se sigan ejecutando. Ej: COND = (0,LT) si el codigo de error es igual o menor a 0 PRTY se establece una prioridad al Job dentro de la clase de entrada. RESTART indica desde que paso queremos re arrancar un Job (en caso de fallo del mismo) saltándose los pasos anteriores. Si no se especifica lanzaría todo el Job desde el principio y hay ocasiones en las que no es necesario. TYPRUN indica el tipo de ejecución del Job (SCAN, validación sintáctica…) Utilerias = programas preescritos como las funciones en Java IEFBR14 (utilería para eliminar un archivo existente o crear un esqueleto de archivo) ****************************** EXEC hace referencia a una utilería DSN nombre del archivo a eliminar o crear esqueleto SPACE tamaño del archivo en el sistema, se compone de tipo de alojamiento y tamaño de archivo DISP disposición, tiene 3 parametros 0 para indicar que es un archivo nuevo, MOD para que el JES cree el archivo, DELETE para que se borre el archivo si concluye en error. UNIT espacio de memoria en el disco donde se almacena el archivo. IEBGENDER (utilería para respaldar un archivo existente del sistema para alojarlo en otro archivo) *********************************** DD = data definition FD = file definition Datos y convenciones ********************************* WSV variables (nivel 01) WSC constantes (nivel 01) WSS switches (nivel 77) Nota: nivel 77 se usa para datos booleanos o datos que no tengan subjerarquia. X caracteres 9 numeros Z mascara, elimina los ceros a la izquierda de un valor numerico, la cantidad de z especifica la cantidad de dígitos Muestra: IDENTIFICATION DIVISION. PROGRAM-ID. CONVE. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 WSS-SWITCHES PIC X(01) VALUE '1'. //defino el tipo de dato, el tamaño de la variable y su valor 88 WSS-FIN VALUE '0'. 01 WSV-VARIABLES. //Nivel jerarquico - tipo de dato (seguir convención) 05 WSV-NUMERO-1 PIC 9(03) VALUE ZEROS. 05 WSV-MASCARA PIC Z(03) VALUE ZEROS. 01 WSC-CONSTANTES. //Nivel jerarquico - tipo de dato (seguir convención) 05 WSC-TEXTO-A PIC X(06) VALUE 'PLATZI'. //defino el tipo de dato, el tamaño de la variable y su valor 05 WSC-TEXTO-2. 10 WSC-TEX-2 PIC X(05) VALUE 'COBOL'. //esta variable vive dentro de otra variable por su nivel PROCEDURE DIVISION. DISPLAY 'WSC-CONSTANTES CONTIENE.: 'WSC-CONSTANTES //es como un imprimir texto en java DISPLAY 'EL VALOR DE L AVARIABLE 1: ' WSV-NUMERO-1 DISPLAY 'EL VALOR DEL SWITCH : ' WSS-SWITCHES MOVE 5 TO WSV-NUMERO-1 MOVE WSV-NUMERO-1 TO WSV-MASCARA DISPLAY 'EL VALOR ENMASCARADO ES : ' WSV-MASCARA STOP RUN. Operaciones ****************************************** ADD num1 TO num2 GIVING result SUBSTRACT num1 FROM num2 GIVING result MULTIPLAY num1 BY num2 GIVING result DIVIDE num1 BY num2 GIVING result COMPUTE result = num1 * num2 + num1 - num2 / num2 //tiene todas las operaciones Condicionales y estructuras de control ******************************************* Llamados a funciones o modulos de programa, facilita lectura, revisión y modularidad del programa PERFORM 010-NAMEMOD se ejecuta una vez PERFORM 010-NAMEMOD n TIMES se ejecuta n veces PERFORM 010-NAMEMOD UNTIL condition se ejecuta hasta que se cumpla la condición 010-NAMEMOD. IF condition COBOL statement ELSE COBOL statement