Aller au contenu

Message d'erreur IBM i (AS/400)

CPF1952

PTRTYPE(*SAME) incorrect pour la valeur actuelle du pointeur &3.

Gravité 30 · Erreur grave

Cause

Le type du pointeur &3 du programme &1 est incorrect. Un type de pointeur doit être défini, afin qu'une variable de pointeur non définie pour un pointeur système ou mémoire contienne une valeur autre que *NULL. La valeur actuelle du pointeur est peut-être nulle.

Que faire

Effectuez l'une des opérations suivantes, puis relancez la commande : 1) Indiquez PTRTYPE(*SPP) avec soit le paramètre ADR, soit les paramètres SYSOBJ et OBJTYPE, pour préciser une valeur de pointeur mémoire. 2) Si le pointeur n'est pas une variable HLL (en langage évolué), indiquez PTRTYPE(*SYP) avec les paramètres SYSOBJ et OBJTYPE, pour préciser une valeur de pointeur système. 3) Indiquez soit ADR(*NULL), soit SYSOBJ(*NULL), pour préciser un pointeur de valeur nulle.

Description technique

Si le paramètre ADR est indiqué avec PTRTYPE(*SAME), la valeur de pointeur existante doit être un pointeur d'espace. Si les paramètres SYSOBJ et OBJTYPE sont indiqués avec PTRTYPE(*SAME), la valeur de pointeur existante doit être un pointeur système ou un pointeur d'espace. Le paramètre SYSOBJ ne peut pas être utilisé pour définir un pointeur de langage de haut niveau (HLL).

If the ADR parameter is specified with PTRTYPE(*SAME), the existing pointer value must be a space pointer. If the SYSOBJ and OBJTYPE parameters are specified with PTRTYPE(*SAME), the existing pointer value must be a system pointer or a space pointer. The SYSOBJ parameter cannot be used to set a high-level language (HLL) pointer.

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(CPF1952) MSGF(QSYS/QCPFMSG)

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

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