SAS/Base – Généralités
Articles parus
- Panorama des nouveautés SAS® 9.4 - Septembre 2013 - SAS 9.4
- SAS® et son environnement - Septembre 2013 - SAS 9.4
- Présentation du DS2 et de ses applications - Mars 2013 - SAS 9.3
- Imposer les options SAS par groupe, utilisateur ou global - Décembre 2012 - SAS 9.2 et 9.3
- Utiliser les fournisseurs d'accès SAS depuis Microsoft Excel - Juin 2012 - SAS 9.3
- Modes checkpoint et restart : relancer un batch en échec à partir d'une étape précise - Juin 2011 - SAS 9.2
- Gestion de la bibliothèque Work - Mars 2011 - SAS 9.2
- Comprendre l'option encoding dans SAS - Décembre 2010 - SAS 9.2
- Le code hash - Mars 2007 - SAS 9.1
- Interaction entre SAS et le système (PDF) - Avril 2006 - SAS 9.1
- Utilisation des "Expressions Régulières Perl" dans SAS®9 (PDF) - Janvier 2005 - SAS 9.1
- Les contraintes d'intégrité dans le système SAS® (PDF) - Novembre 2004 - SAS 9.1
- Les vues dictionnaires de la SASHELP (PDF) - Février 2004 - SAS 8.2
- Transfert des données SAS entre 2 environnements (PDF) - Septembre 2002 - SAS 8.2
FAQs
- Lors de l'exécution d’un programme en batch ou en non-interactif, dès qu’une erreur intervient, pourquoi la suite du programme n’est-elle pas exécutée ? Réponse
- Comment exécuter un programme SAS en batch ? Réponse
- Comment créer un répertoire Windows avec SAS ? Réponse
- Comment définir un mot de passe sur une table SAS et commet accéder à cette table ? Réponse
- Comment restreindre l’utilisation d’options SAS par groupe, par utilisateur ou globalement ? Réponse
- Comment augmenter les performances de SAS Base en plaçant la WORK en mémoire ? Réponse
- Comment obtenir la liste des bibliothèques assignées et utilisables dans la session SAS en cours ? Réponse
- Comment créer un alias pour le moteur SASIOIME ? Réponse
Réponses
- Catégories : Système
- OS : Unix, Windows, z/OS
- Version : SAS® 8.2 et au-delà
- Vérifié en décembre 2014
Lors de l'exécution d’un programme en batch ou en non-interactif, dès qu’une erreur intervient, pourquoi la suite du programme n’est-elle pas exécutée ?
Par défaut, en batch, SAS est démarré en mode ‘Syntaxcheck’ : dès qu’une erreur est rencontrée, l’option OBS est positionnée à 0, ainsi le code est simplement validé mais non exécuté. Cela permet de ne pas écraser des données valides alors qu’une erreur est survenue.
La log indique d’ailleurs ceci :
NOTE: The SAS System stopped processing this step because of errors.
NOTE: SAS set option OBS=0 and will continue to check statements.
This may cause NOTE: No observations in data set.
Ce fait est décrit dans la Usage Note SN-007751, ‘Error messages that cause SAS to enter syntax check mode’.
Pour passer en mode ‘nosyntaxcheck’, il y a plusieurs possibilités :
- vous pouvez ajouter une instruction OPTION dans l'autoexec de SAS ou bien au sein du programme :
options NOSYNTAXCHECK ;
- vous pouvez également mettre l'option dans le fichier de configuration (sasv8.cfg ou sasv9.cfg):
-NOSYNTAXCHECK
Aide en ligne : SAS 9.2, SAS 9.1, SAS 8.2
- Catégories : SAS/Base
- OS : Unix, Windows
- Version : SAS® 8.2 et au-delà
- Vérifié en décembre 2014
Comment exécuter un programme SAS en batch ?
Depuis un prompt système ou dans un script, vous pouvez utiliser une commande de ce type :
!SASROOT/sas <Chemin_prog>/mon_prog.sas -altlog <Chemin_journal>/mon_prog.log
où !SASROOT représente le chemin absolu où se situe l’exécutable sas sur votre système.
<Chemin_prog> représente le chemin où se situe votre programme.
<Chemin_journal> représente le chemin où vous souhaitez enregistrer le journal d’exécution de votre programme.
Remarque : L’option -altlog est optionnelle. Elle permet de sauvegarder le journal afin de voir si l’exécution s’est déroulée correctement ou non.
- Catégories : SAS/BASE®
- OS : Windows
- Version : SAS® 8.2 et au-delà
- Vérifié en décembre 2014
Comment créer un répertoire Windows avec SAS ?
Les commandes X permettent de soumettre une commande Windows sans mettre fin à votre session SAS.
La commande mkdir permet la création d’un répertoire.
Un exemple de code :
%let path=c:\mondossier; /*Création d'une macro-variable avec le chemin du répertoire nommé "mondossier" */ /* NOXWAIT : la fenêtre DOS se ferme automatiquement */ /* XSYNC : SAS attend que DOS ait terminé */ option NOXWAIT XSYNC; Data _null_; X "mkdir &path"; /*Création du répertoire à l'aide de la macro-variable */ run;
Aide en ligne : X command
- Catégories :
- OS : Windows
- Version : SAS 9.2, SAS 9.3
- Vérifié en Aout 2012
Comment définir un mot de passe sur une table SAS et commet accéder à cette table ?
Vos données sont confidentielles, vous ne souhaitez pas que vos tables SAS soient modifiées par n’importe qui : Les tables SAS peuvent être protégées par des mots de passe en écriture, lecture et modification.
Nous allons voir ici, comment créer une table SAS protégée par mot de passe, grâce à une étape DATA et aux mots clés suivants :
read : protège la table en lecture.
write : protège de la modification d’observations dans la table SAS.
alter : protège de la suppression ou du remplacement de la table SAS.
pw : protège la table SAS avec le même mot de passe pour toutes les actions ci-dessus (read+write+alter).
1. Voici un exemple de création d’une table avec des mots de passe différents pour la lecture, pour l’écriture et pour la modification :
data work.Shoes(read=Orion123 write= Hydre456 Alter=Phenix78); input Name $ size 8.; datalines; Céline 38 Ludovic 42 Karine 37 Thierry 43 ;
Pour pouvoir éditer cette table, vous devrez préciser le mot de passe “read”:
proc print data=shoes(read=Orion123);
run;
2. Voici un exemple de création d’une table avec un même mot de passe pour les actions read+write+alter :
data work.Shoes(pw=Bouvier0); input Name $ size 8.; datalines; Céline 38 Ludovic 42 Karine 37 Thierry 43 ;
Pour pouvoir éditer cette table, vous devrez préciser le mot de passe “pw” ou “read“
proc print data=shoes(pw=Bouvier0); run; proc print data=shoes(read=Bouvier0); run;
Si vous essayez d’accéder à cette table sans préciser le mot de passe, vous aurez cette alerte :

