![]() |
Error 61 al abrir fichero en 2 programas a la vez
Hola, tengo el siguiente problema. Al abrir un mismo archivo indexado en otro programa simultaneamente, no deja ejecutarlo y da erorr 61.
dice Código:
libcob: error: file sharing conflict (status =61) for file PROPIEDADES ('PROPIEDADES.DAT' ==> PROPIEDADES.DAT)Saludos |
@valpo, hola, utilizas LOCK MODE en tu programa? Creo que por defecto se hace uso exclusivo, quiere decir que no puedes usar un mismo fichero simultáneamente en varios sitios.
Para poder hacerlo, mira este manual: https://gnucobol.sourceforge.io/guid...%20Letter).pdf Busca dentro LOCK MODE Por cierto, qué motor de fichero indexado usas (creo recordar que había como varias posibilidades). Y por curiosidad, qué IDE usas? ;) |
@valpo, yo creo que lo mejor es poner LOCK MODE AUTOMATIC y que sea el compilador el que resuelva los casos de compartición de ficheros.
Un salu2.- |
hola, le puse el LOCK MODE IS AUTOMATIC en la SELECT de los archivos indexados, pero sale el mismo error al ejecutar el segundo programa. No estoy usando IDE, estoy a nivel de consola por cmd, abro 2 simbolos del sistema y corro un programa en cada una y al correr el segundo sucede el error . El motor del ficheros es vBISAM . SI ustedes no tienen este problema que motor tienen , podrian ver?
Código:
cobc (GnuCOBOL) 3.2.0
|
@valpo, a ver ya no me acuerdo muy bien, pero creo que el AUTOMATIC es el por defecto y hace uso exclusivo del registro que es lo que te está pasando ahora. Lo que tienes que hacer es indicar LOCK MODE MANUAL y luego ir jugando con lecturas añadiendo WITH NO LOCK y sólo bloquear usando WITH LOCK cuando realmente lo necesites como exclusivo, es decir para modificar los datos.
Luego puedes ir comprobando si el registro al que accedes está bloqueado (en uso) y esperar a que se libere. Es decir tienes que aplicar la lógica de acceso concurrente a registros, con sus esperas, vía código. A ver si te cuentan más cosas los amigos foreros porque yo no lo he usado mucho y hace muchísimo tiempo de eso. Pero vamos que está claro que tu problema tiene solución. Por cierto, según Micro Focus, el motor DISAM es mejor: https://www.microfocus.com/documenta...migration.html Y GnuCOBOL permite instalación de dicho motor: https://github.com/OCamlPro/gnucobol...e#isam-support |
@valpo, has puesto el fichero en las "DECLARATIVES"
Es que si no lo pones cuando se produce un error salta. Si están puestas las declaratives, el error producido se mete en el file-status. :astro: |
Ok gracias, entonces tendré que hacer uso de DECLARATIVES , abrir de i-o solo para grabar, todo un manejo de archivos. Es que estaba acostumbrado a rmcobol que solo abria los archivos de i-o al iniciar los programas y no habia ningún problema al compartir los archivos .
Saludos. |
@valpo, no es así
En rm/cobol hay que utilizar las declaratives porque si no no puedes controlar las excepciones. En rm/cobol (multiusuario ) al abrir un fichero en modo "i-o" y hacer un "read", bloquea el registro si no le pones "with no lock" Si lo haces en modo "input" no bloquea al realizar un "read", logicamente. |
Exacto, pero solo bastaba "with no lock" en los "read" y nada más , y habría los archivos i-o en todos los programas y todos los usuarios leian, grababan y regrababan simultaneamente sin problemas. En gnucobol no puedo tener abierto 1 mismo archivo de i-o en 2 programas simultaneos. Eso estoy tratando de hacer en gnucobol , abriendo i-o solo al momento de grabar o regrabar, aunque aun no me resulta.. en eso estoy.
|
@valpo, Pero has puesto el fichero en las declaratives ?
|
@JCantero, si puse declaratives, pero solo sirve para enviar un mensaje cuando se produce el bloqueo. No soluciona nada por si mismo, igual hay que hacer el manejo de las aperturas de ficheros.
|
@valpo, pon aqui el apartado de las declaratives o el .cbl para que veamos y te podamos entre todos ayudar
:astro: - - - Updated - - - Deberia estar asi mas o menos suponiendo que el fichero es "Libros" Código COBOL:
Si está así y el file status no te da el error porducido entonces es que el gestor de ficheros no contiene esta posibilidad o hay que configurar de otra forma |
| La franja horaria es GMT +2. Ahora son las 17:11. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.