Message d'erreur IBM i (AS/400)
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...
| Variable | Type | Longueur |
|---|---|---|
| &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