This code works in SAS EG run on local (hidden sensitive information):
*---- two values: DEV (ALIASDEV) and PROD (ALIASPROD);
%let my_environment = ALIASDEV;
I don't know why it worked on the local, but the ampersands require a third to resolve properly. Any time you store the value of a macro variable in another macro variable, you must use three ampersands to retrieve it.
Basic use cases:
&val_sept and &val_oct, you can use &&val_&mon to retrieve it assuming %let mon=sept.&sept and &oct, then you would use &&&mon. to retrieve &sept from a variable %let mon=sept.That's because of how multiple ampersands resolve; SAS makes multiple passes through until all are resolved.
In each pass:
So:
%let x=a;
%let a=b;
%let b=c;
%put &&x;
1: &&x -> (&&)(x) -> (&)(x) -> &x
2: &x -> a
%put &&&x;
1: &&&x -> (&&)(&x) -> (&)(a) -> &a
2: &a -> b
%put &&&&x;
1: &&&&x -> (&&)(&&) (x) -> (&)(&)(x) -> &&x
2: &&x -> (&&)(x) -> (&)(x) -> &x
2: &x -> a
%put &&&&&x;
1: &&&&&x -> (&&)(&&)(&x) -> (&)(&)(a) -> &&a
2: &&a -> (&&)(a) -> (&a)
3: &a -> b
%put &&&&&&x;
1: &&&&&&x -> (&&)(&&)(&&) (x) -> (&)(&)(&)(x) -> &&&x
2: &&&a -> (&&)(&x) -> (&a)
3: &a -> b
Four ampersands is the most interesting to me, since adding one actually takes you back a step, effectively.
See my answer on sas MACRO ampersand for more detail.
You may need an extra & in your path specification, so that it resolves to "(hidden_tns_dev)" instead of "ALIASDEV", like this: path="&&&my_environment" .