Partager via


GET_CP_CONVERT_TABLE

Le verbe GET_CP_CONVERT_TABLE crée et retourne une table de conversion de 256 octets pour traduire des chaînes de caractères d’une page de codes source vers une 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. Verbe identifiant le code d’opération, SV_GET_CP_CONVERT_TABLE.

opext
Champ réservé.

réserver2
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 varient en fonction du verbe APPC émis. Consultez les codes de retour pour obtenir des codes d’erreur valides pour ce verbe.

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 varient en fonction du verbe APPC émis. Consultez les codes de retour pour obtenir des codes d’erreur valides pour ce verbe.

réserver3
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 code 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 vers laquelle les caractères sont convertis. Pour connaître 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 pour contenir la table de conversion de 256 octets. La mémoire tampon doit se trouver dans un segment accessible en écriture et suffisamment longue pour contenir la table.

char_not_fnd
Paramètre fourni. Spécifie l’action à entreprendre si un caractère dans 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 exécuté avec succès.

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 de segment, ou le segment n’était 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. Ainsi, la communication n’a pas pu avoir lieu. Contactez l’administrateur système pour obtenir une action corrective.

SV_INVALID_VERB
Code de retour principal ; le paramètre opcode ne correspond pas au code d’opération d’un verbe. Aucun verbe 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 obtenir une action corrective.

  • Un csv a été émis à partir d’une boucle de message appelée par une autre application qui émet un appel de fonction Windows SendMessage , plutôt que l’appel de fonction Windows PostMessage plus courant. Le traitement des verbes ne peut pas avoir lieu.

  • Un 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 .

Remarques

Le type A character set se compose des éléments suivants :

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

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

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 ASCII minuscules sont traduites en lettres EBCDIC majuscules lorsque la direction est ASCII en EBCDIC.

Le jeu de caractères AE de type se compose des éléments suivants :

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

Ce jeu de caractères est pris en charge par une table de conversion AE de type fourni 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.

Lors de la conversion, les espaces incorporés (y compris les espaces dans la première position) sont convertis en 0x00. Bien qu’une telle conversion se termine, CONVERSION_ERROR est retournée en tant que code de retour secondaire, indiquant 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 la vérification du 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 code dans la direction inverse. Si vous spécifiez la valeur SV_ROUND_TRIP dans la création des deux tables de conversion, tout caractère traduit d’une page de codes vers l’autre, puis de retour sera inchangé.

Lorsque vous utilisez la valeur SV_SUBSTITUTE pour char_not_fnd, la conversion de la chaîne de caractères traduite vers la page de codes d’origine ne recréera pas nécessairement la chaîne de caractères d’origine.

Utilisez substitute_char uniquement si char_not_fnd est défini sur SV_SUBSTITUTE .

La valeur stockée dans la table de conversion est 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 plutôt qu’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 est 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 vers 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 traduite (cible) diffère de la chaîne d’origine (source).