Micro Focus 製品との下位互換性

Studio Enterprise Edition との下位互換性

ファイル制御記述 (FCD)
32 ビット アプリケーションのファイル処理操作のデフォルトの FCD 形式は、Studio Enterprise Edition では FCD2 でしたが、Enterprise Developer では FCD3 です。

Net Express および Net Express with .NET 5.1 との下位互換性

デフォルトの作業モード
Visual COBOL R4 以前のバージョンでは、COBMODE 環境変数で設定されるデフォルトの作業モードは 32 ビットでした。現行リリースの Visual COBOL および Enterprise Developer では 64 ビットです。
索引ファイルの形式
Net Express では、IDXFORMAT オプションのデフォルトの設定は 4 でした。現行リリースの Enterprise Developer では 8 です。
FILEMAXSIZE ファイル ハンドラー設定オプション

Net Express では、FILEMAXSIZE のデフォルトの設定は 4 でした。現行リリースの Enterprise Developer では 8 です。

Net Express 5.1 または Net Express with .NET 5.1 を使用して開発されたアプリケーションは、Enterprise Developer に移行する際にいくつかの変更が必要になることがあります。特に、Enterprise Developer では、Net Express 5.1 で利用可能であった次の機能はサポートされません。

  • デバッグ ツール:
    • Animator
    • FSView
    • リモート開発
  • 診断ツール:
    • FaultFinder

      FaultFinder ツールは、現行バージョンの Enterprise Developer では削除されました。これに伴い、次のチューナーが削除されました。

      • faultfind_level
      • faultfind_outfile
      • faultfind_recsize
      • faultfind_config
      • faultfind_cache_enable

      これらのチューナーについては、アプリケーションから削除するか、構成ファイルでチューナー cobconfig_error_report=false を設定してください。

  • ランタイム/開発サポート:
    • シングルスレッド ランタイム システム
    • 静的リンク ランタイム システム
  • プログラミング機能:
    • Btrieve
    • ISAPI
    • NSAPI

Micro Focus 製品との共存

重要:Enterprise Developer は、Visual COBOL と同じマシン上には共存できません。
COBCONFIG に起因するランタイム システム エラー
Enterprise Developer アプリケーションを実行する場合、または Enterprise Developer を使用してプロジェクトを編集または作成し、Enterprise Developer が参照する構成ファイルに Enterprise Developer にとって無効なエントリが含まれている場合、COBCONFIG または COBCONFIG_ 環境変数を設定すると、ランタイム システム エラーが発生します。

たとえば、Net Express または Studio Enterprise Edition がインストールされていて、それに対する COBCONFIG または COBCONFIG_ が設定されている場合は、このエラーが発生する可能性があります。

この問題を回避するには、Enterprise Developer が実行されていないことを確認してから、次のいずれかを行って構成ファイルを変更します。

  • 無効なチューナーが他のアプリケーションから必要とされていない場合は、そのチューナーをランタイム構成ファイルから削除します。
  • 構成ファイルの先頭に次の行を追加します。
    set cobconfig_error_report=false
  • COBCONFIG (または COBCONFIG_) を設定解除します。あるいは、実行中の特定のセッションで、無効なチューナーを含まない別の構成ファイルを COBCONFIG (または COBCONFIG_) に設定します。
環境設定によるライセンス エラー
Net ExpressMainframe Express、または Studio Enterprise Edition ユーティリティを Enterprise Developer から呼び出すと、「Micro Focus License Manager service is not running」というメッセージが発生する可能性があります。この問題は、Net Express または Studio Enterprise Edition 環境設定を必要としているツールが Enterprise Developer 環境設定で呼び出された場合に起こります。

この問題は、Net Express または Studio Enterprise Edition に関連付けられている .dat などのファイルを編集した場合に起こります。これは、Net Express または Studio Enterprise Edition 製品内のユーティリティを Enterprise Developer の外部ツールとして呼び出す場合にも発生します。

Enterprise Developer でこの問題を回避するには、次の操作を行います。

  1. ツールを呼び出す前に COBREG_PARSED を設定解除するバッチ ファイルを作成します。バッチ ファイルには、次の内容が含まれます。
    Set COBREG_PARSED=
    Call [PathToUtility] %1

    PathToUtilityは、Net Express または Studio Enterprise Edition ユーティリティへのパスです。

  2. Visual Studio IDE で、外部ツールとしてユーティリティ自体の代わりにバッチ ファイルを追加します。

    これにより、そのツールの実行時に適切な環境が確立されます。

パフォーマンス監視の問題
Enterprise Developer 製品と Studio Enterprise Edition 6.0 または Server Enterprise Edition 6.0 が同じマシンにインストールされていて、それらのいずれかをアンインストールしようとすると、パフォーマンス監視が中断され、Enterprise Server パフォーマンス カウンターを確認できなくなります。この問題を解決するには、マシン上に保持する製品のインストーラーを実行して、インストールを修復します。

指令スキャン

