コマンドラインオプション

主なコマンドラインスイッチ

-32
64 bit環境で32 bit版IDLを起動する。Linux版IDL 8.3以降では32 bit版IDLがインストールされなくなったため、利用できない。
-arg value
文字列valueをプログラムに渡す。-arg スイッチは複数指定できる。プログラム中では COMMAND_LINE_ARGS 関数により、渡された文字列を取得できる。
-args value1 value2 ...
複数の文字列value1, value2, ... をプログラムに渡す。文字列間はスペースで区切る。プログラム中では COMMAND_LINE_ARGS 関数により、渡された文字列を文字列型の配列として取得できる。-args スイッチ以降の文字列は全て -args スイッチの引数だとみなされるので、-args スイッチは全てのコマンドライン引数のなかで最後に置く必要がある。
-batch
ユーザー操作を受け付けないバッチモードで起動する(Windowsのidldeのみ)。
-e statement
IDLの任意のステートメントを一つ実行する。実行が完了するとIDLは直ちに終了する。
-nl language
IDL Workbenchの表示言語を変更する(idldeのみ)。-nl en で英語、-nl ja で日本語。
-pref=file
指定した設定ファイルを読み込む。
-quiet
起動時のメッセージを表示しない。ただし、IDL 8.6以降ではライセンス情報は表示される。
-vm=filename
IDL Virtual Machine を起動する(idldeでは利用不可)。filenameでsaveファイルを指定する。Windows では idlrt コマンドを用いる。
-rt=filename
IDL Runtime を起動する(idldeでは利用不可)。Windows では idlrt コマンドを用いる。

以下のスイッチはIDL 8.6以降ではサポートされない。

-demo
ライセンスがなくても7分間だけ利用可能なデモモードで起動する。ファイル書き出しなどに機能制限がある。IDL 8.6 以降ではサポートされない。
-queue
ライセンスが利用不能なときは利用可能になるまで待つ。自動処理時に便利。IDL 8.6以降ではサポートされない。
-ulicense
既に同一ホスト・同一ユーザーでIDLが動作中でも、新規に独立したライセンスを使ってIDLを起動する。動作中にDISPLAY環境変数の値を変更できるようになる。IDL 8.6以降ではサポートされない。

コマンドラインスイッチでIDLの設定を一時的に変更する

コマンドラインスイッチで、設定を一時的に変更してIDLを起動することができる。まず、設定を記述するファイル(ファイル名を test.pref とする)を作成する。設定項目名と値はコロンで区切る。

  1. IDL_CPU_TPOOL_NTHREADS : 4
  2. IDL_GR_X_RETAIN : 2

IDL起動時に -pref スイッチを用いてこのファイル (test.pref) をIDLに渡す。この方法は、アプリケーションごとに設定を切り替える場合に便利。

  1. $ idl -pref=test.pref

設定を個別に指定して起動するもことができる。-(ハイフンマイナス)の直後に設定項目名と、スペースを開けて値を書く。

  1. $ idl -IDL_CPU_TPOOL_NTHREADS 4 -IDL_GR_X_RETAIN 2

プログラムの自動実行

IDLは起動時の -e オプションで指定された文字列、または標準入力から与えられた文字列をIDLのステートメントとして実行することができる。

test.pro に含まれる、MAIN programを実行する。実行完了後にIDLは自動的に終了する。

  1. $ idl -e '.r test'
  2. $ echo '.r test' | idl

test.pro と test2.pro に含まれる、MAIN programを続けて実行する。csh の場合は echo-e オプションは不要。

  1. $ echo -e '.r test\n.r test2' | idl

test3.pro または test3.sav に含まれる、ファイル名と同名のサブルーチンtest3を実行する。

  1. $ idl -e test3
  2. $ echo test3 | idl

test3.sav に含まれる、ファイル名と同名のサブルーチンtest3をIDL Virtual Machineで実行する。

  1. $ idl -vm=test3.sav

