2016-02-25 1 views
0

J'ai écrit deux programmes SAS EG différents sous le même projet. La première consiste à estimer un paramètre, disons A, qui sera utilisé dans le second programme. À l'heure actuelle, une fois le premier programme terminé, j'ai manuellement défini le paramètreVariable globale dans SAS EG

%let A = 0.1; 

dans le deuxième programme. Je me demande simplement s'il existe un moyen de déclarer A comme une variable globale une fois qu'elle a été calculée dans le premier programme et que mon deuxième programme peut l'utiliser sans la saisie manuelle?

Merci.

+0

La valeur, A dans une table, plutôt que la variable macro? Si c'est le cas, vous pouvez créer une variable de macro à partir de cette table de plusieurs façons - proc sql ou une étape de données sont deux options. – Reeza

+0

Oui, c'est un nombre estimé dans le premier programme, disons 0,1. Est-il possible de donner un exemple de création d'une variable macro ici? Je suis nouveau à SAS macro. Merci. – Ben10

Répondre

0

Les variables globales de macro persistent pour une session SAS entière (sauf si vous les supprimez). Cela signifie que dans une session EG, si vous exécutez votre instruction% LET dans le premier programme, elle sera créée dans la table des symboles de macro globale de la session. Il sera alors disponible pour être utilisé dans tout autre programme exécuté pendant cette même session SAS.

Une session SAS persiste dans EG jusqu'à ce que vous fermiez EG ou que vous vous déconnectiez manuellement du serveur SAS.

0

En option séparée au-delà de la portée de l'EG, si vous deviez exécuter 2 programmes distincts en mode non interactif une bonne façon de variables de partage (ou les paramètres de toute sorte) est de les stocker dans un fichier et de les lire au début du programme suivant. L'utilisation de call symputx pour affecter une variable globale permettra ensuite à ces variables de persister dans votre nouveau programme.