FORTRAN77を学習してプログラミングできるようになった気がしますので、Fortran90の方へ移っていきたいと思います。
Fortran90をビルドするには、拡張子を「.f」から「.f90」に変更すれば良いようです。しかも77の仕様で作成したソースコードは、Fortran90で使えるようです。
では、試してみます。
takk@deb9:~$ gfortran cut8.f -fdollar-ok
77でビルド後、90用にファイル名を変更して、ビルドします。
takk@deb9:~$ mv cut8.f cut8.f90
takk@deb9:~$ gfortran cut8.f90 -fdollar-ok
cut8.f90:12:56:
OPEN(UNIT=10,FILE=ARGS(1:INDEX(ARGS,' ')-1),
1
Error: Syntax error in OPEN statement at (1)
cut8.f90:13:12:
1 STATUS='OLD',
1
Error: Unclassifiable statement at (1)
cut8.f90:14:12:
2 ACCESS='SEQUENTIAL')
1
Error: Unclassifiable statement at (1)
takk@deb9:~$
あれ、ビルド通りません。行の連結が上手くいっていないのでしょうか。
3行に渡ってOPEN関数を書いていましたが、1行にまとめてみます。
OPEN(UNIT=10,FILE=ARGS(1:INDEX(ARGS,' ')-1),
1 STATUS='OLD',
2 ACCESS='SEQUENTIAL')
これが、こうなりました。
OPEN(UNIT=10,FILE=ARGS(1:INDEX(ARGS,' ')-1),STATUS='OLD',ACCESS='SEQUENTIAL')
ビルドできました。
takk@deb9:~$ gfortran cut8.f90 -fdollar-ok takk@deb9:~$
無理やり一行にしてしまいましたが、Fortran90で継続行の書き方が変わっているようですので、それに対応してみます。
行が継続する場合は、&を行末につけて、その次の行の開始にも&が必要になります。
OPEN(UNIT=10,FILE=ARGS(1:INDEX(ARGS,' ')-1), &
& STATUS='OLD', &
& ACCESS='SEQUENTIAL')
ビルドして確認。
takk@deb9:~$ gfortran cut8.f90 -fdollar-ok takk@deb9:~$
通りました。
&の位置はそんなに厳密でもないようです。
OPEN(UNIT=10,FILE=ARGS(1:INDEX(ARGS,' ')-1), &
&STATUS='OLD', &
&ACCESS='SEQUENTIAL')
takk@deb9:~$ gfortran cut8.f90 -fdollar-ok takk@deb9:~$
ずっと気になってますが、Fortran90になっても、-fdollar-okって必要なのでしょうか。はずしてビルドしてみます。
takk@deb9:~$ gfortran cut8.f90
cut8.f90:54:16:
3300 FORMAT(A$)
1
Fatal Error: Invalid character ‘$’ at (1). Use ‘-fdollar-ok’ to allow it as an extension
compilation terminated.
takk@deb9:~$
エラーになったので必要そうです。


コメント