GET_CP_CONVERT_TABLE

Le verbe GET_CP_CONVERT_TABLE crée et retourne une table de conversion de 256 octets pour convertir les chaînes de caractères d’une page de codes source en page de codes cible.

La structure suivante décrit le bloc de contrôle de verbe (VCB) utilisé par le verbe GET_CP_CONVERT_TABLE.

Syntaxe

  
struct get_cp_convert_table {  
    unsigned short       opcode;  
    unsigned char        opext;  
    unsigned char        reserv2;  
    unsigned short       primary_rc;  
    unsigned long        secondary_rc;  
    unsigned char        reserv3[8];  
    unsigned short       source_cp;  
    unsigned short       target_cp;  
    unsigned char FAR *  conv_tbl_addr;  
    unsigned char        char_not_fnd;  
    unsigned char        substitute_char;  
};  

Membres

opcode
Paramètre fourni. Le verbe identifiant le code d’opération, SV_GET_CP_CONVERT_TABLE.

opext
Un champ réservé.

reserv2
Champ réservé.

primary_rc
Paramètre retourné. Spécifie le code de retour principal défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Pour connaître les codes d’erreur valides de ce verbe, consultez Codes de retour.

secondary_rc
Paramètre retourné. Spécifie le code de retour secondaire défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Consultez la section Codes de retour pour connaître les codes d’erreur valides pour ce verbe.

reserv3
Un champ réservé.

source_cp
Paramètre fourni. Spécifie la page de codes source à partir de laquelle les caractères sont convertis. Les pages de codes autorisées (valeurs décimales) sont les suivantes :

  • ASCII 437, 850, 860, 863, 865

  • EBCDIC 037, 273, 277, 278, 280, 284, 285, 297, 500

Les pages de codes définies par l’utilisateur dans la plage comprise entre 65280 et 65535 sont également autorisées.

Les pages de codes ASCII sont parfois appelées « pages de codes PC ». Les pages de codes EBCDIC sont parfois appelées pages de code hôte.

target_cp
Paramètre fourni. Spécifie la page de codes cible dans laquelle les caractères sont convertis. Pour les pages de codes autorisées, consultez la définition précédente pour source_cp.

conv_tbl_addr
Paramètre fourni. Spécifie l’adresse de la mémoire tampon devant contenir la table de conversion de 256 octets. La mémoire tampon doit être dans un segment accessible en écriture et être suffisamment longue pour contenir la table.

char_not_fnd
Paramètre fourni. Spécifie l’action à entreprendre si un caractère de la page de codes source n’existe pas dans la page de codes cible :

  • Utilisez SV_ROUND_TRIP pour stocker une valeur unique dans la table de conversion pour chaque caractère de page de codes source.

  • Utilisez SV_SUBSTITUTE pour stocker un caractère de remplacement (spécifié par substitute_char) dans la table de conversion.

substitute_char
Paramètre fourni. Spécifie le caractère à stocker dans la table de conversion lorsqu’un caractère de la page de codes source n’a pas d’équivalent dans la page de codes cible.

Codes de retour

SV_OK
Code de retour principal ; le verbe s’est exécuté correctement.

SV_PARAMETER_CHECK
Code de retour principal ; le verbe n’a pas été exécuté en raison d’une erreur de paramètre.

SV_INVALID_CHAR_NOT_FOUND
Code de retour secondaire ; le paramètre char_not_fnd contenait une valeur non valide.

SV_INVALID_DATA_SEGMENT
Code de retour secondaire ; zone de 256 octets spécifiée pour la table de conversion étendue au-delà de la limite du segment ou le segment n’est pas accessible en écriture.

SV_INVALID_SOURCE_CODE_PAGE
Code de retour secondaire ; la page de codes spécifiée par source_cp n’est pas prise en charge.

SV_INVALID_TARGET_CODE_PAGE
Code de retour secondaire ; la page de codes spécifiée par target_cp n’est pas prise en charge.

SV_COMM_SUBSYSTEM_NOT_LOADED
Code de retour principal ; un composant requis n’a pas pu être chargé ou arrêté lors du traitement du verbe. Par conséquent, la communication n’a pas pu être établie. Contactez l’administrateur système pour résoudre le problème.

SV_INVALID_VERB
Code de retour principal ; le paramètre opcode ne correspondait pas au code d’opération d’un verbe. Aucun verbe n’est exécuté.

