Aprender a ejecutar operaciones matemáticas en Cobol es esencial para cualquier programador que trabaje con este lenguaje. A lo largo de esta clase, se revelan los comandos necesarios para realizar sumas, restas, multiplicaciones y divisiones, además de profundizar en el comando compute, que simplifica estas operaciones.
¿Cómo configurar el entorno y definir variables?
Al iniciar, accede al sistema y configura tu entorno para trabajar en la carpeta correcta. Utiliza como base un programa preexistente y crea uno nuevo llamado "aritum". Este proceso implica:
Copiar el programa existente: Copia el contenido actual para crear la base de tu nuevo programa.
Modificar el nombre del programa: Reemplaza todas las instancias del nombre antiguo con "aritum".
En Cobol, las variables se definen dentro de la sección "working-storage". Usa el nivel 77 para declarar variables independientes, que no están subordinadas a otras.
En estos ejemplos, WSB-NUM-A y WSB-NUM-B representan números a sumar, restar, multiplicar o dividir, y RESULT-ONE almacenará el resultado de la primera operación.
¿Cómo realizar sumas y restas?
Usar Cobol para sumas y restas es similar a las instrucciones matemáticas básicas.
Ejemplo de suma:
ADD WSB-NUM-A TO WSB-NUM-B GIVING RESULT-ONE.
Ejemplo de resta:
SUBTRACT WSB-NUM-B FROM WSB-NUM-A GIVING RESULT-TWO.
Para cada operación, asegúrate de alojar el resultado en una variable previamente definida.
¿Cómo realizar multiplicaciones y divisiones?
La multiplicación y división también siguen una lógica sencilla, aunque el orden de las variables puede afectar los resultados si existen remanentes.
Ejemplo de multiplicación:
MULTIPLY WSB-NUM-A BY WSB-NUM-B GIVING RESULT-THREE.
Ejemplo de división:
DIVIDE WSB-NUM-A BY WSB-NUM-B GIVING RESULT-FOUR.
Una comprensión exacta de las diferencias entre las operaciones puede ayudar a prevenir errores de cálculo.
¿Qué es el comando compute?
Cobol ofrece el comando compute para englobar las operaciones básicas dentro de una sola sentencia, proporcionando más flexibilidad para cálculos complejos.
Ejemplo de compute:
COMPUTE RESULT-FIVE = WSB-NUM-A * WSB-NUM-B.
Utiliza operadores matemáticos tradicionales (como +, -, *, /) para realizar múltiples cálculos en una sola línea.
¿Cómo compilar y ejecutar el código?
Finalmente, compilar y ejecutar el programa es crucial para verificar la correcta ejecución de las operaciones. Utiliza JCL (Job Control Language) para gestionar esta parte.
Verifica nombres de programa en JCL: Asegúrate de que los nombres en JCL correspondan con los del programa Cobol.
Ejecuta la compilación y visualiza resultados: Usa comandos de visualización para comprobar los resultados.
Consejo profesional: Si los resultados no son los esperados, revisa tanto la lógica de tus operaciones como la definición de parámetros y variables.
¡Invitación a seguir explorando!
Con estos nuevos conocimientos, estás listo para experimentar y crear programas más avanzados en Cobol. Prueba definiendo variables adicionales o explorando más operadores en otros lenguajes de programación. Y no olvides compartir tus experimentos y resultados en las discusiones comunitarias. ¡Estamos aquí para ayudarte!
Avanza hacia temas más avanzados, como las estructuras de control en Cobol, para profundizar tus habilidades en este lenguaje clásico pero poderoso.
Super bien Omar, ¿Qué forma te gusta más, usando COMPUTE, o los verbos ADD, SUBTRACT, MULTIPLY DIVIDE?
Me gusta la forma de programar de Omar, se ve mas limpia.
Podrías explicar como transferir los archivos con el emulador que instalamos? es que se me ha caducado el VISTA TN3270… y he tenido que copiarlo a mano, y no me sale en el load y por el transfer se ve que lo estoy haciendo mal porque no aparece...
Y al hacer el submit me da el error de que no encuentra el modulo.
Sigo pendiente de saber como te esta yendo! Saludos.
Vale, muchas gracias, subí los del rar y funcionó correctamente, corregí TODOS los errores de sintaxis que tenía que no eran pocos en los míos... y obviamente me funcionó ejejjej
Gracias!
Que vendría a ser el
010-MAIN
Comentando está línea el programa parece tener la misma ejecución.
¿Cual es el función?
Hola Leonardo, como bien te diste cuenta, si la comentas, el programa aún funciona; ese es un titulo de párrafo o módulo; y sirve para identificar el fragmento de código, (que llamamos párrafo o módulo), y ++-el cual por buenas prácticas-++, debemos usar para separar nuestro programa a medida que va engrandeciendo.
Cada módulo debe codificarse pensando en que dicho código debe hacer una sola y específica función.
Saludos! Sigo pendiente de cualquier duda o comentario que vayas teniendo!
RESTO :)
Super bien 🚀👏
Para operaciones de exponentes
COMPUTE WSC-RESULT-6 = WSC-NUM-B ** WSC-NUM-A
Ya entendi profe jeje
También es posible hacer modulo o factorial.
El compilador me decia que el TO en la instruccion ADD era superflous, lo quite y compilo sin errores
Cuando un resultado es negativo ej: 4-9 = -5 el resultado que arroja es 5
Me sale el siguiente error que podría estar pasando:
Hola Juan, veo que tienes un error tipográfico, revisa ENVIRONMENT, y WORKING, lo estas escribiendo como lo trabajamos en clase?
Saludos, sigo al pendiente!
A mi también me sale ese error pero no es tipográfico porque revisé todo y todo está bien escrito, igual desinstalé todo porque no sé qué ocasionó ese error. :c
Porque al apretar la tecla ESC se queda trabado el sistema hay alguna forma de solucionar esto?
Hola Juan, es en la configuración de las teclas, para desbloquear, oprime la tecla CTRL que se encuentra a la izquierda de tu teclado.
Esta tecla es la tecla attn, es un default para terminales 3270.
Saludos.
Acabo de ver una pregunta donde hablar sobre 010-MAIN, la cual se refiere a módulos o nombres de párrafo, por qué 0-10? otro módulo sería en otro archivo con el mismo 0-10MAIN o cómo sería el cambio que se hace en estos casos? gracias! súper el curso hasta ahora y me ha resuelto todas mis dudas gracias a estos apartados.
Hola, que buena pregunta, solo es un diferenciador, es para tener personalmente control sobre los párrafos, para tener una modularidad adecuada, internamente en el compilador, esta numeración no afecta.
Que bueno que este curso te esta gustando, te invito a que sigas y que al terminar continues con el siguiente curso: https://platzi.com/cursos/cobol-practico/ en el cual ponemos lo aprendido en este curso, y hacemos un programa cobol usando archivos y lo que vimos de JCL.
Saludos, sigo al pendiente.
Lo termino y allá voy
¿El proceso de compilación podría fallar si subo un archivo con formato .cbl a diferencia de un TXT? o cuando se vaya a subir al host en realidad elimina las extensiones y queda "texto plano", lo digo para poder trabajar con vim y luego subirlo al host 😶
Hola, la emulación no contempla extensiones, entonces puedes subirlo como cbl. El texto se queda plano.
Hola.
Hay alguna forma de generar números aleatorios en Cobol?
Encontré en internet FUNCTION RANDOM, pero no me funciona en el emulador.
Hola Gino, si, eso es para COBOL 2002, entonces en el emulador asi como en la industria usamos COBOL 85 o anteriores. De hecho las funciones como esta a la que estas haciendo referencia, se encuentran embebidas en los entornos de desarrollo que soportan COBOL 2002, que tambien tienen implementado de manera implicita el paradigma Orientado a Objetos.
Saludos.
Hola Gino como te va?
Esta función, al igual que el resto de FUNCTIONS han sido implementadas a partir de la version 2002 de COBOL, misma que tambien observa el paradigma de programación orientada a objetos.
En el emulador del curso al igual que en la mayoría de la industria manejamos COBOL 74, aquí cuando requerimos generar cierta funcionalidad, como generar numeros aleatorios los tenemos que codificar por nosotros mismos.
Es un buen reto efectuar este programa que devuelva numeros aleatorios.
Saludos, dejame saber como te va!
Profe intentando hacer lo que usted me dijo, no me carga el HERCULES, no me llega a salir el animal ocn el TK4, mire
Mire note algo nuevo que me dijo, INVALID REPLY FORMAT ayuda profe, saludos
Hola, como estas?
Quiero entender como te ha sucedido esto 😀
Cuando ejecutaste por primera ves mvs, ¿lo primero que hiciste fue entrar a la carpeta unattended y ejecutar el script set_console_mode?
Este tipo de errores generalmente se presentan cuando omitimos la ejecución de este script, o por no apagar el emulador ejecutando los scripts.
Puedes teclear el siguiente comando en el emulador:
/S JES2,PARM='FORMAT,NOREQ'
Con este comando estamos indicando que no es requerida la carga del JES, por lo cual se va a eliminar algún trabajo que tengas encolado.
Aún así me sería de gran ayuda si colocas aquí los pasos que efectuaste 😃
Saludos, continuo al pendiente de este tema!
Hola esto puse:
En la case 4 o 3 usted puso set_console_mode.bat, no set_console_mode,
y ese codigo en que lugar lo pongo.
Profe mire esto:
me aparecen muchos JCLs en cual deberia entrar
Hola, debe ser el jcl con identificador 0026, aunque ahí dice que esta con estatus DUP.
Revisa internamente que mensaje te han dado los jcl´s con identificador 0025 y 0026, y los colocas aquí para ver que esta ocurriendo con esas ejecuciones.
😃
10:20 No entendí muy bien profe podría explicarme aca, saludos
Hola, claro que sí, lo que estamos haciendo en el minuto 10:20, es direccionar el resultado de cada operación matemática a su respectiva variable, en este caso:
ya que tenemos 5 diferentes operaciones matemáticas que estamos efectuando en este programa.
Al finalizar la ejecución de este programa y revisemos el spool, veremos los resultados de cada operación (suma, resta, mult y división, así como el compute, que es la operación en la cuál podemos efectuar estas 4 operaciones aritméticas) en su respectiva variable definida, las que van numeradas del número 1 al número 5.
Déjame saber si te he podido ayudar con esta explicación. 😄
Perdon profe yo me referia al reto jeje, saludos
SON PALABRAS RESERVADAS ESAS DE *ADD, *SUBTRACT, ETC.. Y PORQUE EL * ANTES?????
¿Dónde está el JCL para compilar? No hay nada en el apartado de recursos de la clase. Parece que con el cambio de interfaz de Platzi ha desaparecido. Igualmente, el usuario del profesor también se ha borrado y ahora consta como user_deleted-1201437.
Usa la versión anterior de Platzi
Gracias, David. Ya me lo habían comentado desde soporte de Platzi tras preguntar.
No obstante, no me parece que un fallo semejante sea lógico por parte de una plataforma que se dedica al desarrollo web. Y menos que ni siquiera se avise de ello a los usuarios. Si las clases se quedan sin los recursos, muchas de ellas no sirven para nada.