2010年10月01日

Windows 7 での Turbo PASCAL の動作

 オーツは、Windows 7 上で、DOS の16ビットコンパイラ(Turbo PASCAL)について、いろいろ試してみました。その結果について、まとめておきます。
 実行前に、コマンド・プロンプト画面で「chcp 932」を入れて、日本語モードにしておきます。
 第1に、自分のプログラムのコンパイルですが、これは正常に動きます。ただし、エラーメッセージがコマンド・プロンプト画面に出るときは、文字化けしています。しかし、このエラーメッセージをファイルに出力するようにし、コンパイルが終わってからファイルを表示するようにすると、ちゃんと表示します。したがって、実質的な問題はありません。ソースプログラム(*.pas)をコンパイル・リンクして、実行可能プログラム(*.exe)を作り出すことができます。
 第2に、実行可能プログラムの実行段階のエラーに関してです。これは、なかなかめんどうなので、以下、区分しながら説明します。
(1) プログラムから画面に(日本語の)文字列を書き出す場合
 これは正常に動きます。
(2) キーボードから実行可能プログラムにデータを入力する場合
 入力時点で画面全部が文字化けします。
 それまで(プログラムの出力で)正常に表示できていたコマンド・プロンプト画面上の日本語の文字が瞬時に文字化けします。
 キーボードからの入力は PASCAL の readln 文で行いますが、これを実行すると、画面の表示が変わるということです。
 プログラムの実行が終わると、ぐちゃっとした画面からもとの日本語画面に戻って、全体が正しく表示されます。
 ということで、インタラクティブにプログラムにパラメータなどを渡すようなことができません。
(3) 入力用ファイルハンドラを用意して、それを CON に割り当てて、ファイルからのデータの読み込みを行うと、キーボードからの入力ができます。このやり方をしても、文字化けが起こります。
(4) ファイル(Shift JIS コードで書かれたテキスト)との入出力は正常に動きます。

 ちなみに、readln 文の直前・直後に DOS の命令 "chcp 932" を実行してみましたが、何も変わりませんでした。この手は使えないということです。
 また、readln 文を使わないキーボード入力(keypressed や readkey)を試してみましたが、オーツが持っている Turbo PASCAL は、NEC-9800 シリーズ用で、CRT ユニットがマシンに対応していないため、uses CRT を入れたとたん、プログラムが実行できなくなりました。この手も使えません。

 というわけで、以上をまとめると、Windows 7 上の Turbo PASCAL については以下のようになります。
 すべてをファイルとのやりとりの形にしてしまえば、今までと同じように使うことができます。
 また、画面に出力する文字列を英数字だけ(漢字なし)にしてしまえば、英語モード(?)でも、何の問題も起こりません。
 しかし、これはかなり不便です。今までに書いたプログラムを書き直す手間もかかります。実用的には使えない感じです。
 困りました。
続きを読む
posted by オーツ at 05:09| Comment(2) | TrackBack(0) | パソコンとIT | このブログの読者になる | 更新情報をチェックする