Archive for the ‘Unix’ Category

h1

Lister fichiers et répertoires sous UNIX

novembre 2, 2013

La fonction call system permet dans le cas présent de stocker du code Unix pour rechercher des fichiers dans des répertoires données. Le résultat de la recherche est stocké dans un fichier .txt qui est lu dans une étape data.

1. Créer une macro variable pour stocker le chemin d’accès de la bibliothèque WORK

Le chemin d’accès à la bibliothèque WORK est extrait avec la fonction système PATHNA?E et est stocké dans la macro variable WORKDIR. Ce chemin d’accès sera celui où sera sauvegardé le fichier .txt de la recherche.

%let workdir=%sysfunc(pathname(work));

2. Utiliser call symput pour appeler la commande find d’UNIX 

La commande find est suivie de trois composants :

  • le chemin d’accès au(x) fichier(x) d’entrée. L’astérisk indique que tous les sous répertoire du répertoire PROJET sont consultés
  • le chemin d’accès au fichier final (ici resultat.txt) où sera stocké le résultat de la recherche. Dans l’exemple, le fichier est stocké de manière temporaire dans le répertoire utilisé par la bibliothèque WORK de SAS.
  • La page anglaise de Wikipedia http://en.wikipedia.org/wiki/Find explique que le code 2>/dev/null supprime des messages d'erreurs liés à des droits d'accès.

« If you’re doing this as a user other than root, you might want to ignore permission denied (and any other) errors. Since errors are printed to stderr, they can be suppressed by redirecting the output to /dev/null. »

Dans le second appel le double >> permet d’ajouter au fichier existant le résultat de la recherche au lieu de remplacer l’ancien.

data _null_;
   call system ("find c:/projet/*/demographie.sas7bdat > &workdir./resultat.txt 2>/dev/null
                      c:/project/*/laboratoire.sas7bdat >> &workdir./resultat.txt 2>/dev/null");
run;

L’étape data  sert à lire le fichier .txt et de la trocker dans un dataset (ici REF) via infile/input. Des options à l’instruction infile peuvent être ajoutées pour lire le fichier correctement.

data ref (keep=);

   infile "&workdir./resultat.txt" ;*lrecl=2000 truncover firstobs=1;

   input pathdsn $1-100;

run;
h1

Quel chemin prendre sous Unix?

février 5, 2008

Lors de l’utilisation des commandes Unix, vous avez le choix entre deux notations pour désigner le chemin d’accès à un dossier ou à un fichier.

1. La distinction entre un chemin relatif et un chemin absolu : pour désigner un répertoire ou un fichier deux possibilités s’offrent à vous :

  • Soit vous précisez l’intégralité de son chemin d’accès (chemin absolu).
  • Soit vous entrez le chemin d’accès à partir de l’endroit où vous vous situez actuellement (chemin relatif).

Prenez l’exemple suivant : vous avez un chemin à cinq niveaux c:/monprojet/monetude/dm/test. Si vous vous situez au niveau 2 (monprojet) et voulez vous déplacer au niveau 4 (dm), vous utiliserez au choix

  • le chemin absolu c:/monprojet/monetude/dm ou
  • le chemin relatif monetude/dm.

2. L’avantage du chemin relatif : un même programme peut tourner depuis plusieurs endroits. Voici quelques exemples.

  • Dans une entreprise, le développement du programme est fait sur un serveur dédié au test. La version finale est ensuite mise sur un serveur dit de production.
  • Un étudiant pourra travailler à la fois sur les ordinateurs en réseau de l’université et sur son ordinateur personnel à son domicile.

Les répertoires supérieurs (répertoires parents) varient donc. Les sous-répertoires (répertoires enfants), quant à eux, restent identiques. Les chemins relatifs évitent les mises à jour des chemins d’accès lors de l’utilisation du programme de différents endroits.

h1

Gérer vos dossiers via UNIX, 2 raisons

janvier 26, 2008

1. Unix est très fréquemment utilisé dans le milieu professionnel : un grand nombre d’entreprises qui utilisent SAS travaillent avec de larges bases de données. Imaginez le nombre de données récoltées pour un simple appel téléphonique : le jour de l’appel, les heures de début et de fin, le numéro appelé, la zone géographique de l’émetteur et du récepteur. Ajoutez les données dérivées comme la durée de l’appel. Multipliez ce nombre de variables par le nombre d’appels et par le nombre de clients. Ajoutez les variables pour les textos et vous obtenez une base quotidienne de plusieurs millions de données. Dès lors, un système d’exploitation stable et performant sur lequel installé SAS est primordiale. Unix est donc privilégié dans la plupart des établissements.

2. Des portes ouvrent qui s’ouvrent avec les commandes propres au système d’exploitation : Alors que vous pourrez supprimer les jeux de données SAS (SAS data sets) et les catalogues SAS (SAS catalogs) à partir de la procédure datasets par exemple, vous rencontrerez de réelles difficultés pour supprimer les autres fichiers qu’il s’agisse de listing, de document Word, Excel ou de fichiers pour Internet. En plus de créer/déplacer /supprimer des fichiers, vous pouvez être amené à supprimer des répertoires ou déplacer/renommer des fichiers. Par ailleurs, pour exécuter en mode batch tous les programmes SAS d’un répertoire donné, vous aurez besoin de les lister et sauvegarder cette liste en .PGMLST. Une solution est donc de soumettre des commandes au système d’exploitation directement.