入力ファイルを実行時の引数として与える

例えば、以下のようなことをしたいとする。

./a.out hoge.txt

このhoge.txtが引数である。
引数として与えることで、プログラムを書きかえることなし(コンパイルし直すことなし)に 引数である入力ファイルを変えるだけで実行することができる。
ここで重要なのは getarg 関数である。

Fortranプログラム例

PROGRAM argument
IMPLICIT NONE
CHARACTER*15 filelist, option
CHARACTER*15,DIMENSION(1:100) :: filename
INTEGER opt_int, i, readstatus
INTEGER,PARAMETER :: file_num=100

call getarg(1,filelist)                           !1つ目の引数
call getarg(2,option)                             !2つ目の引数
READ(option,*) opt_int                            !2つ目の引数を文字型⇒整数型
OPEN(100,FILE=filelist,STATUS='OLD')              !1つ目の引数で指定したファイルを開く
DO i=1,file_num
  READ(100,FMT=*,IOSTAT=readstatus) filename(i)   !ファイルからファイル名を読む
  IF (readstatus < 0) EXIT                        !読み込むデータがなかったらループを出る
ENDDO
CLOSE(100)

WRITE(6,*) filename                               !ファイル名を標準出力する
WRITE(6,*) opt_int+5                              !2つ目の引数に+2をした値を標準出力する
STOP
END PROGRAM argument

引数を2つ指定している。引数の型は 文字型 でなくてはならない。
1つ目の引数でfilenameを取得し、2つ目の引数でoptionを取得している。
そして、filenameと、optionで取得した値に+5した値を標準出力している。

filename.txtの中身

hoge1.txt
hoge2.txt
hoge3.txt
hoge4.txt
hoge5.txt

実行結果例

コンパイルした後実行する

./a.out filename.txt 2
hoge1.txt      hoge2.txt      hoge3.txt      hoge4.txt      hoge5.txt
7
最終更新:2011年02月21日 17:08
添付ファイル