FORTRAN(書式付き表示その4)


アニメ『妹さえいればいい。』

まだよく分かってないのだけど、もしかしてタイトルとは裏腹にシリアスで真面目な内容なんじゃないかと思って期待しながら見てます。主人公に告白してくる女子がいるのですが、主人公は妹好きキャラなので、告白を断っているかと思いきや、そういう理由でもなさそう。その謎がきっと深いなのだろうと気になってしまいます。きっと才能への嫉妬やら尊敬やらが告白を断る理由と絡んでくるのでしょうか。

対してすごく感じないのだけど、何か気になるFORTRANのFORMATの続きです。FORTRAN学習の先には何かあると思ってます。まあアニメの期待と同じかもしれません。学習の先に何もないかもしれないし、すごい悟りを得るかもしれない。学校でFORTRANの実習したときもそうだったのですが、FORTRANで何ができるんだろう、と不思議に感じます。まあ、いろんなことができるんでしょうけど。若い時に真面目に勉強しておけば、今FORTRANやり直しすることもなかったかもしれませんが、その時にFORTRANで感動が起こらなかったのでしょうがないです。
当時言われていたFORTRANやCといった高級言語よりも、私はアセンブラが面白くて仕方がなかったので、高級言語をまったく学ぶ気がありませんでした。
今はコマンドにハマってますので、どちらかといったら高級なのでしょうけど。

今回は実数型のFORMATの記述子、F、Eについて使ってみます。
まずはFから。

takk@deb9:~$ cat disp.f
       REAL A
       A=123.45
       WRITE(*,11111) A
11111  FORMAT(F10.3)
       STOP
       END
takk@deb9:~$ 

F10.3は、小数点を含んだ全部の桁数が10で、小数点以下の桁数が3という意味です。実行すると、このように表示されます。

takk@deb9:~$ gfortran !$
gfortran disp.f
takk@deb9:~$ ./a.out
   123.450
takk@deb9:~$

Fで指定する桁数が不足している場合は、値の代わりに*が表示されます。

takk@deb9:~$ cat disp.f
       REAL A
       A=123.45
       WRITE(*,11111) A
11111  FORMAT(F6.3)
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
******
takk@deb9:~$

上記ではF6.3なので、123.450と表示が期待されますが、全桁数は6なので1不足しており、*の表示になっています。
F7.3にすると以下のように表示されます。

takk@deb9:~$ cat disp.f
       REAL A
       A=123.45
       WRITE(*,11111) A
11111  FORMAT(F7.3)
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
123.450
takk@deb9:~$

次はEです。指数表記です。E全体桁数.小数点以下桁数で指定します。

takk@deb9:~$ cat disp.f
       REAL A
       A=123.45
       WRITE(*,11111) A
11111  FORMAT(E10.2)
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
  0.12E+03
takk@deb9:~$

123.45は、指数表記で、0.12 x 10の3乗 なので、0.12E+03と表示されました。

Leave a Reply

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

CAPTCHA