Le script utilise les jeux de données `SASHELP.CLASS` et `SASHELP.CARS` comme sources. Il crée également des jeux de données intermédiaires (`new_student`, `class_updated`) et des variables macro (`student_name`, `height`, `weight`, `age`, `sex`) définies au début du script pour simuler des données d'entrée. Aucune donnée externe non gérée n'est utilisée.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc initialise des variables macro puis crée un jeu de données nommé `new_student`. Il utilise `sashelp.class` comme base, remplace certaines variables avec les valeurs des macros (`symget` est utilisé pour les valeurs alphanumériques). Une logique conditionnelle vérifie si la valeur de la macro variable `height` est comprise entre 12 et 100. Selon le résultat, la variable `height` est soit mise à une valeur manquante, soit assignée, et un message pertinent est écrit dans le journal SAS via `PUTLOG`.
Copié !
%let student_name = Pat;
%let height = 70;
%let weight = 120;
%let age = 15;
%let sex = M;
data new_student;
set sashelp.class (obs=1);
name = symget('student_name');
weight = &weight;
age = &age.;
sex = symget('sex');
if &height. not in (12:100) then do;
height = .;
putlog "NOTE: The height is not a valid number. It has been set to missing.";
end;
else do;
height = &height.;
putlog "NOTE: The height is a valid number. It has been set to &height..";
end;
run;
1
%let student_name = Pat;
2
%let height = 70;
3
%let weight = 120;
4
%let age = 15;
5
%let sex = M;
6
7
DATA new_student;
8
SET sashelp.class (obs=1);
9
10
name = symget('student_name');
11
weight = &weight;
12
age = &age.;
13
sex = symget('sex');
14
15
IF &height. not in (12:100) THENDO;
16
height = .;
17
putlog "NOTE: The height is not a valid number. It has been set to missing.";
18
END;
19
20
ELSEDO;
21
height = &height.;
22
putlog "NOTE: The height is a valid number. It has been set to &height..";
23
END;
24
25
RUN;
2 Bloc de code
DATA STEP Data
Explication : Ce DATA step crée le jeu de données `class_updated` en concaténant `sashelp.class` et `new_student`. Il utilise ensuite `PUTLOG` pour écrire les valeurs des variables `name` et `age` de chaque observation dans le journal SAS, démontrant comment inspecter les valeurs des variables en cours d'exécution.
Copié !
data class_updated;
set sashelp.class new_student;
putlog "NOTE: Their name is " name ;
putlog "NOTE: Their Age is " age ;
run;
1
DATA class_updated;
2
SET sashelp.class new_student;
3
4
putlog "NOTE: Their name is " name ;
5
putlog "NOTE: Their Age is " age ;
6
7
RUN;
3 Bloc de code
DATA STEP Data
Explication : Ce bloc lit le jeu de données `class_updated` et applique une logique conditionnelle. Si la variable `age` est supérieure ou égale à 15, il utilise `PUTLOG` pour afficher le nom et l'âge de l'étudiant dans le journal SAS. Ceci illustre le débogage conditionnel pour cibler des observations spécifiques ou des conditions de données.
Copié !
data class_updated;
set class_updated;
if age ge 15 then do;
putlog "NOTE: Their name is " name ;
putlog "NOTE: Their Age is " age ;
end;
run;
1
DATA class_updated;
2
SET class_updated;
3
4
IF age ge 15THENDO;
5
6
putlog "NOTE: Their name is " name ;
7
putlog "NOTE: Their Age is " age ;
8
9
END;
10
11
RUN;
4 Bloc de code
DATA STEP Data
Explication : Ce DATA step lit les 5 premières observations de `class_updated`. Il utilise `PUTLOG` pour afficher les valeurs des variables automatiques `_N_` (le numéro de l'itération actuelle du DATA step), `name` (la variable du jeu de données), et `_ERROR_` (un indicateur d'erreur, 1 si une erreur s'est produite dans l'observation actuelle, 0 sinon). C'est une technique courante pour déboguer le flux d'exécution et identifier les erreurs au niveau des observations.
Copié !
data class_updated;
set class_updated (obs=5);
putlog _N_ ;
putlog name;
putlog _ERROR_ ;
run;
1
DATA class_updated;
2
SET class_updated (obs=5);
3
4
putlog _N_ ;
5
putlog name;
6
putlog _ERROR_ ;
7
8
9
RUN;
5 Bloc de code
DATA STEP Data
Explication : Ce bloc présente un exemple d'erreur de syntaxe due à un mot-clé mal orthographié. Le mot-clé `dota` est utilisé au lieu de `data`, ce qui entraînera une erreur de compilation dans le journal SAS. Il démontre une erreur typique qui peut être diagnostiquée par l'analyse du journal.
Copié !
dota mycars;
set sashelp.cars;
run;
1
dota mycars;
2
SET sashelp.cars;
3
RUN;
6 Bloc de code
DATA STEP Data
Explication : Ce bloc illustre une erreur de syntaxe causée par l'utilisation d'une option invalide (`notvalidoption`) dans l'instruction `SET`. SAS générera une erreur dans le journal, indiquant que l'option spécifiée n'est pas reconnue ou n'est pas applicable, soulignant l'importance de connaître les options valides pour chaque instruction.
Copié !
data mycars;
set sashelp.cars(notvalidoption=this);
run;
1
2
DATA mycars;
3
SET sashelp.cars(notvalidoption=this);
4
RUN;
5
7 Bloc de code
DATA STEP Data
Explication : Ce bloc montre un exemple où un point-virgule est implicitement manquant (le commentaire original l'indique). Dans un vrai scénario, si le point-virgule après `set sashelp.cars` était omis, SAS signalerait une erreur de syntaxe, car chaque instruction SAS doit se terminer par un point-virgule. Cela met en évidence une erreur de syntaxe très courante.
Copié !
data mycars;
set sashelp.cars;
run;
1
DATA mycars;
2
SET sashelp.cars;
3
RUN;
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.