引数キーワード

利点

仮引数と実引数の関係が分かりやすくなって良い。

仮引数と実引数の順序が違っても良い。

注意

引数キーワードを使う場合、インターフェースモジュールを用意しておく必要がある。

主プログラム (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 ダウンロード