CONVERT
Le verbe CONVERT traduit une chaîne de caractères ASCII en EBCDIC ou une chaîne de caractères EBCDIC en ASCII. La chaîne à convertir est appelée chaîne source. La chaîne convertie est appelée chaîne cible.
La structure suivante décrit le bloc de contrôle de verbe (VCB) utilisé par le verbe CONVERT .
Syntaxe
struct convert {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char direction;
unsigned char char_set;
unsigned short len;
unsigned char FAR * source;
unsigned char FAR * target;
};
Membres
opcode
Paramètre fourni. Verbe identifiant le code d’opération, SV_CONVERT.
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. Pour connaître les codes d’erreur valides de ce verbe, consultez Codes de retour.
direction
Paramètre fourni. Spécifie le sens de la conversion. Pour convertir d’ASCII en EBCDIC, utilisez SV_ASCII_TO_EBCDIC. Pour convertir EBCDIC en ASCII, utilisez SV_EBCDIC_TO_ASCII.
char_set
Paramètre fourni. Spécifie le jeu de caractères à utiliser pour convertir la chaîne source. Les valeurs autorisées incluent SV_A (jeu de caractères de type A), SV_AE (jeu de caractères de type AE) et SV_G (jeu de caractères G de type défini par l’utilisateur).
len
Paramètre fourni. Spécifie le nombre de caractères à convertir.
Cette longueur et le décalage du début de la mémoire tampon source ou cible ne doivent pas dépasser la limite du segment.
source
Paramètre fourni. Spécifie l’adresse de la mémoire tampon contenant la chaîne de caractères à convertir.
cible
Paramètre fourni. Spécifie l’adresse de la mémoire tampon à contenir la chaîne de caractères convertie.
Cette mémoire tampon peut chevaucher ou coïncider avec la mémoire tampon pointée vers le paramètre source . Dans ce cas, la chaîne de données convertie remplace la chaîne de données source.
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_CONVERSION_ERROR
Code de retour secondaire ; un ou plusieurs caractères de la chaîne source n’ont pas été trouvés dans la table de conversion. Ces caractères ont été convertis en valeurs null (0x00). Verbe toujours exécuté.
SV_INVALID_CHARACTER_SET
Code de retour secondaire ; le paramètre char_set contenait une valeur non valide.
SV_INVALID_DATA_SEGMENT
Code de retour secondaire ; la mémoire tampon de données contenant la chaîne source ou cible ne correspondait pas à un segment, ou le segment cible n’était pas un segment en lecture/écriture.
SV_INVALID_DIRECTION
Code de retour secondaire ; la direction contenait une valeur non valide.
SV_INVALID_FIRST_CHARACTER
Code de retour secondaire ; le premier caractère d’un type Une chaîne source n’était pas valide.
SV_TABLE_ERROR
Code de retour secondaire ; l’un des événements suivants s’est produit :
Le fichier contenant la table de conversion de type G écrite par l’utilisateur n’a pas été spécifié par la variable d’environnement CSVTBLG.
Le format de la table n’était pas correct.
Le fichier spécifié par la variable CSVTBLG est introuvable.
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 du jeu de caractères, à l’exception de l’espace. Les espaces sont autorisés uniquement dans les positions de fin.
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.
Les données d’une table de conversion de type G doivent être un fichier ASCII de 32 lignes. Chaque ligne doit se composer de 32 chiffres hexadécimaux, représentant 16 caractères, et être terminée par un retour chariot et un flux de ligne. Les 16 premières lignes (256 caractères) spécifient les caractères EBCDIC en lesquels les caractères ASCII sont convertis ; les 16 lignes restantes spécifient les caractères ASCII dans lesquels les caractères EBCDIC sont convertis.
Les chiffres hexadécimaux A à F peuvent être majuscules ou minuscules. Toutefois, vous pouvez utiliser ces chiffres en majuscules pour garantir la compatibilité avec IBM ES pour OS/2 version 1.0.
Notes
Vous pouvez utiliser GET_CP_CONVERT_TABLE pour créer une table de conversion écrite par l’utilisateur de type G en mémoire, puis stocker la table dans un fichier.