$IO OUTPUT
ASAP을 실행해 보면 Command Output Window에 수많은 결과값들이 출력된다. 그중에서 파일로 저장해 두고 싶은 결과가 있을 수 있다. 이 결과값을 파일로 저장시켜주는 기능이 바로 $IO OUTPUT 명령어이다. 우선 아래의 프로그램을 실행시켜 보자.
SYSTEM NEW
RESET
EMITTING RECTANGLE Z 0 1 1 10000
WINDOW Y X
STATS POSITION
RETURN
그러면, Command Output Window에 아래와 같은 결과물이 출력된다.
— SYSTEM NEW
— RESET
— EMITTING RECTANGLE Z 0 1 1 10000
Total flux in rays created by this emitter is 1.000000
— WINDOW Y X
— STATS POSITION
Current Statistics for Object 0 –
Total Flux = 1.000000 from 10000 rays (100.00%)
X Y Z
Centroid: 0.2892359E-02 -.1040085E-02 0.000000
RMS Deviation: 0.5797728 0.5767288 0.000000
Maximum Spread: -1.002879 -.9988816 0.000000
to 0.9968241 1.000964 0.000000
— RETURN
이 중에서 우리는 STATS POSITION의 결과를 저장하고 싶다면 어떻게 할까?. STATS POSITION 명령어 앞뒤로 아래와 같이 $IO 명령어를 추가한 후 다시 실행시켜 보자.
…
$IO OUTPUT RESULT FILE(10)
STATS POSITION !! $IO OUTPUT 루프안에 있는 내용이 파일로 저장된다.
$IO OUTPUT CLOSE
RETURN
Command Output Window에 출력된 결과에는 차이가 없다. 그런데, 탐색기나 메뉴바에서 File > Open…으로 Working Directory를 열어보면 result.out 이라는 파일이 하나 생성되어 있을 것이다.
메모장으로 파일을 한번 열어보자. STATS POSITION 명령어에 의한 Command Output Window에 출력된 결과와 동일한 내용이 저장되어 있을 확인 할 수 있다. 즉, $IO OUTPUT 과 $IO OUTPUT CLOSE 구간 사이에 있는 내용이 파일로 저장된다.
그러면 $IO OUTPUT RESULT FILE(10) 에 대해서 좀 더 자세히 알아보자. 여기서 RESULT는 저장하려는 파일 이름이다. 파일명은 대문자로 작성되어야 하며 소문자일 경우에는 파일이 생성되지 않는다. 그러나, 저장된 파일은 result.out 처럼 소문자로 저장된다. 마지막에 있는 FILE(10)은 ASAP의 범위를 넘어서는 내용이다. ASAP이 Fortran 언어로 만들어진 프로그램이다보니 파일 입출력과 관련해서는 Fortran의 문법을 따르고 있다. FILE(10)이라고 하지 않고 그냥 10 이라고 숫자값만(ASAP에서는 이것을 unit number 라고 한다) 있어도 파일은 생성된다.
Note… |
Fortran의 OPEN 함수에 대해서 알아보자. OPEN Syntax io-unit name OPEN의 첫번째 인수는 [UNIT=]io-unit 이다. 이것은 FILE(10)의 (10)에 해당하는 값으로 Fortran에서는 이것을 ‘입출력장치번호’라고 하며, 입출력을 담당하는 장치에 번호를 부여하는 것으로 결과를 파일로 저장하려면 숫자(정수)를 넣고, 화면에 출력하려면 *(별표)를 넣는다. Fortran에서는 OPEN(*, file=’result.txt’) 이나 OPEN(10, file=’result.txt’) 형식처럼 사용한다. |
마지막으로, 결과를 하나의 파일에 계속 추가하여 저장하는 방법에 대해서 알아보자.
…
$IO OUTPUT RESULT FILE(10)
STATS POSITION !! $IO OUTPUT 루프안에 있는 내용이 파일로 저장된다.
$IO OUTPUT CLOSE
$IO OUTPUT RESULT +FILE(10)
STATS DIRECTION !! 같은 파일에 추가되어 결과가 저장된다.
$IO OUTPUT CLOSE
RETURN
위의 프로그램은 STATS POSITION에 대한 내용을 먼저 저장한다. 그리고, 이어서 STATS DIRECT-ION에 대한 내용을 저장한다. 즉, 같은 파일명에서 FILE(10) 앞에 + 를 추가하면 하나의 파일에 연속적으로 결과를 저장하고, -FILE(10) 처럼 – 를 붙이면 기존에 있던 내용은 모두 지우고 마지막 내용만 저장된다. +/- 아무것도 없이 FILE(10)으로 되어 있어도 당연히 덮어쓰기 되어 마지막 내용만 저장된다. 그럼 이제, 중요한 결과들을 파일로 저장할 수 있게 되었다.