Le script n'utilise pas de jeux de données SAS externes directement. Les deux 'DATA _NULL_' sont utilisés pour exécuter des commandes système et manipuler des chemins de fichiers, sans créer de jeux de données persistants. Les données traitées sont principalement des métadonnées de fichiers (noms de fichiers SAS) et des chemins d'accès.
1 Bloc de code
DATA STEP
Explication : Ce bloc SAS Data Step, qui ne crée pas de jeu de données persistant ('_NULL_'), utilise la fonction `filename pip pipe 'dir ...'` pour exécuter la commande système 'dir' et lister les noms de fichiers '.sas' dans le répertoire 'core' défini par `kanbox`. Les noms de fichiers sont lus un par un. Il inclut une logique pour exclure 'refreshmac.sas' et pour filtrer les fichiers si le paramètre `&files` est fourni. Pour chaque fichier pertinent, il construit une commande `%include` et l'exécute dynamiquement via `call execute`, permettant d'inclure d'autres macros ou codes SAS.
Copié !
data _null_;
filename pip pipe "dir "&kanbox\core\*.sas " /b";
infile pip;
length file $100 com $300;
input file ;
if index(file,'refreshmac.sas') then return;
if ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) then return;
com=("%include "&kanbox\core\"||file||"';");
put com=;
call execute(com);
run;
1
DATA _null_;
2
filename pip pipe "dir "&kanbox\core\*.sas " /b";
3
INFILE pip;
4
LENGTH file $100 com $300;
5
INPUT file ;
6
IF index(file,'refreshmac.sas') THEN return;
7
IF ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) THEN return;
8
com=("%include "&kanbox\core\"||file||"';");
9
put com=;
10
call execute(com);
11
RUN;
2 Bloc de code
DATA STEP
Explication : Similaire au bloc précédent, ce second Data Step utilise également un 'DATA _NULL_' pour lister et inclure dynamiquement des fichiers '.sas'. La seule différence est qu'il cible le répertoire 'inter' au lieu de 'core' dans le chemin `kanbox`, effectuant la même logique de filtrage et d'inclusion dynamique pour les macros ou codes situés dans ce répertoire.
Copié !
data _null_;
filename pip pipe "dir "&kanbox\inter\*.sas " /b";
infile pip;
length file $100 com $300;
input file ;
if index(file,'refreshmac.sas') then return;
if ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) then return;
com=("%include "&kanbox\inter\"||file||"';");
put com=;
call execute(com);
run;
IF ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) THEN return;
8
com=("%include "&kanbox\inter\"||file||"';");
9
put com=;
10
call execute(com);
11
RUN;
3 Bloc de code
Macro et commandes système
Explication : Ce bloc définit des variables locales pour les chemins réseau (`SAdrive`, `macbackup`) et alloue une libname `netmac` vers le répertoire de sauvegarde des macros. Il utilise ensuite deux macros (`%AHGdateandtime`, `%AHGpm`) pour générer une date/heure dans la variable `mydt` (non fournies, supposées exister ailleurs). Crucialement, il exécute des commandes système via l'instruction `x`: `x mkdir` pour créer un nouveau répertoire horodaté pour la sauvegarde, et `x copy` pour copier les fichiers existants de la bibliothèque vers ce nouveau répertoire. Enfin, `PROC DATASETS` est utilisée pour copier tous les catalogues (qui contiennent les macros compilées) de la bibliothèque temporaire 'work' vers la libname 'netmac', assurant ainsi la sauvegarde et l'actualisation de la bibliothèque de macros.
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.
« Cette macro AHGrefreshlilly est un modèle de gestion de configuration et de déploiement continu (CI/CD) appliqué à l'univers SAS. Elle ne se contente pas de charger du code ; elle orchestre l'inventaire, l'intégration et la sécurisation du patrimoine applicatif.
L'utilisation de call execute pour générer des %include est très efficace, mais elle peut rendre le débogage complexe dans le journal (Log). Pour une traçabilité optimale, assurez-vous que les options SOURCE et SOURCE2 sont activées afin de voir exactement quel code macro a été injecté durant le processus de rafraîchissement. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.