Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Discusión] Ayuda programa COBOL | dariodr | COBOL - General | 0 | 10 de noviembre de 2024 03:53 |
| [Duda] Como insertar un programa C en POWER COBOL 9 | FabioYeyo | PowerCOBOL (ActiveX, v4 - v11) | 10 | 20 de abril de 2017 10:08 |
| [Compilador] Ejecutar un programa RM Cobol | Matias | RM/COBOL | 2 | 14 de julio de 2016 02:54 |
![]() |
|
Forero Junior
![]()
|
Hola queridos Amigos y Colegas, estoy aquí nuevamente para compartir una inquietud muy especial en cuanto al tipo de escritura de un programa cobol, si, tipo de escritura, y pasare a explicar el tema.
En una escritura normal de un programa y dependiendo del dialecto cobol que se use como compilador, la forma estándar o básica o de reglamento si se puede decir así seria la siguiente (Ejemplo simple) Código COBOL:
Ahora, el tema es el siguiente, debido a que uno quiere ahorrar linea de programación, o achicar el programa cobol para tener menos lineas así pueda ser compilado con mas instrucciones y menos lineas se haría esto: Código COBOL:
Que opinan de esto?, déjeme contarles que Yo, puedo hacer esto usando Micro Focus Cobol, creo que hay una instrucción o paramento o algo que le indica al lenguaje que interprete una linea conteniendo varias instrucciones y no solo una. Siempre aprendimos que en cada linea va una definición de variable o archivo o tabla y también un procedimiento por linea, pero como vemos aquí, en una linea hay varias definiciones y procedimientos, como fije antes, En Micro Focus Funciona y muy bien, esto me ayudo a crear programas mas grandes, con mas contenido de definiciones y procedimientos y a la vez con menos lineas o renglones para compilar. La pregunta iría dirigida a todos los demás lenguajes o mejor dicho a todos los dialectos de cobol, como AcuCobol, RmCobol, IbmCobol, etc, etc, etc. Mas en particular me gustaría saber si en AcuCobol se puede indicar de algún modo mediante paramentos o condiciones al compilador o al entorno para que interprete esta forma de trabajo, actualmente dan error al compilar. Seria bueno que hagan pruebas con sus lenguajes y comenten que descubrieron y si encuentran o saben como hacer que los demás dialectos interpreten esto comenten , es importante conocer este tema y compartir con los demas. Atte Jorge. |
||||||||
|
|
|
|
Moderador Global
![]()
|
A ver @jorgeamedina2020, sin que lo consideres un insulto porque nada más lejos de mi intención, me parece esa forma de escribir código "una marraná", a parte de que se quedaría el programa poco claro a la hora de leerlo por ti o por cualquier otra persona, también te digo que, en la PROCEDURE DIVISION, puedes escribir el código casi como quieras, pero la WORKING, tiene unas normas muy estrictas, una de ellas es que "Todo campo a nivel 77 ó 01, ha de empezar en el área A", o lo que es lo mismo, en las columnas 8 a 11, si en vez del COBOL actual, usaras COBOL-74 o COBOL-85, no te funcionaría ni de suerte, en esas versiones, tenías que respetar mucho las áreas A B y C, (columnas 8 a 11, 12 a 72 y 73 a 80 respectivamente).
Por otro lado, imagínate que haces un programa de esa manera y, dentro de seis meses, un año, cuando sea, necesitas modificar algo, te vas a volver loco intentando encontrarlo. El profesor que yo tuve de COBOL, a mediados de los 80, lo tenía muy claro, tu programa podía trabajar mejor que ninguno pero, como no estuviese escrito claro, con sus indentaciones, sus espacios, cambios de línea, comentarios, etc, estabas suspendido. Sólo tienes que descargarte cualquiera de los ejemplos que yo he subido y verás que es casi obsesivo en mí poner indentaciones, saltos de línea, etc, sin importar el largo del programa, eso es lo de menos hoy en día, el compilador, lo va a leer como si fuese un churro todo seguido y creo que nadie se me ha quejado por eso. Un salu2.- |
||||||||
|
|
|
|
Forero Junior
![]()
|
@Josber, Hola, gracias por tu respuesta sincera, primero no me parece que mi escritura sea (una marrana), segundo son mis programas y nadie debería verlos o acceder mas que yo porque son de mi propiedad intelectual y tercero con respecto a las normas... porque mi compilador me lo permite hacer?, buena pregunta verdad!!!,
Este ejemplo que te comparto lo hice hace varios años atrás, y justo ahora salio una modificación y se hizo al toque sin demorar nada, por que?, por conozco mis programas como los hice, asi de facir. Mira esto: Código COBOL:
Última edición por Josber fecha: 20 de marzo de 2023 a las 19:09. Razón: Por favor, usa el resaltado de texto para el lenguaje COBOL, (botón CBL) |
||||||||
|
|
|
|
Moderador Global
![]()
|
@jorgeamedina2020, es que el segundo ejemplo que has puesto, está correctamente escrito, con sus saltos de líneas, sus espacios, cada cosa en su sitio, pero el ejemplo del primer post
)Salu2.- Última edición por Josber fecha: 20 de marzo de 2023 a las 19:25. |
|||||||||
|
|
|
|
El Foro es mi casa
![]()
|
@jorgeamedina2020, yo estoy con @Josber.
Los programas deben de estar lo mas claro posibles. Los programas que yo hago son propiedad de la empresa que me paga por ello y además deben de poder comprender el resto de programadores que trabajan para la misma empresa. Si quiero quitar líneas o información redundante lo meto en copys. Y dentro de copys puedo tener copys. Tengo programas que modifican programas ya hechos ( analizadores - cambiadores ) y el resultado debe de ser lo mas claro posible para otro programa que venga cambiando cosas o programadores que vengan cambiando cosas. Te podría decir mas cosas, pero en lo que apuntas no veo nada positivo. |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
@jorgeamedina2020, hablando de estilo de programación si me lo permites....
esto: Código COBOL:
Son 5 grupos de 6 campos iguales (30 variables). Eso yo lo meteria en una tabla. (occurs) esto: Código COBOL:
un evaluate. esto que lo tienes repetido 20 veces con etiquetas diferentes: Código COBOL:
se hace un perform general con condiciones. esto: Código COBOL:
Lo tienes repetido un monton de veces. Pues lo mismo un perform a INA-GENERAL y quitas 100 lineas O sea que hay que hacer cosas generales, con condiciones y no repetir siempre lo mismo. |
||||||||
|
|
|
|
Forero Junior
![]()
|
El primer ejemplo que subí fue algo sencillo para mostrar o explicar el tema de usar en un solo renglón dos o mas definiciones o dos o mas procedimientos, solo eso.
Es por eso que querían que UDs prueben esto en su lenguaje, por supuesto respetando desde la columna 8 a la 72. Es solo prueba y comprensión. El segundo ejemplo (que no es un ejemplo), es parte de un programa que hace estadísticas de ventas tomando archivos de movimientos y creando pantallas e impresiones. Aquí quería mostrar que uso mucho varias variables con nombres distintos y con longitudes distintas, y que las fui escribiendo una a lado de la otra, separaras por el punto. El punto separa instrucciones y no el fin de linea. Lo mismo hice en la sección de procedimientos, puse en una linea varias tareas, intento con esto usar toda la linea posible para escribir todo lo que pueda para no hacer largo el programa, esto esta bien, mi compilador Micro Focus Cobol Version 3.00 del año 1989 lo permite, lleve el mismo programa para compilar con Acucobol y no le gusto que escribiera así las lineas, lo mismo me paso con GnuCobol en una de sus versiones. No intento Discutir el tema ni estar en contra de nadie, mi idea de esto es mostrar o compartir una forma de trabajo y saber si otros lenguajes se los permiten, meramente informativo queridos colegas. - - - Updated - - - Ademas imagino que algún parámetro o referencia o variable de entorno permite este tipo de escritura, la idea principal fue saber que lo permite... |
||||||||
|
|
|
|
Guardián del Foro
|
Hola Amigos:
Estuve probando con PowerCobol. Los niveles 01 y 77 necesariamente los quiere en la columna 8. Los niveles 02 en adelante se pueden poner uno al lado del otro, separado por puntos. En la Procedure los comandos pueden ponerse a continuación en la misma lína, separados con puntos o sin ellos. Las Instrucciones #include tambien pueden ponerse en la misma línea. La claridad del código es indispensable, ya sea para retomar algún programa viejo o para que otros puedan leer nuestro código. Pero como sobre gustos no hay nada escrito, cada uno tiene que tomar la forma que le resulte conveniente, por ejemplo yo programo en minúsculas, me cuesta seguir un código escrito en mayúsculas. Respetar las indentaciones me parece fundamental, para seguir las estructuras. Yo pierdo mucho tiempo en tratar de tener un código claro, alineando por picture por ejemplo. Eso me ayuda mucho para cuando tengo que encontrar errores o tengo que realizar alguna modificación. Los objetos les pongo un prefijo siempre, no dejo el "name" que le pone el editor. Todos mis cuadros de texto empiezan con txt... los combos con cmb... las etiquetas con lbl, etc. Y después le sigue un nombre nemotécnico que me indica qué contiene, txtNombre, txtApellido, etc. Los campos de los archivos tambien les pongo un prefijo de tres o más letras que lo saco de una pseudo abreviatura del nombre del archivo. El archivo de cuentas corrientes se llama CTACTE y el campo nombre se llama ccnom, cctelef, cccuit. cccodpos. etc. Las propiedades y métodos tambien trato de respetar como se escriben, porque en la mayoría de los objetos como se escriba es los mismo, pero pueden haber controles activex que necesariamente tengan que respetarse las mayúsculas o minúsculas. Entonces trato de acostubrarme. "SetFocus", "Value", "BackColor", "ForeColor", "CallForm", "OpenForm". Todas estas nomenclaturas para escribir el código, lo he ido desarrollando con el tiempo, por eso por ahi tengo mezcla si comparamos programas viejos con nuevos. Y a veces un programa nuevo que haya hecho un copiar y pegar de uno viejo, en la medida que el tiempo me de, trato de "traducirlo". Saludos... Fito... |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
@jorgeamedina2020, eso es standard de cobol, hasta el rmcobol 5.35 lo admite (AÑO 1985). Mientras te ciñas a los márgenes, puedes poner las líneas que entren. En la actualidad, cada compilador tiene opciones o parámetros de escribir después de la columna 73 sin ceñirte a los márgenes. Con lo cual puedes aprovechar mucho mas tu forma de escribir los programas. |
|||||||||
|
|
|
![]() |
| Herramientas | |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||