Değişim bunu yalnızca tamsayı aritmetik gerektirir sürece yeterlidir. Makro değişkenlerle kayan nokta aritmetiği yapmanız gerekiyorsa, bunun yerine% sysevalf kullanmalısınız.
Çoğu veri adım fonksiyonları iki yöntemden birini kullanarak makro değişkenlere doğrudan uygulanabilir: En sık kullanılan fonksiyonların çoğu için
1. %function()
2. %sysfunc(function())
, orada kesin makro eşdeğerleri vardır ve yapmanız gereken tek şey işlev adının önüne% bir değer ekleyin. Tam makro eşdeğerlerine sahip olmayan işlevler genellikle% sysfunc() içinde çağırarak bir makro değişkenini kabul etmek için yapılabilir. N.B. Alıntıları kaldırmazsanız, genellikle% sysfunc() yoluyla bir makro kodu parçası çağrıldığında, tek tırnak içine sarılmış bir dize beklemede olan veri adımı işlevleri başarısız olur. Örneğin.
data _null_;
x = rand('uniform');
run;
veri adımda çalışıyor, ancak bir makro değişkeni makro kod parçası aynı değeri vermek, sen çünkü makro ortamda
%let x = %sysfunc(rand(uniform));
Bu kullanmanız gerekir SAS, tekdüzen metnini bir dize olarak yorumlarken, bir veri adımında SAS, gönderilmemiş metni bir değişkenin adı olarak yorumlar.