CPF1949
Type incorrect pour variable BKPCOND &3 dans programme &1.
Gravité 30 · Erreur grave
Cause
La variable &3 du programme &1, utilisée dans une expression, est de type incorrect. Les règles suivantes s'appliquent aux variables utilisées pour définir des points d'arrêt conditionnels :
- Toutes les variables doivent être numériques, alphabétiques ou binaires.
- Si l'opérateur *CT est indiqué, la variable doit être une chaîne de caractères.
- Si une variable binaire est indiquée, la valeur de comparaison doit être une chaîne de caractères ne contenant que des uns et des zéros.
- Si une variable numérique est indiquée, la valeur de comparaison doit être un nombre.
- Si deux variables sont indiquées, elles doivent être de même type. Par exemple, si elles sont numériques, elles doivent toutes deux soit être à virgule flottante, soit ne pas l'être.
- S'il ne s'agit pas de variables numériques à virgule flottante, le nombre maximal de chiffres à gauche et à droite de la virgule décimale, nécessaires pour représenter les deux variables, ne peut pas dépasser 31. Par exemple, les expressions PACKED(25,2) et ZONED(20,15) ne peuvent pas être utilisées pour le même point d'arrêt, car une variable contenant 23 chiffres à gauche de la virgule décimale et 15 chiffres à droite est nécessaire pour les comparer ; or, le total dépasse 31 chiffres.
Que faire
Précisez des variables correctes et assurez-vous qu'elles peuvent être utilisées conjointement pour le paramètre BKPCOND de la commande ADDBKP (Ajouter un point d'arrêt). 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 |
| &3 | *CHAR |
variable |
Sur votre IBM i
Afficher la description complète du message :
DSPMSGD RANGE(CPF1949) MSGF(QSYS/QCPFMSG)
L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :
MONMSG MSGID(CPF1949) EXEC(DO)
/* traitement de l'erreur */
ENDDO