FORTRAN(関数その3)


アニメ『Dies irae(ディエス・イレ)』

ん~。何が何だか分かりません。最近0話があるアニメがありますが、本編ではないので、0話を最初に見ても意味分からなくて当然なんだろうなあと思い、1話を見ましたが、やはり何が何だか。さらに2話まで見て、やはり分かりませんでした。仕方がないので分かるまで視聴継続です。原作はゲームのようです。

さて、分かるまで続けてるFORTRAN学習です。
FORTRANは偶然大文字で記述していましたが、新しいFortranは、もう言語が違うんじゃないかってぐらい古いFORTRANと異なっているらしくて、新旧区別するためにFORTRANとFortranというように記述を分けてるらしいです。偶然合ってましたが、知らずに全大文字表記を使ってました。

今回は、文関数を使います。
定義方法の違いを見るため、まず普通の関数(かつては副関数と呼ばれていた)をおさらいします。

      PROGRAM MAIN
      READ (*,*) I,J
      K=ADD(I,J)
      WRITE(*,11111) K
11111 FORMAT(I5)
      STOP
      END

      FUNCTION ADD(I,J)
         ADD = I + J
         RETURN
      END

文関数。

      PROGRAM MAIN
      ADD(I,J) = I + J
      READ (*,*) I,J
      K=ADD(I,J)
      WRITE(*,11111) K
11111 FORMAT(I5)
      STOP
      END

まるで違いますね。文関数はとても数学的に書けます。しかも簡単です。 何か作ってみましょう。

77では、円周率の定数が無いようですので、PIを返す文関数を作ってみます。

takk@deb9:~$ cat pi.f
      PROGRAM MAIN
      PI() = ATAN(1.0) * 4
      A=PI()
      WRITE(*,11111) A
11111 FORMAT(F10.5)
      STOP
      END
takk@deb9:~$ gfortran pi.f
takk@deb9:~$ ./a.out
   3.14159
takk@deb9:~$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA