Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Friday, April 17, 2009

El Registro está Bloqueado







A veces tenemos un problema cuando varios usuarios tratan de acceder al mismo registro, al mismo tiempo. ¿Hay alguna manera de saber si el registro está bloqueado sin tener que esperar que el tiempo máximo limite (timeout)?

Cuando un registro esta bloqueado en RPG IV, este permanece bloqueado hasta que uno de los siguientes eventos ocurre:
-El registro es actualizado
-El registro es eliminado
-Otro registro es leido en el archivo
-Un Settl o SetGT es ejecutado contra el archivo
-
El mensaje que nos da el programa cuando vamos al Log de mensajes del Job es algo como esto:

Record 148 in use by job 365563/USER/QPADEV000D.

Esta información es guardada en el Program Status Data Structure SDS, en las posiciones 91-170.

A continuación un pseudocódigo para detectar si el registro está siendo bloqueado y como extraer la información que nos interesa para enviar un mensaje al usuario.

Definimos la Program Status Data Structure

D SDS
D JobName 91 170

* JobName contiene la información del Job que está bloqueando el registro

* El Indicador 99 nos indica si el registro al que queremos acceder está bloqueado.

C Clave Chain Archivo 9899

C if *In99 (* si está bloqueado*)

Buscar la primera ‘/’ del campo JobName

C eval PosInicial = %scan('/' : JobName: 1)
c

** Extraemos la información del campo JobName

c eval Usuario = %subst(JobName:PosInicial + 1)


** Armamos el mensaje de salida
c eval Mensaje = 'El usuario ' + Usuario +
C ' está bloqueando el registro'

** Luego Mostramos por pantalla el Mensaje

C Endif




Si te pareció interesante, reenvialo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor:  Ing. Liliana Suárez

1 comment:

Willian Serpas said...

Y como lo debo hacer con RPGIII
o RPG400