ADELIA |
VADELIA |
SADELIA |
WADELIA |
MADELIA |
(I/B) |
(I/B) (S) |
(B) (S) |
(I/B) (S) |
(I) (S) |
Paragraphe d'utilisation
Tous
Syntaxe
LIRE NomVue Option Paramètre
Option |
→ |
*UNLCK | Rien |
Paramètre |
→ |
*NON_RG | *RG | Rien |
Description
Cet ordre correspond à une lecture de fichier par clé ou par numéro de rang. Il sous-entend qu'une vue NomVue a été définie avec accès par clé (ou direct), et que la clé d'accès correspond à celle du fichier.
Il est possible de tester si la lecture a abouti par une instruction du type :
|
SI NomVue EXISTE |
ou |
SI NomVue N_EXISTE_PAS. |
Si la lecture n'aboutit pas, le système ne lit aucun enregistrement et la valeur des zones du fichier n'est pas changée.
Il est également possible de s'assurer que l'enregistrement n'est pas verrouillé, en le testant à l'aide du mot réservé *BLOQUE :
|
L'enregistrement est verrouillé. |
|
L'enregistrement n'est pas verrouillé. |
Par défaut, un enregistrement de fichier est verrouillé après lecture si la vue NomVue de ce fichier est déclarée en mise à jour et que le mot réservé *UNLCK n'est pas utilisé.
Voir également l'ordre LIBERER qui permet de libérer un enregistrement de fichier.
Si *UNLCK est indiqué, la lecture ne verrouille pas l'enregistrement. Ce paramètre, utilisé sur un fichier ouvert en mise à jour, permet d'avoir le même effet que s'il avait été déclaré en lecture seule.
Le paramètre *RG permet de générer les règles de gestion implicites de lecture liées à l'entité correspondant à la vue, même si le programme est généré sans l'option de génération des règles de gestion implicites.
Le paramètre *NON_RG permet de ne pas générer les règles de gestion implicites de lecture liées à l'entité correspondant à la vue, même si le programme est généré avec l'option de génération des règles de gestion implicites.
Par exemple
Le fichier VENTES a pour clés : code client et numéro de ligne.
La vue VENTES est utilisée avec W_CODE_CLIENT et W_NUM_LIGNE comme clés d'accès.
CODE_CLI_VTES |
NUM_LIGNE_VTES |
0002 |
01 |
0002 |
02 |
0002 |
03 |
0002 |
04 |
0006 |
01 |
0006 |
02 |
0011 |
01 |
W_CODE_CLIENT = '0006'
W_NUM_LIGNE = '01'
LIRE VENTES
SI VENTES N_EXISTE_PAS
PREPARER_MSG 0024 W_CODE_CLIENT
ERREUR
FIN
* Le pointeur est positionné dans le fichier sur client 0006, ligne 01
* L'enregistrement existe, donc le message 0024 n'est pas envoyé
*
W_CODE_CLIENT = '0006'
W_NUM_LIGNE = '03'
LIRE VENTES
SI VENTES N_EXISTE_PAS
PREPARER_MSG 0024 W_CODE_CLIENT
ERREUR
FIN
* L'enregistrement n'existant pas, le message 0024 est envoyé.
*
Autre exemple d'utilisation
LIRE ENTCDE_DA
SI ENTCDE_DA EXISTE
* test verrouillage
SI *BLOQUE = '1'
PW_COD_RET = 'BL'
SINON
PRESENTER ENTCDE_DA
LIRE CLIENT_DB
......
FIN
FIN