コンピューター100%

QBasicで日本語が使える!?

QBasic(Quick-Basic)についての情報はこちら
QBasicは日本語は使えないという制限があるのですが、今回すべての状態ではありませんが一部において日本語が使えることを確認しました。
 普通の状態ですと、QBasicは日本語モードのMS-DOSからは起動することができません。
しかし、何らかの理由で日本語モードでQBasicを起動できた場合、QBasic内で日本語を使うことができるようになります。

JPコマンドとUSコマンド
MS-DOSプロンプトの言語を変更するには、日本語にするJP,英語にするUSを使います。
MS-DOSプロンプトを開いてから、
C:\WINDOWS>JP
とすれば日本語モードになりますし、
C:\WINDOWS>US
とすれば英語モードになります。
日本語モードと英語モードの区別の仕方はディレクトリの区切りが¥か/で見分けられますし、英語モードの方が字体が太くなります。また、CHEVというコマンドでも確認できます。
C:\WINDOWS>CHEV
日本語モードの場合は、 現在のモードは日本語モードです。

CHEV コマンドの代わりにJP,USコマンドを使用してください。

というメッセージが表示されます。
私の環境では

Current mode is Japanese mode

Please use JP, US command instead of CHEV command.

というメッセージが表示されます。
しかし、英語で「日本語モードです。」といわれてもなんか説得力に欠けますが。

CHCP
 では、実際にどのようにしてモードを変えているのか、JPコマンドの本体JP.batファイルとUSコマンドであるUS.batファイルの内容を調べてみます。
 どちらともバッチファイルというMS-DOSの操作を自動化する手順を記録したものですので、テキストファイルです。日本語モードに変更する[C:\WINDOWS\COMMAND\Jp.bat]を開いてみるとこのような内容になっています。

@ECHO OFF
rem Change current code page to Japan and execute %1 if specified.
CHCP 932
%1 %2 %3 %4 %5 %6 %7 %8 %9

英語モードに変更する[C:\WINDOWS\COMMAND\Us.bat]の中身はこうです。

@ECHO OFF
rem Change current code page to United States and execute %1 if specified.
CHCP 437
%1 %2 %3 %4 %5 %6 %7 %8 %9

どちらも中身はほぼ一緒です。
1行目はこれから行う処理を画面には表示しないようにする命令です。
2行目はコメントといって処理とは無関係です。何のコードに変更するかが書いてあります。
3行目に注目してください。CHCPの後に数字が3桁並んでいます。このCHCPというコマンドがコード変更の役割を担っていて、数字は日本語や英語といった言語を示すコードを示しています。日本語は932、英語は437という番号になっています。
 このコマンドCHCPの後に続けて、932または437という番号を打ち込んでもモードは変更されます。
 Jp.batやUs.batというコマンドにしたのは、コマンド名と、コード番号を覚えるのが大変なので簡単に変更できるようにしたかったからです。逆にいえば、他の言語のコードが分かればその言語のモードに変更できるバッチファイルを作ることもできるわけです。CHCPの後の数字を変えればいいだけです。
 というわけで、JPコマンドもUSコマンドも実はCHCPコマンドの中継役でしかないことが判明した今、そのCHCPコマンドに焦点を当てていきましょう。
とりあえず、MS-DOSプロンプトに入力してみます。

C:\WINDOWS>CHCP
現在のコードページ: 932(日本語モードの場合)
Active code page: 932(英語モードの場合)

上のようなメッセージが出ます。これは現在の言語のコードを示しています。先ほどのCHEVコマンドでは人間にやさしい文章で出てきたのに対し今度はコードということでより機械的な感じになってきました。
 では、ここでCHCPの後に続けて数字3桁を加えてみます。

C:\WINDOWS>CHCP 437

これで、英語モードに通常は切り替わります。
しかし、私の環境では以下のようなメッセージが出て切り替わりません。

Code page 437 not prepared for system.

コードページ437はシステムでサポートされていません。

と日本語では表示されます。

 何かが足りなくなっているのですが、なぜこうなったのか理由はわかりません。数字を932の日本語に変更しても、同じメッセージが出力されるだけです。しかし日本語も文字化けせずに入力できるので、日本語モードだとは思うのですが、メッセージが英語で表示されるところを見ると英語モードなのか・・・。しかし、日本語モードにも英語モードにもエラーが出て切り替わらないためどちらでもないが、両方の特徴を含んでいる状態と考えられます。
 この状態で、QBasicを起動すると、多少回りの線が文字化けしますが起動できてしまうのです。
そして、ツールバーで入力モードを「ひらがな」にすることによって日本語もいれることができます。 PRINT文で ""で囲んだ日本語を表示させることだってできます。でも、さすがにSCREEN命令でフルスクリーン表示にした場合は表示できません。表示できるのはウインドウ内に限られます。
画面写真

 このように、特殊な状況ではありますが、QBasicで日本語を入出力できました。
 原因として考えられるのは、[c:\config.sys]で、DOS画面で日本語表示するための命令をはずしていることです。試しに、日本語表示を組み込んでパソコンを起動したところ、日本語モードなのに、英語でメッセージが表示されるといった現象がなくなりましたし、Qbasicも起動できなくなりました。
日本語の組み込みをはずす方法は、[c:\config.sys]を開いて、以下を編集します。

rem DEVICEHigh=C:\WINDOWS\BILING.SYS
rem DEVICEHigh=C:\WINDOWS\JFONT.SYS /MSG=OFF
rem DEVICEHigh=C:\WINDOWS\JDISP.SYS /HS=LC
rem TShoot: DEVICEHigh=C:\WINDOWS\JKEYB.SYS

 こうすると、起動時やDOSコマンドを実行したときに、英語で表示されますが、実害はないはずです。日本語も文字化けせずに表示されます。

 私のパソコンでは、MS-DOS系に記号入力する際、キーボードの配置とはまったく関係ない記号が出てくる、つまり押したキーと出てくるキーが違うという現象も発生しています。もしかしたらこれとも関係があるかもしれません。
 もしみなさんのなかにも日本語を使えたという方や記号の配置がバラバラになったという方がいらっしゃいましたら是非お知らせください。原因がわかる方教えていただければうれしいです。

ページ内検索
文章内から検索:
ランキング
著作権表記
Copy right © Ship.
PR