Visual Studio ベースの旧 Micro Focus 製品以降、指令スキャンのデフォルト オプション (IDE で [Tools > Options > Micro Focus > Directives > COBOL] をクリック) が変更されました。

旧バージョンの Enterprise Developer との下位互換性

ランタイム システムの更新

Enterprise Server は、さまざまな開発製品を使用してビルドされたアプリケーションを実行できる実行環境を提供します。この結果として、バージョン 2.3 以前の Enterprise Developer を使用してビルドされたメインの COBOL 実行可能ファイル (.exe) がアプリケーションに含まれている場合は、必ずその実行可能ファイルをリビルドし、新しいランタイム システムとともにパッケージ化する必要があります。これによる、Enterprise Server にディプロイされたメインフレーム サブシステム プロジェクトへの影響はありません。リビルドは、IDE またはコマンド ラインから行うことができます。

以前のバージョンの Enterprise Developer を使用してビルドされた他の COBOL サブプログラムには、リビルドは必要ありません。

呼び出しプログラムの検索順序
以前のバージョンの Enterprise Developer および以前の Micro Focus 製品) では、実行時チューナーを使用して、ランタイム システムが呼び出し先のサブプログラムを検索する特定の順序を定義できました。ランタイム システムの変更により、実行可能な特定の検索順序が 1 つだけになったため、実行時チューナーは利用できなくなりました。実行時チューナーを設定していた場合は、構成から取り除く必要があります。デフォルトの (そして唯一の) 検索順序は次のとおりです。
  • サブプログラムがすでにロードされている場合、または静的にリンクされている場合は、サブプログラムが検索され、検索が終了します。
  • COBPATH が設定されている場合、変数内のパスのリストが順番に検索されます。 COBPATH が設定されていない場合、現在のディレクトリが検索されます。
  • Windows プラットフォームでは、共有オブジェクト (.so) を特定のパスなしで呼び出している場合、LD_LIBRARY_PATH または LIBPATH 環境変数が検索されます。
  • 呼び出し元のプログラムのパスが検索されます。

上記の方法のいずれかを使用してサブプログラムを見つけることができない場合、実行時エラーが生成されます。

casspool 回復
casspool ファイルで回復不能なファイル状態エラーを検出した場合、メッセージがコンソールに表示され、ACCEPT 文が発行されます。これにより処理が停止し、ジョブを続行する前にエラー原因のファイルの問題を修正できます。
casspool のパフォーマンス強化
エンタープライズ サーバーのスプール キューを参照する際のパフォーマンス強化の一環として、Enterprise Developer 2.2 Update 1 の前に作成したエンタープライズ サーバーの casspool ファイルを更新する必要があります。更新しないと、エンタープライズ サーバーにジョブをサブミットできません。
コマンド プロンプトから各 Enterprise Server の casspool を更新するには、次の構文を使用して %COBDIR%\bin および %COBDIR%\bin64 にある fixcasspool.bat を実行します。
fixcasspool.bat casspool.dat backup.dat
詳細は次のとおりです。
casspool.dat
Enterprise Server のシステム カタログと同じディレクトリにあるスプール ファイル。このファイルは更新されます。
backup.dat
古い casspool.dat ファイルのバックアップによって作成されるファイル。backup.dat がすでに存在する場合、更新は実行されません。

casspool を更新せずに Enterprise Server を起動しようとすると、次のメッセージがコンソールに表示されます。

JES000011E Batch Spool File Error; Status [39]

JES000130E Note JES000011 Error - New casspool indexes may need generating.See error description in product docs

Enterprise Server での ACUCOBOL-GT および RM/COBOL ファイルの処理
ACUCOBOL-GT および RM/COBOL データ ファイルのすべてのタイプのファイル処理を有効または無効にする 2 つのファイル処理構成オプションが導入されました。
ACUFH は全体的な制御を備えていますが、デフォルトで有効になっています。つまり、エンタープライズ サーバーで実行されていない場合にファイルを処理する際には、動作に変更はありません。ただし ESACUFH では、エンタープライズ サーバー下でこれらのファイルの処理を有効または無効にできます。既定では無効になっています。ACUCOBOL-GT および RM/COBOL データ ファイルを引き続き処理するには、ファイル処理構成ファイルで両方のオプションを有効にします。
メンバー参照でのかっこの使用
マネージ COBOL 構文では、メソッドを参照する際に、かっこのみ使用できます。そのため、フィールドやプロパティを参照する場合は、かっこを指定できません。かっこを指定すると、構文エラーが発生します。

次に例を示します。

set intLength to testString::Length()

これは次のように変更する必要があります。

