$SCR

우리는 $ASK를 통해서 윈도우를 생성하고 텍스트 박스에서 데이터를 입력받는 방법에 대해서 배웠다. 그런데, 원도우가 계속 뜨는 것이 좀 불편했다. 그냥 하나의 윈도우에서 값을 다 입력할 수 있게하면 좋을텐데 말이다. 그래서, 이번에는 $SCR에 대해서 알아보자. SCR은 SCReen을 의미한다.

$SCR은 $ASK와 같이 윈도우를 띄워 값을 입력 받게 되는데, 차이점은 하나의 윈도우에서 여러개의 값을 입력 받을 수 있다는 것이다. 텍스트 박스 뿐만 아니라 설명문, 체크 박스들을 만들 수 있으며 이들의 위치를 원하는 곳에 놓을 수도 있다.

그럼, $ASK에서 사용했던 예제를 그대로 $SCR로 만들어 보자. 아래 프로그램을 보면 우선 내부적으로 사용될 변수와 초기값을 지정하였다. 그리고, $SCR 6 명령어가 나오는데 이것은 $SCR 명령어를 이용해서 윈도우를 만들고, 이 명령어 다음줄부터 6줄을 실행 명령어가 아닌 윈도우에 표시해 주는 명령어로 인식한다. 이 6줄에는 내용이 없는 빈줄이나 !!으로 시작하는 주석문도 계산(포함)된다.

Make 3D Plot: 이 있는 줄까지 윈도우에 표시되는데, 만약 줄수를 잘못 입력해서 실행되어야 할 명령어가 이 숫자안에 포함되면 명령어가 실행되지 않고 text로 인식되어 윈도우에 표시만 되고 실행되지 않게 된다. 그렇기 때문에 $SCR에 적용되는 숫자를 잘 계산해야 한다. 특별한 기능을 넣지 않고 글자만 입력하면 그냥 text로 인식되기 때문에 윈도우에 어떤 설명문을 표시할 때 편하게 사용할 수 있다.

SYSTEM NEW
RESET

Z=0
S=”RECTANGLE
 R1=10
 R2=10 
PLOT3D=0

$SCR 6  ‘Make Shape
                 Enter location along Z :   Z.3            ?
Enter RECTANGLE or ELLIPSE :   S”              ?   (RECTANGLE or ELLIPSE)
                              Enter Radius X :   R1              ?  
                              Enter Radius Y :   R2             ?

                                 Make 3D Plot :   PLOT3D:  ?

$REG PLOT3D

SURFACE
  OPTICAL Z (Z)
S” (R1) (R2)
OBJECT ‘ASK_SHAPE’

WINDOW Y X

$IF (PLOT3D) EQ 1 THEN
{ 
  PLOT FACETS   $VIEW   
}  
$ENDIF

RETURN

$SCR 6 다음에 있는 ‘Make Shape’은 이 윈도우의 이름이고, 만약 이름을 지정하지 않으면 ASAP으로 표시된다. 아래 그림 8.17에 윈도우의 이름이 Make Shape로 되어있는 것을 확인할 수 있다.

SCR_window
그림 8.17 $SCR 윈도우

다음으로 값을 입력받기 위한 설명문들이 앞에 있고 ₩Z.3 이나  ₩R1, ₩R2 처럼 값을 입력할 텍스트박스의 형식을 먼저 지정해 준다. ₩는 사실 \ (역슬레쉬)이다. 한글이라서 \ 로 표시 되지 않고 ₩로 표시되는 것이다. ₩는 C/C++을 아는 사람들은 쉽게 의미를 알 수 있을 것이다. %d나 %f.3 과 같이 출력하려는 값의 표시 형식을 지정해 주는 방식이다. ASAP에서 ₩ 다음의 문자는 출력하려는 변수이름이다. 그리고 변수이름 다음의 .3은 소수점 3째 자리까지 표시하라는 뜻이다. 그래서 Z.3은 Z 값을 소수점 3째 자리까지(0.000) 표시해준다. 변수 이름만 있는 ₩R1이나 ₩R2는 소수점 없는 정수로 표시된다. ₩R1은 ₩R1. 과 동일하다. 즉 .(점)만 있고 뒤에 숫자가 없으면 정수를 의미한다. 문자는 ₩S” 과 같이 문자형 변수 뒤에 큰따음표(“)를 하나 붙여주면 된다.

이렇게 텍스트 박스에 표시할 형식을 지정해 주었으면 이제 값을 입력할 수 있는 텍스트 박스를 만들어 주어야 한다. 바로 물음표(?) 이다.  형식 지정자 뒤에 ? 를 두면 흰색의 텍스트 박스가 생성된다. 형식 지정자와 ? 사이의 거리가 멀어지면 텍스트박스의 입력란 크기도 달라진다. 위의 프로그램처럼 세로방향으로 ? 위치를 맞춰주면 텍스트박스의 크기도 맞기 때문에 보기도 좋다. 물음표 다음에 나오는 문자열은 다시 텍스트로 인식되어 보여진다. 입력란 뒤에 단위 같은 것을 표시하기에 딱 좋은 방법이다.

이제, 프로그램에서 ₩Z.3   ? 를  ₩Z.3    로 변경해 보자. 즉, 마지막에 있는 ? 로 변경하는 것이다. 그렇게 되면 입력 가능 하던 Z 값의 텍스트 박스가 변경 가능하지 않게된다. ? 가 있으면 입력 가능한 텍스트 박스가 생성되고, ₩ 가 있으면 값을 입력 할 수는 없고 표시만 해 준다. 그래도 ₩를 넣는 이유는 표시되는 숫자의 위치를 잡아주기 위해서다. 만약 ₩가 없으면 윈도우의 끝부분에 0.000 이 표시될 것이다.  그림 8.18의 첫번째 줄에 Z값이 입력 불가능하게 변경된 것과 0.00 이 윈도우의 오른쪽에 치우쳐진 것을 확인할 수 있다.

SCR_window2
그림 8.18 ?나 ₩가 없을 때의 윈도우

텍스트 박스에 대한 내용은 이쯤에서 마무리하고 지금부터는 체크 박스를 만드는 방법에 대해서 알아보자. ₩PLOT3D: 과 같이 변수명 마지막에 콜론(:)이 오면 이것은 텍스트 박스를 만들지 않고 체크박스를 만든다. 여기서 클론(:)은 0과 1의 값을 가지는 Boolean을 의미한다. 처음에 PLOT3D=0으로 값을 지정했기 때문에 체크 박스가 체크 되어있지 않은 것을 볼 수 있다. 만약 값을 1로 초기화 했다면 체크가 되어서 프로그램이 만들어질 것이다. 마우스로 네모 박스를 클릭하면 체크 표시가 되고 PLOT3D 변수의 값은 1로 변경된다. 체크 박스를 체크하고 OK 버튼을 눌러보자.

변수에 대한 모든 값 지정이 완료되었고, $REG를 통해 PLOT3D에 할당된 값이 무엇인지 보여준다.

— $REG PLOT3D
Z~: PLOT3D                           1

SURFACE를 통해 RECTANGLE이 만들어지고, Object를 그릴지 말지를 $IF 매크로로 계산하게 된다. $IF가 어떻게 동작되는지는 바로 앞에서 언급했기 때문에 따로 설명하지는 않겠다.

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: