Salut,

Aviez vous déjà constaté que le répertoire WORK d'une session EGuide se situait dans un sous répertoire?

Exemple je fais pointer la SASUSER vers la WORK:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
%put %sysfunc(getoption(SASUSER, keyword));
SASUSER=WORK
Chemin associé à SASUSER :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
libname SASUSER list;
NOTE: Libref=   SASUSER 
      Scope=    Kernel  
      Engine=   V9
      Access=   READONLY, TEMP
      Physical Name= /apps/sas/saswork/SAS_workE180011D00E0_parva2417713
      Filename= /apps/sas/saswork/SAS_workE180011D00E0_parva2417713
      Inode Number= 53284
      Access Permission= rwxrwxr-x
      Owner Name= zz
      File Size (bytes)= 4096
Alors que la WORK est dans un sous-répertoire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
libname WORK list;
NOTE: Libref=   WORK 
      Scope=    IOM ROOT COMP ENV
      Engine=   V9
      Access=   TEMP
      Physical Name= /apps/sas/saswork/SAS_workE180011D00E0_parva2417713/SAS_workF15D011D00E0_parva2417713
      Filename= /apps/sas/saswork/SAS_workE180011D00E0_parva2417713/SAS_workF15D011D00E0_parva2417713
      Inode Number= 53291
      Access Permission= rwxrwxr-x
      Owner Name= zz
      File Size (bytes)= 256
J'ai créé un autoexec avec ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
%macro getDirInfo(dir=, output=WORK.DIR_LIST);
   filename _filrf temp;
   data &output;
      length DIR $ 1000 MEMBER $ 1000;
 
      DIR = "&dir";
      rc = filename('_filrf', "&dir");
      did = dopen('_filrf');
      if did > 0 then do;
         memcount = dnum(did);
         do i = 1 to memcount;
            MEMBER = dread(did, i);
            keep DIR MEMBER;
            output;
         end;
      end;
   run;                                       
   filename _filrf clear;
%mend getDirInfo;
 
%getDirInfo(dir=%sysfunc(pathname(SASUSER, L)));
libname WORK list;
Résultat la table DIR_LIST est créée dans SASUSER, pas dans la WORK.
Et pas de trace du sous répertoire, contenu de DIR_LIST :

  • dir_list.sas7bdat.lck
  • profile.sas7bcat
  • regstry.sas7bitm
  • sas.lck
  • sasmacr.sas7bcat



Je ne peux donc utiliser l'autoexec pour créer automatiquement des tables dans la WORK car le répertoire associé va changer...

zarb!

X