利点
仮引数と実引数の関係が分かりやすくなって良い。
仮引数と実引数の順序が違っても良い。
注意
引数キーワードを使う場合、インターフェースモジュールを用意しておく必要がある。
主プログラム (arg_keyword.f90)
program arg_keyword use interface_mod a=1.0 b=2.0 call sub(x=a, y=b, z=c) ! 書式は, 仮引数=実引数
print *,"a=",a print *,"b=",b print *,"c=",cend program arg_keywordインターフェースモジュール (interface_mod.f90)
module interface_mod interface subroutine sub(x,y,z) real,intent(in)::x,y real,intent(out)::z end subroutine sub end interfaceend module interface_modサブルーチン (sub.f90)
subroutine sub(x,y,z) real,intent(in)::x,y real,intent(out)::z z=x+yend subroutine subコンパイル・実行例
$ make clean;make
m -rf ./obj/interface_mod.o ./obj/arg_keyword.o ./obj/sub.o ./obj/*.mod
real 0m0.002s
user 0m0.002s
sys 0m0.000s
make: Warning: File `makefile' has modification time 7.7e+02 s in the future
if [ ! -d ./obj ]; then \
mkdir -p ./obj ; \
fi
ifort -c -module ./obj -c -o obj/interface_mod.o interface_mod.f90
ifort -c -module ./obj -c -o obj/arg_keyword.o arg_keyword.f90
ifort -c -module ./obj -c -o obj/sub.o sub.f90
ifort -o arg_keyword ./obj/interface_mod.o ./obj/arg_keyword.o ./obj/sub.o -module ./obj
$ arg_keyword
a= 1.000000
b= 2.000000
c= 3.000000
仮引数と実引数の順序が違っても良い。
実引数の順序を変えた主プログラム (arg_keyword.f90)
program arg_keyword a=3.0 b=4.0 call sub(z=c, x=a, y=b) print *,"a=",a print *,"b=",b print *,"c=",cend program arg_keyword実行例
$ arg_keyword
a= 3.000000
b= 4.000000
c= 7.000000
サンプルプログラム