¿Por qué no se resolverá mi macrovariable?

Tengo una variable macro, &myvar , pero no se resolverá cuando intente ponerlo en una variable de paso de datos. ¿Por qué no lo hará y qué puedo hacer para solucionarlo?

 %let myvar=Hello, world; data _null_; x='&myvar.'; put x=; run; 

Las variables de macro en SAS no se resolverán cuando estén entre comillas simples, '&myvar' . Deben estar entre comillas dobles, "&myvar" , para poder resolverlas correctamente.

Si necesita tener comillas simples y una variable de macro resuelta, tiene algunas opciones, pero la más simple es:

 %str(%'&myvar.%') 

El %' dentro de %str colocará un carácter de comilla simple (o un apóstrofo) en la cadena de texto por sí mismo sin hacer que se cotice.

 data _null_; x="%str(%'&myvar.%')"; put x=; run; 

o

 %let myvar2 = %str(%'&myvar.%');