call / subroutine
サンプルプログラムNo.12
「配列のところで紹介した平均と偏差を求めるプログラムのサブルーチン版」
プログラムが大規模になってくると、個々の操作をサブルーチン(副プログラム)として独立させ、個々の操作が正しく計算できているかどうかを確認した後、主プログラムで個々の操作を組み合わせて、全体として一連の計算をするというプログラムの書き方をする。ここで紹介するような簡単な場合には、サブルーチンを使うことはかえって複雑となるが、複雑大規模になってくるとサブルーチンは必要不可欠なものとなる。
また、Fortranで作図する際には、「11.電脳ライブラリ」で述べるように、 作図を指示するサブルーチンを読んでいく。
サブルーチンは、
subroutine サブルーチン名(引数) 変数宣言 実行文 return end
から成り立ち、サブルーチンの中は、主プログラムを同じように変数の宣言から実行文を書く。
サブルーチン名は、Fortran77標準規格では6文字以内の名前をつかい、 サブルーチンを呼び出すプログラム(上位プログラム)では、
call サブルーチン名(引数)
のように同じサブ−チン名で呼び出す。サブルーチンの中では、
引数は、変数,...のように変数を並べて書き、その個数と個々の変数の型(実数型・整数型・配列など)は、呼ぶ側(call)と呼ばれる側(subroutine)で一致している必要がある。但し、配列に関しては、主プログラムのほうが副プログラムで使う範囲より大きければよい(副プログラムでその一部を使う)。
型が一致していれば、変数名は異なっていても良い。
コンパイルの段階では個々のサブルーチンの中で文法ミスなどをチェックしているので、 引数が不一致の場合は、コンパイルはうまくいくが、実行の段階でエラーを起こす。 コンパイラーによってはオプションで実行時にチェックするようにするものもある。
return文は複数個あってもかまわない。
2002年度 fortran 演習
担当教官:山中康裕(galapen@ees.hokudai.ac.jp)・豊田威信(toyota@lowtem.hokudai.ac.jp)