AS/400 - DESBLOQUEAR ARCHIVO

 
Vista:

DESBLOQUEAR ARCHIVO

Publicado por JESUS BELLORIN (1 intervención) el 18/10/2010 15:32:27
Buenas dias colegas, yo vengo de programar en un S/36 y ahora estoy programando
en un AS/400, mi problema es el siguiente; dentro de mi programa CL utilizo el
OVRDBF y le coloco las intrucciones para compartir archivos
RCDFMTLCK((Nombre del registro,*SHRUPD)) LVLCHK(*NO) SECURE(*YES)
SHARE(*YES) este llama a un programa en RPG400 , el programa funciona perfecto
pero cuando otro usuario ejecuta otro programa que utiliza este mismo archivo el programa al nuevo usuario se le queda bloquedo, al rato sale automaticamente pero con un mensaje de error indicando que el archivo esta siendo utilizado por otro usuario,
como yo podria solucionar este problema y dejar que el archivo (REGISTROS) puedan ser utizado por otros usuarios, en otras palabras que el archivo este realmente compartido

Gracias de antemano por su amable respuesta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DESBLOQUEAR ARCHIVO

Publicado por Manuel (15 intervenciones) el 20/10/2010 18:21:19
Ejecutas el comando CLOF (Archivo) despues de correr el programa.?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DESBLOQUEAR ARCHIVO

Publicado por Jesús Acuña (10 intervenciones) el 22/10/2010 05:03:38
Estimado Tocayo, en realidad, si la intención del OVRDBF es que la data del archivo sea compartido por varios trabajos (varios jobs o por varios usuarios) no necesitas especificar dicho OVRDBF (mucho menos el parámetro SHARE).
Particularmente el parámetro SHARE es para compartir el ODP (vale decir la vía de acceso o más claro el puntero del archivo) entre varios programas (normalmente en cascada) de un mismo job, programas que usarían el mismo archivo.
Aún sea así, como lo expones, se supone que el fin de la ejecución del programa implicaría la finalización del efecto del OVRDBF (lo usual sería especificar DLTOVR *ALL en el CL luego dela ejecución del programa) y consecuentemente todo su efecto debería borrarse.
En fin tendríamos que analizarlo un poco más en detalle, pero si la intención es que los registros del archivo sea compartido entre varios programas y/o jobs y/o usuarios, pues no necesitas ninguna especificación adicional (a mi parecer). Cosa aparte es que en un programa se acceda a un registro de un archivo abierto como de actualización, entonces ese registros (tan solo ese registro) quedará bloqueado hasta que se lea otro registro o se produzca la actualización de dicho registro o se desbloquee con la operación UNLOCK, de cualquier manera dicho escenario es por solo un registro.
Recuerda que cuando hay algún tipo de bloqueo que provoca la "caida" de un programa, entonces se puede determinar el job o usuario causante con el comando WRKOBJLCK (cuando el bloqueo es por todo el archivo) o por el comando DSPRCDLCK (cuando el bloqueo es a nivel de registro).
Espero te puedan servir estos comentarios.

Jesús Acuña
www.cursos-as400.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar