BookmarkSubscribeRSS Feed

[1-2] Macro - Introduction

Started ‎06-16-2020 by
Modified ‎06-16-2020 by
Views 119

[1-2] Macro - Introduction 

 

 

 

안녕하세요^^

 

매크로 두 번째 시간입니다.

이번 시간에는, 프로그램 흐름에 대해 알아보겠습니다.

 

학습 목표는 다음 두 가지 입니다.

 

<1> SAS 프로그램에서 토큰을 확인하기

<2> SAS 프로그램이 어떻게 토큰화되고 컴파일되고 실행되는지에 대해 알기

 

 

 

그럼 프로그램 흐름을 이해하기 위해 차근차근 새로운 용어들을 배워보겠습니다.

 

 

먼저 아시다시피 SAS 프로그램은 다음의 언어 조합으로 구성됩니다.

 

   DATA STEP PROC STEP

  - 글로벌 문(global statement)

  - SAS Component Language(SCL; SAS 구성 요소 언어)

  - Structured Query Language(SQL; 구조화 조회 언어)

  - SAS 매크로 언어

 

위 조합으로 사용자가 프로그램을 생성하고 전송하면,

프로그램은 Input Stack이라고 하는 메모리 위치로 복사되게 되는데요

  

 

SE22016061920544170.jpg

 

 

 

SAS 코드가 Input Stack에 있을 때

Word Scanner라고 하는 SAS의 구성 요소는 다음 두 가지를 수행합니다.

 

 (1)   왼쪽에서 오른쪽으로위에서 아래 방향으로Input Stack에 있는 텍스트를 읽고,

 (2)   Token이라는 기본 단위로 텍스트를 분리합니다. 

 

 

SE22016061920552070.jpg

 

 

Word Scanner(단어 스캐너)는 

Compiler(컴파일러필요에 따라 토큰을 한번에 하나씩 컴파일러로 보내게 됩니다.

 

 

SE22016061920554470.jpg

 

 

 컴파일러는 다음 과정을 수행합니다.

 

세미콜론이 나올 때까지 토큰을 요청합니다

Statement(문)에 구문(syntax) 검사를 합니다.

 statement(문)에 대해 위 과정을 반복합니다.

 

 SAS는 다음 과정을 수행합니다.

 

step 경계(boundary)가 발생하는 경우 컴파일을 일시 중단합니다.

컴파일 오류가 없는 경우 컴파일 된 코드를 실행합니다.

 step에 대해 위 과정을 반복합니다.

 

 

컴파일러가 요청하는 토큰은 무엇일까요?

 

먼저 토큰의 종류를 알아보겠습니다.

 

Word Scanner 아래 네 가지 토큰 클래스를 인식합니다.

 

- 이름(name) 토큰

- 특수(special) 토큰

- 문자(literal) 토큰

- 숫자(number) 토큰

 

위 네 가지 토큰에 대해 자세히 알아보도록 하겠습니다. 

 

 

  • 이름 토큰

 

Name token 하나 또는 하나 이상의 문자를 포함합니다.

이 문자는, 문자 또는 언더바(_)로 시작하며, 다음에 문자/언더바(_)/숫자가 이어서 나옵니다.

 

 

SE22016061920584870.jpg

 

 

위 예시들이 Name Token에 해당되는 것이지요.

 

* format  informat name .(period)이 포함되어 있습니다.

  

 

 특수 토큰

 

Special token 문자/숫자/언더바(_) 이외의 문자 혹은 그 조합이 될 수 있습니다

 

 

SE22016061920595670.jpg

 

 

위 예시들이 special token에 해당되며

이 목록 외에도 special token이 되는 특수 문자들이 존재합니다.

 

 

  • 문자 토큰

 

Literal token 단일 따옴표 또는 이중 따옴표로 묶인 문자열입니다.

 

 

SE22016061921004070.jpg

 

 

문자열은 컴파일러에 의해 ‘하나의 단위’로 취급됩니다.

 

 

 

  • 숫자 토큰

 

Number token은

SAS 날짜 상수를 포함하는 정수가 될 수 있고

소수점 및 지수를 포함하는 소수점 숫자가 될 수 있습니다. 

 

 

SE22016061921012070.jpg

 

 

 토큰을 구분하는 기준은 어떻게 될까요?

 

 

토큰은 Word scanner가 일정한 기준에 따라 구분합니다.

 

Word Scanner는 다른 토큰이 시작되거나 토큰 다음에 blank가 나온 것을 감지한다면, 

해당 토큰은 마무리 짓게 되는 것이지요.

 

(blank는 토큰화 되지 않고 토큰으로 분리되지도 않습니다.)

 

* 토큰의 최대 길이는 32,767 자입니다.

  

 

 

 

그럼 우리가 코딩을 하고, 

코드가 Input Stack에 복사되고 이후 코드가 토큰화되는 예시는 다음과 같습니다.

 

 

SE22016061921025670.jpg

 

 

SE22016061921030570.jpg

 

 

 

프로그램 흐름에 대해서 다음시간에 이어서 배워보도록 하겠습니다.

 

 

감사합니다^^

 

Version history
Last update:
‎06-16-2020 05:48 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags