Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Duda] Problemas con NetExpress 3.1 | jjmunuce | Micro Focus COBOL | 5 | 28 de mayo de 2024 21:16 |
| [Duda] COBOL problema con READ, status = 46 | Marengo97 | COBOL - General | 6 | 7 de febrero de 2023 19:46 |
| [Componente] Problemas con vbscript | Fito | PowerCOBOL (ActiveX, v4 - v11) | 10 | 9 de marzo de 2022 11:42 |
| [Compilador] Problemas con los *.SE/*.FD | Socavi | PowerCOBOL (ActiveX, v4 - v11) | 8 | 23 de agosto de 2021 22:47 |
| [Compilador] Problemas con el DEBUG | Josber | PowerCOBOL (ActiveX, v4 - v11) | 3 | 12 de abril de 2015 21:16 |
![]() |
|
Forero Junior
![]()
|
Hola, estoy escribiendo un programa que contiene un registro de libros para agregar, quitar, buscar, etc.. todo iba bien hasta que escribi la seccion de file status para que el programa
pueda saber si es necesario crear un archivo en caso que este no existe, se que puedo hacer funcionar el programa sin hacer esto pero como una buena practica quiero aprender a usar los file status. El problema en cuestion esta al ingresar en la opcion 3,en el parrafo VER-LIBROS coloque un if para determinar si F-NOEXISTE-REG es TRUE disparar un mensaje de error, y en caso que no,que proceda a leer el archivo y mostrar todo lo que contiene, si elimino el archivo y presiono 3 me muestra ese error a la perfeccion pero si creo el archivo o el archivo ya existe de antemano luego no ingresa a la seccion 3, o simplemente se saltea el if o simplemente no me muestra ningun libro a pesar de haber ingresado algunos. Aqui dejo mi codigo, cualquier ayuda, consejo, cosa que mejorar se agradece.. Código COBOL:
|
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
@Marengo97, eso es porque lees el registro con el valor de "LIBRO-ID" no existe y se sale.
Te adjunto código para leer todos de una mejor forma. Modifica esta variable añadiendo un nuevo file status. Código COBOL:
Y recorre el fichero de esta forma: Código COBOL:
si tienes alguna duda hazmelo saber. |
||||||||
|
|
|
|
Forero Junior
![]()
|
Funciona perfecto!
Podria explicarme como es que funciona? Antes de aplicar el file status era bastante simple pero al parecer cambia el codigo de ver-libros al usarlo, entiendo los statement de initialize y start, no tanto el de next record, pero no entiendo la logica que aplicó, por ende no se por que funciona. El uuunico error que encontre es que si creo el archivo, de no existir, entra en un loop infinito mostrando "000" al entrar a la opcion 3, pero al cerrar el programa y volver a ejecturlo funciona perfecto y muestra el registro vacio, como podria solucionarlo? Gracias. |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
@Marengo97, te explico.
Tu has hecho un bucle y siempre lees el mismo registro con el contenido de la clave "libro-id". No cambias libro-id. Otra cosa es que cambiaras el valor aumentandolo, pero realmente tendrias lecturas fallidas. Cuando quieres recorrer un fichero completamente: 1) realiza un start con la clave deseada, para poner el cursor de lectura al principio. Aunque tu lo abres y se supone que esta al principio. Si tuvieras varias claves en el fichero, libro-id, nombre, editorial podrias leer secuencialmente por esa clave. Incluso no desde el principio sino desde un a determinada posicion. 2) read next lee el siguiente por la clave especificada en el start. Cuando llega al final mete un 10 en el file status. NOTA. Para este bucle de lectura es recomendable hacer un "OPEN INPUT" en vez de "OPEN I-O" porque si hay varios usuarios trabajando te podrias encontrar un registro bloqueado. Entonces la solucion es leer con una apertura "open input" si no tendrias que hacer lecturas con la clausula "with no lock" para no bloquear registros ni encontrartelos bloqueados. - - - Updated - - - Metidos en el tema, suponte que deseas seleccionar un intevalo de libros: accept libro-desde accept libro-hasta Código COBOL:
|
||||||||
|
|
|
![]() |
| Herramientas | |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||