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