plantFEM(旧SiCroF)メンテナをしております。
plantFEMは、Fortranベースのアプリケーションで、Fortranを独自拡張したモジュールを多数用意しております。
まずは、File-IOについての機能をご紹介します。
plantFEMにおけるIO: IOClass
Fortranでは、ファイルIOの際に煩雑な文法を意識する必要がありますが、plantFEMではこの煩雑さを(ある程度)解消しています。
では、まず、ファイルを開く→書き込む→閉じる
までを実装してみましょう。
IOについては、IOClassという部品を用意しております。
これは、stdという部品群に含まれていますので、stdをuse(importやincludeに相当)してきて使います。
まず、新規プロジェクトを作成します。
./plantfem new
すると、プロジェクト名やスクリプトの種類を聞かれますので、適当にエンターキーを連打します。
すると、home/以下にプレーンスクリプトが作成されますので、そこに書き込んでいきます。
program main
use std
implicit none
type(IO_) :: f
call f%open("./","hello",".txt")
call f%write("Hello, world")
call f%write(str(100)//"hello")
call f%write(trim(str(100))//"hello")
write(f%fh,*) 100.0d0
call f%close()
end program main
ファイル入出力用のカーネルを起動し、openコマンドを実行します。実行オプション(カッコの中)に、順に、ファイルパス、ファイル名、拡張子をカンマ区切りで入力すると、その名前のファイルが作成されます。
次いで、writeコマンドを実行すると、実行オプションに入った文字列をファイルに書き込みます。
注意として、文字列にしないと書き込めませんので、数値の場合はstr関数を使って、数値を文字列に変換して出力します。
また、str関数は出力末尾にスペースが含まれる場合がありますので、それを嫌う場合はtrim関数を用いて末尾スペースをカットして出力するとよいでしょう。
また、f%fhとするとファイルハンドルを呼び出せますので、Fortranのwrite文法とも組み合わせて使えます。
スクリプトを保存しましたら、
./plantfem home/untitled/main.f90
のようにして実行できます。
ファイルの中身はこのようになります。
✗ cat hello.txt
Hello, world
100 hello
100hello
100.00000000000000
今後、html、json、csv形式などに対応予定です。