!<--+C言語ではループの先頭に戻る時にはcontinue文を使うが、それに相当するのはFortran90/95ではcycleである。case文、do文を使って自由にプログラムを作ってみよ。[#j7309195]C言語と同様に関数(function)という手続き(procedure)は、Fortran90/95プログラムの重要な構成部品である。関数の使い方は以下の例を見ればわかるであろう。次のプログラムをfunction01.f95として保存し、実行せよ。function01intent(in)は引数iが入力引数であり、関数next_intの内部で変更されることがないことを保証するものである。関数を以下のように内部副プログラムとしてメインの中に含むこともできる。次のプログラムをfunction02.f95として保存し、実行せよ。(内部副プログラムについては後述。)//(内部副プログラムについては後述。出力(返り値)が不要な場合も多い。そのようなときC言語ではvoid関数とする。Fortran90/95ではvoid関数をsubroutineと呼ぶ。出力(返り値)が不要な場合も多い。C言語ではvoid関数とするこのような関数をFortran90/95ではsubroutineと呼ぶ。'''subroutine名'''とする。[#sfeea337]C言語は値渡し、Fortran90/95は参照渡しである。C言語が値渡しであることは、以下の例でkの値が変わっていないことから確認できる。}これと似たプログラムをFortran90/95で書くと以下のようになる。このプログラムは危険。これと'''似た'''プログラム(同じではない)をFortran90/95で書くと以下のようになる。call_by_referenceこのプログラムではkの値はサブルーチンincrementを読んだ後に変更されている。このプログラムではkの値はサブルーチンpassを読んだ後に変更されている。[#q0bf59e2]上の二つのプログラムをそれぞれcall_by_value.c、call_by_reference.f95という名前で保存し、実行せよ。[#x68e19ff]値渡しに比べて参照渡しは値をコピーする必要がないので速い。従って計算速度を重視するFortran90/95言語では値渡しを採用していないのは当然である。引数として渡した変数がそのサブルーチン内部で勝手に(誤って)変更されると見つけにくいバグになり、危険である。このような事故を防ぐためにFortran90/95には引数に入出力属性をつけることができる。サブルーチンincrementの引数iは入力属性をもつと指定すると(下のプログラムの2行目)、コンパイラがエラーを出してくれる。[#mb8470f6]call_by_reference.f95を上のように変更してコンパイルせよ。[#tab07c3a]入出力属性には以下の3種類がある。