CODE RETOUR -331

CHARACTER CONVERSION CANNOT BE PERFORMED BECAUSE A STRING, POSITION position-number, CANNOT BE CONVERTED FROM source-ccsid TO target-ccsid, REASON reason-code

Explication :
L’opération a nécessité la conversion de source-ccsid en target-ccsid et une erreur de conversion s’est produite. Le type d’erreur est indiqué par le reason-code :

8

pour l’exception de longueur (par exemple, l’extension requise pour les données PC MIXED dépasse la longueur maximale de la chaîne).

12

pour un code-point invalide (par exemple, utilisation de l’option ERRORBYTE de SYSSTRINGS).

16

pour exception de formulaire (par exemple, données MIXED non valides).

20

pour erreur de procédure de conversion (par exemple, un exit a défini le champ de contrôle de longueur de la chaîne sur une valeur non valide). Vous pouvez trouver le nom de la procédure dans la ligne SYSIBM.SYSSTRINGS avec INCCSID=source-ccsid et OUTCCSID=target-ccsid dans la colonne TRANSPROC.

Le position-number, s’il est fourni (différent de zéro), est l’ordre de la variable de sortie dans la SQLDA.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Effectuez l’une des actions suivantes en fonction du reason-code :

8

Étendez la longueur maximale de la colonne de résultat pour permettre l’expansion qui se produit lorsque la chaîne est convertie.

12

Modifiez la table de conversion pour accepter le code-point ou modifiez les données pour éliminer le code-point.

16

Si la chaîne est décrite comme des données MIXED, modifiez sa description ou modifiez la chaîne pour qu’elle se conforme aux règles des données MIXED bien formées.

20

Corrigez la procédure de conversion.

Une alternative à ces actions correctives consiste à fournir une variable indicatrice afin qu’une valeur nulle et un avertissement puissent être renvoyés plutôt qu’une erreur.

ETATSQL :
22021