- Catégories : Base
- OS : Windows, Unix
- Version : SAS® 9.2 et au-delà
- Vérifié en décembre 2014
Comment restreindre l’utilisation d’options SAS par groupe, par utilisateur ou globalement ?
Les options système de SAS 9.2 Foundation peuvent être restreintes par un administrateur du site afin qu’une fois limitées, elles ne puissent plus être modifiées par un utilisateur.
Une option peut être limitée au niveau global (autrement dit pour toutes les sessions), par groupe ou par utilisateur. Pour restreindre une option, elle doit être ajoutée au fichier de configuration approprié. Ce fichier doit avoir des permissions définies par l'administrateur afin qu'il ne puisse pas être mis à jour par les utilisateurs. Cela peut être pratique si vous voulez activer XCMD selon l’utilisateur ou même affecter différentes options MEMSIZE selon le groupe.
Les chemins pour les fichiers de configuration
Windows
Global: !SASROOT\rstropts\rsasv9.cfg
Group: !SASROOT\rstropts\_rsasv9.cfg
User: !SASROOT\rstropts\_rsasv9.cfg
Unix
Global: !SASROOT/misc/rstropts/rsasv9.cfg
Group: !SASROOT/misc/rstropts/groups/_rsasv9.cfg
User: !SASROOT/misc/rstropts/users/_rsasv9.cfg
Note : Les options restreintes ne fonctionnent correctement que si l'utilisateur et / ou d'information de groupe sont stockées dans le fichier /etc/passwd ou /etc/groupe
Ces fichiers n’existent pas par défaut. Selon leur présence, seront traités dans l'ordre suivant: global, le groupe et l'utilisateur. Si une option est spécifiée dans plusieurs fichiers, c’est la dernière occurrence qui sera affectée.
SAS 9.2 requiert que si le fichier existe, il doit contenir au minimum une option.
Pour obtenir la liste des options et le détail des restrictions possibles par l'administrateur du site, vous pouvez exécuter la commande suivante:
PROC OPTIONS VALUE DEFINE; RUN;
Pour retrouver les détails sur une option spécifique, vous pouvez exécuter le code ci-dessous :
Ex: proc options option=sasmstore DEFINE ; run;
Vous pouvez également exécuter la commande suivante pour retrouver les options restreintes actuellement par l'administrateur du site:
PROC OPTIONS RESTRICT; RUN;
Si vous essayez de changer une option restreinte par votre administrateur, vous recevrez un avertissement.
Ex : 1) Dans votre fichier global (!SASROOT\rstropts\rsasv9.cfg) ajouter l’option (-NOTHREADS)
2) Si vous exécutez le code suivant :
options THREADS;
PROC OPTIONS RESTRICT; RUN;
Vous aurez un avertissement dans le journal:

