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 については以下のようになります。
 すべてをファイルとのやりとりの形にしてしまえば、今までと同じように使うことができます。
 また、画面に出力する文字列を英数字だけ(漢字なし)にしてしまえば、英語モード(?)でも、何の問題も起こりません。
 しかし、これはかなり不便です。今までに書いたプログラムを書き直す手間もかかります。実用的には使えない感じです。
 困りました。
2013.4.24 追記
 Free Pascal を使うといいようです。
 この話を
2013.4.24 http://o-tsu.seesaa.net/article/356945881.html
に書きました。
 よろしければご参照ください。
posted by オーツ at 05:09| Comment(2) | TrackBack(0) | パソコンとIT | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして。佐々木と申します。
TurboPASCALのブログに惹かれましてコメントさせて下さい。
私も昔、MS-DOS時代に使用していました事もあり、たまに懐かしくなりアルゴリズムの確認にMacOSX Lion上のターミナルにてFreePascalを使用しておりますが、これにはWindows版もあり又、Crtユニットもありますので、試してみる事をお勧め致します。
下記がURLとなります。
http://www.freepascal.org/
Posted by 佐々木優 at 2012年08月24日 00:36
佐々木優様
 貴重な情報をありがとうございます。
 FreePascal をちょっと試してみようと思っております。
 時間が取れるかどうかが一番の問題なのですが、……。
 FreePascal が実用的に使えれば、Xp から移行するときにプログラムの書き換えをあまりしなくても何とかなりそうです。
 結果については、またブログでご報告します。
Posted by オーツ at 2012年08月24日 05:13
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック