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...
| Variable | Type | Longueur |
|---|---|---|
| &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