Aide en ligne : Using SAS System Options
- Catégories : Windows
- OS : Windows uniquement
- Version : 9.2 et au-delà
- Vérifié en décembre 2014
Comment augmenter les performances de SAS Base en plaçant la WORK en mémoire ?
Si le PC de l'utilisateur dispose d'une grande quantité de mémoire vive (au-delà de 4Go de RAM), alors il est possible de paramétrer SAS pour placer la WORK en mémoire vive.
Pour cela, il suffit de démarrer SAS avec l'option :
-memlib
Cette option peut être placée dans le fichier SASV9.CFG ou dans le champ « Cible » des propriétés de l'icône SAS :
Exemple de commande :
C:\SAS92\install\SASFoundation\9.2\sas.exe -CONFIG
C:\SAS92\install\SASFoundation\9.2\nls\en\SASV9.CFG -memsize 4g -memlib
Conditions :
Il faut que l'utilisateur qui exécute SAS dispose de la permission de verrouiller des pages mémoires.
Il faut également spécifier un paramètre –MEMSIZE au maximum équivalent à la mémoire RAM disponible sur l'ordinateur.
En effet, la WORK utilisera de manière réservée cette mémoire vive toute la durée de vie de la session SAS.
Limitations :
Ainsi, la bibliothèque WORK est considérée par SAS comme un disque dur de faible capacité. Si les besoins en WORK dépassent la valeur allouée (égale à la valeur de –MEMSIZE), alors, des messages d'erreur apparaîtront et concerneront des fichiers incomplets en WORK.
Par ailleurs, la mémoire RAM est volatile, si l'ordinateur est éteint ou le processus SAS.EXE est arrêté, les données contenues dans la WORK disparaitront.
Comparaisons :
Le test ci-dessous compare le temps d'exécution du tri d'une table de 625Mo (1 million de lignes) générée avec le code macro fourni dans l'article.
La session SAS dispose de paramètres MEMSIZE=3G et SORTSIZE=64M
1/ sans l'option MEMLIB
91 proc sort data=bigdata out=bigdata2;
92 by var1;
93 run;
NOTE: There were 1000000 observations read from the data set WORK.BIGDATA.
NOTE: The data set WORK.BIGDATA2 has 1000000 observations and 20 variables.
NOTE: PROCEDURE SORT used (Total process time):
real time 1:09.68
cpu time 6.06 seconds
2/ Avec l'option MEMLIB
28 proc sort data=bigdata out=bigdata2;
29 by var1;
30 run;
NOTE: There were 1000000 observations read from the data set WORK.BIGDATA.
NOTE: The data set WORK.BIGDATA2 has 1000000 observations and 20 variables.
NOTE: PROCEDURE SORT used (Total process time):
real time 2.20 seconds
cpu time 4.07 seconds
Bilan : Le même traitement est exécuté 31,6 fois plus rapidement quand le tri est réalisé dans la WORK qui est stockée en mémoire vive.
- Catégories : SAS/BASE
- OS : Windows
- Version : 9.3 et au-delà
- Vérifié en février 2014
Comment obtenir la liste des bibliothèques assignées et utilisables dans la session SAS en cours ?
La vue SASHELP.VLIBNAM vous permet de visualiser toutes les bibliothèques assignées pour la session SAS courante.
L’exécution du code ci-dessous liste également les bibliothèques assignées pour la session SAS courante, dans le journal :
Libname _all_ list;
Aide en ligne : Libname statement, SASHELP.VLIBNAM
- Catégories : SAS/Base
- OS : Unix, Windows, z/Os
- Version : 9 et au-delà
- Vérifié en octobre 2010
Comment créer un alias pour le moteur SASIOIME ?
Par défaut le moteur permettant de lire une information map porte le nom de SASIOIME.
Afin de simplifier le nom pour son utilisation, un alias INFOMAPS peut être créé en utilisant la procédure NICKNAME comme ci-dessous :
proc nickname cat=sashelp.core;
add nickname=infomaps
module=sasioime
desc = "Information Maps LIBNAME engine"
prefered
engine;
run;
quit;
Attention : Afin de pouvoir créer un alias sur le moteur sasioime il est indispensable de disposer des droits d’écriture sur la bibliothèque SASHELP. Dans le cas contraire, le message d’avertissement suivant apparaitra dans le journal.
WARNING: Catalog could not be opened for UPDATE. BROWSE mode assumed
Documentation : Helpful Undocumented Features in SAS®