Etape 2 de la page de codes imprimante

Dans la deuxième étape de la conversion de point de code, une ou plusieurs tables de conversion stage-2 convertissent les points de code de la page de codes intermédiaire vers ceux appropriés pour l'imprimante.

Les attributs t0 - t9 du fichier deux-points de la base de données indiquent les noms de chemin complet des tables de traduction stage-2 . Chacun des attributs t0 - t9 peut spécifier plusieurs tables de traduction stage-2 en séparant les noms par des virgules. L'outil de formatage d'impression lit les tables de traduction stage-2 et les chaîne dans un anneau. A partir de la table pour la page de codes imprimante en cours, le formateur traite chaque caractère dans le fichier d'impression en entrée. La première est celle de savoir si le caractère est défini dans cette page de codes imprimante. En d'autres termes, la valeur du point de code n'est pas supérieure au nombre de points de code dans la table et la valeur n'est pas SC..

Si le caractère se trouve dans la page de codes, le point de code traduit est envoyé à l'imprimante. Le formateur sélectionne la page de codes de l'imprimante en envoyant la chaîne de commande de l'imprimante appropriée. Par convention, le nom d'attribut à 2 caractères de la chaîne de commande de l'imprimante est à l'index 0 dans la matrice Noms de commandes. Si le caractère n'est pas dans la page de codes, le formateur répète le processus pour la table de traduction stage-2 suivante dans l'anneau. Si le formateur ne trouve pas de table de conversion dans l'anneau qui peut imprimer le caractère, il imprime un caractère de remplacement (trait de soulignement) à la place.

L'exemple de code de langage C qui suit génère une table de conversion stage-2 appelée XYZ.999, qui convertit les points de code de la page de codes intermédiaire en points de code pour la page de codes de l'imprimante. L'attribut c1 est supposé contenir la chaîne de commande de l'imprimante qui permet à l'imprimante de sélectionner la page de codes XYZ.999.

#include <piostruct.h>
#include <fcntl.h>
/*** Table to Translate Code Points for the Intermediate ***/
/*** Code Page to Code Points for a Printer Code Page ***/
struct transtab table[] = {
/* 00 (000) */ {CP}, {CP}, {CP}, {CP},
.
.
.
/* FC (252) */ {63}, {CP}, {94,1}, {SC} };
/*** Command Names for the Translate Table ***/
char cmdnames[][2] = {
{'c', '1'},              /* index 0 - select the code page */
{'e', 'b'} };            /* index 1 - next byte is graphic */
/*** Write the Table To a File (Error Processing Not Shown) ***/
main() {
int fildes;
int num_commands = sizeof(cmdnames) / 2;
fildes = open("/usr/lib/lpd/pio/trans2/XYZ.999", O_CREAT |
O_WRONLY,\ 0664);
write(fildes, "PIOSTAGE2XLATE00", 16);
write(fildes, &num_commands, sizeof(num_commands));
write(fildes, cmdnames, sizeof(cmdnames));
write(fildes, table, sizeof(table));
return(0);
}

Le {63} au point de code 252 signifie que le point de code 252 doit être converti en point de code 63 avant d'être envoyé à l'imprimante. Le {CP} au point de code 253 signifie que le point de code 253 doit être envoyé à l'imprimante sans traduction. Le {94,1} au point de code 254 signifie que le point de code 254 doit être converti en point de code 94 avant d'être envoyé à l'imprimante. ,1 dans {94,1} indique que la chaîne de commande de l'imprimante dont le nom d'attribut à 2 caractères est à l'index 1 dans le tableau des noms de commande doit être envoyée à l'imprimante avant l'envoi du point de code. Le SC au point de code 255 indique que le caractère au point de code 255 de la page de codes intermédiaire ne peut pas être imprimé par la page de codes imprimante décrite par cette table de conversion stage-2 .