{"id":54,"date":"2025-05-06T09:42:34","date_gmt":"2025-05-06T09:42:34","guid":{"rendered":"https:\/\/consultoriaeth.com\/articulos\/?p=54"},"modified":"2025-05-06T09:42:34","modified_gmt":"2025-05-06T09:42:34","slug":"cobol-mainframe-dominando-las-divisiones-y-secciones-una-guia-practica-para-estudiantes","status":"publish","type":"post","link":"https:\/\/consultoriaeth.com\/articulos\/cobol-mainframe-dominando-las-divisiones-y-secciones-una-guia-practica-para-estudiantes\/","title":{"rendered":"COBOL Mainframe: Dominando las Divisiones y Secciones &#8211; Una Gu\u00eda Pr\u00e1ctica para Estudiantes"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>Estructura Fundamental de un Programa COBOL: Un programa COBOL tiene una jerarqu\u00eda que hay que conocer y dominar. Esta gu\u00eda nos muestra toda esta jerarqu\u00eda de forma resumida.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La jerarqu\u00eda: Programa -> Divisiones -> Secciones -> P\u00e1rrafos -> Sentencias.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Cap\u00edtulo 1: La IDENTIFICATION DIVISION &#8211; La Identidad del Programa<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prop\u00f3sito: Identificar el programa y proporcionar metadatos.<\/li>\n\n\n\n<li>Estructura:<\/li>\n\n\n\n<li>IDENTIFICATION DIVISION. (Cabecera obligatoria)<\/li>\n\n\n\n<li>P\u00e1rrafos Principales:<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PROGRAM-ID. (Obligatorio): Nombre del programa. Reglas de nomenclatura.<\/li>\n\n\n\n<li>AUTHOR. (Opcional, Obsoleto pero com\u00fan): Nombre del programador.<\/li>\n\n\n\n<li>INSTALLATION. (Opcional): Lugar donde se instala\/usa.<\/li>\n\n\n\n<li>DATE-WRITTEN. (Opcional): Fecha de creaci\u00f3n.<\/li>\n\n\n\n<li>DATE-COMPILED. (Opcional): El compilador inserta la fecha aqu\u00ed (a menudo se deja como comentario).<\/li>\n\n\n\n<li>SECURITY. (Opcional): Nivel de seguridad o clasificaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buenas Pr\u00e1cticas: Mantener PROGRAM-ID significativo. Uso de comentarios para informaci\u00f3n adicional.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo Pr\u00e1ctico 1.1:<br>COBOL<br>\u00a0 \u00a0 \u00a0 IDENTIFICATION DIVISION.<br>\u00a0 \u00a0 \u00a0 PROGRAM-ID.\u00a0 \u00a0 PROGLECTURA.<br>\u00a0 \u00a0 \u00a0 AUTHOR.\u00a0 \u00a0 \u00a0 \u00a0 Alumno Estudioso.<br>\u00a0 \u00a0 \u00a0 INSTALLATION.\u00a0 Universidad Ejemplo.<br>\u00a0 \u00a0 \u00a0 DATE-WRITTEN.\u00a0 04\/05\/2025.<br>\u00a0 \u00a0 \u00a0 * DATE-COMPILED. (Se llenar\u00e1 autom\u00e1ticamente)<br>\u00a0 \u00a0 \u00a0 SECURITY.\u00a0 \u00a0 \u00a0 Uso Acad\u00e9mico.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Cap\u00edtulo 2: La ENVIRONMENT DIVISION &#8211; Conectando con el Exterior<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prop\u00f3sito: Definir el entorno de hardware y los archivos externos que usar\u00e1 el programa. Es la divisi\u00f3n m\u00e1s dependiente del sistema operativo (mainframe Z\/OS en este caso).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Estructura:<\/li>\n\n\n\n<li><strong>ENVIRONMENT DIVISION<\/strong>. (Cabecera obligatoria)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Secciones Principales:<\/li>\n\n\n\n<li>CONFIGURATION SECTION.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SOURCE-COMPUTER. (Describe la m\u00e1quina donde se compila).<\/li>\n\n\n\n<li>OBJECT-COMPUTER. (Describe la m\u00e1quina donde se ejecuta).<\/li>\n\n\n\n<li>SPECIAL-NAMES. (Asigna nombres a caracter\u00edsticas espec\u00edficas, como el s\u00edmbolo de moneda, punto decimal, nombres de impresora, etc.).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>INPUT-OUTPUT SECTION. (Crucial para el manejo de archivos)<\/li>\n\n\n\n<li>FILE-CONTROL. (El coraz\u00f3n de la E\/S)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SELECT nombre-logico-archivo: Asocia un nombre interno del programa&#8230;<\/li>\n\n\n\n<li>ASSIGN TO nombre-externo: &#8230;con el nombre externo (DD Name en JCL para mainframe).<\/li>\n\n\n\n<li>ORGANIZATION IS {SEQUENTIAL | INDEXED | RELATIVE}: Define el tipo de archivo (VSAM, QSAM).<\/li>\n\n\n\n<li>ACCESS MODE IS {SEQUENTIAL | RANDOM | DYNAMIC}: C\u00f3mo se acceder\u00e1 al archivo.<\/li>\n\n\n\n<li>RECORD KEY IS nombre-campo (Para INDEXED\/RELATIVE): Clave principal.<\/li>\n\n\n\n<li>ALTERNATE RECORD KEY IS nombre-campo WITH DUPLICATES (Para INDEXED): Claves secundarias.<\/li>\n\n\n\n<li>FILE STATUS IS nombre-variable-status: Variable para verificar el resultado de operaciones de E\/S (\u00a1Fundamental!).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>I-O-CONTROL. (Menos com\u00fan, para optimizaciones como SAME RECORD AREA).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buenas Pr\u00e1cticas: Usar FILE STATUS siempre. Nombres l\u00f3gicos claros. Entender la conexi\u00f3n ASSIGN TO con JCL DD.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo Pr\u00e1ctico 2.1 (Archivo Secuencial):<br>COBOL<br>\u00a0 \u00a0 \u00a0 ENVIRONMENT DIVISION.<br>\u00a0 \u00a0 \u00a0 CONFIGURATION SECTION.<br>\u00a0 \u00a0 \u00a0 SOURCE-COMPUTER. IBM-MAINFRAME.<br>\u00a0 \u00a0 \u00a0 OBJECT-COMPUTER. IBM-MAINFRAME.<br>\u00a0 \u00a0 \u00a0 SPECIAL-NAMES.<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 DECIMAL-POINT IS COMMA. *> Para usar coma decimal en Espa\u00f1a<br>\u00a0 \u00a0 \u00a0 INPUT-OUTPUT SECTION.<br>\u00a0 \u00a0 \u00a0 FILE-CONTROL.<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 SELECT FICHERO-ENTRADA ASSIGN TO DDENTRADA<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ORGANIZATION IS SEQUENTIAL<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ACCESS MODE IS SEQUENTIAL<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 FILE STATUS IS FS-ENTRADA.<br><br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 SELECT FICHERO-SALIDA ASSIGN TO DDSALIDA<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ORGANIZATION IS SEQUENTIAL<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ACCESS MODE IS SEQUENTIAL<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 FILE STATUS IS FS-SALIDA.<br><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo Pr\u00e1ctico 2.2 (Archivo Indexado VSAM KSDS):<br>COBOL<br>\u00a0 \u00a0 \u00a0 ENVIRONMENT DIVISION.<br>\u00a0 \u00a0 \u00a0 CONFIGURATION SECTION.<br>\u00a0 \u00a0 \u00a0 \u00a0 * &#8230; (Igual que antes)<br>\u00a0 \u00a0 \u00a0 INPUT-OUTPUT SECTION.<br>\u00a0 \u00a0 \u00a0 FILE-CONTROL.<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 SELECT CLIENTES-MAESTRO ASSIGN TO DDCLIENT<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ORGANIZATION IS INDEXED<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ACCESS MODE IS DYNAMIC\u00a0 *> Permite lectura secuencial y aleatoria<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 RECORD KEY IS CL-CODIGO-CLIENTE<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ALTERNATE RECORD KEY IS CL-NIF WITH DUPLICATES<br>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 FILE STATUS IS FS-CLIENTES.<br>\u00a0 \u00a0 \u00a0 \u00a0 * &#8230; (Otros SELECT si los hubiera)<br><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Cap\u00edtulo 3: La DATA DIVISION &#8211; Definiendo los Datos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prop\u00f3sito: Describir <em>toda<\/em> la informaci\u00f3n que el programa manipular\u00e1: datos de archivos, variables temporales, constantes, estructuras de datos.<\/li>\n\n\n\n<li>Estructura:<\/li>\n\n\n\n<li><strong>DATA DIVISION.<\/strong> (Cabecera obligatoria)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Secciones Principales:<\/li>\n\n\n\n<li>FILE SECTION.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Define la estructura detallada (campos, tipos, longitudes) de los registros de cada archivo declarado en FILE-CONTROL.<\/li>\n\n\n\n<li>FD nombre-logico-archivo: Entrada de descripci\u00f3n de archivo (File Description).<\/li>\n\n\n\n<li>Cl\u00e1usulas: RECORD CONTAINS integer CHARACTERS, BLOCK CONTAINS integer RECORDS (optimizaci\u00f3n), LABEL RECORDS ARE {STANDARD | OMITTED}, DATA RECORD IS nombre-registro-01.<\/li>\n\n\n\n<li>Descripciones de Registro (Niveles 01, 02-49):<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>01 nombre-registro. (Nivel m\u00e1s alto, representa el registro completo).<\/li>\n\n\n\n<li>05 nombre-campo PIC X(10). (Niveles inferiores para campos individuales).<\/li>\n\n\n\n<li>PIC (Picture Clause): \u00a1Fundamental! Define el tipo y tama\u00f1o (X=Alfanum\u00e9rico, 9=Num\u00e9rico, S=Signo, V=Decimal impl\u00edcito, Z=Supresi\u00f3n de ceros, ., ,).<\/li>\n\n\n\n<li>VALUE: Para inicializar campos (\u00a1ojo! No suele usarse en FD, s\u00ed en WORKING-STORAGE).<\/li>\n\n\n\n<li>USAGE: C\u00f3mo se almacena internamente (DISPLAY=Texto, COMP=Binario, COMP-3=Empaquetado Decimal &#8211; muy com\u00fan en mainframe).<\/li>\n\n\n\n<li>OCCURS: Para definir tablas\/arrays.<\/li>\n\n\n\n<li>REDEFINES: Para dar diferentes estructuras a la misma \u00e1rea de memoria.<\/li>\n\n\n\n<li>WORKING-STORAGE SECTION.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Define variables, contadores, indicadores (flags), constantes, \u00e1reas de trabajo temporal que <em>no<\/em> forman parte de los archivos de entrada\/salida.<\/li>\n\n\n\n<li>Se usan los mismos niveles (01, 02-49) y cl\u00e1usulas (PIC, VALUE, USAGE, OCCURS, REDEFINES).<\/li>\n\n\n\n<li>Nivel 77: Para \u00edtems elementales independientes (menos usado en programaci\u00f3n moderna estructurada, preferible agrupar bajo un 01).<\/li>\n\n\n\n<li>Nivel 88: Nombres de Condici\u00f3n (muy \u00fatiles para legibilidad).<\/li>\n\n\n\n<li>LINKAGE SECTION.<\/li>\n\n\n\n<li>Define la estructura de los datos que se reciben de <em>otro<\/em> programa (cuando este programa es llamado) o que se pasan a un subprograma llamado. Crucial para la programaci\u00f3n modular (CALL&#8230;USING).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buenas Pr\u00e1cticas: Usar nombres descriptivos. Indentar correctamente para mostrar jerarqu\u00eda. Elegir el USAGE adecuado (COMP-3 para c\u00e1lculos, DISPLAY para E\/S). Inicializar variables en WORKING-STORAGE con VALUE o INITIALIZE. Usar niveles 88.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo Pr\u00e1ctico 3.1 (FD y Registro Simple):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8b888d8e9bb3007216b4d52a4ec1dc82\"><code>\u00a0 DATA DIVISION.\n\u00a0 \u00a0 \u00a0 FILE SECTION.\n\u00a0 \u00a0 \u00a0 FD FICHERO-ENTRADA\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 RECORD CONTAINS 80 CHARACTERS\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 LABEL RECORDS ARE STANDARD\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 DATA RECORD IS REG-ENTRADA.\n\u00a0 \u00a0 \u00a0 01 REG-ENTRADA.\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 05 RE-TIPO-REG \u00a0 \u00a0 \u00a0 PIC X(01).\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 05 RE-CODIGO-PROD\u00a0 \u00a0 PIC 9(05).\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 05 RE-DESCRIPCION\u00a0 \u00a0 PIC X(30).\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 05 RE-PRECIO \u00a0 \u00a0 \u00a0 \u00a0 PIC 9(05)V99. *> 5 enteros, 2 decimales\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 05 FILLER\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 PIC X(37). \u00a0 *> Relleno hasta 80\n\n\u00a0 \u00a0 \u00a0 FD FICHERO-SALIDA\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 RECORD CONTAINS 50 CHARACTERS\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 LABEL RECORDS ARE STANDARD\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 DATA RECORD IS REG-SALIDA.\n\u00a0 \u00a0 \u00a0 01 REG-SALIDA\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 PIC X(50). *> Registro opaco para salida simple<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo Pr\u00e1ctico 3.2 (WORKING-STORAGE):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ead0d48b868e1ba6d8e12af620f2fe6a\"><code>WORKING-STORAGE SECTION.\n\u00a0 01 WS-VARIABLES-TRABAJO.\n\u00a0 \u00a0 \u00a0 05 WS-CONTADOR-REGS\u00a0 \u00a0 PIC 9(07) VALUE ZERO.\n\u00a0 \u00a0 \u00a0 05 WS-ACUM-TOTALES \u00a0 \u00a0 PIC S9(09)V99 COMP-3 VALUE ZERO. *> Num\u00e9rico con signo, empaquetado\n\u00a0 \u00a0 \u00a0 05 WS-FIN-FICHERO\u00a0 \u00a0 \u00a0 PIC X(01) VALUE 'N'.\n\u00a0 \u00a0 \u00a0 \u00a0 88 FIN-FICHERO\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 VALUE 'S'. *> Nombre de condici\u00f3n\n\u00a0 \u00a0 \u00a0 05 WS-INDICE-TABLA \u00a0 \u00a0 PIC 9(03) VALUE 1.\n\u00a0 \u00a0 \u00a0 05 WS-MENSAJE-ERROR\u00a0 \u00a0 PIC X(50) VALUE SPACES.\n\n\u00a0 01 WS-CONSTANTES.\n\u00a0 \u00a0 \u00a0 05 WS-PORC-IVA \u00a0 \u00a0 \u00a0 \u00a0 PIC 9V99 VALUE 0.21.\n\n\u00a0 77 WS-VARIABLE-SUELTA\u00a0 \u00a0 PIC 99 VALUE 0. *> Ejemplo nivel 77 (menos recomendado)\n\n\u00a0 01 WS-TABLA-MESES.\n\u00a0 \u00a0 \u00a0 05 WS-MES OCCURS 12 TIMES INDEXED BY INDX-MES.\n\u00a0 \u00a0 \u00a0 \u00a0 10 WS-NOMBRE-MES\u00a0 \u00a0 PIC X(10).\n\u00a0 \u00a0 \u00a0 \u00a0 10 WS-DIAS-MES\u00a0 \u00a0 \u00a0 PIC 99.<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo Pr\u00e1ctico 3.3 (LINKAGE SECTION):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b6e73f8cc814f70fa4de1b1986d9b8a7\"><code>\u00a0 LINKAGE SECTION.\n\u00a0 01 LK-PARAMETROS-ENTRADA.\n\u00a0 \u00a0 \u00a0 05 LK-CODIGO-BUSQUEDA\u00a0 PIC 9(08).\n\u00a0 \u00a0 \u00a0 05 LK-FECHA-PROCESO\u00a0 \u00a0 PIC 9(08). *> Formato AAAAMMDD\n\u00a0 01 LK-RESULTADO-SALIDA.\n\u00a0 \u00a0 \u00a0 05 LK-ESTADO-OP\u00a0 \u00a0 \u00a0 \u00a0 PIC X(02).\n\u00a0 \u00a0 \u00a0 05 LK-MENSAJE-OP \u00a0 \u00a0 \u00a0 PIC X(80).<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Cap\u00edtulo 4: La PROCEDURE DIVISION &#8211; La L\u00f3gica del Programa<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prop\u00f3sito: Contiene las instrucciones ejecutables, la l\u00f3gica de negocio, los algoritmos. Es donde el programa \u00abhace cosas\u00bb.<\/li>\n\n\n\n<li>Estructura:<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PROCEDURE DIVISION. (Cabecera obligatoria)<\/li>\n\n\n\n<li>PROCEDURE DIVISION USING nombre-item-linkage &#8230; (Si recibe datos, ver LINKAGE SECTION).<\/li>\n\n\n\n<li>Organizaci\u00f3n:<\/li>\n\n\n\n<li>P\u00e1rrafos: Etiquetas seguidas de un punto (1000-INICIO.). El flujo puede saltar entre ellos (usando PERFORM).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Secciones: nombre-seccion SECTION. Contienen p\u00e1rrafos. Permiten agrupar l\u00f3gica relacionada y son la base de la programaci\u00f3n estructurada (PERFORM nombre-seccion).<\/li>\n<\/ul>\n\n\n\n<p>Ejemplo Pr\u00e1ctico 4.1 (Esqueleto Programa Secuencial):<br>COBOL<br>&nbsp; &nbsp; &nbsp; PROCEDURE DIVISION.<br>&nbsp; &nbsp; &nbsp; 0000-MAIN-LOGIC SECTION.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PERFORM 1000-INICIALIZAR.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PERFORM 2000-PROCESO-PRINCIPAL UNTIL FIN-FICHERO.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PERFORM 3000-FINALIZAR.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STOP RUN.<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; 1000-INICIALIZAR SECTION.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OPEN INPUT FICHERO-ENTRADA.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF FS-ENTRADA NOT = \u00ab00\u00bb<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DISPLAY \u00abERROR ABRIENDO FICHERO ENTRADA: \u00bb FS-ENTRADA<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MOVE &#8216;S&#8217; TO WS-FIN-FICHERO *&gt; Forzar fin si hay error<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ELSE<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OPEN OUTPUT FICHERO-SALIDA<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF FS-SALIDA NOT = \u00ab00\u00bb<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DISPLAY \u00abERROR ABRIENDO FICHERO SALIDA: \u00bb FS-SALIDA<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MOVE &#8216;S&#8217; TO WS-FIN-FICHERO<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CLOSE FICHERO-ENTRADA *&gt; Cerrar el que s\u00ed abri\u00f3<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ELSE<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PERFORM 2100-LEER-ENTRADA *&gt; Lectura inicial<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; END-IF<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; END-IF.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXIT. *&gt; Sale de la secci\u00f3n 1000<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; 2000-PROCESO-PRINCIPAL SECTION.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF RE-TIPO-REG = &#8216;D&#8217; *&gt; Ejemplo: procesar solo registros tipo &#8216;D&#8217;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PERFORM 2200-PROCESAR-REGISTRO<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; END-IF.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PERFORM 2100-LEER-ENTRADA.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXIT.<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; 2100-LEER-ENTRADA SECTION.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; READ FICHERO-ENTRADA<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AT END MOVE &#8216;S&#8217; TO WS-FIN-FICHERO<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NOT AT END ADD 1 TO WS-CONTADOR-REGS<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; END-READ.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF FS-ENTRADA NOT = \u00ab00\u00bb AND FS-ENTRADA NOT = \u00ab10\u00bb *&gt; \u00ab10\u00bb es fin de fichero<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DISPLAY \u00abERROR LEYENDO FICHERO ENTRADA: \u00bb FS-ENTRADA<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MOVE &#8216;S&#8217; TO WS-FIN-FICHERO *&gt; Forzar fin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; END-IF.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXIT.<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; 2200-PROCESAR-REGISTRO SECTION.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * &#8230; L\u00f3gica para procesar REG-ENTRADA &#8230;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * Mover datos a REG-SALIDA, hacer c\u00e1lculos, etc.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MOVE REG-ENTRADA TO REG-SALIDA. *&gt; Ejemplo simple<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WRITE REG-SALIDA.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF FS-SALIDA NOT = \u00ab00\u00bb<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DISPLAY \u00abERROR ESCRIBIENDO FICHERO SALIDA: \u00bb FS-SALIDA<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MOVE &#8216;S&#8217; TO WS-FIN-FICHERO *&gt; Forzar fin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; END-IF.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXIT.<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; 3000-FINALIZAR SECTION.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CLOSE FICHERO-ENTRADA FICHERO-SALIDA.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DISPLAY \u00abPROCESO FINALIZADO. REGISTROS LEIDOS: \u00bb WS-CONTADOR-REGS.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"entry-summary\">\nCap\u00edtulo 1: La IDENTIFICATION DIVISION &#8211; La Identidad del Programa Cap\u00edtulo 2: La ENVIRONMENT DIVISION &#8211; Conectando con el Exterior&hellip;\n<\/div>\n<div class=\"link-more\"><a href=\"https:\/\/consultoriaeth.com\/articulos\/cobol-mainframe-dominando-las-divisiones-y-secciones-una-guia-practica-para-estudiantes\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &ldquo;COBOL Mainframe: Dominando las Divisiones y Secciones &#8211; Una Gu\u00eda Pr\u00e1ctica para Estudiantes&rdquo;<\/span>&hellip;<\/a><\/div>\n","protected":false},"author":1,"featured_media":55,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-54","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mainframe","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":1,"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"predecessor-version":[{"id":56,"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/posts\/54\/revisions\/56"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/media\/55"}],"wp:attachment":[{"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/consultoriaeth.com\/articulos\/wp-json\/wp\/v2\/tags?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}