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:~$
改行の仕方は? というと、まだ覚えてません。
続く



コメント