国立研究開発法人防災科学技術研究所 水・土砂防災研究部門
国立研究開発法人防災科学技術研究所 水・土砂防災研究部門
トップ 一覧 検索 ヘルプ RSS ログイン

getarg, iargcに変わるcommand_argument_count等の新しい組み込み関数

PGI-FORTRANでは
コマンドラインからの引数の個数を数える、iargcの組み込み関数が利用できない。

従って、新しい組み込み関数である、COMMAND_ARGUMENT_COUNTを利用する

INTEGER FUNCTION command_argument_count()

のようにfunctionとして定義されており,

num = command_argument_count()

として利用できる。

また、getargは引き続き利用できるが、基本的に文字列としてしか利用できなかったが、
新しい、GET_COMMAND_ARGUMENTを利用すると、

SUBROUTINE get_command_argument(number,value,length,status)
 INTEGER,INTENT(IN) :: number
 CHARACTER(*),INTENT(OUT),OPTIONAL :: value
 INTEGER,INTENT(OUT),OPTIONAL :: length,status

というように定義されているので、整数で受け取りたいか、文字列で受け取りたいかを自動的に判断してもらえる。

例えば、 ./a.out infile.txt 30 のように文字列と整数を入れた場合、

integer nk
character(len=100) infile

call get_command_argument(1,infile)
call get_command_argument(2,nk)

とやると、1つ目の引数は文字列として読み込まれる。2つ目の引数は整数として引き込まれる。
同じことを昔のgetargでは、

integer nk
character(len=100) infile
character(len=100) tmpc

call getarg(1,infile)
call getarg(2,tmpc)
read(tmpc,*) nk

のように、一旦文字列として読んで、内部ファイルとしてnkに変換していた