CPF4812
Il reste des enregistrements dans la mémoire tampon en entrée. (C I)
Gravité 30 · Erreur grave
Cause
Le fichier a été ouvert en lecture seule avec SEQONLY(*YES N), où N est supérieur à 1. Il reste encore des enregistrements à extraire de la mémoire tampon de lecture d'enregistrements groupés. L'entrée ou la modification de la fin des données tentée est incorrecte.
Que faire
Procédez de l'une des façons suivantes, puis renouvelez votre demande :
- Lancez une opération de lecture des enregistrements restants dans le bloc.
- Indiquez le paramètre SEQONLY(*NO) dans la commande OVRDBF (Substituer un fichier base de données) avant d'exécuter le programme d'application contenant l'opération de modification de la fin des données.
Réponses possibles
| Réponse | Effet |
|---|---|
C | Annuler la demande. |
I | Ignorer la demande et continuer. |
Description technique
Lorsqu'un fichier a été ouvert en entrée seulement avec SEQONLY(*YES N), N étant supérieur à 1, les enregistrements sont lus dans une mémoire tampon puis peuvent être utilisés par un programme d'application un enregistrement à la fois. La position réelle dans le fichier se trouve sur le dernier enregistrement du bloc, mais le programme d'application ne voit pas la position comme étant celle du dernier enregistrement du bloc. Par conséquent, l'opération de fin de données en entrée ou en modification ne peut pas terminer son traitement tant qu'il reste des enregistrements dans la mémoire tampon de lecture par blocs.
When a file has been opened for input only SEQONLY(*YES N) with N greater than 1 specified, records are read into a buffer and then may be used by an application program one record at a time. The actual position in the file is at the last record in the block, but the application program does not see the position as the last record in the block. Therefore, the input or change end-of-data operation cannot complete processing when records remain in the blocked get-record buffer.
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(CPF4812) MSGF(QSYS/QCPFMSG)
L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :
MONMSG MSGID(CPF4812) EXEC(DO)
/* traitement de l'erreur */
ENDDO