TRNSYS/TypeStudioで既存ソースコードをビルドする
TRNSYS18でリリースされたTypeStuidoは、手軽にコンポーネントの開発を行えるツールです。
既存のIntel Visual Fortranで作成されたソースコードのビルドも可能ですが、コンパイラの仕様の違いからいくつか注意点があります。
エラーメッセージの読み方
まずはエラーメッセージの読み方から。既存のソースコードをビルドすると、図のようなエラー画面が表示されることがあります。
このメッセージからはエラー発生箇所と内容の情報が得られます。
- エラーが発生した行、カラム(この例では347行目、9カラム目)
- エラー発生行のコード
- エラーメッセージ(この例ではjfixという暗黙の型はないという意味)
ちょっと余談ですが、エラーメッセージは一般的なForranのエラーメッセージらしく、ネット検索すると関連情報を見つけることができます。
エラーと対策
Function ‘jfix’ at (1) has no IMPLICIT type
jfixはTRNSYSのソースコードで頻繁にでてきますが、これはIntel Fortranの関数です。TypeStuidoで使われているGFortranには本来存在しない関数のようです。(未確認)
対策としてTypeStudioにはこれに代わるJFIXという関数が内部的に用意されているらしいのですが、関数名が大文字という点に注意して下さい。
そう、このエラーは小文字のjfixを大文字のJFIXに変更すれば解決できます。
コンパイルできない
他のコンパイラで作成したソースコードが、そもそも認識されないケースがあります。Workspaceへソースコードを追加しても、図のようにComple Workspaceがグレーアウトして選べない状態になります。メニューに”(No Types Found)”と表示されているとおり、コンポーネントのソースコードとして正しく認識されていません。
原因はSubroutineの定義の前に入っているタブです。図からは分りにくいですが、Subroutineのまえにタブが使われています。対策は単純でこのタブを削除、もしくはスペースへ置換えれば解決します。
なお、ソースコードの認識は読み込みのタイミングで行われます。TypeStudioの中でタブを削除してもすぐには認識されません。この場合はいったんworkspaceから削除、その後再度addし直してください。
もしくは予めメモ帳などでタブを削除してからworkspaceへaddすると良いでしょう。
これ報告済みなので今後のバージョンアップで修正されると思います。
TRNSYS16形式のコンポーネントへの対策
TRNSYS16から17へのバージョンアップの際に、コンポーネントの書き方が大幅に改定されています。このためTRNSYS16,およびそれ以前のコンポーネントのソースコードは書き換えが必要です。
詳しい情報についてはドキュメント 7.5. Converting Types from earlier TRNSYS Versions にまとめられています。以前のバージョン用に作られたコンポーネントをTypeStuidoでビルドする場合は、ドキュメントに沿ってソースコードの書き換えを行って下さい。
TRNSYS16以前のコンポーネントではFortran77相当で書かれている事があります。Fortran90とはコーディングが若干異なります。これもエラーの原因になることがあります。その点も注意して書き換えが必要です。
動作環境
以下の環境で動作を確認しています。
- Windows11 Pro(64bit, 21H2)
- TRNSYS18.04.0001(64bit)