Publicado el :
Macro CREATION_INTERNE

Macro FORMCHAR para la gestión de caracteres de formato

Este código también está disponible en: Deutsch English Français
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>