8. The following SAS program is submitted:
%let first=yourname;
%let last=first;
%put &&&last;
What is written to the SAS Log?
A. First
B. Yourname
C. &&First
D. &yourname
정답 : B
해설 : 단골 출제 문제입니다. &의 참조 개수에 따른 참조 위치를 묻는 문제에요.
이를 "Forward Re-Scan Rule"이라고 부릅니다. 한번 더 스캔한다는 규칙이구요, 두 번 참조시 매크로 프로세서는 && 두 개를 & 한 개로 인식하기 때문에, 두 번 참조를 위해선 &&& 이렇게 세 개로 써주셔야 합니다.
즉, 매크로 프로세서는 &&& 세 개를 써도 Re-scan Rule에 의해 두 번의 참조로 인식하게 됩니다.
&&&last는 &first로 인식되고, &first는 yourname을 가르키고 있으니, 정답은 yourname이 됩니다.
9. The following SAS program is submitted:
%let a=cat;
%macro animal(a=frog);
%let a=bird;
%mend;
%animal(a=pig)
%put a is &a;
What is written to the SAS log?
A. a is pig
B. a is cat
C. a is frog
D. a is bird
정답 : B
해설 : &a 가 참조하는 값을 찾는게 중요한 문제입니다. Global 변수와 Local 변수의 차이를 묻는 문제이기도 하네요. 현재 Global 매크로 변수 a에 Cat이 할당되어 있으므로, 매크로 호출이 끝나고 나면 &a 참조값은 cat으로 돌아갑니다.
10. What is the purpose of the SASFILE statement?
A. It requests that SAS data set be opened and loaded into SAS memory one page at a time
B. It requests that a SAS data set the opened and loaded into SAS memory one variable at a time
C. It requests that a SAS data set be opened and loaded into SAS memory one observation at a time
D. It requests that a SAS data set be opened and loaded into SAS memory in its entirety
정답 : D
해설 : SASFILE 문의 목적을 묻는 문제입니다.
"SASFILE statement to hold a SAS data file in memory so that the data is available to multiple program steps." , 그리고 "The SASFILE statement opens a SAS data file and allocates enough buffers to hold the entire file in memory" 라고 Prep guide에 명시되어 있습니다. 최적화와 관련된 문장인데, SASFILE 문은 SAS 메모리에서 데이터 전부를 로드, 오픈하고 데이터를 위한 충분한 버퍼를 할당해줍니다.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!