irafiraf講習会講習会 - nao...irafiraf講習会講習会 ~clscriptcl script入門~...

24
IRAF IRAF講習会 講習会 CL Script CL Script入門 入門CL Script CL Script入門 入門国立天文台 国立天文台 天文データセンター 天文データセンター 古荘 古荘 玲子 玲子 2011 2011年2月16 16日 1

Upload: others

Post on 10-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

IRAFIRAF講習会講習会~~CL ScriptCL Script入門入門~~~~CL ScriptCL Script入門入門~~

国立天文台国立天文台天文データセンター天文データセンター

古荘古荘 玲子玲子

20112011年年22月月1616日日

1

Page 2: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

謝辞過去のADC講習会テキスト(特に、大藪さん、吉田さん)のテキストと、2010年度第3回

ト開発講習会(2 目)の板さんのIRAFソフト開発講習会(2日目)の板さんの

テキストを、非常に参考にさせていただきました。有難うございました。

2

凡例• IRAF(ecl)コマンドラインでの入力

ecl> !ds9 &

• ファイルの内容(編集すべき内容)

• その他

print(“imcopy”)

3

(IRAFタスクのcompute mode記載例。動作確認のため、eclでコマンドとして入力してもよいだろう)

display(“hoge.fits”, 1, ztrans=“log”) 

Page 3: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

なぜIRAFを使うかメリット

• 無料(重要)

• 多くの人が使っている(重要)

• 豊富な解析タスク・パッケージ– タスクを知ってさえいれば大抵のことはできる

デメリット

• ドキュメントがない(に等しい)ドキュメントがない(に等しい)

• メモリを上手に使えない(らしい)私はあまり困ったことがない。←大作を作ったことがないから(^^;;;

• スクリプト開発では・・・

– デバッガがない。エラーは大抵、意味不明 4

CL-script?eclで必要なタスクを利用すれば、充分解析出来るでしょ。

でも・・・

• いつもいつも同じ手順でやる作業ならば、スクリプトを組んだ方が効率がいい

• 自分の開発した(カワイイ)装置には、解析パ自分の開発した(カワイイ)装置には、解析パイプラインも用意したい

• IRAFの豊富な解析タスクを利用して少しは楽をしたい(ほんと?)

5

Page 4: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

CL-Script• IRAFのcl(command language)で動かせるスクリプト言語

• 1つのファイルに1つのスクリプト(関数)を記述する。

– C言語のように1つのファイルにいくつも関数を記述できる訳ではない。

• デバッガは無いので覚悟しましょう– えっと思うような些細な事でエラーを吐く

– エラーの場所がわかりにくい

6

Reference• An Introductory User’s Guide to IRAF Scrips

– http://iraf.noao.edu/iraf/ftp/iraf/docs/script.pdf

– 古い(V2.8用)が今でも有効古い(V .8用)が今でも有効

• IRAF CL Script Tips & Tricks– http://iraf.noao.edu/iraf/ftp/iraf/docs/script_intro.pdf

– 比較的新しい(2003年)。プレゼンファイル。例が豊富

• Host CL Scripting Capability– http://iraf.noao.edu/iraf/web/new_stuff/cl_host.html

– CLを外から利用する方法CLを外から利用する方法

• help language

• IRAF開発講習会シリーズの過去のテキスト(ADC, NAOJ)– http://www.adc.nao.ac.jp/J/cc/public/koshu_shiryo.html#iraf

_prog7

Page 5: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

本日の講習の流れ0. 準備

1. 簡易CLスクリプト

クリプトの基本2. CLスクリプトの基本

3. CLスクリプトの機能

4. 実習:解析スクリプトを作ってみよう

余裕があれば余裕があれば・・・

5. さらに先へ

8

0. 準備をしようA) ワークディレクトリ(作業環境)と、必

要な物を用意しよう

配布物1. img/KCC*.fits

実習でつかうFITSデータ

2. img2/KCD*.fits実習でつかうFITSデータ(自習用)

3. loginuser.clユーザ用の環境設定ファイルユ ザ用の環境設定ファイル

4. printit.cl, prompttest.cl, taroex*.cl実習用サンプルスクリプト

