Aller au contenu

CPF7139

Attributs ou emplacement incorrect(s) pour la variable &3.

Gravité 30 · Erreur grave

Cause

La variable &3 du programme &1 ne peut pas être traitée car la description interne de ses attributs ou de son emplacement contient des valeurs erronées. Les données de description ont probablement été altérées à la suite d'une erreur dans le programme.

Que faire

Vérifiez que le programme positionne correctement tous les pointeurs de base et qu'il ne modifie pas les données en dehors de l'espace alloué pour la chaîne. Vous devrez peut-être utiliser des numéros ODV pour afficher la valeur et la description interne de la variable.

Description technique

Certaines variables d'un programme en langage de haut niveau sont décrites par des données, internes au programme, définies pendant l'exécution du programme. Ces données peuvent être inutilisables si une erreur de programme les a modifiées. Par exemple, votre programme peut détruire les données internes s'il modifie la valeur d'une variable basée alors que le pointeur de base n'est pas correctement défini, ou s'il modifie des octets situés en dehors de la longueur allouée d'une chaîne. La variable qui ne peut pas être traitée est &3.

Some variables in a high-level language program are described by data, internal to the program, that is set during program execution. This data may be unusable because a program error changed the internal data. For example, your program can destroy the internal data if it changes the value of a based variable when the basing pointer is not set correctly, or if it changes bytes that are outside the allocated length of a string. The variable that cannot be processed is &3.

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
&3 *CHAR variable

Sur votre IBM i

Afficher la description complète du message :

DSPMSGD RANGE(CPF7139) MSGF(QSYS/QCPFMSG)

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

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