|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 6 ![]() |
![]() Bonjour, un répertoire sur un serveur SAS contient un bon nombre de macros. Quelques unes d'elles sont utilisées régulièrement par plusieurs personnes. Le problème est que lorsque l'un de nous a sa session ouverte, cela bloque l'accès aux macros pour les autres. I a-t-il un moyen d'accéder aux mêmes macros au même moment sans les copier en dur sur le programme. Peut-être une option spéciale dans le %include ou autre chose? Merci pour vos réponses |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
Bonjour,
Est ce que c'est possible d'expliquer la notion de bloquer? Vous êtes sur quel type de serveur? C'est un catalogue de macro ou des fichiers plats? Cordialement. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 6 ![]() |
bonjour bahraoui
je ne sais pas exactement si c'est unix (je pense que c'est ça que tu voulais savoir) en tout cas l'ensemble des macros individuelles se situe dans un répertoire sur ce serveur et par exemple, si ma session est ouverte et que l'un(e) de mes collègues ouvre sa session et lance un programme faisant appel à une de ces macros il lui délivre un message d'erreur du style :"macro toto vérouillé par another process" Du coup la seule solution temporaire qu'on a trouvé c'est de copier en dur les macros dans nos programmes. Mais ça va vite devenir ingérable. Merci par avance. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
C'est bizzare!!!
C'est un catalogue de macros ou des fichiers plats? Vous accédez comment à ces macros? vous faites un %include "chemin vers programme/prg.sas";?? Vous utilisez tous le même compte? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 6 ![]() |
oui %include pour accès aux macros
on a chacun un poste unique mais on a un groupe d'accès au répertoire quant à "catalogue de macros ou fichiers plats" je ne saisis pas trop la différence |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
Vous faites un %include "repertoire/prg.sas".
Je crois que le problème est dans cette phrase "un groupe d'accès au répertoire". Ce qui se passe c'est qu'il y a un verrou qui verouille le fichier tant qu'il est utilisé par un utilisateur. Je crois qu'il fadrait voir ce problème avec l'administrateur. |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 6 ![]() |
ok merci je vais voir ça avec l'admin
je vous tiens au courant
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 233 ![]() |
Peut-être je dirai une connerie, mais pourquoi faire le répertoire du système de fichier avec des fichiers .SAS pour les inclure ensuite dans les programmes (si j'ai bien compris, c'est ce que vous faites), au lieu de mettre les macros (compilées) dans un catalogue de SAS et les exécuter directement par le nom ? Tu vois la différence ?
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 6 ![]() |
Un répertoire sur le serveur contient toutes les macros
Dans mon code pour chaque projet je compile toutes les macros en les appelant par des %include. De cette manière lorsque j'utilise l'une d'elles, elles sont automatiquement chargées. Je n'ai pas trop bien saisi l'histoire de catalogue mais je pense que c'est que je fais en quelque sorte |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() |
J'ai déjà travaillé de cette manière, est je n'ai jamais eu ce type de problème.
Il faut voir avec l'administrateur du serveur. il y a un problème d'accès concurent. Les fichiers sont verouillés en mode lecture (pas normal). |
|
|
00
|
|
|
#11 | |
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 233 ![]() |
Citation:
En gros, qu'est-ce que c'est qu'une macro ? Tu "exécute" le code entre %macro et %mend, SAS le prépare (compile) et garde dans un catalogue (presque la même chose qu'une bibliothèque). Ensuite tu exécute la ligne %nom_de_ton_macro; - SAS exécute le code associé à ce nom. Par défaut, le catalogue de stockage des macro est temporaire. Comme WORK - tout le contenu est visible uniquement dans cette session et disparait après sa fermeture. Mais tu peux préciser le catalogue où mettre les macros compilés, et - exactement comme pour les bibliothèques - le macro sera visible pour tous les utilisateurs, et en plus elle deviendra persistant, i.e. sera accessible à la réouverture d'une session. Voilà, en gros, le fonctionnement des catalogues des macros. Et quand tu fais %include, c'est comme si tu fais tes macros dans le catalogue personnel/temporaire. Même sans "si" - c'est dans ton catalogue temporaire. C'est juste le fichier (qui est en dehors du périmètre de SAS) de source de a macro qui est partagé. |
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 6 ![]() |
merci green_fr
mais comment lui spécifier la biblio (catalogue) dans laquelle tu stockes les compilations. |
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 233 ![]() |
Il y a des options pour ça.
Cette option dit à SAS qu'il faut stocker les macros qu'on veut stocker dans la bibliothèque libref. Option /store dit que la macro est à stocker. Attention, si tu ne met pas l'option source, SAS ne garde que le code compilé. C'est-à-dire, si tu perd la code source, c'est foutu pour les modifications : la macro marche, mais tu n'as aucune possibilité de la modifier. Après il y a aussi proc catalog pour voir la liste des macros dans telle ou telle bibliothèque et (s'ils ont été créées avec une option source) voir la source. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com