LE VERROUILLAGE DES PROGRAMMES

Quand on fait des développements, il est parfois nécessaire de verrouiller un programme afin d’empêcher son utilisation par d’autres utilisateurs pendant qu’il est exécuté.  

Cependant, il n’est pas possible de verrouiller un programme.

Lorsque on saisit :

Le programme &MONRPG peut être exécuté par un autre utilisateur. Cette commande va verrouiller la description d’objet du programme, mais pas son utilisation. 

Alors, comment peut-on gérer le verrouillage d’un programme ?

Une solution possible est d’utiliser une data area qui sera allouée au début du programme avec la commande ALCOBJ. Tant que cette data area sera verrouillée par le travail, aucun autre travail ne pourra se l’allouer.

ATTENTION ! Il est possible de verrouiller à plusieurs reprises le même objet du même travail.

Cette data area restera verrouillée jusqu’à la fin du travail ou jusqu’à ce que on désalloue l’objet avec la commande DLCOBJ (l’objet doit être désalloué autant de fois qu’il a été alloué).

Si l’on ne fait pas DLCOBJ avant ALCOBJ, il peut arriver que :

1. On appelle un programme qu’on a verrouillé par une DTAARA.

2. Le programme plante.

3. L’utilisateur revient dans ce même programme.

4. Il verrouille une fois supplémentaire.

5. Quand il a fini sans problème, il va rester un verrouillage.

Il est donc important de faire DLCOBJ avant un ALCOBJ. Il désalloue ce témoin de verrouillage après usage pour laisser la place libre à un travail suivant.

Et finalement, si l’on veut trouver le travail qui alloue, on peut utiliser la vue qsys2.object_lock_info :.

Résultat :