2016-08-04 9 views
1

私は2つの異なるSASプラットフォームを持っており、それぞれのプラットフォームでマクロを実行してレポートを作成します。ユーザは自動マクロ変数を定義できますか?

は、私は私がファイルの場所が含まれている自動変数「MACRO_PATH」を作成されたい何

%include "&MACRO_Path.";

使用しています。だから私がSASセッションを開始するときに、そのMACRO_PATH変数にファイルの場所を定義する必要はありません。

私は、コード行を含む場所に自動実行可能ファイルを作成できますが、自動マクロ変数を作成できるかどうか疑問に思っています。 私はまた、自動マクロ変数がマクロプロセッサによって作成されたものであることを知っています。

しかし、回避策はありますか?

+0

私はあなたが "自動マクロ変数"という意味を理解しているかどうかはわかりません。あなたはautoexecオプションについて知っているようです。あなたは精緻化できますか? – Therkel

+0

どのようにSASを実行していますか?このDM SAS(「デスクトップ」SAS)か、エンタープライズガイドかSASスタジオかテキストエディタか、何か他のものはありますか? – Joe

+0

@Joe私はSAS Enterprise Guideを使用しています。 – user2676132

答えて

4

ホストが2つしかなく、どのホストがどちらであるかわかっている場合は、SYSSCPまたはSYSHOSTNAMEを使用できる可能性があります。たとえば、あるものがWindowsホストで、もう1つがUNIXホストであれば、これを行うかもしれません。あなたがエンタープライズ・ガイドを使用している場合

%let macro_path=%sysfunc(ifc(&sysscp=WIN,c:\mymacros,~/mymacros)); 
+0

良い提案。私はまた、それを置く適切な場所はautoexec.sasファイルにあると思う。そうすれば、HOST名が変更された場合、そのすべてのコード行を含む500種類のSASファイルを更新する必要はありません。 –

+0

いいえ、私はifc関数を知らなかった –

+0

これは多くのSASプログラマーにとってはうってつけの提案だと思いますが、近代的な開発実践のためにはあまりにも多くのことがあります。特にautoexec.sasプログラムでは、ハードコードされたパスを隠すよりも、少しだけ作業が良いでしょう。 – Joe

0

、あなたはAUTOEXECのプロセスフローを使用してプロジェクトレベルでこれを行うことができます。 1つのプロセスフローに「Autoexec」と名前をつけ、プロジェクトを開いたときにそのプロセスフローを自動的に実行するオプションを選択します。

Dev、Test、Prodなどのプロジェクトでは、バージョンコントロールで同期されていないファイルをプロジェクトディレクトリに保存することが一般的です(相対ファイルパスを有効にする必要があります[ファイルの参照]の[プロジェクトのプロパティ])。これには、環境に固有のマクロ変数の値が含まれています。

次に、そのショートカットがautoexecプロセスフローに格納されます。プロジェクト自体はバージョン管理されているので、私は開発者の変更をテストまたはプロダクトと同期させると、正しいローカル参照があります。

関連する問題