FORTRAN(ファイル書き込み)


アニメ『少女終末旅行』

いくら信頼関係があったとしても、一発で壊れる行為ってあると思うんですよね。絶対にやってはいけない。キャラクタはほのぼのしてるのに、重たい内容な気がします。あったかい展開になること期待しながら見ています。

takk@deb9:~$ cat write-file.f
      PROGRAM MAIN
      OPEN(UNIT=10,FILE='sample.txt',STATUS='NEW',
     1ACCESS='SEQUENTIAL')
      I = 110
      J = 220
      K = 330
      WRITE(10,*) I,J,K
      CLOSE(10,STATUS='KEEP')
      STOP
      END
takk@deb9:~$ 

OPEN関数の各引数には、キーワードがついています。Pythonのキーワード引数と似てますね。驚きです。FORTRAN77の頃からこの指定方法があったんですね。
OPENの次の行に、1ACCESSとありますが、1は前行の続きの意味です。空白以外ならOKですが、続きの行数がわかるように1と書いています。
実行してみましょう。

takk@deb9:~$ gfortran write-file.f
takk@deb9:~$ ./a.out
takk@deb9:~$ cat sample.txt
         110         220         330
takk@deb9:~$

sample.txtにデータが保存されました。こんな書式で格納されるんですね。
それにしても引数のキーワードって分かりやすいですね。
つけていれば分かりやすいですが、行をまたぐのは嬉しくないので、引数の各キーワードが省略できるか確認してみます。

takk@deb9:~$ cat write-file2.f
      PROGRAM MAIN
      OPEN(10,'sample.txt','NEW','SEQUENTIAL')
      I = 110
      J = 220
      K = 330
      WRITE(10,*) I,J,K
      CLOSE(10,STATUS='KEEP')
      STOP
      END
takk@deb9:~$ gfortran write-file2.f
write-file2.f:2:14:

       OPEN(10,'sample.txt','NEW','SEQUENTIAL')
              1
Error: Syntax error in OPEN statement at (1)
takk@deb9:~$

ダメでした。エラーになりました。

省略できるのは、先頭のUNITのみのようです。

takk@deb9:~$ cat write-file3.f
      PROGRAM MAIN
      OPEN(10,FILE='sample.txt',STATUS='NEW',ACCESS='SEQUENTIAL')
      I = 110
      J = 220
      K = 330
      WRITE(10,*) I,J,K
      CLOSE(10,STATUS='KEEP')
      STOP
      END
takk@deb9:~$ gfortran write-file3.f
takk@deb9:~$ ./a.out
takk@deb9:~$ cat sample.txt
         110         220         330
takk@deb9:~$

Leave a Reply

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

CAPTCHA