Aller au contenu

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...

VariableTypeLongueur
&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