Publié le :
Macro CREATION_INTERNE

Macro de récupération de code multi-plateforme

Ce code est également disponible en : Deutsch English Español
En attente de validation
Cette macro, `%mx_getcode`, offre une approche unifiée pour extraire du code source à partir de différents environnements SAS©. Elle détermine l'environnement d'exécution (SASjs, SAS© 9 ou SAS© Viya) à l'aide de la macro `%mf_getplatform`. En fonction de la plateforme identifiée, elle délègue la tâche de récupération à une macro spécifique : `%ms_getfile` pour SASjs, `%mm_getstpcode` pour SAS© 9 ou SAS© Metadata, et `%mv_getjobcode` pour SAS© Viya. Pour SAS© Viya, un pas `DATA _NULL_` est utilisé pour analyser le chemin d'accès fourni (`loc`) et en extraire le nom du job (`name`) et son emplacement (`shortloc`) avant l'appel à `%mv_getjobcode`. En cas de plateforme non reconnue, un message d'erreur est généré.
Analyse des données

Type : CREATION_INTERNE


Le script ne traite pas de jeux de données externes pour l'analyse. Il manipule des chaînes de caractères (variables macro) pour déterminer la plateforme d'exécution et pour construire les paramètres des appels aux macros de récupération de code. Le pas `DATA _NULL_` est utilisé pour la transformation interne de ces chaînes en variables macro pour les appels spécifiques à Viya.

1 Bloc de code
Macro
Explication :
Ce bloc initialise la macro `%mx_getcode` avec les paramètres `loc` (emplacement du code) et `outref` (référence de fichier de sortie). Il déclare ensuite les variables macro locales `platform`, `name` et `shortloc`. La macro `%mf_getplatform` est appelée pour détecter la plateforme SAS courante, et son résultat est stocké dans la variable `platform`.
Copié !
1%macro mx_getcode(loc,outref=0
2)/*/STORE SOURCE*/;
3 
4%local platform name shortloc;
5%let platform=%mf_getplatform();
2 Bloc de code
Macro Call
Explication :
Si la plateforme détectée est `SASJS`, ce bloc est exécuté. Il appelle la macro `%ms_getfile` pour récupérer le contenu du fichier SASjs dont le chemin est spécifié par la variable macro `loc` (avec l'extension `.sas` ajoutée) et le stocke dans la référence de fichier `outref`.
Copié !
1%IF &platform=SASJS %THEN %DO;
2%ms_getfile(&loc..sas, outref=&outref)
3%END;
4 
3 Bloc de code
Macro Call
Explication :
Si la plateforme détectée est `SAS9` ou `SASMETA`, ce bloc est exécuté. Il appelle la macro `%mm_getstpcode` pour récupérer un Stored Process. Le chemin vers ce Stored Process est fourni par le paramètre `tree` (la variable macro `loc`), et le code récupéré est stocké dans la référence de fichier `outref`.
Copié !
1%ELSE %IF &platform=SAS9 or &platform=SASMETA %THEN %DO;
2%mm_getstpcode(tree=&loc,outref=&outref)
3%END;
4 
4 Bloc de code
DATA STEP & Macro Call Data
Explication :
Pour l'environnement `SASVIYA`, ce bloc est activé. Un pas `DATA _NULL_` est exécuté pour analyser la variable macro `loc`. Il extrait le dernier composant de `loc` comme `name` (le nom du job) et le reste du chemin comme `shortloc`. Ces valeurs sont ensuite stockées dans des variables macro locales. Enfin, la macro `%mv_getjobcode` est appelée avec ces `path`, `name` et `outref` pour récupérer le code du job Viya.
Copié !
1%ELSE %IF &platform=SASVIYA %THEN %DO;
2 /* extract name & path from &loc */
3 DATA _null_;
4 loc=symget('loc');
5 name=scan(loc,-1,'/');
6 shortloc=substr(loc,1,LENGTH(loc)-LENGTH(name)-1);
7 call symputx('name',name,'l');
8 call symputx('shortloc',shortloc,'l');
9 RUN;
10 %mv_getjobcode(
11 path=&shortloc,
12 name=&name,
13 outref=&outref
14 )
15%END;
5 Bloc de code
Message log
Explication :
Si aucune des plateformes (`SASJS`, `SAS9`/`SASMETA`, `SASVIYA`) n'est détectée, ce bloc est exécuté. Il écrit un message d'erreur dans le log SAS, indiquant que la plateforme identifiée par `platform` n'est pas supportée. La macro `%mx_getcode` se termine ensuite avec `%mend`.
Copié !
1%ELSE %put &sysmacroname: &platform is unsupported!!!;
2%mend mx_getcode;
3 
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 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Ce fichier fait partie de SASUnit, le framework de test unitaire pour les programmes SAS(R).