
Quelle est la différence entre un RUN et un QUIT ?
septembre 12, 2009Aujourd’hui, je voulais vous parler de la différence entre les instructions RUN et QUIT. Toby Dunn a écrit une explication très bien faite sur le forum anglophone SAS-L. Voici une traduction possible.
1. L’instruction RUN
L’instruction RUN dit à SAS d’exécuter les instructions précédentes (c’est-à-dire l’étape data qui vient d’être compilée ou la procédure). C’est un délimiteur d’étape qui dit : « c’est la fin de l’étape ou de la procédure. Maintenant exécute le code. ».
Vous n’avez pas besoin d’utiliser l’instruction RUN, le début d’une autre étape data ou d’une procédure feront le boulot aussi. Cependant utiliser une instruction RUN nettoiera votre log.
2. L’instruction QUIT
L’instruction QUIT est aussi un délimiteur d’étape. Quelques procédures (par exemple PROC DATASETS, PROC CATALOG) permettent de soumettre plusieurs étapes à l’intérieur d’une procédure sans avoir à terminer la procédure. Dans ces cas là, vous ajoutez une instruction RUN pour terminer une étape dans cette procédure et une instruction QUIT pour terminer la procédure.
3. Le cas particulier de PROC SQL
SQL est un peu l’exception qui confirme la règle car cette procédure nécessite une instruction QUIT et toute instruction RUN sera ignorée. Ceci est dû au fait qu’elle exécute chaque instruction automatiquement. Il n’y a donc aucun besoin d’une exécution par groupe avec RUN mais un réel besoin d’un délimiteur de fin d’étape.
en gros « la proc, tu la RUN ou tu la QUIT »!
la proc SQL ( comme la datasets … ) n’a pas besoin de run pour s’exécuter
exemple :
PROC SQL ;
CREATE TABLE toto AS
SELECT name FROM sashelp.class
;
Lorsque je soumets ce sas, il fonctionne et dans la barre de titre de la fenêtre editeur est affiché : proc sql en cours d’exécution
cela signifie que la proc SQL reste chargé en mémoire
je soumets à nouveau les 3 lignes suivantes
CREATE TABLE titi AS
SELECT * FROM sashelp.class
;
je vais obtenir une autre table SAS
le QUIT sert à décharger la Proc en mémoire