オーツは、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 については以下のようになります。
すべてをファイルとのやりとりの形にしてしまえば、今までと同じように使うことができます。
また、画面に出力する文字列を英数字だけ(漢字なし)にしてしまえば、英語モード(?)でも、何の問題も起こりません。
しかし、これはかなり不便です。今までに書いたプログラムを書き直す手間もかかります。実用的には使えない感じです。
困りました。
続きを読む