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:~$
エラーになったので必要そうです。
コメント