Publicado el :
Macro MIXTE

Macro de utilidad para determinar la extensión de los catálogos SAS

Este código también está disponible en: Français Deutsch English
Esta macro analiza un número de versión SAS© pasado como parámetro para devolver la extensión de archivo de catálogo SAS© correspondiente. Gestiona diferentes formatos de versión (ej: 'V8', '8.2', '802') normalizándolos. Es una herramienta de compatibilidad para trabajar con catálogos de diferentes versiones de SAS©. Si no se especifica ninguna versión, intenta determinar la extensión para la versión SAS© actualmente en ejecución. El código fuente se publica bajo la licencia 'GNU General Public License'.
Análisis de datos

Type : MIXTE


La macro no utiliza ningún conjunto de datos. Se basa en una información que puede ser externa (un parámetro textual proporcionado por el usuario durante la llamada) o interna (la versión del sistema SAS actual).

1 Bloque de código
MACRO
Explicación :
Este bloque define la macro '%_catext'. Toma un argumento 'arg1' (con un alias 'version') que representa la versión de SAS. El código normaliza esta cadena de caracteres: la convierte a mayúsculas, elimina el prefijo 'V' y los puntos, y luego la completa con ceros. Una serie de condiciones '%if/%then/%else' selecciona la extensión de catálogo apropiada ('sas7bcat', 'sc2', etc.) en función del número de versión normalizado. Si no se proporciona ningún argumento, se basa en la versión de la sesión SAS activa. La ejecución de esta macro depende de la disponibilidad de otras macros no estándar (%_substr, %_repeat, %_version, %_unwind) que no están definidas en este código.
¡Copiado!
1%macro _catext(arg1, version=&arg1);
2 
3%IF %LENGTH(&version) %THEN %DO;
4 %local i;
5 %let version=%upcase(&version);
6 
7 %IF %_substr(&version, 1, 1)=V %THEN %let version=%_substr(&version, 2);
8 
9 %let i=%index(&version, .);
10 
11 %IF &i %THEN %let version=%_substr(&version, 1, &i-1)%_substr(&version, &i+1);
12 
13 %let version=&version%_repeat(0, 3-%LENGTH(&version));
14
15 %IF &version>=700 %THEN sas7bcat;
16 %ELSE %IF &version=607 | &version=609 %THEN sct??;
17 %ELSE %IF &version=608 | &version=610 %THEN sc2;
18 %ELSE %IF &version=603 %THEN sct;
19 %ELSE %_unwind(sct??, sc2, sct??);
20%END;
21%ELSE %DO;
22 %IF %_version(7) %THEN sas7bcat;
23 %ELSE %_unwind(sct??, sc2, sct??);
24%END;
25 
26%mend _catext;
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 : Copyright (c) 2001-2004 Rodney Sparapani. El código se distribuye bajo los términos de la 'GNU General Public License'.