作成されたMS-DOS版の計算プログラムなど)が遺産として残されていることがあると思います。そのほとんどはもう使うこともないプログラムでしょうけど、中には貴重なロジックが技術伝承されておらず、今後しばらく使いたいものが含まれているケースもあります。ソースファイルが存在していれば、その中身を解析して別の言語にコンバートするという方法もあるものの、他人が作成した太古のプログラム(往々にして複雑怪奇なスパゲティプログラムであることが多い)の解読ほど厄介なことはありません。コンパイラーなんてとっくに捨てているということがほとんどでしょう。別に作成し、プログラム自体はそのままの形でソルバーとして使用するケースがあります。いうシステムの流れは以下の通りです。根本的な解決というよりは応急処置みたいなものですが、とりあえずはこういう形でも古いプログラムを継続して使うことは可能です。ここで問題になるのが「ソルバープログラムが終了しない場合」です。いうことかというと、こういうプログラムはエラー処理が十分に考慮されていないことが多く、入力データに問題があると無限ループに陥ってしまうことが多々あります。なってしまうと、実行が終了したことが確認できないため、システム側がずっと待ち続けるというフリーズ状態になります。ソルバープログラムを改良できればいいんですが、前述の通りコンパイラーを持っていなかったり、そもそもソースファイル自体が消えてしまっているという対応不能のケースもあります。この問題への対処方法はいくつか考えられますが、もっとも容易なのは「プログラムの実行が指定した時間以内に終了していない場合、フリーズとみなして強制終了させる」という方法です。需要があるかどうかはわかりませんが、このロジックについて以下で説明します。最初に、ソルバープログラムが入力データファイルを読み込んで実行する形式の場合、プログラムを直接起動するよりもバッチファイル形式で実行するほうが安全です。存在している場合は、以下のバッチファイルで実行します。"C:\temp"solverこれは、ソルバープログラムでは基本的に同じフォルダー内にあるデータファイルを読み込むはずで、カレントフォルダーを明示的に移動させるためです。登場以前に広く使われていました。「1行ずつコマンドが書かれたテキストファイル」と考えてもらって構いません。したがって、システム側では入力データファイルと実行用バッチファイルを作成し、ソルバープログラムを起動させることになります。形式で作成しています。すると、以下の通りです。Ifこのコードでは「10秒経過して終了していない場合は強制終了」としていますが、この秒数に関してはソルバープログラムに合わせて適宜変更してください。実行が正常に終了した場合は10秒間待機せず次のプロセスに移ります。技術的な話をすると、最初は外部プログラム起動時にプロセスIDを保存しておき、フリーズしたときはそのIDのプロセスを強制終了させようとしたのですが、うまくいきませんでした。これは、起動したのがバッチファイルであり、ソルバープログラムを直接起動していないことが原因でした。このため、実行中のプロセスをすべて取得し、ソルバープログラム名と一致するものを終了させるというロジックにしています。以上、こんなマニアックなシステムに需要があるかどうかわかりませんが、古い遺産プログラムの扱いに悩んでいる人は参考にしてください。