例えば、以下のようなことをしたいとする。
./a.out hoge.txt
このhoge.txtが引数である。
引数として与えることで、プログラムを書きかえることなし(コンパイルし直すことなし)に
引数である入力ファイルを変えるだけで実行することができる。
ここで重要なのは
getarg
関数である。
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した値を標準出力している。
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