引数キーワード
利点
仮引数と実引数の関係が分かりやすくなって良い。
仮引数と実引数の順序が違っても良い。
注意
引数キーワードを使う場合、インターフェースモジュールを用意しておく必要がある。
主プログラム (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=",c
end 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 interface
end module interface_mod
サブルーチン (sub.f90)
subroutine sub(x,y,z)
real,intent(in)::x,y
real,intent(out)::z
z=x+y
end 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=",c
end program arg_keyword
実行例
$ arg_keyword
a= 3.000000
b= 4.000000
c= 7.000000
サンプルプログラム
- arg_keyword.f90 - 2011/09/08 1:12、A M (バージョン 1) 削除
- 1KB ダウンロード
- interface_mod.f90 - 2011/09/08 1:12、A M (バージョン 1) 削除
- 1KB ダウンロード
- makefile - 2011/09/08 1:12、A M (バージョン 1) 削除
- 3KB ダウンロード
- sub.f90 - 2011/09/08 1:12、A M (バージョン 1) 削除
- 1KB ダウンロード