set intLength to testString::Length
RM/COBOL 互換ライブラリ ルーチンの呼び出し
以前は、RM/COBOL 互換のライブラリ ルーチンを呼び出すには、正しい呼び出し規則が使用されていることを確認する DIALECT"RM" コンパイラ指令を設定する必要がありました。現在この機能を設定するには、CALL 文で正しい呼び出し規則を明示的に使用する必要があります。
DIALECT"ENTCOBOL"
現在 DIALECT"ENTCOBOL" は NSYSMBOL"NATIONAL" を設定します。以前は、 NSYMBOL"DBCS" を設定していました。
DIALECT"RM"
現在、DIALECT"RM" は PERFORM-TYPE"RM" を設定します。DIALECT"RM" を使用するアプリケーションを再コンパイルした場合、ネストされた PERFORM 文の動作が変わる場合があります。その場合、DIALECT"RM" の後に PERFORM-TYPE"MF" を明示的に設定すると、以前の動作が続行されます。
ILUSING
$set コマンドを使用してこのコンパイラ指令を設定した場合、インポートされた名前空間は、そのファイル内のプログラム、クラス、および参照されるコピーブックにのみ適用されます。IDE またはコマンド ラインから指令を設定すると、インポートされた名前空間は、プロジェクト内またはコマンド ラインで指定されたすべてのプログラムおよびクラスに適用されます。
FLAGCD
この指令は、Enterprise Developer では使用できなくなりました。この指令はコードから削除する必要があります。このコードが残っていると、COBCH0053 Directive invalid or not allowed here というエラーが発生します。
CALLFH
コードで ACUFH パラメーターを指定すると、使用時に弊害が生じる場合もあります。このパラメーターを使用する代わりに、「Vision データ ファイルの使用」または「Configuring Access to RM/COBOL Indexed Data Files」で説明されている方法を用いることを推奨します。いずれの方法も、これらのタイプのデータ ファイルを処理するための万全なソリューションを提供しています。
互換性のある ACUCOBOL-GT ファイル処理環境変数
ACUCOBOL-GT との互換性のために導入された以下の環境変数は、ファイル ハンドラー構成ファイルに追加する他の環境変数または構成オプションに変更されました。これ以外の ACUCOBOL-GT ファイル処理環境変数はサポートされていません。
使用できなくなった変数 使用できる変数またはオプション
FILE_CASE FILECASE 構成オプション
FILE_PREFIX COBDATA 環境変数
FILE_SUFFIX FILESUFFIX 構成オプション
APPLY_FILE_PATH 該当なし
FILE_ALIAS_PREFIX dd_ mapping

これらの環境変数を設定しても効果はありません。

Open PL/I コンパイラ
重要:このリリースを Enterprise Developer 2.2 Update 1 に対するアップグレードとしてインストールしている場合、コンパイルされているすべてのアプリケーションをアップグレード後に -zp1 オプションを使用して再構築する必要があります。

-zp1 オプションの動作は、Enterprise Developer の 2.2 Update 1 よりも前のバージョンに戻っており、Char Varying データ項目に関する追加修正も行われています。

動作は、Enterprise Developer の 2.2 よりも前のバージョンに戻り、–zp1 でコンパイルすると、すべてのパラメーターが非整列として扱われます(Enterprise Developer 2.2 Update 1 では、-zp1 でのコンパイルの動作では、パラメーターは非整列であるかのようには扱われませんでした)。

-zp1 コンパイラ オプションを使用する場合、すべての Character Varying データ項目が非整列であるかのように扱われるようになりました。Open PL/I の前のバージョンでは、Character Varying データ項目には、–zp1 の非整列要件は構造体のメンバーおよびパラメーターにのみ適用されました。

この変更の例を次に示します。

zptest: proc options(main); 
 
   dcl 1 st1, 
     2 c char, 
     2 x(4) char(7) var init ('a', 'xx', 'yyy', 'zzzz'); 
 
   dcl y(4) char(7) var init ('a', 'xx', 'yyy', 'zzzz'); 
 
   dcl sub entry ((4) char(7) var); 
 
   call sub (x); 
 
   call sub (y); 
 
end; 
 
sub: proc (z); 
 
   dcl z(4) char(7) var; 
 
   dcl i fixed bin(31); 
 
  do i = 1 to hbound(z); 
      z(i)  = 'x'; 
  end; 
 
end; 

詳細は次のとおりです。

  • x およびzの場合、各char (7) var 項目は、7 バイトに 2 バイトを加えた 9 バイトで、4 を掛けて 36 バイトになります。
  • y が、デフォルトでハーフワードに整列されると、配列の各要素が整列されたハーフワードとなり、それぞれが 10 バイト (9 + 1 パッド バイト) で、合計サイズが 40 バイトと等しくなります。
  • call sub (x)では、呼び出し側の引数とパラメーターが一致します。
  • call sub (y)では、y 要素のサイズ (10 バイト) は、パラメーターz 要素サイズ (9 バイト) に対して一致しません (–zp1 のため)。これは正しくなく、プログラムの予期しない動作を引き起こします。

–zp1 を使用する際、このようにすべての Char Varying データ項目を非整列として扱うような修正を行う結果、CHAR VARYING 配列のサイズが Open-PL/I の以前のバージョンのものとは異なるようになります。次に例を示します。

   dcl X(4) char(7) var; 
 
   Put skip list (size(X))  /* size is 36 bytes vs. 40 bytes in previous versions of Open-PL1 */