Publié le :
Macro CREATION_INTERNE

Macro FORMCHAR pour la gestion des caractères de formatage

Ce code est également disponible en : Deutsch English Español
Cette macro, FORMCHAR, est conçue pour ajuster dynamiquement l'option système globale FORMCHAR. Cette option est cruciale pour définir les caractères utilisés pour le rendu des bordures et des cadres dans les sorties ODS, notamment avec des procédures comme PROC TABULATE. La macro inclut des vérifications de compatibilité pour s'assurer qu'elle est exécutée sous Windows et avec une version de SAS© égale ou supérieure à 6.11. L'utilisateur peut spécifier 'LINEDRAW' (ou 'LINE', 'DRAW') pour utiliser des caractères de tracé de ligne ou 'STANDARD' (ou 'STD', 'ASCII') pour des caractères ASCII classiques. Si un argument invalide est fourni ou si les conditions système ne sont pas remplies, des messages d'erreur sont affichés dans le log SAS©. Les caractères de tracé de ligne sont définis via une chaîne hexadécimale pour assurer une compatibilité spécifique avec la police SAS© Monospace.
Analyse des données

Type : CREATION_INTERNE


La macro ne traite pas directement de données externes ou de données SASHELP. Elle opère sur des options système et utilise des variables macro automatiques (`&sysscp`, `&sysver`) pour sa logique interne. Les valeurs appliquées à l'option FORMCHAR sont des constantes définies au sein de la macro.

1 Bloc de code
MACRO
Explication :
Ce bloc définit la macro FORMCHAR. Il commence par des vérifications conditionnelles pour s'assurer que le code est exécuté sous Windows (`%if &sysscp ^= WIN`) et avec une version de SAS compatible (supérieure ou égale à 6.11, `%if &sysver < 6.11`). Si ces conditions ne sont pas remplies, des messages d'erreur sont affichés. Ensuite, le paramètre `chartype` est converti en majuscules (`%upcase`). Des instructions conditionnelles `%if/%else %if` sont utilisées pour déterminer la valeur à attribuer à l'option système `FORMCHAR`. Si `chartype` correspond à 'STANDARD' (ou 'STD', 'ASCII'), des caractères ASCII sont utilisés. Si `chartype` correspond à 'LINEDRAW' (ou 'LINE', 'DRAW'), une chaîne hexadécimale spécifique est assignée. Tout autre argument entraîne un message d'erreur.
Copié !
1/* Select either "standard" or "linedraw" characters for FORMCHAR */
2%macro formchar ( chartype /* STANDARD or LINEDRAW */
3 ) ;
4 /* ------------------------------------------------------------
5 MODULE: FORMCHAR
6 
7 PURPOSE: Resets the value of the FORMCHAR system option
8 to use either "linedraw" characters from the SAS
9 Monospace font or "standard" characters (+- etc.)
10 for box characters in TABULATE and other PROCs.
11 Generates an OPTIONS statement and may be used
12 wherever that is accepted.
13 
14 CLASS: General SAS statement.
15 
16 USAGE: %FORMCHAR(LINEDRAW)
17 
18 PARAMETERS: R chartype Must be either
19 LINEDRAW, LINE, DRAW or
20 STANDARD, STD, ASCII
21 
22 SIDE EFFECTS: None.
23 SYSTEMS: Windows, 6.11 and higher.
24 HISTORY: 25feb96 MDR
25 DOCUMENT: Here.
26 SUPPORT: Mike Rhoads <rhoadsm1 @westat.com>
27 ------------------------------------------------------------
28 */
29 
30 %IF &sysscp ^= WIN %THEN
31 %put ERROR: The FORMCHAR macro is only available under Windows.;
32 %ELSE %IF &sysver < 6.11 %THEN
33 %put ERROR: The FORMCHAR macro is not available for versions prior to 6.11.;
34 %ELSE %DO;
35 %let chartype = %upcase(&chartype);
36 %IF %index(STD STANDARD ASCII,&chartype)>0 %THEN %DO;
37 OPTIONS FORMCHAR = '|----|+|---+=|-/\<>*';
38 %END;
39 %ELSE %IF %index(LINEDRAW,&chartype)>0 %THEN %DO;
40 OPTIONS FORMCHAR = '82838485868788898A8B8C2B3D7C2D2F5C3C3E2A'X;
41 %END;
42 %ELSE
43 %put ERROR: Argument to FORMCHAR must be LINEDRAW or STANDARD.;
44 %END;
45 
46%mend FORMCHAR ;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Créateur : MDR, 25 février 1996. Support : Mike Rhoads <rhoadsm1 @westat.com>