CPF2105
Objet &1 de &2 type *&3 non trouvé.
Gravité 40 · Fin anormale du programme ou de la fonction
Comment s'en sortir
La commande devait agir sur un objet précis (le supprimer, le modifier, le copier) et cet objet n'existe pas. On le rencontre surtout avec les commandes de suppression : DLTF, DLTPGM, DLTDTAQ…
Quand on le rencontre
- Un programme de nettoyage supprime un fichier de travail qui n'a pas été créé, parce que l'étape précédente a échoué ou n'a pas eu lieu.
- Un traitement relancé supprime une deuxième fois un objet déjà supprimé au premier passage.
- Une faute dans le nom, la bibliothèque ou le type : le message indique les trois (&1, &2, &3), comparez-les avec l'objet attendu.
Corriger
Le cas classique : « supprimer s'il existe ». Interceptez ce message précis juste après la commande :
DLTF FILE(QTEMP/TRAVAIL)
MONMSG MSGID(CPF2105) /* il n'existait pas : c'est ce qu'on voulait */
CRTPF FILE(QTEMP/TRAVAIL) RCDLEN(132)
Pour vérifier la présence d'un objet sans rien modifier, utilisez CHKOBJ (qui envoie CPF9801 s'il est absent) ou WRKOBJ OBJ(*ALL/NOM) pour le chercher partout.
Si ce message apparaît sur un objet qui devrait exister, ne l'interceptez pas sans réfléchir : il signale peut-être qu'un traitement précédent a échoué sans prévenir. Remontez l'historique du travail avant de le faire taire.
Ce que dit IBM
Cause
Aucun objet possédant le nom et le type indiqués n'a été trouvé.
Que faire
Corrigez le nom ou le type indiqués. Renouvelez ensuite votre demande.
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 |
| &2 | *CHAR |
10 |
| &3 | *CHAR |
7 |
Sur votre IBM i
Afficher la description complète du message :
DSPMSGD RANGE(CPF2105) MSGF(QSYS/QCPFMSG)
L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :
MONMSG MSGID(CPF2105) EXEC(DO)
/* traitement de l'erreur */
ENDDO