Średniki to nie wymagane do wywołań makr.
Często są one uwzględniane, ponieważ ludzie widzą średniki jako sposób na "zakończenie instrukcji" lub zakończenie linii. Osobiście wolę je uwzględnić, gdy tylko jest to możliwe, ponieważ uważam, że mój kod jest bardziej czytelny.
Pamiętaj, że makra po prostu ocenić siebie i wrócić bez względu na to, że rozwiązania, do których może być blok kodu, który wygląda jak liczba, ciąg, czy cokolwiek innego ...
Weźmy ten przykład, gdzie nie średnik jest stosowany:
%macro field_list();
name,
age,
sex,
height
%mend;
proc sql;
select %field_list()
from sashelp.class
;
quit;
Spróbuj uruchomić go na swoim komputerze z option mprint;
włączone. Wynik działania makra po prostu zwraca blok kodu wewnątrz niego. Prowadzi to do następującego kodu wykonywane:
proc sql;
select name, age, sex, height
from sashelp.class
;
quit;
Gdybyśmy mieli średnik po wywołaniu naszej makro, to kod, który SAS by spróbować uruchomić obejmowałyby średnik, który byłby nieprawidłową składnię jak tak (uwaga średnik po wysokości):
proc sql;
select name, age, sex, height ;
from sashelp.class
;
quit;
to dlatego, że średnik nie jest wymagane wywołanie makra, więc to po prostu staje w tyle i są wliczone w wykonaniu kroku.
Gdy wywołujesz makro w taki sam sposób, jak w powyższym przykładzie, to dobrze jest dołączyć średnik, ponieważ makro jest krokiem całkowicie autonomicznym. Iw otwartym kodzie nie ma nic złego posiadające obce średników tak:
%macro example2(inDS=, outDs=);
data &outDs;
set &inDs;
run;
%mend;
%example2(inDS=sashelp.class, outDs=tmp_class);
Zasadniczo ocenia się:
data tmp_class;
set sashelp.class;
run;;
Uwaga dodatkowa średnik na końcu pozostały z naszej rozmowy? Mogliśmy mieć tyle, ile chcieliśmy i kod będzie nadal działać dobrze, to znaczy:
%example2(inDS=sashelp.class, outDs=tmp_class);;;;;;
postanawia:
data tmp_class;
set sashelp.class;
run;;;;;;;
która nadal będzie działać dobrze, jak jest on ważny składnia.
Więc jeśli rozumiem to wszystko poprawnie, nie potrzebuję średnika na końcu powyższego makra, ponieważ ostatnia instrukcja ma w sobie średnik, więc dodanie średnika do% mymac (a, a) w zasadzie być tym samym, co bieg literowy; na końcu wyciągu środków? – user27008
Tak, to jest dokładnie poprawne. –