CursosEmpresasBlogLiveConfPrecios

Estructuración de Reportes en COBOL: Definición de Variables

Clase 4 de 10 • Curso Práctico de COBOL

Contenido del curso

Introducción al proyecto

  • 1
    Creación de tu primer proyecto en COBOL

    Creación de tu primer proyecto en COBOL

    01:32 min
  • 2
    Creación de Reportes en Cobol: Proyecto Inicial en Platzi

    Creación de Reportes en Cobol: Proyecto Inicial en Platzi

    10:32 min

Creación de tu primer proyecto

  • 3
    Definición de Variables para Reporte de Alumnos Becados

    Definición de Variables para Reporte de Alumnos Becados

    11:25 min
  • 4

    Estructuración de Reportes en COBOL: Definición de Variables

    Viendo ahora
  • 5
    Programación de Reportes en Cobol: Creación y Procedimientos

    Programación de Reportes en Cobol: Creación y Procedimientos

    13:02 min
  • 6
    Programación de Reportes en Cobol: Definición y Ejecución del Código

    Programación de Reportes en Cobol: Definición y Ejecución del Código

    17:36 min
  • 7
    Creación y Ejecución de JCL para Generar Reporte en Mainframe

    Creación y Ejecución de JCL para Generar Reporte en Mainframe

    19:07 min

