技術情報 - Net Express - Windows 95/98におけるDOSエミュレーションの制限事項

過去にMicro Focus COBOLでMS-DOS向けに書かれて来たアプリケーションの多くは、ACCEPT/DISPLAY文でキャラクタ型の画面パネルを操作するような形式のものでした。
このようなアプリケーションを、Micro Focus NetExpress によって Windows 32bit環境へ移植するとき、 Windows 95/98 のDOSエミュレーションの制限によりいくつかの問題が発生します。
ここでは、それらの問題を解説し、可能な限りの解決方法を説明します。

Windows 95/98 のキャラクタモードの制限

NetExpress または 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による漢字入力で文字化けが発生する
  • 罫線属性がサポートされない

このような問題を回避するために、NetExpress と 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で制御するしかありません。

戻る

-----