Erreurs (CPI-C)

Le tableau suivant récapitule les changements d’état qui se produisent lorsqu’une erreur de transmission de données est rencontrée.

return_code Ancien état Nouvel état
CM_PROGRAM_ERROR_PURGING RECEIVE Aucun changement
CM_PROGRAM_ERROR_NO_TRUNC RECEIVE Aucun changement
CM_SVC_ERROR_PURGING SEND RECEIVE
CM_SVC_ERROR_NO_TRUNC SEND_PENDING RECEIVE

Si le programme partenaire tronque un enregistrement logique, le programme local reçoit une notification de la troncation via return_code lors de l’appel de réception suivant.

Si un programme rencontre des problèmes de réception avec requested_length défini sur zéro, l’appel est exécuté comme d’habitude. Toutefois, data_received et status_received ne sont pas définis sur le même appel de réception . (Une exception à cette situation est l’enregistrement null envoyé sur une conversation mappée, décrit dans le paragraphe suivant.)

Dans une conversation mappée dans laquelle les données sont disponibles à partir du programme partenaire, data_received est défini sur CM_INCOMPLETE_DATA_RECEIVED. Si un enregistrement null est disponible (send_length dans l’appel Send_Data émis par le programme partenaire est défini sur zéro), data_received est défini sur CM_COMPLETE_RECORD_RECEIVED avec received_length défini sur zéro.

Dans une conversation de base dans laquelle les données sont disponibles et où la caractéristique de remplissage est définie sur CM_FILL_LL, data_received est défini sur CM_INCOMPLETE_DATA_RECEIVED. Si la caractéristique de remplissage a la valeur CM_FILL_BUFFER, data_received a la valeur CM_DATA_RECEIVED.

L’unité logique (LU) n’effectue pas automatiquement de conversion entre EBCDIC et ASCII sur la chaîne de données reçue avant de la placer dans la mémoire tampon. Si nécessaire, le programme peut utiliser la conversion du verbe csv (Common Service Verb) pour traduire une chaîne d’un jeu de caractères à l’autre.