Unlock permet de déverrouiller soit un symbole, soit toutes les tables précédemment verrouillées par l'utilisateur.
SYNTAXE 1
Unlock liste_classe
SYNTAXE 2
Unlock liste_symb
Elément | Description | Restrictions |
liste_classe | Liste de classe à libérer, séparés par le caractère ','. | Aucune. |
classe | classe : pour libérer la totalité d'une table verrouillée | classe désigne l'abréviation d'une table ouverte. |
liste_symb | liste de symb à libérer séparés par un '.' | Aucune. |
symb | pour libérer un "symbole" désigner sous forme : | |
symbole | nom_de_variable. | Aucune. |
expr_c | Expression alphanumérique dont le résultat est un nom_de_variable. | Aucune. |
serveur | nom d'un serveur de tables. | Aucune. |
appli | nom_de_variable. | Aucune. |
# Libération du symbole 'SYMBOLE' préalablement verrouillé
Unlock SYMBOLE
# Libération d'un enregistrement verrouillé
Readlock [TEST]CLE2(1) = date$
If [S]fstat
[TEST]ZONE += 100
Rewrite [TEST]
Unlock [TEST]
Endif
# Il faut une cohérence entre le Lock et le Unlock
# on a 2 façons d'écrire : soit
SYMBOLE = "FUNSTOACC"
Lock =SYMBOLE With lockwait = 0
...
Unlock =SYMBOLE
# ou soit
Lock FUNSTOACC With lockwait = 0
...
Unlock FUNSTOACC
Hors transaction ( c'est à dire Hors Trbegin- Commit ), l'instruction Unlock déverrouille toutes les tables précédemment verrouillées par l'utilisateur. Dans une transaction, l'instruction Unlock est inefficace.
L'instruction Unlock permet de libérer soit un fichier globalement verrouillé, soit un symbole quelconque verrouillé par Lock, soit tous les enregistrements d'un fichier lus par Readlock ou par une boucle de lectures For munie de l'option With Lock.
L'instruction Unlock ne modifie pas la variable fstat.
Un verrou mis sur une table est automatiquement supprimé lorsque la table est fermée (c'est-à-dire non accessible et n'existant plus en mémoire, ce qui est le cas en particulier lorsque l'on quitte l'application). Ceci implique qu'un Close File fait un Unlock implicite. Cependant, pour garder une logique de programmation, il est conseillé de faire un Unlock même si cette instruction doit être suivie d'un Close File.
A l'intérieur d'une transaction (après Trbegin) les enregistrements sont automatiquement verrouillés si on les modifie, et déverrouillés à la fin de la transaction. Dans une transaction, un Unlock est inefficace. Les tables verrouillées avant la transaction sont toutes déverrouillées, par contre les symboles ne le seront pas.
Le Lock d'un symbole fait partie de la transaction en cours ; en cas de Rollback, il est donc annulé tout comme les écritures sur fichier indexé.
On peut poser des verrous sur des symboles appartenant à une autre application que l'application courante (syntaxe 'Lock symbole From application'). Dans ce cas, faire Unlock d'un symbole supprime tous les verrous posés par cette session Adonix dans cette application.