Le programme est structuré en une série de tests. Initialement, il utilise `%mf_writefile` pour créer un fichier dans le répertoire `&sasjswork` avec deux lignes. Une étape `DATA _null_` lit ensuite la deuxième ligne pour la stocker dans une macro-variable (`test1`). La macro `%mp_assert` est alors utilisée pour vérifier l'absence d'erreurs et la conformité du contenu. Un deuxième appel à `%mf_writefile` écrase le fichier avec un contenu modifié. Les mêmes étapes de lecture et d'assertion sont répétées pour vérifier l'écrasement (`test2`). Enfin, le script déclare des macro-variables globales (`test3`, `test4`) et appelle `%mf_writefile` avec l'option `mode=a` pour ajouter de nouvelles lignes au fichier. Une dernière série de `DATA _null_` et `%mp_assert` valide que les lignes précédentes n'ont pas été modifiées et que les nouvelles lignes ont été correctement ajoutées.
Analyse des données
Type : CREATION_INTERNE
Les données sont entièrement générées et manipulées en interne. La macro `%mf_writefile` crée un fichier texte temporaire (`&sasjswork/myfile.txt`) qui sert de source et de destination aux opérations de lecture et d'écriture. Aucune donnée externe au script ou de bibliothèques SAS standards comme SASHELP n'est utilisée pour la logique métier ou les tests.
1 Bloc de code
Macro %mf_writefile Data
Explication : Cet appel à la macro `%mf_writefile` crée ou écrase le fichier `myfile.txt` dans la bibliothèque de travail temporaire `&sasjswork`. Il écrit 'some content' comme première ligne et 'more content' comme deuxième ligne.
Explication : Ce bloc `DATA _null_` lit le contenu du fichier `&sasjswork/myfile.txt`. Il parcourt chaque ligne et, lorsque la deuxième ligne est atteinte (`_n_=2`), il stocke son contenu exact dans la macro-variable `test1`.
Copié !
data _null_;
infile "&sasjswork/myfile.txt";
input;
if _n_=2 then call symputx('test1',_infile_);
run;
1
DATA _null_;
2
INFILE"&sasjswork/myfile.txt";
3
INPUT;
4
IF _n_=2THEN call symputx('test1',_infile_);
5
RUN;
3 Bloc de code
Macro %mp_assert
Explication : Ces deux appels à la macro `%mp_assert` sont des tests unitaires. Le premier vérifie que l'exécution du code précédent n'a généré aucune erreur SAS (`&syscc=0`). Le second assure que la macro-variable `test1` contient bien la valeur 'more content', confirmant ainsi que la deuxième ligne du fichier a été correctement écrite et lue.
Copié !
%mp_assert(
iftrue=(&syscc=0),
desc=Check code ran without errors,
outds=work.test_results
)
%mp_assert(
iftrue=(&test1=more content),
desc=Checking line was created,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Check code ran without errors,
4
outds=work.test_results
5
)
6
%mp_assert(
7
iftrue=(&test1=more content),
8
desc=Checking line was created,
9
outds=work.test_results
10
)
4 Bloc de code
Macro %mf_writefile Data
Explication : Cet appel à la macro `%mf_writefile` écrase à nouveau le fichier `&sasjswork/myfile.txt`. Cette fois, la deuxième ligne est définie sur 'different content', testant la capacité de la macro à remplacer le contenu existant.
Explication : Similaire au bloc précédent, ce `DATA _null_` lit le fichier après l'opération d'écrasement. Il extrait la deuxième ligne et la stocke dans la macro-variable `test2` pour une vérification ultérieure.
Copié !
data _null_;
infile "&sasjswork/myfile.txt";
input;
if _n_=2 then call symputx('test2',_infile_);
run;
1
DATA _null_;
2
INFILE"&sasjswork/myfile.txt";
3
INPUT;
4
IF _n_=2THEN call symputx('test2',_infile_);
5
RUN;
6 Bloc de code
Macro %mp_assert
Explication : Ces assertions vérifient que le code précédent s'est exécuté sans erreur. Elles confirment également que la macro-variable `test2` contient 'different content', validant ainsi que la deuxième ligne du fichier a été correctement écrasée par le nouveau contenu.
Copié !
%mp_assert(
iftrue=(&syscc=0),
desc=Check code ran without errors for test2,
outds=work.test_results
)
%mp_assert(
iftrue=(&test2=different content),
desc=Checking second line was overwritten,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Check code ran without errors for test2,
4
outds=work.test_results
5
)
6
%mp_assert(
7
iftrue=(&test2=different content),
8
desc=Checking second line was overwritten,
9
outds=work.test_results
10
)
7 Bloc de code
Macro %mf_writefile Data
Explication : Ce bloc déclare les macro-variables `test3` et `test4` comme globales. Ensuite, la macro `%mf_writefile` est appelée avec l'option `mode=a`, ce qui indique un mode d'ajout (append). Les nouvelles lignes 'aah, content' (où `%str` protège la virgule) et 'append content' sont ajoutées à la fin du fichier existant sans modifier les lignes précédentes.
Explication : Ce `DATA _null_` lit le fichier après l'opération d'ajout. La deuxième ligne est lue dans `test3` pour vérifier son intégrité (qu'elle n'a pas été modifiée). La quatrième ligne, qui correspond à la deuxième ligne ajoutée, est lue dans `test4` pour vérifier l'ajout correct du contenu.
Copié !
data _null_;
infile "&sasjswork/myfile.txt";
input;
if _n_=2 then call symputx('test3',_infile_);
if _n_=4 then call symputx('test4',_infile_);
run;
1
DATA _null_;
2
INFILE"&sasjswork/myfile.txt";
3
INPUT;
4
IF _n_=2THEN call symputx('test3',_infile_);
5
IF _n_=4THEN call symputx('test4',_infile_);
6
RUN;
9 Bloc de code
Macro %mp_assert
Explication : Ces assertions finales valident l'opération d'ajout. Elles confirment l'absence d'erreurs, s'assurent que le contenu de la deuxième ligne (`test3`) est resté 'different content' (c'est-à-dire qu'il n'a pas été écrasé par l'ajout), et vérifient que la quatrième ligne (`test4`) contient bien 'append content', confirmant l'ajout réussi.
Copié !
%mp_assert(
iftrue=(&syscc=0),
desc=Check code ran without errors for test2,
outds=work.test_results
)
%mp_assert(
iftrue=(&test3=different content),
desc=Checking second line was not overwritten,
outds=work.test_results
)
%mp_assert(
iftrue=(&test4=append content),
desc=Checking fourth line was appended,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Check code ran without errors for test2,
4
outds=work.test_results
5
)
6
%mp_assert(
7
iftrue=(&test3=different content),
8
desc=Checking second line was not overwritten,
9
outds=work.test_results
10
)
11
%mp_assert(
12
iftrue=(&test4=append content),
13
desc=Checking fourth line was appended,
14
outds=work.test_results
15
)
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.