Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Duda] I/O Error al ejecutar una base de datos | DestinedBroken | Visual COBOL y DEV-HUB | 11 | 2 de febrero de 2022 11:13 |
| [Sintaxis] URGENTE: Base de Datos en MySql en Red | Hrmcobol | PowerCOBOL (ActiveX, v4 - v11) | 10 | 21 de agosto de 2021 15:30 |
| Base de datos .mdb | Lobosauseda | Bases de datos | 4 | 26 de agosto de 2019 09:36 |
| [Sintaxis] Abrir o visualizar Base de datos Cobol | Anuack | COBOL - General | 0 | 11 de julio de 2017 11:08 |
| [Sintaxis] Ayuda para interactuar con base de Datos | Breew | PowerCOBOL (ActiveX, v4 - v11) | 19 | 28 de enero de 2016 22:46 |
![]() |
|
Forero Junior
![]()
|
Hola de nuevo gente,
Marqué la solución de @Josber como solución porque en verdad fue quien hizo que me corriera el código, pero no funciona del todo bien. Es decir, a la hora de mostrar los registros del fichero hay 2 en concreto que no muestra, "se los salta" por así decirlo. Adjunto el fichero "empleados_escritura.dat" que estoy usando: Código:
1 jorge perez gonzalez 25 225019357calle prueba 2 02 jorge_javier vazquez 59 650298033estudios tele5 03 maria del carmen gomez del castillo 33 205369550avenidas de las rosas 34, 40 dcha 04 alvaro narvaez sikkenga 24 663059842urb. parque giralda 05 eva maria gomez gomez 56 556200498parque amatista 06 pepito grillo 100666 en tu cabeza 07 sdasd afsasdfdf 55 564684318sdaasdasd 08 antonio gomez jurado 29 569023558calle de los milagros 45 09 rodrigo guzman del campo 36 46582238 calle de ejemplo 10 Gerardo lopez alvarez 64 954025933calle de los descubrimientos 123 11 jorge moreno diaz 55 239651022avenida de las marquesinas, 45 12 ismael del campo gordillo 45 665239125glorieta del carmen sin perdon 14 alfonso parra gomez 56 569022146avenida de las infantas 55 antonella de la cruz jimenez 25 690258167calle de las parras marchitas 38 4a 56 juanito villaparra de los montes 56 690453002avenidas de las pi¤as 45a izq 57 jorge montado gutierrez 37 620453228camino de las hesperides 3 Código COBOL:
|
||||||||
|
|
|
|
Moderador Global
![]()
|
He copiado tu código lo he modificado un poco, y sin modificarlo, funciona correctamente, yo lo he modificado para esclarecerlo un poco, poner (puntos, ect) a mi me ha quedado así y funciona perfectamente Código COBOL:
Te he "anulado", esa doble lectura que haces al principio del programa, primero lees un registro y luego creas un bucle para leer desde el segundo hasta el último, no entiendo por qué lo haces así, pero desde luego, no es lo correcto. La anulación ha sido "comentando" la línea, no sé si te habrán explicado para qué sirve la columna 7 pero, entre otras muchas cosas, cuando pones un asterisco en esa columna, esa línea pasa a ser ignorada por el compilador, es lo que se llama comentar una línea. El "no beep", que he puesto al final del ACCEPT, es para que no pite cada vez que pida pulsar la tecla Dime si hay algo que no entiendas o no tengas claro. Un salu2.- |
|||||||||
|
|
|
|
Administrador
![]()
|
@Josber, yo creo que se ha liado un poco pero lo que quería hacer es esto:
Código COBOL:
NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
@Josber,
Nada más que vi en tu código Código COBOL:
Por otra parte, no tenía ni idea de esto:
![]()
@Kuk, no funciona tu código: ![]() Independientemente de eso, el programa lo único que tiene que hacer ese mostrar cada X veces (MAXIMO-REGISTROS) los registros de un fichero. Por lo que diagnosticó @Josber se leía el primero y luego se recorrían todos en bucle, en vez de arreglar eso y meterlos todos dentro del bucle. Es una tontería, recuerdo que cuando comencé con Java también la cagaba en estas memeces... |
|||||||||||
|
|
|
|
Administrador
![]()
|
@DestinedBroken, a ver vamos a clararlo todo porque se está liando un poco la cosa.
Primero, los puntos. Los puntos eran necesarios cuando no existían los terminadores explícitos de las instrucciones, es decir los END-IF, END-PERFORM etc. no eran aceptados por el compilador. EL estándar ANS74 trajo estos terminadores explícitos eliminando la necesidad de usar los puntos como terminadores de instrucción. La desventaja de los puntos es que se ven mal, y siendo Cobol un lenguaje que se basa en palabras inglesas y no en signos y derivados como es el caso de otros lenguajes, los puntos son difíciles de detectar y sobre todo de controlar. Es por ello que cualquier compilador de hoy en día que usa estándares >= ANS74 no obliga a usar los puntos en la PROCEDURE DIVISION dentro del párrafo. El único punto obligatorio es el del fin de párrafo, nada más. Y te recomiendo NO usar los puntos sino poner uno sólo en una línea nueva al final del párrafo (cada párrafo, lógicamente) para que sea bien visible. Segundo, la pantalla. @Josber se refiere a la SCREEN SECTION, es decir a que tengamos una interfaz definida y la usemos de pantalla. Efectivamente, por herencia son 24x80. Ahora, si simplemente quieres hacer DYSPLAY como System.out.println(), puedes hacer tantos como quieras sin restricción alguna. Solo que dependiendo de la consola/terminal y su buffer, te irá guardando las últimas X líneas, no tiene más. Tercero, sobre que MF Cobol acepta y no... Todo depende del Dialecto seleccionado. Un dialecto viene a ser un juego de reglas y directivas de compilación para respetar un estándar o comportamiento de un compilador específico. Por defecto, y es lógico, el dialecto en Visual COBOL es el de Micro Focus, que es extremadamente permisivo. Language Features - Dialect Cuarto, la lógica de lectura de un fichero de manera secuencial es la siguiente:
Ojo. Bajo Windows, la consola no es tan ortodoxa como bajo Linux, bajo Windows incluso diría que está bastante mal hecha, va a su bola. Por tanto, si no usas SCREEN SECTION no esperes gran cosa, porque a veces el comportamiento no es del todo adecuado. En todo caso, lo primero que tienes que hacer es incrementar el buffer de la consola a 900 por ejemplo (estará en 50 por defecto) Mira el programa, lo he modificado, lo pruebas y me dices: Código COBOL:
Y por último, lo de la paginación, lo que haces normalmente no se hace nunca, lo he dejado para no modificar tu programa mucho. Pero la paginación se usa sólo con SCREEN SECTION. el DISPLAY "simple" sólo se usa para los tests o en tratamientos Batch. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Moderador Global
![]()
|
Por cierto, usé el antiguo compilador RM-Cobol85 versión 5 para MS-DOS, porque era el que más a mano tenía y, ese es más estricto con el terma de las divisiones, los puntos, etc.
Los compiladores de hoy en día, ya no lo son tanto, PWC, por ejemplo, no necesita que exista ni IDENTIFICATION DIVISION, ni ENVIRONMENT DIVISION, tampoco es necesario cortar antes de llegar a la columna 72 y alguna cosilla más, son ventajas que se han ido añadiendo pero, cuando coges un compilador que usa ANS85, como el que yo he usado, te dan error por todos los sitios, en tu caso, supongo que el que estás usando, usará ANS2010, por lo que no será tan estricto. Un salu2.- |
||||||||
|
|
|
|
Forero Junior
![]()
|
@Kuk,
El tema de los puntos y los END-XXX lo había entendido a la perfección. Solamente estaba hablando con @Josber sobre cómo yo los trataba. Efectivamente, uso solamente los puntos al final del párrafo y los terminadores END cuando es necesario. No siempre que sea. Si entender lo entiendo bien, pero este es el foro de Micro Focus con Eclipse, donde la sintaxis funciona diferente a compiladores antiguos. Normal que en un ambiente de trabajo tengas problemas, pero no en otros. La consola ya es un problema que se me está repitiendo demasiado. ¿Recuerdas al principio cuando te lo comenté por aquí? Me echaste una mano con la creación de un .gnt en vez de un .exe y demás. Ahora parece que, no solo tiene un comportamiento errático como has dicho, sino que no puedo estar seguro si el que no me aparezca una línea por consola es mi culpa como programador, o culpa de la consola de Windows. Cambié el buffer a 900, pero no hay ningún cambio en la ejecución del programa. Y sobre el programa, pues lo he vuelto a probar y no me funciona: ![]() A todo esto, estoy leyéndome el manual de Andrés poco a poco. Intento compaginarlo con uno de IBM que encontré por aquí. Pero si veo que ni mi propio entorno me permite trabajar en condiciones, tendré que dejar COBOL. Saludos~ |
||||||||
|
|
|
|
Administrador
![]()
|
@DestinedBroken, lo que tienes que hacer no montar lógica con la pantalla sin SCREEN SECTION y simplemente hacer aparecer algunas cosas en al pantalla. Si lo que pretendes es hacer verificaciones de muchos datos, escríbelos en un fichero de salida y te evitas los dolores de cabeza con este tema.
NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||