2018年12月16日

久しぶりに FORTRAN コンパイラを使ったら

 オーツは、半世紀近く前に自作した FORTRAN のプログラムを今でも使っています。最初は大型コンピュータ用に開発したのでした。その後パソコンに移植しました。使用期間が最長のソフトです。オーツとしては、中身をすべて知っている(実はかなり忘れているのですが)ので、安心して使えます。
 さて、先日、この FORTRAN プログラムを少し改良する必要が生じました。ソースプログラムのとある部分を読み、処理手順やアルゴリズムを確認し、どう直せばいいか考えました。直すべき部分はメモに書きました。この際なので、ついでに直しておく部分もあり、合計で4点ほどの改良点がありました。4点とはいえ、ソースプログラムのあちこちを直すことになります。
 先に、旧プログラム類はすべて名前を付け替えて保存しておきました。万が一、改良を加えたプログラムが動かなくなったりしたら元に戻せるようにしておかなければなりません。
 こういう準備をした上で、現在の FORTRAN のソースプログラムをいじりました。
 で、コンパイラを呼び出してコンパイルしてみると、プログラムがコンパイルできませんでした。いろいろチェックしていてわかったことは、旧パソコンでは普通に動いた FORTRAN コンパイラですが、今のパソコンでコンパイラをインストールするとき、旧パソコンとは別のフォルダ名を付けたことが原因の一つでした。そのため、ソースプログラム中に記述してあるライブラリが呼び出せなかったのでした。なぜフォルダ名をこんなことにしたのか、忘れてしまいました。パソコンを買い換えて新しくしていくときに、フォルダ名を少しでも変更するとどんなところに悪影響が出るか、わかったものではありません。気をつけなければなりません。
 もう一つ問題が起こりました。こちらはもっと深刻でした。普通にコンパイル・リンクして、EXE ファイルができあがるのですが、そのバイナリプログラムにパラメータとしてファイル名を与えると、そのファイルがうまくオープンできないのです。
 原因を探るために、いろいろ試しました。短いテストプログラムを作って、実行したりもしました。リンケージエディタのマニュアルまで読み直す羽目になりました。
 しばらくして(2時間くらいかかりましたかねえ)ソースプログラムや実行プログラムが入っているフォルダのパス名の途中に「長いフォルダ名」(8バイト超)が含まれていることが問題であることを発見しました。
 そういえば、十数年前に同様のトラブルを経験していました。かなり時間が経ったため、オーツがそのときのことを忘れてしまっていたことが原因でした。
 一時的な短い名前のフォルダを作り、そこに関連ファイルをコピーしてからコンパイル・実行してみると、ちゃんと動きました。
 その後、いくつか細かい点のデバッグをして、プログラムが完成し、今までの旧版を削除して、新版を同じ名前でそこにコピーし、今回の改良作業は終わりました。
 それにしても、今回の二つのトラブルのせいで、数時間は無駄に使ってしまいました。
 改良作業の間、集中してパソコンで作業しましたが、オーツが数時間もこんなことに集中するのは本当に久しぶりです。今回はちょっとした改良だったのに、それでも数時間かかってしまいました。今考えている本格的な計算ルーチンを組み込むことになったら、果たして何時間かかることになるのでしょうか。加齢の影響もあって(?)、プログラミングの能力が落ちているように思えます。困ったことです。そのうち、自作プログラムのメンテナンスさえできなくなってしまうのでしょうか。
 それにしても、数十行程度の追加・変更でしたが、本当に久しぶりの FORTRAN 言語の使用経験でした。DO 文の書き方とか、危うく忘れかけていたところですが、他の部分のソースプログラムを見て、思い出しながらコーディングしました。
 FORTRAN は、オーツが最初に覚えたプログラミング言語であり、いわば母語みたいなものです。こういう言語はずっと忘れないと思っていましたが、そうでもないようです。忘れることがあるのです。プログラミング言語は、自然言語と同様に、使い続けないと忘れてしまうものなのでしょう。これも新発見でした。
posted by オーツ at 03:27| Comment(0) | パソコンとIT | このブログの読者になる | 更新情報をチェックする