5. ans/*.cl実習課題の解答例

6. panda.clパッケージ化プログラム(自習用) 9

Page 6: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

0. 準備をしようB) IRAFの環境を準備しよう

1. mkiraf を実行

2. loginuser.cl を作成しよう(※)

(※) login.clで読み込まれるユーザ環境を記述した設定ファイル

自分の環境設定にlogin.cl自体を変更するかloginuser.clを利用するかは、趣味の問題(だと思う)。

なお、今回は配布されたサンプルスクリプトの中にあります。とりあえず、中身を眺めてみてください。環境準備の時点で重とりあえず、中身を眺めてみてください。環境準備の時点で重要(かもしれない)設定は以下の3行です

10

reset imextn = "oif:imh fxf:fits,fit,fts,FIT,FTS"

reset imtype = fits

reset stdimage=imt4096

0. Magic Word• 動作がおかしい時は・・・

– unlearnunlearnCLでパラメータキャッシュをクリアする。task登録したCLスクリプトを書いている途中にパラメータを変えたら、必ずunlearnせよ。

– flprcacheプロセスの使ったキャッシュを掃除する。

• それでもダメなら・・・あきらめる

一旦logoutしてcl再起動11

Page 7: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

1. 簡易CLスクリプト• タスクを羅列してもCLスクリプトとして利用できる( ドを羅 た プ )(cf. コマンドを羅列したシェルスクリプト)

• パラメータなし型のCLスクリプトecl> vi taroex0.cl

print(“imcopy”)

imcopy img/KCC00003.fits test.fits

←taroex0.cl を作成する

内容

12

ecl> task $taro0 = taro0.cl

ecl> taro0

←タスクとして登録

$ を頭につける(パラメータなし型の場合)

改行し忘れに注意

タスクの記述• command modeとcompute mode

• command mode• command mode

• compute mode

ecl> taskname arg1 ... argN par1=val1 par2=val2 ... 

taskname(arg1, ..., argN, par1=val1, par2=val2 ...) 

13

Page 8: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

スクリプトのお作法など

• 1タスクは1行に書く1つのタスクについて、パラメータが多くて長い記述を2行にわた て書きたい場合は ╲ (バックスラッシ )2行にわたって書きたい場合は、 ╲ (バックスラッシュ)で改行コードをエスケープする

• タスクはcompute modeで記述した方が良いようですなぜか・・・

• 最後の行にも改行を入れる【重要】最後の行に改行がないために動かない!ということが、意外とあります

14

mkscript• 簡易CLスクリプトを作成するタスク

ecl> mkscript

Script file name (scr.cl): tarotmp.cl

Task name of command to be added to script: imcopy

Is the command ok? (yes): yes

Add another command? (yes): no ←他にタスクを足したかったら

このあと、imcopyのepar画面が出る。適当に編集して、:wqで抜ける。

15

Is the script ok? (yes): yes

Submit the script as a background job? (yes): yes

yesと入力して繰り返し

CLスクリプトの作成例が欲しい時に便利・・・

Page 9: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

2. CLスクリプトの基本基本構成(パラメータあり型)

1. procedure宣言1. procedure宣言

2. 明示パラメータ(スクリプト引数)宣言

3. 隠しパラメータ宣言

4. list directed parameters宣言

5 begin5. begin

6. スクリプトの中身

7. end

16

パラメータ(変数)のデータ型int 整数型 32bitreal 実数型。指数はEで表す ex.) 2.5E+2bool bool型(真偽値) yes / no

真=1, 偽=0

string 文字列型

file ファイル型(stringと変わらないらしい?)

struct 特殊な文字列型struct 特殊な文字列型

空白も文字列の一部として扱う

gcur, imcur カーソルパラメータ

17

Page 10: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

サンプルコード:printit.clprocedure printit (file_name) 

string file_name

始まりはprocedure

スクリプト引数の宣言

struct *flist

begin

struct line

flist = file_name

list directed parameterの宣言これは隠しパラメータ

スクリプトの始まり

これは内部変数

18

while( fscan( flist, line ) != EOF )

print(line)

end スクリプトの終わり

printit.clを実行してみる• タスクの登録

ecl> task printit = printit.cl

• 実行

パラメータあり型の場合、頭に$はつけない

ecl> printit printit.cl printit.cl自身を表示させてみる

19

Page 11: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

procedure printit (file_name) 

string file_name

始まりはprocedure

スクリプト引数の宣言

パラメータの読み取り

struct *flist

begin

struct line

flist = file_name

list directed parameterの宣言

スクリプトの始まり

これは隠しパラメータ

これは内部変数

while( fscanfscan( flist, line ) != EOF )

print(line)

end スクリプトの終わり

20

パラメータの読み取り• scan ( p1, p2, … )

– 標準入力から読み取って内部変数に格納ecl> string ss1

ecl> =scan( ss1 )

ecl> =ss1

• fscan( pp, p1, p2, … )

何か文字列を打ち込む。

– 内部変数ppから読み取って別の内部変数に格納

21

ecl> string ss2

ecl> =fscan( ss1, ss2 )

ecl> =ss2

Page 12: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

stringとstructの違いecl> string origstr = “Hello world”

ecl> string ss3

lecl> struct st1

ecl> =fscan ( origstr, ss3 )

ecl> =ss3

ecl> =fscan ( origstr, st1 )

ecl> =st1

22

3. CLスクリプトの機能1. prompting2. mktempp3. list directed parameters (LDP)

4. ワイルドカードの取り扱いとsections

23

Page 13: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

prompting• 実行時にパラメータへの入力を促す

• パラメータ宣言のところに記述 propmttest.cl

procedure prompttest (file_name) 

string file_name {prompt = “Input file name”}

struct *flist

begin

struct line

propmttest.cl

プロンプトのメッセージ内容

24

flist = file_name

:

end

内部変数へ代入されるときにプロンプトが出る

mktemp• 一時使用ファイル(temporary file)を作るコマンド

• ファイル名を自動生成する

• スクリプト中で大変便利

• 片づけるのを忘れずに

• 例)

hoge.xxxx(xxxxは数字)というファイル名が自動生成されてtmpfileにアサインされる。

25

ecl> tmpfile = mktemp( “hoge.” )

Page 14: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

list directed parameters(LDP)• テキストファイルの中身を、改行で区切られた文字列の順序リストとして格納してくれる

CLスクリプト中での宣言 必ずb i の前で• CLスクリプト中での宣言:必ずbeginの前で、

struct *ppp あるいは string *ppp

• テキストファイルをLDPに格納するやり方

ppp = file_name

• CLスクリプト中でファイルの中身を順序読み出CLスクリプト中でファイルの中身を順序読み出しするときは、必ずこれを使う。

26

ワイルドカードとsectionsコマンド• ワイルドカード

– UNIXワイルドカード(*, ?, …)

– IRAFの@付ファイルリスト

• sectionsコマンド

– ワイルドカードはsectionsコマンドで展開して標準出力に書き出す

例)– 例)

27

sections( “*.fits”, option=“full” )

sections( “@list”, option=“root” )

Page 15: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

LDPとsectionsを組み合わせてワイルドカードを展開してファイルを読む

struct *flistinfileに格納されたワイルドカードを展開して、tmpfileにファイル名

string infile, junk

tmpfile = mktemp(“hoge.”)

sections( infile, option=“full”, > tmpfile)

flist = tmpfile

hil ( f ( fli t  j k ) !  EOF ) 

展開 、 pリストとして入れる

tmpfileをLDPに格納

while( fscan( flist, junk ) != EOF ) { ・・・ }

28

fscanでLDPから一つずつファイル名をjunkに読み込んでいく

4 実習4. 実習実習のサンプルスクリプトプログラムのタスク登録と実行例)

ecl> task taroex1 = taroex1.cl

29

ecl> task taroex1   taroex1.cl

ecl> taroex1

とりあえず、サンプルスクリプトを眺め、実行してみよう

Page 16: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

FITS画像のヘッダをよむFITS画像リスト(img/KCC*.fits)を入力して、FITSファイル名と天体名(OBJECT)のリス

を す ( )トを出力する(taroex1.cl)FITSヘッダを読むには?

–使うタスク:imgets

while( fcan( flist, inname ) != EOF ) {imgets( inname  ‘title’ )

30

imgets( inname, ‘title’ )obj = imgets.value

}

課題(1)taroex1.cl を改訂して、FITS画像リスト(img/KCC*.fits)を入力して、FITSファイル名、天体名、露出時間、画像の平均値(mean)、画像のモード(mode)を出力するスクリプトを作成しなさい

画像の平均値等?

使うタスク:imgets imstat

ファイル名iminfo.clで作成

–使うタスク:imgets, imstat

出力例img/KCC00003.fits (1943)Anteros 300.0 7311.04 7250.83

img/KCC00004.fits (1943)Anteros 300.0 7289.13 7227.56

: 31

Page 17: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

タスクの結果をscanに渡す(パイプ)real mn, md

:1タスクを2行にわたって書きたいときは╲(バックスラッシュ)で行末をエスケ プする:

imstat( img, field=“mean, mode”, format‐) | ╲scan (mn, md) Imstat で img の mean, mode を表示

⇒パイプで表示結果を scan に渡すscan はパイプで渡された値を mn, md に格納

╲(バックスラッシュ)で行末をエスケープする

32

FITSデータを仕分けるFITS画像のヘッダキーワードDATA-TYPをもとに画像ファイルを分類し、リストファ

( ) 書 す( )イル(テキスト)に書き出す(taroex2.cl)FITSヘッダの情報を得るには?

–使うタスク:hselect (例えば)※imgetsでも可能

結果をファイルに出力する–結果をファイルに出力する

33

outfiles = datatyp//"."//titleprint( param, >> outfiles )

//は文字列連結

Page 18: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

標準入力を読み取る標準入力の文字列を読み取ってbool型変数に入れる(taroex3.cl) nが入力されるまで繰り返す

y か n 以外は無視されるbool flg = yesWhile( flg ){

print( “‐‐> Continue? <y/n>” )while( scan( flg ) == 0 ) {}

34

}if ( ! flg ) breakelse print( flg//“ Continue.” )

}bye 

画像をds9に表示させる画像を指定してds9に表示(taroex4.cl)

–使うタスク:display

String image_name {prompt = “Input image name”}

beginstring filename

ecl> !ds9 &

35

filename = image_namedisplay(filename, 1, contras=0.0005,     

ztrans = “log”, nsample=100000)end

実際は1行で書く

Page 19: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

隠しパラメータを変更可能に隠しパラメータを実行時に変更できるようにする:taroex4n.cldisplayタスクのパラメータztrans=“linear”も選べるように

String image_name {prompt = “Input image name”}String ztrans=“log” {prompt = “ztrans for display”, enum=“log|linear"}

beginstring filename,zt

実際は1行で書く

36

filename = image_namezt = ztransdisplay(filename, 1, contras=0.0005, ztrans = zt, 

nsample=100000)end

実際は1行で書く

課題(2)① taroex1.cl と taroex4.cl を組み合わせて、

FITS画像リスト(img/KCC0*.fits)を入力像を 表 す プして画像を順にds9に表示するスクリプ

トを作成しなさい

② さらに、(taroex3.cl を参考にして)標準入力からの入力で、次の画像を表示するタイミングを制御できるようにしなさいタイミングを制御できるようにしなさい(yを入力すると次の画像を表示する)

37

seqdisplay.cl

Page 20: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

ds9の座標値を読み取るds9のカーソルの座標値をfscanで読み取って変数に入れる(taroex5.cl)カーソル変数imcurを使うds9は起動しておくこと

While( fscan( imcur, xx, yy, wcs, command ) != EOF ){key = substr( command, 1, 1 )if ( key == “q” ){

break カーソル上での入力が qならば抜ける

38

break} else {

print( xx, yy )}

}

課題(3)ds9上で画像の左下と右上2点を指定して、その矩形領域の統計情報(ピクセル数、

な )を表 す プmean、modeなど)を表示するスクリプトを作成しなさい

– 使うタスク: imstatistics

【余裕がある人は】スクリプトを 画像1枚ではな

ファイル名imreqtstat.clで作成

【余裕がある人は】スクリプトを、画像1枚ではなく画像リストを引数として入力するように改造しなさい。また、表示した矩形領域および統計情報をファイルに出力するようにしなさい

39

Page 21: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

インタラクティブな画像位置合わせカーソル座標値をfscanで読み取って変数に入れ、reference画像とのshift量を一時ファイルに格納。結果ファイル名リストは事前に作成(taroex6.cl)結果ファイル名リストは事前に作成(taroex6.cl)

string tmpfile1, tmpfile2, tmpfile3tmpfile1 = mktemp( “tmp$shiftimg1.” )(...snip...)while( fscan( flist, fname ) != EOF ) {

display( fname, 1 )if( fscan( imcur, xx, yy ) == 2 ){

sx = refx – xx

実行したら、位置合わせ結果をseqdisplay.cl で表示してみましょう。

⇒小惑星は見つかりましたか・・・?

40

sy = refy – yyprint( sx, sy, >> tmpfile3 )

}}imalign( inimg, refimg, tmpfile2, “@”//outlist, shifts=tmpfile3)

実行のしかたは次ページ

準備(imalignの結果ファイルのファイル名リストを作成)

入力

ecl> sections(“img/KCC0*%.fits%_sh.fits%”, > “shiftfile.lst”)

結果画像のファイル名リストを作る。%で囲まれた文字列を置換

動作

• 最初に、reference画像として指定した画像をds9に表示

適当な星(※)にカーソルを合わせて何かキー(“q”以外)を打つと、その位置をreference座標として記録

入力

ecl> task taroex6 = taroex6.cl

ecl> taroex6 img/KCC0*.fits img/KCC00003.fits shiftfile.lst

reference画像 Imalign結果の画像ファイル名リスト

%で囲まれた文字列を置換

41

• 次に、画像リストとして入力した画像(img/KCC0*.fits)を順にds9に表示

カーソルを※と同じ星に合わせてキーを打つ

今表示している画像の星の座標とreference座標との差分を記録

imalignを実行。結果は引数で与えたファイルリストに記載されているFITSファイルへ

インタラクティブな画像位置合わせ

Page 22: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

課題(4)taroex6.clをもとに、特定の天体に位置を合わせて画像を合成するスクリプトを作りなさい(ヒント:シフト結果のファイル名もmktempで作成し、終わったら消去する)

– 使うタスク: imalign, imcombine

ファイル名imshiftcomb.clで作成

【余裕がある人は】imalign, imcombineのパラメータを隠しパラメータとして設定したうえで、実行時に変更できるように改造してみよう。

42

5. さらに先へ

43

Page 23: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

パッケージ登録• panda.clを参考にして、パッケージを作成してみよう

おまけ

• 自作CLスクリプトをIRAF CLログイン時に常にタスクとして登録するには?

loginuser.cl

44

set mycls = “/full/path/to/clscriptfilesdir/”

task taroex0 = mycls$taroex0.cl

g

CLスクリプトファイルが置かれているディレクトリへの絶対パス

解析パイプラインを作ってみよう• img2/ のデータを解析するパイプラインを作りなさい1. FITSヘッダキーワードDATA-TYPで、オブジェクト、

フラット、バイアスに分類

2.バイアスを合成する

3.オブジェクト・フラットフレームからバイアスを引く

4.フラットを合成して、オブジェクトフレームをフラット補正するト補正する

5.オブジェクトフレームを位置合わせし合成する(インタラクティブに)※

45

Page 24: IRAFIRAF講習会講習会 - NAO...IRAFIRAF講習会講習会 ~CLScriptCL Script入門~ 国立天文台 天文データセンター 古荘古荘 玲子 玲子 20112011年年22月月1616日日

その他、知っていると便利なコマンド• bye

スクリプトを途中終了する

• next• next繰り返しの制御構造(for, while等)で次ターンとしてループ先頭へ

– C言語の continue; と同等

• goto指定したラベルの行へジャンプ(ラベルは末尾にコロン“:”をつける)

• accessファイルが存在するかどうか判定(存在すれば真=1)

– 例

46

if( access( infile ) == 0 ) bye

IRAF外部からCLを利用• 明日の板さんの講義をお楽しみに!

47