Le script définit d'abord la macro `dostuff` qui accepte un paramètre `action`. Selon la valeur de `action` ('ADD', 'DEL', 'MOD', 'NOTHING'), la macro crée des variables globales, les supprime, les modifie ou ne fait rien. Ensuite, le script exécute une série de tests. Chaque test prend un 'snapshot' de l'environnement des variables de macro globales avec `%mp_assertscope(SNAPSHOT)`, exécute `dostuff` avec une action spécifique, puis compare le nouvel état avec le snapshot initial en utilisant `%mp_assertscope(COMPARE, ...)`. Finalement, `%mp_assert` est utilisé pour valider que le rapport de comparaison (stocké dans une table de travail) correspond au résultat attendu pour chaque action (ajout, modification, suppression, ou aucune modification).
Analyse des données
Type : CREATION_INTERNE
Le script ne lit aucune donnée source. Il génère dynamiquement des tables de travail (work.testing_the_tester1, work.testing_the_tester2, etc.) comme sortie de la macro de test `%mp_assertscope`. Ces tables contiennent les résultats de la comparaison de l'environnement des variables de macro avant et après l'exécution de la macro `dostuff`.
1 Bloc de code
MACRO
Explication : Définition de la macro 'dostuff'. Elle prend un paramètre 'action' et peut ajouter ('ADD'), supprimer ('DEL'), ou modifier ('MOD') des variables de macro globales (`NEWVAR1`, `NEWVAR2`). L'action 'NOTHING' déclare des variables locales pour un test de non-modification de l'environnement global.
Copié !
%macro dostuff(action);
%if &action=ADD %then %do;
%global NEWVAR1 NEWVAR2;
%end;
%else %if &action=DEL %then %do;
%symdel NEWVAR1 NEWVAR2;
%end;
%else %if &action=MOD %then %do;
%let NEWVAR1=Let us pray..;
%end;
%else %if &action=NOTHING %then %do;
%local a b c d e;
%end;
%mend dostuff;
1
%macro dostuff(ACTION);
2
%IF &ACTION=ADD %THEN %DO;
3
%global NEWVAR1 NEWVAR2;
4
%END;
5
%ELSE %IF &ACTION=DEL %THEN %DO;
6
%symdel NEWVAR1 NEWVAR2;
7
%END;
8
%ELSE %IF &ACTION=MOD %THEN %DO;
9
%let NEWVAR1=Let us pray..;
10
%END;
11
%ELSE %IF &ACTION=NOTHING %THEN %DO;
12
%local a b c d e;
13
%END;
14
%mend dostuff;
2 Bloc de code
MACRO Data
Explication : Ce bloc teste l'ajout de variables. `%mp_assertscope(SNAPSHOT)` enregistre l'état initial des variables globales. `%dostuff(ADD)` est appelé pour créer `NEWVAR1` et `NEWVAR2`. `%mp_assertscope(COMPARE)` compare l'état final au snapshot et écrit les différences dans `work.testing_the_tester1`. `%mp_assert` vérifie que le commentaire de test dans la table de sortie indique bien l'ajout de ces deux variables.
Copié !
/* check for adding variables */
%mp_assertscope(SNAPSHOT)
%dostuff(ADD)
%mp_assertscope(COMPARE,outds=work.testing_the_tester1)
%mp_assert(
iftrue=(
"%mf_getvalue(work.testing_the_tester1,test_comments)"
="Mod:() Add:(NEWVAR1 NEWVAR2) Del:()"
),
desc=Checking result when vars added,
outds=work.test_results
)
Explication : Ce bloc teste la modification d'une variable. Après le snapshot, `%dostuff(MOD)` modifie `NEWVAR1`. La macro `%mp_assert` valide que le rapport de comparaison (dans `work.testing_the_tester2`) reflète correctement la modification de `NEWVAR1`.
Copié !
/* check for modifying variables */
%mp_assertscope(SNAPSHOT)
%dostuff(MOD)
%mp_assertscope(COMPARE,outds=work.testing_the_tester2)
%mp_assert(
iftrue=(
"%mf_getvalue(work.testing_the_tester2,test_comments)"
="Mod:(NEWVAR1) Add:() Del:()"
),
desc=Checking result when vars modified,
outds=work.test_results
)
Explication : Ce bloc teste la suppression de variables. `%dostuff(DEL)` supprime `NEWVAR1` et `NEWVAR2`. La macro `%mp_assert` vérifie que le rapport de comparaison (dans `work.testing_the_tester3`) indique bien la suppression de ces deux variables.
Copié !
/* check for deleting variables */
%mp_assertscope(SNAPSHOT)
%dostuff(DEL)
%mp_assertscope(COMPARE,outds=work.testing_the_tester3)
%mp_assert(
iftrue=(
"%mf_getvalue(work.testing_the_tester3,test_comments)"
="Mod:() Add:() Del:(NEWVAR1 NEWVAR2)"
),
desc=Checking result when vars deleted,
outds=work.test_results
)
Explication : Ce bloc vérifie qu'aucune modification n'est apportée aux variables globales. `%dostuff(NOTHING)` ne fait que déclarer des variables locales. La macro `%mp_assert` confirme que le rapport de comparaison (dans `work.testing_the_tester4`) indique que les variables globales n'ont pas été modifiées.
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.
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.