Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    Chemin pour appeler des fichiers et des programmes
    Bonjour,
    J'ai deux ordinateurs indépendant l'un de l'autre. Jusqu'à présent, tous mes programmes SAS était sur un seul ordinateur. Toutes les adresses sont écrites en dur ; aussi bien dans les importations de fichiers que dans le programme principal.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    %include 'P:\VI\ImpPh01Po.sas';
    %include 'P:\VI\ImpPh02Be.sas';
    ....


    Maintenant, il faut que mes programmes puissent tourner sur n'importe quel ordinateur. Sachant que le programme principal fait appel à une trentaine de fichiers, je ne sais pas comment faire pour avoir le moins de modifications à effectuer au niveau de l'adresse . J'ai essayé avec un %let pour définir le chemin mais la log dit que les fichiers n’existent pas.
    Mes programmes d’importation ressemblent à
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data Vi.ImpPoDi;
        %let _EFIERR_ = 0; 
        infile 'P:\Mes Documents\ViM\DMI\01\20180710\E1.txt' delimiter='09'x MISSOVER DSD lrecl=32767 firstobs=2 ;
    ...
    run;


    Est-ce que quelqu'un voit comment je peux m'en sortir?
    Merci d'avance.

  2. #2
    Membre éprouvé
    Chemin pour appeler des fichiers et des programmes
    Bonjour,

    Il faut utiliser des guillemets doubles autour du chemin pour que la macro-variable soit interprétée :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1  %let path=e:\donnees\sas;
    2
    3  %include '&path.\autoexec.sas';
    WARNING: Physical file does not exist,
             C:\...\autoexec.sas.
    ERROR: Cannot open %INCLUDE file &path.\autoexec.sas.


    mais

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4  %let path=e:\donnees\sas;
    5
    6  %include "&path.\autoexec.sas";


    s'exécute correctement,

    Cordialement,

  3. ###raw>post.musername###
    Membre émérite
    Bonjour,

    Pour saisir un chemin réseau en SAS 3 cas :

    1) vous travailler sur le "serveur" SAS ou bien SAS est directement installé en "dure" sur votre poste, vous pouvez utiliser ceci :

    Code chemin reseau :Sélectionner tout -Visualiser dans une fenêtre à part
    C:\dossier


    2) vous travailler sur le "serveur" SAS en mode "client/serveur" , vous devez utiliser ceci :

    Code chemin reseau :Sélectionner tout -Visualiser dans une fenêtre à part
    \\serveur\dossier\...


    Quand vous travaillez en mode client/serveur sur SAS , en saisissant du "C:\" , vous exécute sur le C du serveur SAS et non votre poste !

    Pour envoyer des élèments du serveur SAS sur poste vous devez remplacer :

    Code chemin reseau :Sélectionner tout -Visualiser dans une fenêtre à part
    \\serveur\...
    par son IP ou le nom de votre machine .
      0  0

  4. #4
    Membre éprouvé
    Bonjour,

    Il est généralement très déconseillé de mettre des adresses IP en dur dans les programmes. Les bonnes pratiques tendent à créer des "libname" dans la SMC, d'accorder des droits à ceux qui vont s'en servir, puis de simplement citer les libname (sans les définir puisque c'est déjà fait dans la SMC) dans le code.
    Quand on migrera d'un environnement à un autre, il n'y aura rien à faire, sauf recréer ces bibliothèques dans la SMC cible (ou bien exporter les définitions des bibliothèques depuis la SMC source et importer les métadonnées dans la SMC cible. Ça fait gagner un temps fou.
    Pour ceux qui n'aiment pas les métadonnées, ben continuez comme avant et perdez votre temps
    Dans Viya (dernière version de SAS, qui cohabite avec la plateforme 9 aujourd'hui), il n'y a plus de métadonnées, mais un équivalent existe, bien pratique. La SMC n'existe plus non plus, tout se fait dans Environnement Manager ou dans des interfaces équivalentes à la SMC (ça dépend des composants, mais tout tend à se fondre dans EV).
    My 2 cents.

###raw>template_hook.ano_emploi###