SV_INVALID_VERB_SEGMENT
Code de retour principal : le VCB s’étend au-delà de la fin du segment de données.

SV_UNEXPECTED_DOS_ERROR
Code de retour principal ; l’une des conditions suivantes s’est produite :

  • Le système Microsoft® Windows® a rencontré une erreur lors du traitement du verbe. Le code de retour du système d’exploitation a été retourné via le code de retour secondaire. Si le problème persiste, contactez l’administrateur système pour résoudre le problème.

  • Un fichier CSV a été émis à partir d’une boucle de message appelée par une autre application émettant un appel de fonction Windows SendMessage, plutôt que l’appel de fonction Windows PostMessage le plus courant. Le traitement du verbe ne peut pas avoir lieu.

  • Un fichier CSV a été émis lorsque SendMessage a appelé votre application. Vous pouvez déterminer si votre application a été appelée avec SendMessage à l’aide de l’appel de fonction API Windows InSendMessage.

Notes

Le Jeu de caractères de type A est constitué de :

  • Lettres majuscules.
  • Chiffres de 0 à 9.
  • Caractères spéciaux $, #, @ et espace.

Ce jeu de caractères est pris en charge par une table de conversion de type A fournie par le système.

Le premier caractère de la chaîne source doit être une lettre majuscule ou le caractère spécial $, #ou @. Les espaces sont autorisés uniquement dans les positions de fin. Les lettres en minuscules ASCII sont converties en lettres EBCDIC majuscules lorsque la direction est ASCII vers EBCDIC.

Le Jeu de caractères de type AE est constitué de :

  • Lettres majuscules.
  • Lettres minuscules.
  • Chiffres de 0 à 9.
  • Caractères spéciaux $, #, @, point et espace.

Ce jeu de caractères est pris en charge par une table de conversion de type AE fournie par le système.

Le premier caractère de la chaîne source peut être n’importe quel caractère dans le jeu de caractères, à l’exception de l’espace.

Pendant la conversion, les espaces incorporés (y compris les espaces à la première position) sont convertis en 0x00. Bien qu’une telle conversion se termine, CONVERSION_ERROR est retourné en tant que code de retour secondaire, ce qui indique que la bibliothèque CSV a effectué une conversion irréversible sur les données fournies.

Pour Windows, une description de COMTBLG doit pointer vers le registre Windows sous \SnaBase\Parameters\Client. Pour le système d’exploitation OS/2, le répertoire et le fichier contenant la table doivent être spécifiés par la variable d’environnement COMTBLG. (Si le fichier est introuvable, le système retourne le contrôle de paramètre SV_TABLE_ERROR.).

La valeur SV_ROUND_TRIP pour char_not_fnd est utile uniquement si vous générez une deuxième table de conversion pour effectuer une conversion entre les deux mêmes pages de codes dans le sens inverse. Si vous spécifiez la valeur SV_ROUND_TRIP dans la génération des deux tables de conversion, tout caractère traduit d’une page de codes à l’autre, puis de nouveau, est inchangé.

Lors de l’utilisation de la valeur SV_SUBSTITUTE pour char_not_fnd, la conversion de la chaîne de caractères retraduite en page de codes d’origine ne recrée pas nécessairement la chaîne de caractères d’origine.

Utilisez substitute_char uniquement si char_not_fnd a la valeur SV_SUBSTITUTE.

La valeur stockée dans la table de conversion correspond à la valeur ASCII associée au caractère. Si la table est utilisée pour la conversion d’ASCII en EBCDIC, le caractère qui apparaît dans la chaîne convertie est le caractère associé à la valeur EBCDIC numérique et non ASCII.

Par exemple, si vous fournissez le caractère de soulignement () (valeur ASCII F6) lors de la création d’une table de conversion ASCII en EBCDIC, le caractère qui apparaît dans les chaînes converties sera 6, le caractère associé à la valeur F6 dans EBCDIC. Pour utiliser le caractère \ comme caractère de remplacement dans une table de conversion ASCII en EBCDIC, vous devez fournir la valeur E1 (la valeur associée au caractère _ dans EBCDIC) plutôt que le caractère réel.

Une page de codes est une table qui associe des valeurs ASCII ou EBCDIC spécifiques à des caractères spécifiques. Si un caractère de la page de codes source n’existe pas dans la page de codes cible, la chaîne (cible) traduite diffère de la chaîne d’origine (source).