私はこのサークルに1.5時間入っていますので、ここで助けを求めています。私がしようとしているのは、単純な死者ですが、私の人生はプロセスを説明するリンクを見つけることができません。日付値は、マクロ関数に渡されデータステップで設定されたマクロ引数の数値を取得するには
data _null_;
some_date = "01JAN2000"D;
call symput('macro_input_date',left(put(some_date),date9.)));
%useful_macro(¯o_input_date);
run;
は(私はこれらに新たなんだ):
は、私は、次のデータのステップがあります。私は日付の値の数値を使用したいと思います - 私は年の値を取得し、日の値でそれを掛けて、そして月の値を3で割った後の余りを引いてみましょう。入力からちょうど年の価値を得るように見えません。
- に裸の参照を持っている:私は両方の「裸の」と、すべての可能な次のバリアントの順列を表す引数を使って、「%」を先頭に付け、
symget
ような様々なものを試してみました変数、例えばmacro_input_date- を一重引用符で囲みます。 'macro_input_date'
- は、二重引用符で囲みます。 "macro_input_date"
- の先頭にアンパサンドが付いています。
%sysfunc(year(<argument as variously specified above>)
に& macro_input_date
ありがとうございます!
何をしようとしていますかあなたはマクロ変数に入り、それを取り戻す必要がありますか?詳細が必要です。さもなければ基本的な答えはこれをすることではありません... "有用なマクロ機能"は何をしていますか?あなたが指定した方法では、マクロ関数ではありません(それらは等号の右側になければなりません)。 – Joe
あなたの問題はちょうどタイミングの1つですか? call symput()が生成した値をマクロが使用するようにするには、 '%useful_macro()'の呼び出しの前に 'RUN;'ステートメントを動かしてください。 – Tom
@ジョー、あなたは私が値を割り当てていたはずです。基本的に私はGUI(DI)を使用しており、例えば日付値を対応する整数表現(例えば20000101)に変換したいと考えています。これはデータステップで行うのは簡単ですが、私は効率的で、すでにデータを繰り返し処理している変換でそれを行いたいと思っています。 GUIの限界により、これは2つの変換を使って式*と*を書き直すことを意味します。反復プロセスを合理化するために、GUI変換から呼び出すことのできる関数を作成したいと考えています。優れたアプローチがありますか?ありがとう! – Rookatu