Windows 95/98 における DOS エミュレーションの制限事項はありますか
過去に Micro Focus COBOL で MS-DOS 向けに書かれて来たアプリケーションの多くは、ACCEPT/DISPLAY 文でキャラクタ型の画面パネルを操作するような形式のものでした。このようなアプリケーションを、Micro Focus Net Express によって Windows 32bit 環境へ移植するとき、 Windows 95/98 の DOS エミュレーションの制限によりいくつかの問題が発生します。ここでは、それらの問題を解説し、可能な限りの解決方法を説明します。
Windows 95/98 のキャラクタモードの制限
Net Express または Windows 32bit 版の Micro Focus COBOL では、アプリケーションを実行する際に、キャラクタモードの実行と GUI エミュレーションモードの実行のいずれかを選択できます。
キャラクタモードの実行
INT、GNT コードを RUNC コマンドで実行する。
CBLLINK ユーティリティの省略時オプションで EXE を作成して実行する。
GUI エミュレーションモードの実行
INT、GNT コードを RUN コマンドで実行する。
CBLLINK ユーティリティの -g オプションで EXE を作成して実行する。
キャラクタモードの実行では、アプリケーションは 16bit 版の Micro Focus COBOL と同等のシステムインタフェースを使用して実行されます。DOS プロンプトからキャラクタモードでアプリケーションを実行すると、アプリケーションはその DOS 互換ボックスの中で実行されます。一方、DOS プロンプトから GUI エミュレーションモードでアプリケーションを実行すると、アプリケーションは別プロセスとして起動され、DOS プロンプトにはコマンド入力プロンプトが返ります。
キャラクタモードの実行では、Windows 95/98 のキャラクタインタフェースが、完全に MS-DOS からの互換性をサポートしていないため、次のような問題が起こります。
- IME による漢字入力で文字化けが発生する
- 罫線属性がサポートされない
このような問題を回避するために、Net Express と Windows 32bit 版の Micro Focus COBOL は、GUI エミュレーションモードの実行をサポートしています。
COBOL ツールのキャラクタモード実行
COBOL アプリケーションだけでなく、Micro Focus 提供の以下のツールも、省略時は GUI エミュレーションで実行されます。
COBOL.EXE
ANIMATE.EXE
PROCO.EXE
RUN.EXE
ADISCF.EXE
これらのツールのキャラクタモード版も 16bit 版 COBOL 製品との互換性のために、以下の名前で提供されています。
COBOLC.EXE
ANIMATEC.EXE
PROCOC.EXE
RUNC.EXE
ADISCFC.EXE
GUI エミュレーションの制約
GUI エミュレーションは上記の問題を解決しますが、一方で次のような問題も起こります。
MS-DOS 下では、バッチファイルによって COBOL アプリケーションを連続起動したり、ERRORLEVEL 判定でフロー制御を行うことができました。GUI エミュレーションの実行では、バッチファイルからの実行でも、ひとつひとつのプログラムが別プロセスとして実行されてしまうため、前のプログラムの完了を待たずに次のプログラムが同時に実行されてしまいます。現在のところ、この問題を回避しつつ同時にキャラクタモード実行の制限を回避する方法は、バッチファイルの代わりに COBOL プログラムからの CALL で制御するしかありません。