Le script commence par une première initialisation de la macro `%mcf_length` avec des options spécifiques (`wrap=YES`, `insert_cmplib=YES`). Un `DATA STEP` est ensuite employé pour appeler `%mcf_length` avec un éventail de valeurs d'entrée (valeurs manquantes standard et spéciales, nombres entiers de diverses magnitudes) et stocke les résultats dans des macro-variables dédiées via la fonction `call symputx`. Ces macro-variables sont subséquemment utilisées dans une série d'appels à la macro `%mp_assert`, qui agit comme un mécanisme de test unitaire, pour confirmer que les longueurs calculées par `%mcf_length` sont conformes aux attentes. Le script inclut également des vérifications de la macro-variable système `&syscc` avant et après une seconde initialisation de `%mcf_length`, afin de s'assurer de l'intégrité du système et de l'absence d'erreurs de compilation ou d'exécution.
Analyse des données
Type : CREATION_INTERNE
Le script ne s'appuie pas sur des jeux de données SAS externes ou du système SASHELP. Il opère uniquement sur des littéraux numériques directement définis dans le code et les résultats de macros SAS, qui sont ensuite stockés dans des macro-variables internes. Un jeu de données temporaire 'test' est créé par le `DATA STEP` mais est principalement utilisé pour l'appel de `call symputx` et ne contient pas de données persistantes.
1 Bloc de code
Appel Macro (%mcf_length)
Explication : Ce bloc effectue la première initialisation ou recompilation de la macro `%mcf_length`. Les paramètres `wrap=YES` et `insert_cmplib=YES` sont des options de configuration spécifiques à cette macro, probablement liées à la gestion des bibliothèques de macros ou à l'intégration du code généré.
Copié !
%mcf_length(wrap=YES, insert_cmplib=YES)
1
%mcf_length(wrap=YES, insert_cmplib=YES)
2 Bloc de code
DATA STEP Data
Explication : Ce `DATA STEP` est conçu pour tester la macro `%mcf_length` avec diverses entrées. Pour chaque test, la fonction `mcf_length()` est appelée avec une valeur numérique ou manquante, et le résultat est stocké dans une macro-variable (par exemple, `&null`, `&special`, etc.) en utilisant `call symputx`. Le jeu de données `test` créé est un artefact du `DATA STEP` mais son contenu n'est pas utilisé directement pour la validation.
Explication : Ce bloc contient une série d'appels à la macro `%mp_assert` pour effectuer des assertions sur les résultats de `%mcf_length` et l'état du système. Chaque `%mp_assert` évalue une condition (`iftrue`) et fournit une description du test (`desc`). Ces tests vérifient que les longueurs calculées sont correctes pour différents scénarios, y compris les valeurs manquantes et les nombres de différentes longueurs, ainsi que l'état de la macro-variable système `&syscc`.
Copié !
%mp_assert(
iftrue=(%str(&null)=%str(0)),
desc=Check if NULL returns 0
)
%mp_assert(
iftrue=(%str(&special)=%str(3)),
desc=Check if special missing ._ returns 3
)
%mp_assert(
iftrue=(%str(&three)=%str(3)),
desc=Check for length 3
)
%mp_assert(
iftrue=(%str(&four)=%str(4)),
desc=Check for length 4
)
%mp_assert(
iftrue=(%str(&five)=%str(5)),
desc=Check for length 5
)
%mp_assert(
iftrue=(%str(&six)=%str(6)),
desc=Check for length 6
)
%mp_assert(
iftrue=(%str(&seven)=%str(3)),
desc=Check for length 3
)
%mp_assert(
iftrue=(%str(&eight)=%str(8)),
desc=Check for length 8
)
%mp_assert(
iftrue=(&syscc=0),
desc=Check syscc=0 before re-initialisation
)
1
%mp_assert(
2
iftrue=(%str(&null)=%str(0)),
3
desc=Check IF NULL returns 0
4
)
5
%mp_assert(
6
iftrue=(%str(&special)=%str(3)),
7
desc=Check IF special missing ._ returns 3
8
)
9
%mp_assert(
10
iftrue=(%str(&three)=%str(3)),
11
desc=Check for LENGTH3
12
)
13
%mp_assert(
14
iftrue=(%str(&four)=%str(4)),
15
desc=Check for LENGTH4
16
)
17
%mp_assert(
18
iftrue=(%str(&five)=%str(5)),
19
desc=Check for LENGTH5
20
)
21
%mp_assert(
22
iftrue=(%str(&six)=%str(6)),
23
desc=Check for LENGTH6
24
)
25
%mp_assert(
26
iftrue=(%str(&seven)=%str(3)),
27
desc=Check for LENGTH3
28
)
29
%mp_assert(
30
iftrue=(%str(&eight)=%str(8)),
31
desc=Check for LENGTH8
32
)
33
%mp_assert(
34
iftrue=(&syscc=0),
35
desc=Check syscc=0 before re-initialisation
36
)
4 Bloc de code
Appel Macro (%mcf_length)
Explication : Ce second appel à `%mcf_length` sert à tester le comportement de la macro en cas de recompilation ou d'initialisation multiple. Il est souvent utilisé dans les tests unitaires pour s'assurer que la macro peut être appelée plusieurs fois sans effets secondaires indésirables.
Copié !
%mcf_length(wrap=YES, insert_cmplib=YES)
1
%mcf_length(wrap=YES, insert_cmplib=YES)
5 Bloc de code
Appel Macro (%mp_assert)
Explication : Ce dernier appel à `%mp_assert` vérifie que la macro-variable système `&syscc` est toujours à 0 après la seconde initialisation de `%mcf_length`. Cela confirme que la recompilation ou le second appel de la macro n'a pas introduit d'erreurs majeures au niveau du système.
Copié !
%mp_assert(
iftrue=(&syscc=0),
desc=Check syscc=0 after re-initialisation
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Check syscc=0 after re-initialisation
4
)
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.