2014-09-30 4 views
0

왜이 매우 쉬운 매크로 프로그램 :SAS 간단한 매크로 - 오류

%macro test1(N=,NN=); 
proc iml; 
start fun_test(x) global(&NN,&N); 
x=&NN+&N; 
finish fun_test; 
call fun_test(x); 
print x; 
run; 
quit; 
%mend test1; 
%test1(N=10,NN=22); 

오류를 준다? :

 22 
ERROR 22-322: Expecting a name. 
ERROR 200-322: The symbol is not recognized and will be ignored. 
+0

사실, 정답을 제공하지만,이 오류가 여전히 – Math

+0

은 더 좋아해야하지 : '% 매크로 TEST1 (N, NN); proc_iml; fun_test을 시작 (X), 글로벌 (NN &N); X = &NN+&N; 마무리 fun_test, 전화 fun_test (X) 인쇄 X, 는 실행; 종료, %의 수선의 TEST1을, %의 TEST1 (10,22)를; ' – jaymarvels

+0

@ jj72uk 고맙습니다.하지만 여전히 같은 오류가 있습니다. – Math

답변

1

START 문에 GLOBAL 절에 유효한 SAS 식별자의 이름이 필요합니다. 매크로를 호출하면 프로그램은

start fun_test(x) global(22,11); 
    ... 

으로 유효 구문이 해석되지 않습니다.

어쩌면 이것이 당신이 찾고있는 것일까요?

%macro test1(N=,NN=); 
proc iml; 
start fun_test(x) global(N,NN); 
x=N + NN; 
finish fun_test; 
N = &N; NN = &NN; 
call fun_test(x); 
print x; 
run; 
quit; 
%mend test1; 
%test1(N=10,NN=22);