Macro FORMCHAR para la gestión de caracteres de formato

Este código también está disponible en: Deutsch English Français
Nivel de dificultad
Principiante
Publicado el :
Esta macro, FORMCHAR, está diseñada para ajustar dinámicamente la opción global del sistema FORMCHAR. Esta opción es crucial para definir los caracteres utilizados para la representación de bordes y marcos en las salidas ODS, especialmente con procedimientos como PROC TABULATE. La macro incluye verificaciones de compatibilidad para asegurar que se ejecuta en Windows y con una versión de SAS© igual o superior a 6.11. El usuario puede especificar 'LINEDRAW' (o 'LINE', 'DRAW') para usar caracteres de dibujo de línea o 'STANDARD' (o 'STD', 'ASCII') para caracteres ASCII clásicos. Si se proporciona un argumento inválido o si no se cumplen las condiciones del sistema, se muestran mensajes de error en el log de SAS©. Los caracteres de dibujo de línea se definen mediante una cadena hexadecimal para asegurar una compatibilidad específica con la fuente SAS© Monospace.
Análisis de datos

Type : CREATION_INTERNE


La macro no procesa directamente datos externos o datos de SASHELP. Opera sobre opciones del sistema y utiliza variables macro automáticas (`&sysscp`, `&sysver`) para su lógica interna. Los valores aplicados a la opción FORMCHAR son constantes definidas dentro de la macro.

1 Bloque de código
MACRO
Explicación :
Este bloque define la macro FORMCHAR. Comienza con verificaciones condicionales para asegurar que el código se ejecuta en Windows (`%if &sysscp ^= WIN`) y con una versión de SAS compatible (superior o igual a 6.11, `%if &sysver < 6.11`). Si estas condiciones no se cumplen, se muestran mensajes de error. Luego, el parámetro `chartype` se convierte a mayúsculas (`%upcase`). Se utilizan instrucciones condicionales `%if/%else %if` para determinar el valor a asignar a la opción del sistema `FORMCHAR`. Si `chartype` corresponde a 'STANDARD' (o 'STD', 'ASCII'), se utilizan caracteres ASCII. Si `chartype` corresponde a 'LINEDRAW' (o 'LINE', 'DRAW'), se asigna una cadena hexadecimal específica. Cualquier otro argumento resulta en un mensaje de error.
¡Copiado!
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 ;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Creador: MDR, 25 de febrero de 1996. Soporte: Mike Rhoads <rhoadsm1 @westat.com>


Documentación relacionada

Aucune documentation spécifique pour cette catégorie.