Publié le :
Macro MIXTE

Macro utilitaire pour déterminer l'extension des catalogues SAS

Ce code est également disponible en : Deutsch English Español
Cette macro analyse un numéro de version SAS© passé en paramètre pour retourner l'extension de fichier de catalogue SAS© correspondante. Elle gère différents formats de version (ex: 'V8', '8.2', '802') en les normalisant. C'est un outil de compatibilité pour travailler avec des catalogues provenant de différentes versions de SAS©. Si aucune version n'est spécifiée, elle tente de déterminer l'extension pour la version SAS© en cours d'exécution. Le code source est publié sous la licence 'GNU General Public License'.
Analyse des données

Type : MIXTE


La macro n'utilise aucun jeu de données. Elle se base sur une information qui peut être soit externe (un paramètre textuel fourni par l'utilisateur lors de l'appel) soit interne (la version du système SAS courant).

1 Bloc de code
MACRO
Explication :
Ce bloc définit la macro '%_catext'. Elle prend un argument 'arg1' (avec un alias 'version') qui représente la version de SAS. Le code normalise cette chaîne de caractères : il la met en majuscules, supprime le préfixe 'V' et les points, puis la complète avec des zéros. Une série de conditions '%if/%then/%else' sélectionne l'extension de catalogue appropriée ('sas7bcat', 'sc2', etc.) en fonction du numéro de version normalisé. Si aucun argument n'est fourni, elle se base sur la version de la session SAS active. L'exécution de cette macro dépend de la disponibilité d'autres macros non-standard (%_substr, %_repeat, %_version, %_unwind) qui ne sont pas définies dans ce code.
Copié !
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;
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 : Copyright (c) 2001-2004 Rodney Sparapani. Le code est distribué sous les termes de la 'GNU General Public License'.