En el mundo de la programación Cobol, la definición precisa de tipos de datos y convenciones de nomenclatura es esencial. Estas reglas permiten que tus programas sean no solo funcionales, sino comprensibles para otros desarrolladores. Desde el uso de variables y constantes hasta la aplicación de switches, estas convenciones estructuran adecuadamente el código para mejorar su legibilidad y mantenimiento.
¿Cómo organizamos las variables?
Las variables en Cobol se estructuran de manera jerárquica para reflejar la relación entre ellas y facilitar su gestión. Esta jerarquía comienza con el nivel 01, y puede incluir niveles anidados como 05, 10, 15, etc., dentro de la sección de almacenamiento de trabajo o Working-Storage Section. Este esquema jerárquico no solo organiza el código, sino que también ayuda a los desarrolladores a comprender mejor la lógica subyacente cuando trabajan en equipo.
¿Cuál es la importancia de las convenciones de nombres?
El nombramiento de variables es fundamental en Cobol, ya que refleja su función y uso. Utilizar prefijos como "WSB" para variables o "WSC" para constantes permite que los desarrolladores identifiquen rápidamente el tipo de dato y su propósito. Esta práctica también garantiza que las variables y constantes se manipulen correctamente, previniendo errores comunes en la programación.
¿Qué son los switches?
Los switches en Cobol actúan como valores booleanos que permiten controles condicionales dentro del programa. Estos valores son útiles para implementar decisiones lógicas sencillas, como encender o apagar procesos. La nivelación 77 se utiliza para indicar estos valores, y su configuración inicial puede personalizarse según las necesidades del programa.
¿Cómo definimos las máscaras y para qué se utilizan?
En Cobol, las máscaras son esenciales para manipular y presentar datos numéricos sin mostrar ceros a la izquierda. Se utilizan principalmente cuando se visualizan resultados para mejorar la legibilidad de la información presentada. Esto se consigue usando el símbolo "Z" en la cláusula PIC, lo que permite que sólo se muestren dígitos significativos.
05 WS-MASCARA PICZ(3)VALUE'123'.
Esta estructura no solo emplea buenas prácticas de codificación, sino que también garantiza que el programa sea comprensible para otros desarrolladores. Estas convenciones son fundamentales en un entorno de desarrollo colaborativo.
Recomendaciones para el buen desarrollo en Cobol
Al trabajar con Cobol, seguir estas recomendaciones puede mejorar significativamente la eficacia de tus programas:
Jerarquiza tus variables: Ayuda a mantener la claridad y organización en tu código.
Usa convenciones de nombres apropiadas: Facilita la comprensión y colaboración entre programadores.
Implementa switches correctamente: Permite una mejor gestión de las decisiones lógicas en tu programa.
Emplea máscaras numéricas con sabiduría: Optimiza la presentación de tus datos eliminando ceros innecesarios.
Siguiendo estas prácticas puedes asegurarte de que tu código sea robusto y fácil de mantener. Estas técnicas son aplicables no solo al desarrollo individual, sino también en entornos de trabajo colaborativos. ¡Sigue explorando y perfeccionando tus habilidades en Cobol!
Esta fue la mejor clase hasta ahora, es genial todo esto.
Pero tengo unas cuantas preguntas.
Entonces decimos que hay tres tipos
..
Variables
Constantes
Switches
01WSV-VARIABLES.05WSV-NUMERO-1//en esta linea primero con wsv especificamos que es variables y lo que viene despues del guion seria el nombre de la variables como tal verdad?05WSV-MASCARA
Otra pregunta es por que al hacer las variables tipo switch:
Por que en la de abajo (wss-fin) no le pusimos pic x(01), lo unico a lo que pude asimilarlo es que solo existen esos dos niveles en switch el 77 y el 88, pero no se si es por eso.
¿Qué tal, Sebastián?
Si, es correcto: WSV es el indicador con el que identificamos que se va a tratar de una variable, y lo que esta después del guion es el nombre de la variable. Aunque ++OJO++: el compilador de COBOL no distingue, como hacen otros compiladores y / o transpiladores, de que se trata de una variable o constante o switch, esa convención de nombres nos sirve a nosotros los programadores a detectar como buena práctica, que estamos trabajando con switches, constantes o variables.
Y de tu segunda pregunta, como en el switch definido a nivel 77 incluimos ya el valor PIC X(01), este engloba al campo a nivel 88, por lo que el compilador "comprende" que lo que esta comprendido dentro del campo WSS-SWITCHES va a poseer el mismo tipo y longitud de campo.
Saludos, déjame saber como vas avanzando en este curso, estoy para resolver cualquier duda y comentario que tengas! 😃
Reto comp y exec en el mismo JCL
y así quedó la salida en archivo
Genial Omar 😃 conciso y efectivo tu código 🙌🏻
¿Cómo te vas sintiendo en este curso? sigo pendiente de cualquier comentario que vayas teniendo!
PIC X para caracteres alfanuméricos
PIC 9 para caracteres números
Para el reto esta bien poner en practica el proceso para copiar el texto en el portapapeles, de este modo solo tomamos el JCL que compila para crear uno nuevo, en mi caso lo nombre JCLHCE H de HOLA, C de compiler y E exexute. Para ahorrarnos tener que escribir el codigo faltante entramos al JCL que ejecuta en modo V y copiamos en bloque el contenido usando CC y en la linea de comandos de arriba colocamos CUT, nos regresamos con F3 y ahora entramos en modo E al nuevo JCL que creamos y pegamos colocando A despues de las lineas existentes y en la linea de comandos de arriba colocamos PASTE. Guardamos y ejecutamos para probar.
Aquí el reto
Noté en mi caso que en el Spool solo se creaba un archivo con el nombre del JOB.
Hay alguna manera de compilar y ejecutar en un solo JCL pero obtener dos archivos separados?
Hey Leonardo! ¿Cómo te va?
Excelente, genial tu código. Ahora te dejaré como reto, que envíes la salida de tu programa HOLA a un archivo, en lugar de desplegarlo en el SPOOL. No te preocupes, ya te pongo al final de esta respuesta el código del JCL! 😀
Por cada SUBMIT que haces a un jcl, en el spool solo verás la salida perteneciente a ese jcl, y si tienes varios pasos, verás listados cada uno de los pasos junto a su código de retorno (los ++códigos de retorno++ que se consideran exitosos son 04 y 00, el código 04 contiene warnings, pero el compilador puede vivir con esas advertencias). Los pasos de tu JCL son así como te muestro en la siguiente imagen:
Y desplazándote hacia abajo, puedes ver el detalle de dichos pasos, lo que hace el JES es que si definiste como parámetro MSGLEVEL=(1,1) en tu JCL, verás en consola todas las líneas expandidas tanto del JCL como del ++jcl-procedure++ ++(recuerdas el programa que cargaste usando la opción 6 y que alojaste en SYS2.PROCLIB con nombre COBOL, ese es el procedure que ves en el spool expandido++) y de tu programa o programas COBOL, si estas trabajando con más de uno en un JCL. Solo pondré una imagen de mi spool referente al procedure para no alargarme, en tu spool puedes ver el resto de líneas 😃:
Y respondiendo a tu pregunta, puedes definir dentro de un parámetro SYSOUT, el archivo que contendrá el texto que internamente en tu programa estas definiendo como salida, en el paso donde estas ejecutando ya el programa ejecutable, una salida a archivo de las líneas que contenga tu programa.
Si puedes definir más archivos de salida, pero internamente en tu programa COBOL deberías hacer la manipulación de esos archivos, y posteriormente en tu JCL también. Como spoiler te comentó que el curso práctico hacemos esa manipulación de archivos 😄
En un ejemplo de esto último que te comentó, te dejó una imagen de mi salida a archivo 😊:
Como lo prometido es deuda, aquí esta el código del JCL que te comentaba al inicio (este envía a archivo la salida, en lugar de al spool):
Saludos, déjame saber como vas avanzando en este curso!
¿Qué hace el TYPRUN=SCAN en el JCL?
este comando escanea el JCL en busca de una falla, si se ha omitido algun dataset o no se esta haciendo uso correcto de uno de los parametros especificados, al hacer SUBMIT de un job con esta sentencia, no se compila ni ejecuta nada. Es una ejecución de verificación de sintaxis.
Ohhh vale, muchas gracias
Carlos, help :C.
Mi archivo COBOL es el mismo hola mundo, fisicamente se llama HELLO y en PROGRAM-ID. HELLO, la ubicación parece estar correcta pero no sé que pasa que no me ejecuta :l
El jcl que te devolvio ese error fue HERC01H, enseñame la estructura de ese JCL, y la consola de visualización, que dice?
Lo que estoy haciendo es copiar el que tienes en la descripción del video, ya no me genera error pero tampoco me aparece un return code, y en el spool no me aparece nada.
Estructura actual del JCL que compila y ejecuta
PD: El nombre lógico puede cambiar, o sea no siempre debe ser con el usuario y otras 2, deben ser de 8 caracteres igual que los nombres fisicos?
Así está el JCL
Esto aparece cuando lo ejecuto:
En el spool:
Una pregunta profe, no entendí muy bien lo del reto podría explicarmelo porfa. saludos
Hola, claro.
Hasta este momento estábamos creando 2 jcl´s, uno de compilación, y otro de ejecución.
El reto consiste en que--> en un solo jcl, generar la compilación y ejecución del programa 😃, esto para ahorrarnos un jcl.
Saludos Benjamín, espero haberte ayudado con esta explicación, de no ser así déjame saber. 😄
Una preguinta profe aqui no tendria que cambiar tambien el 05?:
Hola; si, lo hicimos en esta clase, lo puedes ver minutos adelante 😃
Saludos.
Cuando hago el submit me da error y lo tengo como el resto, donde esta el fallo?
Hola, que gusto para mí leerte.
¿Dentro de la librería llamada
HERC01.PLATZI.LOAD
existe el modulo de carga llamado HOLA?
Muchas veces puede ser un error porque no encuentra el programa ejecutable, aunque si no mal recuerdo ya habías podido ejecutar este programa.
Así que vamos a hacer esto:
Regálame una pantalla del mensaje que te esta enviando el sistema una vez que ejecutas este JCL. Y ya vemos que esta sucediendo a detalle.
Saludos, sigo al pendiente de este tema!
Sí, esta el modulo HOLA ahí.
Cuando hago el SUB sobre el código anterior me da este error
y si ejecuto el programa este
no lo enteniendo... y es que no quiero seguir con el curso hasta ver porqué falla.
Gracias.
¿De dónde salen los niveles de las variables? De hecho, ¿por qué hay niveles? ¿Por qué 01, 05, 77, 88...? Nada de esto está explicado.
Que diferencia hay entre ejecución y compilación?
Buenas tardes profesor Carlos , se realizo el archivo comp y exec, todo salió bien.
Pero la salida de ejecutado me sale que no hay mensaje no se que estoy haciendo mal.
Hola, que gusto leerte ¿cómo estás?
Puedes desplazarte más abajo, hasta el final del spool.
Mira, he hecho lo mismo que tú:
Y me desplace hasta abajo, hasta la parte donde dice ++BOTTOM OF DATA++:
Y ahí puedes ver el mensaje contenido en tu programa 😀
Saludos, déjame saber como te va!
Si Profesor Carlos hay estaba el mensaje la verdad muchas gracias.
Reto Completado: nuevo JCL JCLHOLCX.
CUAL SERIA LA RESPUESTA DEL RRETO AUN NO ENTIENDO COMO COMPLETARLO
El reto está en que tomes el JCLHOC y el JCLHEX que se hicieron en las clases pasadas, y los unas en un solo JCL nuevo para que haga la compilación y ejecución del programa en un mismo JCL. En los comentarios ves más de una solución.
Reto desarrollado
Resultado:
Excelente clase. Aquí esta mi práctica del reto:
Y aquí el log resultante:
11:53 el profesor quizó decir: doble u, ese, ese, fin.