基本操作
起動・終了
- コマンドライン版IDLを起動: シェルから
idl
- 64bit環境で32bit版コマンドライン版IDLを起動: シェルから
idl -32
(Linux版IDL 8.3以降ではサポートされない)
- IDL Workbench (統合開発環境)を起動: シェルから
idlde
(32bit版を起動するなら -32
オプションをつける)
- IDLのコマンドラインオプション
- 終了するにはIDLコマンドプロンプトで
exit
ドキュメントを見る
- IDLのドキュメント (L3HARRISのサイト)
- webブラウザでIDLのドキュメントを表示する: IDLコマンドプロンプトで
?
または シェルで idlhelp
- IDLのリファレンスガイドの項目を表示:
? 項目名
(例: ? openr
)
- IDL言語で書かれたプログラム(プロシージャ・関数)のドキュメントを表示:
doc_library, 'プログラム名'
(例: doc_library, 'write_gif'
)
プログラムをコンパイル・実行する
.run
などのドットから始まるIDLのコマンド(Dot Commands)を用いる。IDL Workbench ではこれらの操作はマウスでもできる。
- IDLのコマンド(Dot Commands)は、バッチファイル以外の通常のプログラム中では使用できない。
- プログラムをコンパイル・実行:
.run [ファイル]
(.r
と略せる。MAIN Program を指定した場合はただちに実行される。ファイル名を省略するとその場でプログラムを入力できる)
- MAIN Programの変数を消去してから、プログラムをコンパイル・実行する。ただし、commonブロックは消去されない。(使い方は
.run
と同じ): .rnew
- プログラムをコンパイル(MAIN Programの実行はしない):
.compile [ファイル]
(ファイル名を省略するとその場でプログラムを入力できる)
- バッチファイルを実行:
@バッチファイル
(プログラム中で使用したときは、指定されたファイルをincludeする)
- IDLで実行可能なプログラムにはいくつかの種類がある
- MAIN Program は MAIN Level (IDL起動時に位置する最上位のレベル)で実行されるプログラムファイルである。プロシージャ/関数定義は含まれず、末尾はENDステートメントで終わる。
- Named Program File は1つ以上のプロシージャ/関数定義が含まれるプログラムファイルである。PROまたはFUNCTIONステートメントで始まり、ENDステートメントで終わる。
- Batch File はIDLのインタラクティブモードで使えるステートメントやコマンドを単に並べただけのプログラムファイルである。プロシージャ/関数定義、BEGIN~ENDブロックを伴う複数行にまたがる制御構造(注)、ENDステートメントは使えない。つまり、IDLのコマンドプロンプトに、ファイルの内容をコピー&ペーストするのとだいたい同じ。
- Save File (.sav) は Named Program File をコンパイルしてバイナリファイルとして保存したものである。IDLプログラム実行環境 IDL Virtual Machine のためによく使われる。
注: 1行に複数のステートメントを書くときの区切り文字 &
を用いて1行で書けば、 batch file中でもBEGIN~ENDブロックを伴う制御構造は利用できる。このとき、行継続文字 $
を用いれば物理的な改行を途中で入れることも可能。
プログラムをデバッグする
IDL Workbench ではこれらの操作はマウスでもできる。[n]
は繰り返し回数を示す数字(省略可能)。
- 現在のステートメントから実行を再開する:
.continue
(.c
と略せる)
- 現在のステートメントを実行して次のステートメントで停止する:
.step [n]
(.s [n]
と略せる)
- 現在のステートメントを実行して次のステートメントで停止する(現在のステートメントがサブルーチン呼び出しの場合、サブルーチン全体が実行される):
.stepover [n]
(.so [n]
と略せる)
- 現在のステートメントをスキップして次のステートメントで停止する:
.skip [n]
- 現在のプロシージャの終わりまで実行し、プロシージャから脱出して、呼び出し元で停止する:
.out
- 現在のプロシージャの終わりまで実行し、プロシージャから脱出する直前で停止する(ローカル変数の確認に便利):
.return
- 前回実行したMAIN Programをもう一度実行する:
.go
- プロシージャ内で停止したとき、MAIN Programレベルに戻る:
retall
環境をリセットする
- 環境のリセットを行う。変数やコンパイル済みプロシージャなどは消去され、システム変数・グラフィックス環境などをは初期化され、ファイル、ウィジェット、ウィンドウなどは閉じられる。:
.reset_session
.reset_session
に加え、さらに共有ライブラリ(CALL_EXTERNAL, LINKIMAGE, DLM)のアンロードを行う: .full_reset_session
IDLの状態を調べる
- 変数やコンパイル済みプログラムの状況などを見る:
help
- 変数の型・値などを見る:
help,変数
- 構造体のフィールド名・値などを見る:
help,/structures,構造体
(IDL 8.0より通常の構造体を1つのみ指定する場合には /structures
は不要となっているが、複数の構造体を指定する場合や構造体の配列などの場合には必要)
- IDLの設定を見る:
help,/preferences
- IDLのシステム変数を表示:
help,/system_variables
その他
- 作業内容をファイルに記録する:
journal,'ファイル名'
- プログラムを編集のために開く(IDL Workbench内のみ):
.edit [ファイル]
- コメント開始文字:
;
- 行継続文字(行末):
$
- コマンド履歴を検索:
^
- 1行に複数のステートメントを書くときの区切り文字:
&
- プログラム中で他のファイルをincludeする:
@ファイル名
(インタラクティブモードで入力するとファイルはバッチファイルとしてただちに実行される)
- これから新規に作成するプログラムで推奨されるコンパイルオプション (各プロシージャ・関数の先頭に書くことで、配列の添字に丸括弧を使うことを禁止し、デフォルトの整数型のサイズを32-bitにする):
COMPILE_OPT IDL2
- IDL8.3以降のIDLコマンドラインでは、値を表示するのに
PRINT,
を省略可能: 3*5, !dpi, sin(3)
IF...THEN...ELSE, WHILE...DO
等で用いられる真偽値の判別は、型により異なる。整数の場合、奇数は真、偶数は偽(つまり最下位ビットの値による)となる。整数以外の数値の場合、0以外の値(NaN, 無限大を含む)のとき真、0のとき偽となる。数値型以外の場合、NULL以外のとき真、NULLのとき偽となる。長さ0の文字列は偽、値'0'
の文字列は真となる。
西田圭佑 (NISHIDA Keisuke)
nishida at kwasan.kyoto-u.ac.jp