バッチファイル test4.pro を実行する(バッチファイルでは末尾にENDステートメントは不要)。この方法でバッチファイルを実行する場合、実行完了後もIDLは自動的には終了しないので、終了させる場合はバッチファイル末尾に EXIT ステートメントを入れておく必要がある。バッチファイルを複数指定することで、複数のバッチファイルを続けて実行することもできる。

  1. $ idl test4

バッチファイル test4.pro を標準入力から与えたり、-e スイッチ経由で与えることもできる。この場合は、実行完了後にIDLは自動的に終了する。

  1. $ idl < test4.pro
  2. $ cat test4.pro | idl
  3. $ idl -e '@test4'

バッチファイルをシェルスクリプト中でヒアドキュメントとして与える。1行に複数のステートメントを書くときの区切り文字 & と行継続文字 $ を組み合わせれば、BEGIN~ENDブロックを伴う制御構造も利用できる。

  1. #!/bin/sh
  2. num=10
  3. idl << EOM
  4. sum = 0
  5. FOR i=1, ${num} DO BEGIN &$
  6. sum += i &$
  7. PRINT, i, sum &$
  8. ENDFOR
  9. EOM

idlは開始時に環境変数 IDL_STARTUP で指定されたバッチファイルを実行する。環境変数 IDL_STARTUP で指定されたバッチファイルの実行完了後もIDLは自動的には終了しない。一般的に環境変数 IDL_STARTUP はユーザー独自のIDLの環境設定を行うのに用いられる。環境変数 IDL_STARTUP で指定されたバッチファイルは、idlの引数、標準入力、-e スイッチ経由で与えたプログラムよりも前に実行される。

一時的に環境変数 IDL_STARTUP を変更してidlを起動するには次のようにする。

  1. # BASHの場合
  2. IDL_STARTUP=test4 idl
  3. # TCSHの場合
  4. ( setenv IDL_STARTUP test4 ; idl )

プログラムの実行が完了すると、一部の場合を除いてIDL は直ちに終了する。プロットの結果などを表示しておきたい場合は、DIALOG_MESSAGE 関数 や READ プロシージャなどで、ユーザーが何か操作をするまで一時停止させる。

  1. $ idl -e "PLOT, SIN(FINDGEN(628)/100) & t = DIALOG_MESSAGE('Done')"
  2. $ idl -e "CONTOUR, DIST(100), NLEVELS = 60 & t = '' & READ, 'Press ENTER to exit', t"

コマンドラインで指定した文字列をプログラムに渡す

-arg または -args スイッチにより、文字列をプログラムに渡すことができる。-args スイッチはスペースで区切られた複数の文字列を渡すことができる。-args スイッチ以降の文字列は全て -args スイッチの引数だとみなされるので、-args スイッチは全てのコマンドライン引数のなかで最後に置く必要がある。プログラム中では COMMAND_LINE_ARGS 関数により、文字列の配列として取得できる。-arg または -args スイッチが指定されなかった時は、COMMAND_LINE_ARGS 関数は長さ0の文字列を返す。

  1. $ idl -quiet -e 'PRINT, COMMAND_LINE_ARGS()' -arg Hello
  2. Hello
  3. $ idl -quiet -e 'PRINT, COMMAND_LINE_ARGS()' -arg Hello -arg World
  4. Hello World
  5. $ idl -quiet -e 'PRINT, COMMAND_LINE_ARGS()' -args Hello World
  6. Hello World

他に、シェルからプログラムに情報を渡すための簡単な方法としては、環境変数がある。IDLプログラム中で GETENV 関数を使うことで環境変数を取得できる。

  1. $ export PARM=Hello
  2. $ idl -quiet -e "PRINT, GETENV('PARM')"
西田圭佑 (NISHIDA Keisuke)
nishida at kwasan.kyoto-u.ac.jp