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

FORTRAN、書式付き表示の続きです。

FORMATのラベルの順番は数値の大小関係ないようです。

takk@deb9:~$ cat disp.f
       A=500.5
       WRITE (*,11111) A
       WRITE (*,99999)
99999  FORMAT ('HELLO')
11111  FORMAT ('A=',F6.2)
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
A=500.50
HELLO
takk@deb9:~$

FORMATを定義する位置はどこでもよさそう。なかなか柔軟ですね。

takk@deb9:~$ cat disp.f
       A=500.5
99999  FORMAT ('A=',F6.2)
       WRITE (*,11111)
11111  FORMAT ('HELLO')
       WRITE (*,99999) A
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
HELLO
A=500.50
takk@deb9:~$

変数を指定しているのに、FORMATで書式を指定していないと実行時にエラーになります。

takk@deb9:~$ cat disp.f
       A=500.5
       WRITE (*,99999) A
99999  FORMAT ('HELLO')
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
At line 2 of file disp.f (unit = 6, file = 'stdout')
Fortran runtime error: Insufficient data descriptors in format after reversion

Error termination. Backtrace:
#0  0x7f579e1f7d4a
#1  0x7f579e1f8825
#2  0x7f579e1f8f79
#3  0x7f579e2be0db
#4  0x55f49cb44985
#5  0x55f49cb449d9
#6  0x7f579d7032b0
#7  0x55f49cb447f9
#8  0xffffffffffffffff
takk@deb9:~$

FORMATの引数は、複数指定可能です。

takk@deb9:~$ cat disp.f
       WRITE (*,11111)
11111  FORMAT ('AAA','BBB','CCC')
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
AAABBBCCC
takk@deb9:~$

空白文字は数を指定できます。AAAとBBBの間に10個の空白を入れたい場合は、10Xと指定します。

takk@deb9:~$ cat disp.f
       WRITE(*,11111)
11111  FORMAT('AAA',10X,'BBB','CCC')
       STOP
       END
takk@deb9:~$ gfortran disp.f
takk@deb9:~$ ./a.out
AAA          BBBCCC
takk@deb9:~$

改行の仕方は? というと、まだ覚えてません。

続く

Leave a Reply

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

CAPTCHA