CPF0001
Erreur trouvée dans la commande &1.
Gravité 30 · Erreur grave
Comment s'en sortir
Ce message ne dit presque rien : il signale seulement que la commande a été refusée. La vraie raison se trouve dans les messages envoyés juste avant lui, dans l'historique du travail.
Trouver la vraie erreur
Ouvrez l'historique du travail et remontez de quelques lignes au-dessus de CPF0001. Les messages de diagnostic (souvent CPD…) indiquent le paramètre en cause.
/* L'historique de votre session ; F10 affiche les messages détaillés */
DSPJOBLOG
En SQL, les derniers messages du travail en cours :
SELECT MESSAGE_ID, MESSAGE_TEXT
FROM TABLE(QSYS2.JOBLOG_INFO('*'))
ORDER BY ORDINAL_POSITION DESC
FETCH FIRST 10 ROWS ONLY
Les causes les plus fréquentes
- Une valeur de paramètre incorrecte : mauvais type, trop longue, valeur spéciale inconnue (
*ALLLau lieu de*ALL). - Un paramètre obligatoire absent, ou un mot-clé mal orthographié.
- Des apostrophes ou parenthèses mal fermées, surtout dans une commande construite par concaténation dans un programme CL ou passée à
QCMDEXC.
Corriger
Tapez la commande puis F4 : l'invite affiche chaque paramètre et signale en surbrillance celui qui pose problème. Pour une commande construite dans un programme, affichez-la (SNDPGMMSG ou débogueur) avant de l'exécuter : l'erreur saute souvent aux yeux.
Dans un programme CL, MONMSG MSGID(CPF0001) intercepte l'échec mais ne le corrige pas. Si vous l'interceptez, écrivez au moins les messages précédents dans un journal ou renvoyez-les : sinon plus personne ne saura pourquoi la commande a échoué.
Ce que dit IBM
Cause
Le système a trouvé des erreurs dans la commande.
Que faire
Consultez les messages précédents dans l'historique du travail. Corrigez les erreurs, puis relancez la commande. La substitution de *N au nom de la commande signifie que ce nom n'a pas été déterminé avant que l'erreur ne soit détectée.
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 |
|---|---|---|
| &1 | *CHAR |
10 |
Sur votre IBM i
Afficher la description complète du message :
DSPMSGD RANGE(CPF0001) MSGF(QSYS/QCPFMSG)
L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :
MONMSG MSGID(CPF0001) EXEC(DO)
/* traitement de l'erreur */
ENDDO