Ejecución del proyecto y siguientes pasos

  • 8
    Ejecución y Corrección de JCL en Mainframe

    Ejecución y Corrección de JCL en Mainframe

    14:14 min
  • 9
    Depuración de Errores en JCL para Programadores Cobol

    Depuración de Errores en JCL para Programadores Cobol

    06:02 min
  • 10
    Programación Cobol: Estructuras, Variables y JCLs Básicos

    Programación Cobol: Estructuras, Variables y JCLs Básicos

    02:09 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Para efectuar cualquier reporte en COBOL es necesario indicarle explícitamente toda la estructura que necesitamos definir, razón por la cual no solo estaremos definiendo las variables y los tipos de datos a los que estas pertenezcan, sino que también “maquetaremos” el reporte, esto significa que vamos a generar:

      • Los títulos y subtítulos.
      • Los encabezados.
      • Y mostraremos la información detallada y en el orden que especifiquemos dentro del programa.

      Una vez concluida esta “maquetación” realizaremos el código con el que vamos a escribir en el reporte de salida, estos puntos que hemos descrito previamente.

      Los componentes que conforman la sección de variables

      • Switches.
      • Áreas de trabajo (los campos del archivo de entrada separados y referenciando al contenido del archivo de entrada).
      • Campos que conforman el título del reporte.
      • Campos que conforman el subtítulo del reporte.
      • Campos que definen los nombres de las columnas del reporte.
      • Campos que contendrán la información y el detalle de los registros una vez que hayan sido procesados en nuestro programa.
      • Campos que conforman los pies de página del reporte, (generalmente contienen el total de los registros procesados durante la ejecución del programa).
      • Definición de los campos de la linkage section (con la cual recibiremos datos externos, para este reporte recibiremos la fecha de procesamiento del reporte a través del JCL).

      Switches

      Los switches contienen un conjunto de valores especificados por el programador. Se comportan como valores Booleanos, es decir, que solo pueden contener 2 valores (apagado o encendido; cero o uno; verdadero o falso, si o no, blanco o negro; ya sabes por donde voy 😃 ). Dichos valores son definidos con una numeración a nivel 77, conteniendo a nivel 88 el valor que pueden contener una vez cumplida la condición. Para nuestro reporte vamos a definir el switch del siguiente modo:

      77 WSS-FIN PIC X(03) VALUE ' '. 88 WSS-SI VALUE 'FIN'.

      Es importante definir con claridad el nombre del switch, en este que vemos arriba sabemos que se trata de un switch que, cuando sea modificado en su valor, contendrá el valor FIN, lo que indica que hemos llegado al término del procesamiento que hayamos efectuado.

      Áreas de trabajo

      Aquí definimos los campos que hacen referencia al contenido del archivo de entrada.

      01 WSV-AREAS-TRABAJO. 05 WSV-REG-ALUMNOS. 10 WSV-BOLETA-ALU PIC 9(04). 10 WSV-NOMBRE-ALU PIC X(25). 10 WSV-PROM-ALUMN PIC 99V9. 10 WSV-ALUMN-BEC PIC 9(01). 10 WSV-BECA-ALUMN PIC 9(07)V99. 05 WSV-ALUMNOS-LEI PIC 9(05) VALUE ZEROS. 05 WSV-ALUMN-IMP PIC 9(05) VALUE ZEROS. 05 WSV-TOT-MONT-BEC PIC 9(09)V99 VALUE ZEROS.

      Cada uno de los campos que conforman los registros se especifican con la numeración a nivel 10. Veamos en el siguiente recuadro el mapeo de los campos en el archivo de entrada al programa COBOL y la correspondencia con la definición de las variables:

      ----+----1----+----2----+----3----+----4----+----5 ***************************** TOP OF DATA ******** 0021JOSE GANIMEDEZ MONTES 8561000236800 0000100 0850JIMENA HERNANDEZ GONZALEZ7200000000000 0000200 **************************** BOTTOM OF DATA ****** 10 WSV-BOLETA-ALU PIC 9(04). 10 WSV-NOMBRE-ALU PIC X(25). 10 WSV-PROM-ALUMN PIC 99V9. 10 WSV-ALUMN-BEC PIC 9(01). 10 WSV-BECA-ALUMN PIC 9(07)V99.
      • El campo WSV-BOLETA-ALU es de tipo numérico y tiene una longitud de 4 posiciones, este campo va de la columna 1 a la columna 4.
      • El campo WSV-NOMBRE-ALU es de tipo alfanumérico y tiene una longitud de 25 posiciones, este campo va de la columna 5 a la columna 29.
      • El campo WSV-PROM-ALUMN es de tipo numérico y tiene una longitud de 2 dígitos enteros y un decimal, separado por un punto virtual, este campo va de la columna 30 a la columna 32.
      • El campo WSV-ALUMN-BEC es de tipo numérico y tiene una longitud de 1 dígito, este campo sólo abarca la columna 33.
      • El campo WSV-BECA-ALUMN es de tipo numérico y tiene una longitud de 7 dígitos enteros y dos decimales, separado por un punto virtual, este campo va de la columna 34 a la columna 42.

      Describamos la funcionalidad de los últimos 3 campos contenidos en este bloque:

      • El campo WSV-ALUMNOS-LEI contendrá el acumulado de registros leídos y que serán escritos en los pies de página del reporte.

      • El campo WSV-ALUMN-IMP contendrá el acumulado de registros impresos y que serán escritos en los pies de página del reporte.

      • El campo WSV-TOT-MONT-BEC contendrá el acumulado de registros pertenecientes al monto de las becas de los estudiantes en el archivo de entrada y que será escritos en los pies de página del reporte.

      Campos que conforman el título del reporte

      Es necesario definir la estructura que contendrá el reporte, para que este sea fácilmente visualizado y comprendido por el área de negocio que va a hacer uso de dicha información, el reporte que vamos a estructurar contendrá la estructura de los títulos y encabezados como se muestran:

      1 10 20 30 40 50 60 70 80 +---+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ UNIVERSIDAD PLATZI FECHA: 07/04/2021 CONTROL DE ALUMNOS BECADOS PAGINA: 1

      La definición de los campos del nombre del reporte la describimos a continuación:

      01 WSC-TIT-1. 05 FILLER PIC X(30) VALUE SPACES. 05 WSC-T1 PIC X(18) VALUE 'UNIVERSIDAD PLATZI'. 05 FILLER PIC X(32) VALUE SPACES.

      Como nuestro reporte va a contener una longitud fija de 80 caracteres, la suma de cada uno de los campos definidos dentro de la constante WSC-TIT-1 será igual a 80.

      • El campo FILLER es de tipo alfanumérico y tiene una longitud de 30 posiciones, este campo va de la columna 1 a la columna 30.

      • El campo WSC-T1 es de tipo alfanumérico y tiene una longitud de 18 posiciones, este campo va de la columna 31 a la columna 48.

      • El segundo campo FILLER es de tipo alfanumérico y tiene una longitud de 32 posiciones, este campo va de la columna 49 a la columna 80.

      Campos que conforman el subtítulo del reporte

      01 WSC-TIT-2. 05 FILLER PIC X(08) VALUE ' FECHA: '. 05 WSC-TIT-2-DIA PIC 9(02). 05 FILLER PIC X(01) VALUE '/'. 05 WSC-TIT-2-MES PIC 9(02). 05 FILLER PIC X(01) VALUE '/'. 05 WSC-TIT-2-ANIO PIC 9(04). 05 FILLER PIC X(08) VALUE SPACES. 05 WSC-TITU-2 PIC X(26) VALUE 'CONTROL DE ALUMNOS BECADOS'. 05 FILLER PIC X(14) VALUE SPACES. 05 FILLER PIC X(08) VALUE 'PAGINA: '. 05 WSC-TIT-2-PAGINA PIC ZZ9. 05 FILLER PIC X(03) VALUE SPACES.
      • El campo FILLER es de tipo alfanumérico y tiene una longitud de 8 posiciones, este campo va de la columna 1 a la columna 8 y contiene el valor constante de FECHA:.
      • El campo WSC-TIT-2-DIA es de tipo numérico y tiene una longitud de 2 dígitos, este campo va de la columna 9 a la columna 10 y contiene el valor del día de procesamiento.
      • El segundo campo FILLER es de tipo alfanumérico y tiene una longitud de 1 posición, este campo se encuentra en la columna 11 y contiene el valor '/'.
      • El campo WSC-TIT-2-MES es de tipo numérico y tiene una longitud de 2 dígitos, este campo va de la columna 12 a la columna 13 y contiene el valor del mes de procesamiento.
      • El tercer campo FILLER es de tipo alfanumérico y tiene una longitud de 1 posición, este campo se encuentra en la columna 14 y contiene el valor '/'.
      • El campo WSC-TIT-2-ANIO es de tipo numérico y tiene una longitud de 4 dígitos, este campo va de la columna 15 a la columna 18 y contiene el valor del año de procesamiento.
      • El cuarto campo FILLER es de tipo alfanumérico y tiene una longitud de 8 posiciones, este campo va de la columna 19 a la columna 26.
      • El campo WSC-TITU-2 es de tipo alfanumérico y tiene una longitud de 26 posiciones, este campo va de la columna 27 a la columna 52.
      • El quinto campo FILLER es de tipo alfanumérico y tiene una longitud de 14 posiciones, este campo va de la columna 53 a la columna 66.
      • El sexto campo FILLER es de tipo alfanumérico y tiene una longitud de 8 posiciones, este campo va de la columna 67 a la columna 74.
      • El campo WSC-TIT-2-PAGINA es de tipo numérico (máscara) y tiene una longitud de 3 posiciones, este campo va de la columna 75 a la columna 77.
      • El séptimo campo FILLER es de tipo alfanumérico y tiene una longitud de 3 posiciones, este campo va de la columna 78 a la columna 80.

      Campos que definen los nombres de las columnas del reporte

      La estructura del detalle del reporte será como sigue:

      1 10 20 30 40 50 60 70 80 +---+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ ------------------------------------------------------------------------------ BOLETA NOMBRE PROMEDIO BECADO MONTO DE BECA -------- ------------------------- -------- ------ -------------- 21 JOSE GANIMEDEZ MONTES 85.6 SI 2,368.00 850 JIMENA HERNANDEZ GONZALEZ 72.0 NO 0.00 ------------------------------------------------------------------------------

      En el siguiente apartado definimos las constantes que determinan los nombres de las columnas:

      01 WSC-GUIONES. 05 FILLER PIC X(01). 05 FILLER PIC X(78) VALUE ALL '-'. 05 FILLER PIC X(01) VALUE SPACES. 01 WSC-COL-DETA-1. 05 FILLER PIC X(03) VALUE SPACES. 05 FILLER PIC X(06) VALUE 'BOLETA'. 05 FILLER PIC X(12) VALUE SPACES. 05 FILLER PIC X(06) VALUE 'NOMBRE'. 05 FILLER PIC X(13) VALUE SPACES. 05 FILLER PIC X(08) VALUE 'PROMEDIO'. 05 FILLER PIC X(04) VALUE SPACES. 05 FILLER PIC X(06) VALUE 'BECADO'. 05 FILLER PIC X(08) VALUE SPACES. 05 FILLER PIC X(13) VALUE 'MONTO DE BECA'. 05 FILLER PIC X(01) VALUE SPACES. 01 WSC-GUION-DETA. 05 FILLER PIC X(01) VALUE SPACES. 05 FILLER PIC X(08) VALUE '--------'. 05 FILLER PIC X(04) VALUE SPACES. 05 FILLER PIC X(25) VALUE '-------------------------'. 05 FILLER PIC X(02) VALUE SPACES. 05 FILLER PIC X(08) VALUE '--------'. 05 FILLER PIC X(04) VALUE SPACES. 05 FILLER PIC X(06) VALUE '------'. 05 FILLER PIC X(07) VALUE SPACES. 05 FILLER PIC X(14) VALUE '--------------'.
      • El campo padre WSC-GUIONES contiene 3 campos hijos definidos como FILLER, los cuales despliegan guiones - en el reporte; el campo es de tipo alfanumérico y la longitud sumada de los campos hijos es de 80 posiciones.
      • El campo WSC-COL-DETA-1 contiene varios campos hijos definidos como FILLER de tipo alfanumérico, cuya longitud sumada es de 80 posiciones. Estos campos, como se observa en la estructura, son los nombre de las columnas.
      • El campo WSC-GUION-DETA contiene varios campos hijos definidos como FILLER de tipo alfanumérico, la suma de los campos hijos le otorga el valor de 80 posiciones al campo padre, mismo espacio que será definido en el reporte. Estos despliegan los guiones de la parte inferior de la estructura.

      Campos que contendrán la información y el detalle de los registros una vez que hayan sido procesados en nuestro programa

      Ahora veamos la definición y el valor de los campos que recibirán los datos una vez que han sido procesados por nuestro programa:

      01 WSV-DETALLE. 05 FILLER PIC X(04) VALUE SPACES. 05 WSV-DET-BOLETA PIC ZZZZ9. 05 FILLER PIC X(04) VALUE SPACES. 05 WSV-DET-NOMBRE PIC X(25). 05 FILLER PIC X(06) VALUE SPACES. 05 WSV-DET-PROMEDIO PIC ZZ.9. 05 FILLER PIC X(06) VALUE SPACES. 05 WSV-DET-BECADO PIC X(02). 05 FILLER PIC X(11) VALUE SPACES. 05 WSV-DET-BECA PIC Z,ZZZ,ZZ9.99.
      • El campo padre WSV-DETALLE contiene 10 campos hijos.

      • El campo WSV-DET-BOLETA es de tipo numérico (máscara) y tiene una longitud de 5 posiciones, este campo va de la columna 5 a la columna 9. Muestra el número de boleta.

      • El campo WSV-DET-NOMBRE es de tipo alfanumérico y tiene una longitud de 25 posiciones, este campo va de la columna 14 a la columna 38. Muestra el nombre del estudiante.

      • El campo WSV-DET-PROMEDIO es de tipo numérico (máscara) y tiene una longitud de 4 posiciones, este campo va de la columna 45 a la columna 48. Muestra el promedio del estudiante.

      • El campo WSV-DET-BECADO es de tipo alfanumérico y tiene una longitud de 2 posiciones, este campo va de la columna 55 a la columna 56. Muestra si el estudiante está becado o no.

      • El campo WSV-DET-BECA es de tipo numérico (máscara) y tiene una longitud de 12 posiciones, este campo va de la columna 68 a la columna 79. Muestra el valor o monto de beca que recibe el estudiante.

      • Todos los campos FILLER van a contener espacios, con el fin de formatear el contenido dentro del reporte

      Campos que conforman los pies de página del reporte

      Como punto final del reporte, tenemos los totales de los registros procesados en el programa, hablemos de ellos:

      01 WSV-DETALLE-LEIDOS. 05 FILLER PIC X(01). 05 FILLER PIC X(29) VALUE 'TOTAL DE ALUMNOS LEIDOS : '. 05 WSV-TOT-LEIDOS PIC ZZ,ZZ9. 05 FILLER PIC X(44) VALUE SPACES. 01 WSV-DETALLE-IMPRESOS. 05 FILLER PIC X(01). 05 FILLER PIC X(29) VALUE 'TOTAL DE ALUMNOS IMPRESOS : '. 05 WSV-TOT-IMPRESOS PIC ZZ,ZZ9. 05 FILLER PIC X(44) VALUE SPACES. 01 WSV-DETALLE-SALARIOS. 05 FILLER PIC X(01). 05 FILLER PIC X(35) VALUE 'MONTO TOTAL DESTINADO A BECAS :'. 05 FILLER PIC X(30) VALUE SPACES. 05 WSV-DET-BECA2 PIC $$$,$$$,$$9.99.
      • El campo padre WSV-DETALLE-LEIDOS contiene campos hijos definidos a nivel 05. Los campos FILLER sirven para ocupar espacios, y para mostrar la etiqueta en el reporte con la leyenda 'TOTAL DE ALUMNOS LEIDOS : ’. Y el campo llamado WSV-TOT-LEIDOS de tipo numérico (máscara) y longitud 6 posiciones muestra el valor total de registros leídos provenientes del archivo de entrada.
      • El campo padre WSV-DETALLE-IMPRESOS contiene campos hijos definidos a nivel 05. Los campos FILLER sirven para ocupar espacios, y para mostrar la etiqueta en el reporte con la leyenda 'TOTAL DE ALUMNOS IMPRESOS : ’. Y el campo llamado WSV-TOT-IMPRESOS de tipo numérico (máscara) y longitud 6 posiciones muestra el valor total de registros impresos en el reporte provenientes del archivo de entrada.
      • El campo padre WSV-DETALLE-SALARIOS contiene campos hijos definidos a nivel 05. Los campos FILLER sirven para ocupar espacios, y para mostrar la etiqueta en el reporte con la leyenda ‘MONTO TOTAL DESTINADO A BECAS :’. Y el campo llamado WSV-DET-BECA2 de tipo numérico (máscara) y longitud 14 posiciones, muestra el valor total de las becas destinadas a los estudiantes.

      Campos de linkage section

      El siguiente apartado que veremos es la sección de enlace o LINKAGE SECTION. Esta sección describe los datos que son recibidos desde otro programa, en este caso, del JCL. Estos datos no son recibidos de manera automática por nuestro programa COBOL, sino que la LINKAGE SECTION hace referencia a la dirección en memoria donde el JCL está enviando los datos como parámetro. La LINKAGE SECTION debe codificarse inmediatamente antes que la PROCEDURE DIVISION. Y la manera en que recibimos los datos, siempre debe corresponder al campo definido dentro de la sección de enlace, como veremos a continuación.

      En el JCL tenemos definido el parámetro así:

      PARM='29032021'

      Y en la LINKAGE SECTION de nuestro programa COBOL los campos con los que recibiremos la fecha los hemos definido del siguiente modo:

      01 LK-FECHA. 05 FILLER PIC X(02). 05 LK-DIA PIC 9(02). 05 LK-MES PIC 9(02). 05 LK-ANIO PIC 9(04).
      • Siempre que aceptemos mediante la LINKAGE-SECTION datos provenientes de un programa externo, definimos un campo FILLER de tipo alfanumérico y de longitud 2 posiciones, este tiene la función de direccionar a la memoria donde los datos del parámetro están siendo alojados.
      • El campo LK-DIA, de tipo numérico y de longitud 2 posiciones, contiene el valor del parámetro que el JCL de ejecución envió. Estamos recibiendo el valor 29, al cual le dimos la correspondencia del día de procesamiento del reporte.
      • Los campos LK-MES de tipo numérico y de longitud 2 posiciones, contiene el valor del parámetro que el JCL de ejecución envió. Estamos recibiendo el valor 03, al cual le dimos la correspondencia del mes de procesamiento del reporte.
      • Los campos LK-ANIO de tipo numérico y de longitud 2 posiciones, contiene el valor del parámetro que el JCL de ejecución envió. Estamos recibiendo el valor 2021, al cual le dimos la correspondencia del año de procesamiento del reporte.

      Siempre podrás volver a esta clase para revisar cualquier duda que tengas sobre la estructura del reporte que “cobra vida” gracias a la definición de todas estas variables. Y ahora que hemos profundizado en esto, pasemos a la siguiente clase para crear los procedimientos de nuestro programa. ¡Te veo allá!

        Sebastian Heredia

        Sebastian Heredia

        student•
        hace 5 años

        Carajo esto esta super bueno, ahora entiendo miles de cosas mas.

        . Solo tengo dos pequeñas preguntas que no me quedan claras.

        1. No entiendo bien esta sentencia
        PIC 99V9 o esta PIC 9(09)V99 VALUE ZEROS.

        ¿Cómo funciona exactamente esa v9

        1. Que pasa si por error no rellenamos con los 80 espacios en algún bloque, nos saldrá error?
          David Arias Fuentes

          David Arias Fuentes

          student•
          hace 5 años

          Hola Sebastián, el 9 hace referencia a dígitos y la V hace referencia al punto que habrá entre los dígitos. Entonces cuando colocas:

          PIC 99V9.

          Quiere decir que tendrás una variable algo así 65.9 Y para esta otra:

          PIC 9(09)V99 VALUE ZEROS.

          Quiere decir que tendrás un total de nueve dígitos a la izquierda del punto que se coloca con la V y dos dígitos más a la derecha del punto, teniendo un ejemplo así: 000000000.00 por que los rellenas con ceros.

          Sebastian Heredia

          Sebastian Heredia

          student•
          hace 5 años

          ¡Muchísimas gracias @devarias!

        Edwin Jesús

        Edwin Jesús

        student•
        hace 4 años

        ahhh osea que para mostrar por ejemplo una linea no tengo que ir llamando 1 por 1 en display, solamente tendría que llamar a la variable padre, que sería por ejemplo,

        DISPLAY WSC-GUIONES.

        y esto sería llamar a toda la jerarquía que tiene por dentro, y se "renderizaría" ------------------------------------(80)

        ohhhhhhhhhhhhhhhhhhhhhhhh, qué pro, ahora si entendí el filler

          Usuario anónimo

          Usuario anónimo

          user•
          hace 4 años

          Si, justo así. lo has hallado bien :)

        Omar Ali El Assaad El Assaad

        Omar Ali El Assaad El Assaad

        student•
        hace 5 años

        en Los campos LK-ANIO de tipo numérico y de longitud 2 posiciones debería decir 4 posiciones

        Ximena Thurman

        Ximena Thurman

        student•
        hace 5 años

        WOW, habia olvidado completamente para que se usaba el nivel 88

        Maga Hernandez

        Maga Hernandez

        student•
        hace 5 años

        Cuando se dice "El campo padre", es algo asi como un vector, con posiciones?

          Usuario anónimo

          Usuario anónimo

          user•
          hace 5 años

          Hola Maga. ¿cómo estas? que gusto tenerte en este curso. 😃

          Como campo padre hacemos referencia al nivel de datos (campos hijos) que un campo puede contener.

          El número de nivel se utiliza para especificar el nivel de datos en un registro. Se utilizan para diferenciar entre elementos elementales y elementos de grupo. Los elementos elementales se pueden agrupar para crear elementos de grupo.

        Maga Hernandez

        Maga Hernandez

        student•
        hace 5 años

        hola cuando se habla de "El campo padre", se refiere a algo asi como un vector con posiciones?

          Usuario anónimo

          Usuario anónimo

          user•
          hace 5 años

          Hola Maga. ¿cómo estas? que gusto tenerte en este curso. 😃

          Como campo padre hacemos referencia al nivel de datos (campos hijos) que un campo puede contener.

          El número de nivel se utiliza para especificar el nivel de datos en un registro. Se utilizan para diferenciar entre elementos elementales y elementos de grupo. Los elementos elementales se pueden agrupar para crear elementos de grupo.

          Aquí te dejo un ejemplo:

          DATA DIVISION. WORKING-STORAGE SECTION. 01 WSV-VARIABLES. 05 WSV-NUMERO-1 PIC 9(03) VALUE ZEROS. --> ELEMENTO ELEMENTAL 05 WSV-MASCARA PIC Z(03) VALUE ZEROS. --> ELEMENTO ELEMENTAL 01 WSC-CONSTANTES. --> ELEMENTO DE GRUPO 05 WSC-TEXTO-A PIC X(06) VALUE 'PLATZI' --> ELEM. ELEMENTAL 05 WSC-TEXTO-2. --> ELEM. ELEMENTAL QUE TAMBIEN ES DE GRUPO 10 WSC-TEX-2 PIC X(05) VALUE 'COBOL'.--> ELEM. ELEMENTAL

          Déjame saber si ha funcionado esta explicación, estaré más que feliz de poderte leer. Saludos.