우리가 IDL로 프로그래밍을 하다보면 프로그램을 하나만 만들어서 사용하는 경우도 있지만 다수의 프로그램들을 함께 사용해야하는 경우도 많습니다. 즉 각자의 역할을 담당하는 별도의 부프로그램들까지도 만들어서 함께 사용하는 방식입니다. 그런데 주프로그램과 부프로그램들을 어떤 방식으로 구성하여 사용하느냐에 있어서는 크게 두가지 방식이 있습니다.
1) 주프로그램과 부프로그램들이 모두 함께 하나의 파일 내에 존재하는 방식
2) 주프로그램과 부프로그램들 각각 개별 프로그램 파일로 존재하는 방식
먼저 1)과 같이 주프로그램과 부프로그램들이 모두 함께 하나의 파일 내에 존재하는 방식부터 봅시다. 간단한 예를 하나 들어보자면 다음과 같습니다.
FUNCTION c_to_f, temp
result = 1.8*temp + 32.0
RETURN, result
END
FUNCTION f_to_c, temp
result = (temp - 32.0) / 1.8
RETURN, result
END
PRO my_main
temp_c = 29.8
temp_f = c_to_f(temp_c)
PRINT, 'Temperature in Fahrenheit :', temp_f
temp_f = 84.3
temp_c = f_to_c(temp_f)
PRINT, 'Temperature in Celsius :', temp_c
END
여기서는 총 3개의 프로그램들이 보입니다. 그리고 전반적인 구성을 살펴보면 먼저 주프로그램은 my_main입니다. 그리고 c_to_f 및 f_to_c는 부프로그램에 해당됩니다. 주프로그램인 my_main이 수행할 작업의 내용을 보면, 먼저 29.8이라는 섭씨온도값을 화씨온도로 변환하여 그 결과를 출력하고, 바로 이어서 84.3이라는 화씨온도값을 섭씨온도로 변환하여 그 결과를 출력하게 됩니다. 이 과정에서 함수형 부프로그램들인 c_to_f 및 f_to_c가 사용되고 있는데, c_to_f는 섭씨온도값을 화씨온도로 변환하는 역할을 하고 f_to_c는 화씨온도값을 섭씨온도로 변환하는 역할을 하게 됩니다.
위의 내용은 결국 3개의 프로그램들 즉 주프로그램 1개와 부프로그램 2개로 구성되어 있습니다. 그런데 이들 사이의 위치 관계를 잘 보면 주프로그램인 my_main이 맨 뒤에 있고, 나머지 부프로그램들은 그 앞쪽에 배치되어 있습니다. 그리고 위의 내용을 my_main.pro라는 하나의 프로그램 파일에 모두 수록되어 있습니다. 이와 같이 주프로그램과 부프로그램들이 하나의 파일 내에 함께 존재하게 될 경우에는 주프로그램이 맨 뒤에 배치되도록 해야 합니다. 그리고 나머지 부프로그램들이 그 앞에 배치되도록 하면 되며, 부프그램들 사이의 순서는 임의로 배치해도 상관없습니다. 실제로 IDL 워크벤치의 에디터에서 위와 같은 내용을 작성한 다음 저장을 하기 위하여 저장 버튼을 누르면 기본적으로 my_main.pro라는 이름의 파일로 저장하겠다는 내용으로 팝업 인터페이스가 뜨게 됩니다.
어쨌든 이와 같이 주프로그램과 부프로그램들이 하나의 파일 내에 공존하게 될 경우에는 다음과 같은 원칙을 따라야 합니다.
* 주프로그램은 무조건 맨 뒤에 위치해야 함
* 부프로그램들은 주프로그램 앞에 위치해야 함
* 부프로그램들 사이의 순서는 어떤 식이든 상관없음
* 저장될 파일의 이름은 "주프로그램명.pro"와 같은 형태가 되어야 함
그런데 이러한 방식 외에도 서두에서 언급했던 2)와 같이 주프로그램 및 부프로그램들을 각각 개별적인 프로그램 파일로 저장하여 사용하는 방식도 있습니다. 즉
PRO my_main
temp_c = 29.8
temp_f = c_to_f(temp_c)
PRINT, 'Temperature in Fahrenheit :', temp_f
temp_f = 84.3
temp_c = f_to_c(temp_f)
PRINT, 'Temperature in Celsius :', temp_c
END
이 내용을 my_main.pro라는 파일로 저장하고
FUNCTION c_to_f, temp
result = 1.8*temp + 32.0
RETURN, result
END
이 내용을 c_to_f.pro라는 파일로 저장하고
FUNCTION f_to_c, temp
result = (temp - 32.0) / 1.8
RETURN, result
END
이 내용을 f_to_c.pro라는 파일로 저장합니다. 결국 3개의 파일들을 함께 사용하는 방식입니다.
따라서 다수의 프로그램들을 만들어서 운용해야하는 경우에 주프로그램과 부프로그램들을 어떤 방식으로 구성하여 활용하느냐에 있어서는 위와 같은 두가지 방식이 있다는 것을 잘 알아두시면 좋을 것 같습니다. 1)과 2) 중 어느 방법이 더 나은지를 따지는 것은 무의미 합니다. 결국은 작업자의 목적 및 작업 스타일에 따라 선택적으로 사용해야 할텐데, 다만 각각의 방식은 나름대로의 특성은 있습니다. 정리해보면 다음과 같습니다.
1) 주프로그램과 부프로그램들이 모두 함께 하나의 파일 내에 존재하는 방식
* 하나의 파일로 존재하기 때문에 파일 운용 측면에서 좀 더 간단함
* 모든 부프로그램들이 주프로그램과 함께 묶여있기 때문에 특정 부프로그램을 다른 주프로그램들에서 활용하기가 불편함
2) 주프로그램과 부프로그램들 각각 개별 프로그램 파일로 존재하는 방식
* 개별 파일로 존재하기 때문에 파일들의 운용이 다소 복잡해질 수 있음
* 각각의 부프로그램을 다른 주프로그램에서 사용하기 편하며, 경우에 따라서는 다른 작업자들에게 배포 또는 공유하기도 수월함
대략 이와 같은 맥락으로 이해하시면 될 것 같습니다.
'IDL > Programming' 카테고리의 다른 글
음수 범위를 로그 스케일(Log Scale)로 표시하기 (0) | 2023.04.25 |
---|---|
WHILE 및 REPEAT 구문의 이해 (0) | 2023.02.10 |
작업을 위한 디렉토리의 설정 방법들 (0) | 2022.03.07 |
FILE_INFO 함수의 활용법 (0) | 2022.03.02 |
HISTOGRAM 및 HIST_2D 함수의 활용 [2] (0) | 2022.01.06 |