2015-01-14 15 views
7

Makro değişkeni var, &myvar, ancak veri adımı değişkenine koymaya çalıştığımda çözülmez. Neden olmasın ve bunu düzeltmek için ne yapabilirim? onlar tek tırnak olduklarında SAS'daMakro değişkem neden çözümlenmiyor?

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

Bu yineleme olarak soruları kapatmak için kullanılmak üzere tasarlanmıştır. Eğer bir başkası zaten mevcut olanı iyi bulursa, onu kullanmaktan memnun olurum, ama kafa karıştırıcı olabilecek başka karmaşıklıkları olmayan birini bulabilirdim. – Joe

+2

@NEOmen Bazı durumlarda, diğer sorulara göre daha az karmaşıklığa sahip, ancak yine de sıkça ortaya çıkan bir şeyi cevaplayan ve daha sonra kopya olarak kullanabilecek 'kukla' bir soru oluşturmak daha kolaydır. 'Kukla' soru, teknik olarak kendi başına iyi bir soru olmalı (bu olduğu gibi), fakat elbette bilgi bulma amacına yönelik değildir :) – Joe

cevap

8

Makro değişkenler '&myvar', çözmez. Düzgün çözmek için çift tırnak işareti, "&myvar" olması gerekir. Eğer tek tırnak ve çözülmesi makro değişken olması gerekiyorsa

, birkaç seçenek var, ama en basit olanıdır:

%str(%'&myvar.%') 

%str%' tek tırnak karakteri (veya kesme işareti) yerleştirecektir Metin dizgisinde kendi başına alıntı yapılmasına neden olmadan. Tek sorun çift makro değişkenler alıntı/tek olduğu

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

veya

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

Makro ifadelerinin çözülüp çözülmediğini belirleyen dış alıntıdır. Dizgiyi zaten çift tırnak işareti ile çevreliyorsanız, tek tırnakları korumak için% STR() gerekli değildir. Sadece "'ve myvar'" kullan. Bir makro ayarında bunu şu şekilde yapabilirsiniz:% sysfunc (dequote ("'& myvar' ')) – Tom

+1

Sanırım Joe, makroyu nasıl çözebileceğinizi ancak tek tırnak işaretleri kullanabileceğinizi gösteriyordu. veya SYSTASK komutu. –