Aller au contenu

CPF2103

La bibliothèque &1 existe déjà dans la liste des bibliothèques.

Gravité 40 · Fin anormale du programme ou de la fonction

Comment s'en sortir

Vous demandez d'ajouter à la liste de bibliothèques une bibliothèque qui y est déjà. Rien n'est cassé : la liste est simplement laissée telle quelle, mais la commande s'arrête en erreur.

Quand on le rencontre

  • Un programme CL fait ADDLIBLE à chaque appel : le premier appel passe, le deuxième plante dans la même session.
  • La bibliothèque est déjà dans la liste initiale de la description de travail, et le programme l'ajoute à nouveau.

Corriger

Dans un programme CL, le plus simple est d'ignorer ce message précis juste après la commande :

ADDLIBLE   LIB(MALIB)
MONMSG     MSGID(CPF2103)   /* déjà dans la liste : rien à faire */

Si la position compte (la bibliothèque doit passer en tête), retirez-la avant de la remettre :

RMVLIBLE   LIB(MALIB)
MONMSG     MSGID(CPF2104)   /* elle n'y était pas : pas grave */
ADDLIBLE   LIB(MALIB) POSITION(*FIRST)

N'écrivez pas MONMSG MSGID(CPF0000) pour faire taire l'erreur : vous ignoreriez aussi CPF2110 (bibliothèque inexistante) et le programme continuerait sans sa bibliothèque. Interceptez le message précis.

Ce que dit IBM

Cause

La bibliothèque &1 existe déjà dans la liste des bibliothèques. Elle n'a donc pas été ajoutée.

Que faire

Si &1 est bien la bibliothèque que vous avez indiquée, ne relancez pas la commande. Si vous n'avez pas indiqué &1, modifiez le nom de la bibliothèque (paramètre LIB). Relancez ensuite la commande.

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

Sur votre IBM i

Afficher la description complète du message :

DSPMSGD RANGE(CPF2103) MSGF(QSYS/QCPFMSG)

L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :

MONMSG MSGID(CPF2103) EXEC(DO)
  /* traitement de l'erreur */
ENDDO