CPF4802
Opération de lecture impossible pour le membre &4. (C I)
Gravité 30 · Erreur grave
Cause
Une modification du sens de lecture s'est produite après qu'une demande de lecture d'un enregistrement précédent a généré une erreur d'extraction en instance ou une erreur de verrouillage CPF5027. La position du dernier enregistrement extrait n'a pu être retrouvée pour l'une des raisons suivantes : - Le fichier ouvert est un fichier joint. - Le dernier enregistrement extrait a été supprimé du fichier. - Le fichier ouvert est un fichier avec clé et des enregistrements associés à des valeurs de clé comprises entre le dernier enregistrement extrait et celui à l'origine de l'erreur ont été insérés. - Le fichier a été ouvert pour un traitement GROUP BY et la demande de lecture à l'origine de l'erreur en instance était une demande de positionnement à *START ou *END, ou portait sur le même enregistrement que celui à la position en cours. - Le fichier a été ouvert pour un traitement GROUP BY et la demande de lecture qui a suivi l'erreur en instance portait sur le même enregistrement que celui à la position en cours. - Un algorithme de hachage a été utilisé pour traiter la demande. Une modification du sens de lecture peut se produire lorsque :
- Une opération de lecture d'enreg précédent est suivie de la lecture d'un enreg suivant. - Une opération de lecture d'enreg précédent est suivie de la lecture du même enregistrement. - Une opération de lecture d'enreg suivant est suivie de la lecture d'un enregistrement précédent. - Une opération de lecture d'enreg suivant est suivie de la lecture du même enregistrement.
Que faire
Si la demande de lecture a généré un verrouillage CPF5027, renouvelez votre demande une fois l'enregistrement redevenu disponible. Si la demande de lecture a généré une erreur d'extraction en instance, indiquez SEQONLY(*YES 1) dans la commande OVRDBF, puis renouvelez votre demande.
Réponses possibles
| Réponse | Effet |
|---|---|
C | Annuler la demande. |
I | Ignorer la demande et continuer. |
Description technique
Le message CPF4802 est envoyé lorsque le fichier est ouvert en entrée seulement avec SEQONLY(*YES N), où N est supérieur à 1, et qu'il y avait une erreur d'extraction en attente ainsi qu'un changement de direction. Une zone de la zone de retour d'information d'entrée-sortie de la base de données indique si l'erreur d'extraction en attente existe. Cette zone permet de déterminer si un changement de direction peut être effectué sans recevoir le message. Si l'examen du bit montre qu'une erreur d'extraction en attente existe, le bit peut être remis à zéro en utilisant le même type d'opération de lecture que la dernière émise (lecture par numéro d'enregistrement relatif, lecture par clé), ou en positionnant le fichier au début ou à la fin. Pour une explication complète de la zone, voir le manuel Guide to Programming for Tape and Diskette, SC41-0012. Notez que l'indicateur d'exception en attente n'est pas activé pour une erreur de verrouillage CPF5027.
The CPF4802 message is sent when the file is opened for input only and SEQONLY(*YES N) where N is greater than 1, and there was a pending retrieval error and a change in direction. There is a field in the database input/output feedback area that indicates if the pending retrieval error exists. This field can be used to determine if a change in direction can be accomplished without receiving the message. If upon examination of the bit, it is determined that a pending retrieval error does exist; then, the bit can be cleared using the same type of get operation as was last issued, a get by relative record number, a get by key, or by setting the position of the file to the beginning or end of the file. For a full explanation of the field, see the Guide to Programming for Tape and Diskette, SC41-0012. Note that the pending exception flag is not set for a CPF5027 lock error.
Variables du message
Quand le système envoie le message, chaque variable est remplacée par une valeur réelle : un nom d'objet, de bibliothèque, un code...
| Variable | Type | Longueur |
|---|---|---|
| &4 | *CHAR |
10 |
Message d'interrogation
Ce message attend une réponse de l'opérateur,
par défaut C.
Réponses acceptées :
C, I.
Sur votre IBM i
Afficher la description complète du message :
DSPMSGD RANGE(CPF4802) MSGF(QSYS/QCPFMSG)
L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :
MONMSG MSGID(CPF4802) EXEC(DO)
/* traitement de l'erreur */
ENDDO