CPF9810
Bibliothèque &1 non trouvée.
Gravité 40 · Fin anormale du programme ou de la fonction
Comment s'en sortir
La bibliothèque demandée n'existe pas sur ce système, ou le travail ne peut pas la voir. Contrairement à CPF9801, ce n'est pas un problème de liste de bibliothèques : c'est la bibliothèque elle-même qui manque.
Les causes les plus fréquentes
- Une faute de frappe dans le nom, ou un nom qui diffère d'une machine à l'autre (bibliothèque de test sur le serveur de développement, absente en production).
- La bibliothèque a été supprimée ou renommée, alors qu'une description de travail, un programme ou une commande la cite encore.
- Elle est dans un ASP indépendant (IASP) : il doit être en fonction (
VRYCFG) et rattaché au travail (SETASPGRP). - Une restauration (
RSTLIB) n'a pas encore eu lieu ou a échoué.
Diagnostiquer
/* La bibliothèque existe-t-elle ? */
DSPOBJD OBJ(QSYS/MALIB) OBJTYPE(*LIB)
/* Chercher un nom approchant */
WRKLIB LIB(MALI*)
/* Cas IASP : l'ASP indépendant est-il en fonction ? */
WRKCFGSTS CFGTYPE(*DEV) CFGD(*ASP)
Corriger
/* Rattacher le travail à l'IASP qui contient la bibliothèque */
SETASPGRP ASPGRP(MONIASP)
/* Ou la recréer, si elle doit exister */
CRTLIB LIB(MALIB) TEXT('Bibliothèque applicative')
Si le message apparaît au démarrage d'un travail, regardez la liste initiale de sa description de travail : DSPJOBD, zone INLLIBL. Une seule bibliothèque absente dans cette liste suffit à faire échouer le démarrage.
Dans un programme CL qui supprime ou vide une bibliothèque de travail, interceptez aussi ce message : DLTLIB LIB(TRAVAIL) suivi de MONMSG MSGID(CPF2110) (bibliothèque non trouvée pour DLTLIB). Sans cela, le programme plante la première fois que la bibliothèque n'existe pas encore.
Ce que dit IBM
Cause
La bibliothèque indiquée n'existe pas ou son nom est mal orthographié.
Que faire
Corrigez le nom ou indiquez celui d'une bibliothèque existante. Ensuite, renouvelez la 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 |
Sur votre IBM i
Afficher la description complète du message :
DSPMSGD RANGE(CPF9810) MSGF(QSYS/QCPFMSG)
L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :
MONMSG MSGID(CPF9810) EXEC(DO)
/* traitement de l'erreur */
ENDDO