11. The following SAS program is submitted:
data new (bufno=4);
set old (bufno=4);
run;
Why are the BUFNO options used?
A. To reduce the number I/O operations
B. To reduce network traffic
C. To reduce memory usage
D. To reduce the amount of data read
정답 : A
해설 : BUFNO의 기능을 묻는 문제입니다.
Prep Guide 자료의 663p 를 보면 BUFNO의 사용 목적과 기능에 대해 자세한 설명이 나와있다.
You can use the BUFNO= system or data set option to control the number of buffers that are available for reading or writing a SAS data set.
기본적으로 버퍼의 수를 지정하는 건데, 기능을 알기 위해선 버퍼에 대한 이해가 필요합니다.
버퍼는 장치간의 데이터 전송시, 처리속도의 차이를 보상해주고 양자간의 양호한 결합을 위한 기억영역입니다. 이를 버퍼, 혹은 버퍼 영역이라고 합니다. 그러면 데이터를 처리할 때, 최적의 버퍼를 할당해야 효율을 높일 수 있겠죠? 데이터는 작은데 버퍼 수가 방대하면 비효율적입니다.
I/O 는 입력 및 출력입니다. 입출력의 원활한 처리를 위해 최적의 버퍼 할당이 필요하고, BUFNO는 사용자가 직접 버퍼 수를 할당하므로 데이터 입출력의 효율을 향상시켜주겠네요.
12. The following SAS program is submitted:
%macro location;
data _null_;
call symput('dept', 'sales');
run;
%let country=Germany;
%put _global_;
%mend location;
%let company = ABC;
%location;
Which macro variables are written to the SAS log?
A. COMPANY and COUNTRY only
B. COMPANY Only
C. COMPANY and DEPT only
D. COMPANY, COUNTRY and DEPT
정답 : C
해설 : 헷갈리는 문제입니다. "log에 쓰여지는" 매크로 변수가 무엇인지 묻는 문제입니다.
중요한 건 "SAS log에 쓰여지는" 변수가 %put에 의해 결정되고, _global_에 해당하는 것이 어떤 변수인지 파악하는 것입니다.
%put _global_ 은 글로벌 변수를 log에 찍어주는 문장입니다. 위 코드는 symput을 통해 'dept'를 선언해주었는데, 이 변수는 매크로 변수 안에서 선언됨에도 불구하고 글로벌 변수로 취급됩니다. (교재 387p 참고)
company=ABC에서 글로벌 변수 company가 선언된 것을 확인 할 수 있고, Country=Germany의 경우 단순히 매크로 선언문 안에서 정의 되었으니 로컬 변수가 됩니다. 즉 답은 변수 Company와 Dept가 되겠네요.
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.