Les Allergies
Alimentaires
Posez votre question Signaler

[SAS] lancer programme SAS par batch [Résolu]

Aza - Dernière réponse le 15 févr. 2006 à 19:46
Bonjour,

J'aimerais lancer un programme SAS à partir d'un script unix (.sh).
J'y arrive en utilisant la commande suivante :

$SASEXE -sysin $DIR/$PGMSAS -log $FILE_LOGSAS

avec :
SASEXE=/exploit/sas82/sas
DIR=/app/CASTING/prog/pgmsas/repa
PGMSAS=repa_lirehisto.sas
FILE_LOGSAS=/app/CASTING/log/histo.logSAS.$JOUR

Par contre, lorsque je souhaite passer un paramètre au programme sas, je n'y arrive pas.

Est-ce possible ? Si oui, comment doit-on faire (où mettre le paramètre, avec quelle syntaxe) ?

Merci bcp d'avance...
Lire la suite 

[SAS] lancer programme SAS par batch »

7 réponses
Réponse
+1
moins plus
Salut,

Merci encore pour ta réponse. De fil en aiguille, j'ai fini par obtenir la réponse... La voici, si ça t'intéresse.

a+
Aza


______________________________

Il existe plusieurs façons de récupèrer une variable d'environnement avec SAS sous Unix.
La plus élégante est d'utiliser la fonction macro %SysGet(), qui fait exactement ce que tu veux faire.

Exemple :

Dans le script Shell on a quelque chose comme :

#-- Les variables pour lancer SAS
JOUR=????
SASEXE=/exploit/sas82/sas
DIR=/MONREP
PGMSAS=MonProg.sas
FILE_LOGSAS=${MONREP}/log/MonProg.logSAS.${JOUR}

#-- La variable que je veux récupérer dans SAS qui contient l'argument de ma macro
MaVariable=MonArgument

#-- ATTN : Cette variable doit être une variable d'environnement ...
export MaVariable

#-- On lance le programme SAS
${SASEXE} -sysin ${DIR}/${PGMSAS} -log ${FILE_LOGSAS}

Le programme SAS MonProg.sas ressemblera à ça :

Option NoNotes;
%MACRO Macro1(param);
%Put =====> Le parametre passé à la Macro est : ¶m ;
%MEND;
Option Notes;

%Macro1(%SysGet(MaVariable));

Et voila ...
En lançant le script, tu devrais voir apparaitre dans la Log la ligne suivante :
=====> Le parametre passé à la Macro est : MonArgument
hssissen- 15 févr. 2006 à 19:46
Merci, je garderai ça dans ma librairie!
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Dis nous comment tu fais passer ton parametre a ton programme?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour et merci,

Voici les tests que j'ai faits :
(sachant que ma macro est déclarée comme ça :
%macro repa_lirehisto(env=); )

$SASEXE -sysin $DIR/$PGMSAS(env=R) -log $FILE_LOGSAS
> dans ce cas, la log me dit que la parenthèse ( est inattendue

$SASEXE -sysin $DIR/$PGMSAS R -log $FILE_LOGSAS
> dans ce cas, sas cherche à exécuter R.sas

j'ai même essayé ça, bien que ça semble tout à fait tordu :
PGMSAS=repa_lirehisto(env=R).sas
puis
$SASEXE -sysin $DIR/$PGMSAS -log $FILE_LOGSAS
> dans ce cas, c'est à la déclaration de PGMSAS que ça plante


J'ai beau chercher de la doc sur ce sujet, je ne trouve rien !

Sais-tu comment faire ?

Merci d'avance,
Aza
hssissen- 15 févr. 2006 à 14:56
Salut,
Je ne suis pas sur de te comprendre, mais j'essaie qusnd même:

Tu as donc une macro dans un programme SAS et que tu veux passer un parametre a ta macro lors de l'execution de ton programme SAS.
Moi a ta place, je passerai le parametre de la macro lors de l'appel de ta macro dans le programme SAS et je l'execute en Batch avec:

SAS ton_programme.sas

C'esr ca que tu veux faire?
Ajouter un commentaire
Réponse
+0
moins plus
Re bonjour,


Oui c'est vrai que ce n'est pas très clair, désolée :-s et en tout cas merci de te pencher sur la question !

En fait, le programme SAS qui contient la macro est le même quelque soit l'environnement dans lequel je suis (quelque soit le serveur à partir duquel j'exécute le programme), et il doit rester le même. du coup, je ne peux pas appliquer ta solution...

Cependant, je voudrais avoir un comportement différent selon l'environnement.

Par contre, le script qui lance le programme SAS est, lui, différent selon l'environnement, je voudrais donc passer l'environnement en paramètre dans le batch, poru pouvoir le récupérer dans le programme, et donc la macro.

Mais je ne sais pas si c'est possible... (en effet, il y a une différence entre passer un param dans le programme ou dans la macro !!!)

J'espère avoir été plus claire !

merci
aza
hssissen- 15 févr. 2006 à 16:45
Oui maintenant je crois que c'est plus claire. J'avoue que je n'ai jamais abordé ce type problème bien que je travaille sur SAS depuis des années et toujours sur un même système (Linux). Un conseil que je peux te donner est de consulter le support technique SAS pour te débloquer.

http://support.sas.com/index.html.

Désolé de ne pouvoir t'aider, toujours est-il que si une solution a ton problème me traverse l'esprit je te tiendrai au courant.
Bonne chance.
Ajouter un commentaire
Ce document intitulé « [SAS] lancer programme SAS par batch » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?