Aller au contenu

MCH4442

L'attribut d'optimisation d'argument ne correspond pas, raison &1.

Gravité 40 · Fin anormale du programme ou de la fonction

Cause

Le programme source est &4. Le nom '*MACH' indique que la procédure a été appelée par le microcode sous licence. La procédure cible est &7 et réside dans le module &6 du programme &5. Le code raison identifie le type de l'erreur : 0001 - Le programme source référence la procédure cible via un appel de procédure liée optimisé sans argument, mais la procédure cible ne définit pas un point d'entrée optimisé sans argument. 0002 - Le programme source référence la procédure cible via un appel de procédure liée optimisé avec argument, mais la procédure cible ne définit pas un point d'entrée optimisé avec argument. 0003 - Le programme source référence la procédure cible via un appel de procédure liée optimisé avec argument, mais le masque de paramètre source &2 ne correspond pas au masque de paramètre cible &3. 0004 - Le programme source référence la procédure cible via un pointeur de procédure optimisé sans argument, mais la procédure cible ne définit pas un point d'entrée optimisé sans argument. 0005 - Le programme source référence la procédure cible via un appel de pointeur de procédure optimisé avec argument, mais la procédure cible ne définit pas un point d'entrée optimisé avec argument. 0006 - Le programme source référence la procédure cible via un appel de pointeur de procédure optimisé, mais le masque de paramètre source &2 ne correspond pas au masque de paramètre cible &3.

Que faire

Vérifiez que l'utilisation d'ARGOPT dans le programme source correspond à l'utilisation d'ARGOPT de la procédure cible. Pour les modules, lancez la commande DSPMOD en indiquant le paramètre (*EXPORT *IMPORT *PROCLIST) afin de déterminer si une procédure utilise ARGOPT. Pour les programmes de service, lancez la commande DSPSRVPGM en indiquant le paramètre DETAIL(*PROCEXP) afin de déterminer si une procédure utilise ARGOPT. Vérifiez que l'utilisation des paramètres de pointeur d'espace correspond entre la source et la cible. Ensuite, apportez les corrections nécessaires et 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...

VariableTypeLongueur
&1 *BIN 2
&2 *HEX 2
&3 *HEX 2
&4 *CHAR 30
&5 *CHAR 30
&6 *CHAR 30
&7 *CHAR 64

Sur votre IBM i

Afficher la description complète du message :

DSPMSGD RANGE(MCH4442) MSGF(QSYS/QCPFMSG)

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

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