코드 내에서 .run을 쓸수 있는지 궁금합니다.

게시판 IDL Q&A 코드 내에서 .run을 쓸수 있는지 궁금합니다.

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #2621 Reply
      jsh4887
      회원

      코드 내에서 .run을 쓸 수 있는지 궁금합니다.

      그리고 만약 안된다면 어떤 방식을 써서 다른 코드를 제 코드 안에서 실행 시킬수가 있을까요?

    • #2624 Reply
      Jonghyuk
      회원

      .run은 다른 프로그램 안으로 들어갈 수 “없는” 명령어입니다.command line에서만 받아들일 수 있는 명령어인데, 점(.)으로 시작하는 명령어들이 다 그렇습니다. 같은 맥락으로 .reset 같은 것이 있습니다. .reset을 보면 웬지 프로그램 안에 들어가면 큰일 날 수 있겠다는 생각이 듭니다. 전통적으로 점(.)으로 시작하는 명령어들은 아주 오래전, 개발 환경과 그에 딸린 버튼, 단축키 등이 없던 시절에, 그 버튼과 단축키들의 역할을 했던 명령들입니다. 여전히 유효하고 유용하게 명령창에서 쓰입니다.

      평소에 .run으로 실행시키던 프로그램이라면 Batch script는 아닐 것이라 생각됩니다. 맨 아래 end 문이 있는 거죠.

      프로시저 형태로 만들어 호출하는 것이 가장 좋습니다.

      a=10
      print, a
      end

      위와 같이 맨 위에 선언부가 없고 아래 end가 있는 프로그램을 main program 이라고 하며, IDL이 시작하면 기본적으로 제공되는 메모리 공간에서 실행됩니다(기억 안하셔도 됩니다). 프로그램을 .run으로 실행시키고 나서 확인해 보면 a 변수 값이 그대로 남아 있지요.

      IDL> print, a
      10

      이는 현재 작업중인 메모리 공간이 $MAIN$ 이라는 공간이기 때문입니다.

      프로시저 선언을 하게 되면 상황이 좀 달라집니다.

      pro test_dot_run
      a=25
      print, a
      end

      위와 같은 프로그램을 만들고 실행시키면 위 프로그램 영역 안에서는 a가 25이지만, 다시 프로그램이 종료되고 나오면 a=10(앞에 설정되었던)으로 돌아갑니다. test_dot_run 프로시저가 돌아가는 메모리 공간이 다르다는 것입니다. 이렇게 해서 test_dot_run 이 실행되는 독립성을 보장합니다(큰 프로그램을 만들 때 더 좋은 겁니다).

      이렇게 만들면 .run이 없어도 프로그램을 호출할 수 있습니다.

      test_dot_run 프로그램을 test_dot_run.pro 로 저장합니다. 이래야 합니다.

      그러고 나면 test_dot_run은 이제 명령어(프로시저)가 됩니다. 명령어를 우리가 정의한 거죠.

      프로그램 어느 위치에서라도 test_dot_run 이라고 쓰면 실행됩니다.

1 답변 글타래를 보이고 있습니다
'코드 내에서 .run을 쓸수 있는지 궁금합니다.'에 답변달기
글쓴이 정보: