Les exemples utilisent des données générées (datalines) ou SASHELP.
1 Bloc de code
DATA STEP Data
Explication : Cet exemple utilise une instruction DO itérative pour décrémenter de manière répétée les valeurs de la variable 'balance' et écrire ces valeurs dans le jeu de données de sortie. L'étape DATA s'exécute sur le serveur de calcul SAS.
Copié !
data loan;
balance=10000;
do payment_number=1 to 10;
balance=balance-1000;
output;
end;
run;
proc print data=loan;
run;
1
DATA loan;
2
balance=10000;
3
DO payment_number=1 to 10;
4
balance=balance-1000;
5
OUTPUT;
6
END;
7
RUN;
8
PROC PRINTDATA=loan;
9
RUN;
2 Bloc de code
DATA STEP Data
Explication : Cet exemple utilise la même boucle DO itérative pour exécuter l'étape DATA dans CAS et créer une table de sortie CAS. Bien que l'étape DATA s'exécute dans CAS, elle s'exécute en un seul thread car aucune table d'entrée n'est spécifiée.
Copié !
cas casauto sessopts=(caslib='casuser');
libname mylib cas;
data mylib.loan;
balance=10000;
do payment_number=1 to 10;
balance=balance-1000;
output;
end;
run;
proc print data=mylib.loan;
run;
1
cas casauto sessopts=(caslib='casuser');
2
LIBNAME mylib cas;
3
4
DATA mylib.loan;
5
balance=10000;
6
DO payment_number=1 to 10;
7
balance=balance-1000;
8
OUTPUT;
9
END;
10
RUN;
11
PROC PRINTDATA=mylib.loan;
12
RUN;
3 Bloc de code
DATA STEP Data
Explication : Cet exemple montre comment imbriquer une boucle DO dans une autre pour calculer la valeur d'un investissement d'un an avec un intérêt annuel de 7,5 %, composé mensuellement. L'imbrication est utile lorsque vous devez répéter une action interne pour chaque passage de la boucle externe.
Copié !
data earn;
Capital=2000;
do Year=1 to 10;
do Month=1 to 12;
Interest=Capital*(.075/12);
Capital+Interest;
output;
end;
end;
run;
proc print data=earn; run;
1
DATA earn;
2
Capital=2000;
3
DO Year=1 to 10;
4
DO Month=1 to 12;
5
Interest=Capital*(.075/12);
6
Capital+Interest;
7
OUTPUT;
8
END;
9
END;
10
RUN;
11
PROC PRINTDATA=earn; RUN;
4 Bloc de code
DATA STEP Data
Explication : Cet exemple utilise la syntaxe DOLIST pour itérer sur une liste de valeurs, d'expressions ou de séquences. L'index de la boucle DO prend successivement les valeurs spécifiées dans la liste, qui sont séparées par des virgules.
Copié !
data do_list;
x=-5;
do i=5, /*a single value*/
5, 4, /*multiple values*/
x + 10, /*an expression*/
80 to 90 by 5, /*a sequence*/
60 to 40 by x; /*a sequence with a variable*/
output;
end;
run;
proc print data=do_list; run;
1
DATA do_list;
2
x=-5;
3
DO i=5, /*a single value*/
4
5, 4, /*multiple values*/
5
x + 10, /*an expression*/
6
80 to 90BY5, /*a sequence*/
7
60 to 40BY x; /*a sequence with a variable*/
8
OUTPUT;
9
END;
10
RUN;
11
PROC PRINTDATA=do_list; RUN;
5 Bloc de code
DATA STEP Data
Explication : Cet exemple utilise la syntaxe itérative DO TO-<valeur> pour incrémenter de manière répétée les valeurs de 'x'. L'instruction OUTPUT est utilisée pour écrire chaque valeur incrémentée de 'x' dans le jeu de données de sortie. La valeur 'TO' spécifie la valeur finale de la variable d'index.
Copié !
data do_to;
x=0;
do i=0 to 10;
x=x+1;
output;
end;
run;
proc print data=do_to;
run;
1
DATA do_to;
2
x=0;
3
DO i=0 to 10;
4
x=x+1;
5
OUTPUT;
6
END;
7
RUN;
8
PROC PRINTDATA=do_to;
9
RUN;
6 Bloc de code
DATA STEP Data
Explication : Cet exemple utilise la syntaxe itérative DO TO-<valeur> BY-<incrément> pour incrémenter de manière répétée les valeurs de 'x'. La valeur 'BY-<incrément>' spécifie que la variable d'index est incrémentée de '2' à chaque exécution de la boucle. L'instruction OUTPUT écrit chaque valeur incrémentée de 'x' dans le jeu de données de sortie.
Copié !
data do_to_by;
x=0;
do i=0 to 10 by 2;
x=x+1;
output;
end;
run;
proc print data=do_to_by;
run;
1
DATA do_to_by;
2
x=0;
3
DO i=0 to 10BY2;
4
x=x+1;
5
OUTPUT;
6
END;
7
RUN;
8
PROC PRINTDATA=do_to_by;
9
RUN;
7 Bloc de code
DATA STEP Data
Explication : Cette première étape DATA utilise une boucle DO pour exécuter un groupe d'instructions de manière répétée tant qu'une condition est vraie. Le programme calcule le nombre de paiements nécessaires pour un montant de prêt spécifié en décrémentant de manière répétée le 'Balance' tant que le solde est supérieur à zéro. L'étape DATA s'exécute sur le serveur de calcul SAS.
Copié !
data loan;
balance=10000;
payment=0;
do while (balance>0);
balance=balance-1000;
payment=payment+1;
output;
end;
run;
proc print data=mylib.loan;
run;
1
DATA loan;
2
balance=10000;
3
payment=0;
4
DO while (balance>0);
5
balance=balance-1000;
6
payment=payment+1;
7
OUTPUT;
8
END;
9
RUN;
10
PROC PRINTDATA=mylib.loan;
11
RUN;
8 Bloc de code
DATA STEP Data
Explication : Cette étape DATA charge les mêmes données dans une nouvelle table dans une bibliothèque différente, 'mylib.loan', puis calcule le nombre de paiements nécessaires pour le prêt spécifié. Elle le fait en itérant de manière répétée et en décrémentant les valeurs de 'Balance' jusqu'à ce que le solde soit nul. L'étape DATA s'exécute dans CAS mais en un seul thread car il n'y a pas de table d'entrée.
Copié !
libname mylib cas;
data mylib.loan;
balance=10000;
payment=0;
do until (balance=0);
balance=balance-1000;
payment=payment+1;
output;
end;
run;
proc print data=mylib.loan;
run;
1
LIBNAME mylib cas;
2
3
DATA mylib.loan;
4
balance=10000;
5
payment=0;
6
DO until (balance=0);
7
balance=balance-1000;
8
payment=payment+1;
9
OUTPUT;
10
END;
11
RUN;
12
PROC PRINTDATA=mylib.loan;
13
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.
« Pour vos simulations financières ou vos calculs d'échéanciers, utilisez toujours une variable d'index claire (ex: Year, Month). Une fois la boucle terminée, cette variable reste dans votre table ; elle est donc précieuse pour créer des graphiques ou des rapports sans avoir à recalculer les périodes. »
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.