Micro Focus 製品との下位互換性

Micro Focus 製品を使用して開発およびビルドされた COBOL アプリケーションは、Enterprise Developer で開発およびビルドできます。ただし、動作と用語にはいくつかの相違点があります。

実行可能ファイルの再コンパイルが必要

AIX プラットフォーム上で本製品を実行する場合、製品のバージョン 2.0 の内部的な変更に伴い、以前のバージョンでコンパイルしたプログラムについては、本バージョンのランタイム システムとの互換性を保つために再コンパイルまたは再リンク (あるいはその両方) が必要になります。

terminfo ファイル

次の terminfo ファイルが削除されました。

  • AT&T
    • att605
    • tty5420
  • IBM
    • ibm3151
  • Qume
    • qvt102
  • Wyse
    • wy120
    • wy120-25
    • wy50
    • wy60
    • wy60-w
    • wy75
    • wy85

診断ツール

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

  • faultfind_level
  • faultfind_outfile
  • faultfind_recsize
  • faultfind_config
  • faultfind_cache_enable

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

ライブラリ ルーチン CBL_FFND_REPORT への呼び出しもすべて削除する必要があります。これにより、「COBRT107 Operation not implemented in this run-time system (fatal)」というエラーが発生します。

Studio Enterprise Edition との下位互換性

ファイル制御記述 (FCD)
32 ビット アプリケーションのファイル処理操作のデフォルトの FCD 形式は、Studio Enterprise Edition では FCD2 でしたが、Enterprise Developer では FCD3 です。
コピーブック名の変更
Studio Enterprise Edition では、多数の COBOL コピーブック ファイルで大文字の名前が使用されていましたが、Enterprise Developer では、ほとんどのコピーブックの名前が小文字になっています。

この変更の影響を受けるコピーブックは、DFHAFCD、IDADDSA、IDADTCA、IDAS99RB、IDAS99TU、IEESMCA、IEFJFCBN、IEFJSSIB、IEFTIOT1、IEZJSCB、IHAACEE、IHAASCB、IHAASVT、IHAASXB、IHACDE、IHAPSA、IKJTCB、MFJCTLBC、MFJDCUSR、MFJDSXIT、MFJDXIT、MVSFINDM、MVSGETCT、SPOOLHK です。

プログラム コードがこれらのファイルを大文字の名前で参照している場合、そのコードを UNIX で Enterprise Developer を使用してコンパイルする際に、コピーブックを特定できずにコンパイルが失敗することがあります。

この問題には、次のいずれかの方法で対処できます。

  1. コードで参照しているコピーブックの名前を小文字に変更します。
  2. コピーブックのコピーを作成し、名前を大文字にして保存します。
  3. 以下の手順でシンボリック リンクを設定し、大文字のファイル名が小文字のファイル名を参照するようにします。
    1. スクリプト ファイル copylink.sh を作成し、上記のコピーブックのシンボリック リンクを作成します。
    2. ファイルに次の内容を貼り付けます。
      ln -s dfhafcd.cpy   DFHAFCD.CPY
      ln -s idaddsa.cpy   IDADDSA.CPY
      ln -s idadtca.cpy   IDADTCA.CPY
      ln -s idas99rb.cpy  IDAS99RB.CPY
      ln -s idas99tu.cpy  IDAS99TU.CPY
      ln -s ieesmca.cpy   IEESMCA.CPY
      ln -s iefjfcbn.cpy  IEFJFCBN.CPY
      ln -s iefjssib.cpy  IEFJSSIB.CPY
      ln -s ieftiot1.cpy  IEFTIOT1.CPY
      ln -s iezjscb.cpy   IEZJSCB.CPY
      ln -s ihaacee.cpy   IHAACEE.CPY
      ln -s ihaascb.cpy   IHAASCB.CPY
      ln -s ihaasvt.cpy   IHAASVT.CPY
      ln -s ihaasxb.cpy   IHAASXB.CPY
      ln -s ihacde.cpy    IHACDE.CPY
      ln -s ihapsa.cpy    IHAPSA.CPY
      ln -s ikjtcb.cpy    IKJTCB.CPY
      ln -s mfjctlbc.cpy  MFJCTLBC.CPY
      ln -s mfjdcusr.cpy  MFJDCUSR.CPY
      ln -s mfjdsxit.cpy  MFJDSXIT.CPY
      ln -s mfjdxit.cpy   MFJDXIT.CPY
      ln -s mvsfindm.cpy  MVSFINDM.CPY
      ln -s mvsgetct.cpy  MVSGETCT.CPY
      ln -s spoolhk.cpy   SPOOLHK.CPY
      
    3. スーパーユーザー権限で、コピーブックを含むフォルダー ($COBDIR/cpylib) でスクリプトを実行します。

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

ファイル ロック
Enterprise Developer 2.3 より前のバージョンでは、UNIX および Linux プラットフォームで、OPEN 文で指定されているか CBL_OPEN_FILE の呼び出しで使用されている sharing 句のセマンティクスが正しく適用されない場合がありました。バージョン 2.3 以降は、チューナー strict_file_locking=trueが設定されていると (デフォルト)、sharing 指定は正しく適用されます。
動作の変更点として考えられる例を、以下に示します。
  • Process-A で、読み取り専用アクセスによって、他のプロセスからの書き込みアクセスを拒否する共有モード (SHARING WITH READ ONLY) でファイルを開きます。
  • 次に、Process-B で、読み取り専用アクセスによって、他のプロセスからの読み取りアクセスを拒否する共有モード (SHARING WITH NO OTHER) でファイルを開こうとします。
strict_file_locking=trueが設定されていると、Process-A で読み取りアクセスのみを許可してファイルが正常に開かれているため、Process-B でファイルを開くことはできません。

strict_file_locking=falseが設定されていると、Process-B で正常にファイルが開かれます。

アプリケーションが予期しない OPEN 状態を検出した場合、またはファイルを開けない場合は、この新しいファイル ロック動作が原因である可能性があります。そのような状況の場合は、アプリケーションのファイル ロックおよびファイル共有の要件を見直し、デフォルト設定を使用するようソース コードをリファクタリングすることをお勧めします。元のファイルのロックおよび共有の動作は、strict_file_locking=falseを設定することで復元できます。
Enterprise Server での Fileshare の使用
UNIX システムにおいて、Enterprise Server で Fileshare を使用する場合は、CCI 名前付きパイプ (CCINAMPU) のサポートは非推奨であるため、TCP/IP プロトコル (CCITCP) を優先して使用してください。
ランタイム システムの更新

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

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

JVM COBOL
Enterprise Developer for Eclipse に Eclipse 4.7 (Oxygen) が同梱されるようになりました。このため、バージョン 2.3 よりも前のバージョンの Enterprise Developer でビルドされた JVM COBOL コードがアプリケーションに含まれている場合は、アプリケーションのそれらの部分をリビルドする必要があります。リビルドを行わないと、コンパイル時または実行時にエラーが発生します。
casspool 回復
casspool ファイルで回復不能なファイル状態エラーを検出した場合、メッセージがコンソールに表示され、ACCEPT 文が発行されます。これにより処理が停止し、ジョブを続行する前にエラー原因のファイルの問題を修正できます。
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
プログラム呼び出しの検索順序
以前のバージョンの Enterprise Developer および以前の Micro Focus 製品) では、実行時チューナーを使用して、ランタイム システムが呼び出し先のサブプログラムを検索する特定の順序を定義できました。ランタイム システムの変更により、実行可能な特定の検索順序が 1 つだけになったため、program_search_order チューナーは利用できなくなりました。このチューナーを設定していた場合は、構成から取り除く必要があります。デフォルトの (そして唯一の) 検索順序は次のとおりです。
  • サブプログラムがすでにロードされている場合、または静的にリンクされている場合は、サブプログラムが検索され、検索が終了します。
  • UNIX プラットフォームでは、共有オブジェクト (.so ファイル) を特定のパスなしで呼び出している場合、LD_LIBRARY_PATH または LIBPATH 環境変数が検索されます。
  • COBPATH が設定されている場合、変数内のパスのリストが順番に検索されます。COBPATH が設定されていない場合、現在のディレクトリが検索されます。
  • Windows プラットフォームでは、ダイナミック リンク ライブラリ (.dll ファイル) を特定のパスなしで呼び出している場合、COBPATH 環境変数が検索されます。
  • 呼び出し元のプログラムのパスが検索されます。

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

RM/COBOL 互換ライブラリ ルーチンの呼び出し
以前は、RM/COBOL 互換のライブラリ ルーチンを呼び出すには、正しい呼び出し規則が使用されていることを確認する DIALECT"RM" コンパイラ指令を設定する必要がありました。現在この機能を設定するには、CALL 文で正しい呼び出し規則を明示的に使用する必要があります。
CALLFH
コードで ACUFH パラメーターを指定すると、使用時に弊害が生じる場合もあります。このパラメーターを使用する代わりに、「Vision ファイルへのアクセスの設定」または「Configuring Access to RM/COBOL Indexed Data Files」で説明されている方法を用いることをお勧めします。いずれの方法も、これらのタイプのデータ ファイルを処理するための万全なソリューションを提供しています。
DIALECT"ENTCOBOL"
現在 DIALECT"ENTCOBOL" は NSYSMBOL"NATIONAL" を設定します。以前は、NSYMBOL"DBCS" を設定していました。
DIALECT"RM"
現在、DIALECT"RM" は PERFORM-TYPE"RM" を設定します。DIALECT"RM" を使用するアプリケーションを再コンパイルすると、ネストされた PERFORM 文の動作が変わる場合があります。その場合、DIALECT"RM" の後に PERFORM-TYPE"MF" を明示的に設定すると、以前の動作が続行されます。
FLAGCD
この指令は、Enterprise Developer では使用できなくなりました。この指令はコードから削除する必要があります。このコードが残っていると、COBCH0053 Directive invalid or not allowed hereというエラーが発生します。
ILREF
以前は、このコンパイラ指令を使用する際に、.jar ファイルやその他の形式をパラメーターとして指定できました。現在は、.class ファイルのみ指定できます。
ILUSING
$setコマンドを使用してこのコンパイラ指令を設定した場合、インポートされたネームスペースは、そのファイル内のプログラム、クラス、および参照されるコピーブックにのみ適用されます。IDE またはコマンド ラインから指令を設定すると、インポートされたネームスペースは、プロジェクト内またはコマンド ラインで指定されたすべてのプログラムおよびクラスに適用されます。
JVMDECIMAL
注:これは JVM COBOL にのみ該当します。
このコンパイラ指令は、次の項目を Java で公開する方法を制御します。
  • DECIMAL 型のデータ項目
  • ILSMARTLINKAGE の結果として公開される整数以外のデータ項目
  • PROPERTY キーワードの結果として公開される整数以外のデータ項目
これらの各項目は、旧バージョンでは ScaledInteger として公開されていました。ScaledInteger は JVMDECIMAL で引き続き使用できますが、指令のデフォルト設定では、各項目は BigDecimal として公開されます。
互換性のある 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 */ 

Net Express および Mainframe Express IDE との下位互換性

Net ExpressMainframe Express、および Eclipse IDE の主な相違点は次のとおりです。

  • パースペクティブ。Team Developer パースペクティブは、アプリケーション エクスプローラー ビュー、[Program Outline]、[Outline]、および [Console] ビューなど、COBOL や PL/I の開発に関連するビューとメニューを表示します。デバッグ、インターフェイス マッパー、および CTF には他のパースペクティブがあります。
  • [Project > Build automatically]。リソースの変更内容を保存するたびに、増分ビルドが開始されます。これにより、前回のビルド後に変更されたすべてのリソースが再ビルドされます。[Project > Clean] を使用すると、再ビルドを強制できます。
  • ビルド設定。ビルド設定は、次の 3 つの場所で使用できます。
    • [Project > Properties > Micro Focus > Project Settings]。ビルド時にコンパイラに渡される追加の指令を指定できます。これらの設定は、アクティブなビルド構成には依存せず、常にコンパイラに渡されます。
    • [Project > Properties > Micro Focus > Build Configurations]。さまざまなビルド シナリオに合わせて複数のビルド構成を用意し、それらを切り替えることができます。使用する構成を選択するには、選択した構成を現在アクティブな構成として設定します。選択した構成は、プロジェクト言語設定をオーバーライドします。
    • 個々のファイルのコンテキスト メニューの [Properties]。これを設定するには、アプリケーション エクスプローラー ビューで COBOL ファイルを右クリックします。この設定はこのファイルに固有であり、現在アクティブなビルド構成と [Project Language Settings] をオーバーライドします。
  • デバッグ構成と実行構成。プログラムをデバッグまたは実行する前に、これらのいずれかの構成が必要です。これらの構成は、次のメニューから使用できます。
    • [Project > Properties > Micro Focus > Run-time Configuration]。これらは、このプロジェクトのランタイム設定です (ランタイム引数、ランタイム チューナー、COBOL スイッチなど)。
    • [Run > Debug Configurations]。ビルド構成と同様、複数のデバッグ構成を保持して切り替えられます。これらは、プロジェクトのランタイム構成をオーバーライドします。
    • [Run > Run Configurations]。これらはデバッグ構成と同様に動作しますが、オプションが若干異なります。
  • チート シートこれらはチュートリアルのようなものであり、タスクの実行方法を簡単な説明とともに段階的に案内します。[Help > Cheat Sheets > COBOL Development] を参照してください。次の操作を行うためのチート シートがあります。
    • 「Hello COBOL World」というメッセージを表示するプロジェクトの作成
    • Eclipse への既存 COBOL ファイルのインポート
    • プログラムのデバッグ

製品の一部のオプションおよびファイルの変更点は次のとおりです。

DBCS リテラルの処置
Net Express では、NCHAR 指令の下で、英数字リテラルに DBCS 文字のみが含まれている場合、そのリテラルは字類 NCHAR として扱われました。Enterprise Developer では、これは当てはまりません。同等の動作を実現するには、手続き部のリテラルの前に N を付ける必要があります (例:IF N"dbcs-chars" = data-item-1.)。これは、NCHAR リテラルに 2 バイトのスペースを埋め込む比較を実行する際に重要です。Enterprise Developer では、文字を指定せずに引用符で囲まれたすべてのリテラル(B"、N" など)は常に英数字として扱われます。
注:次のシナリオでは、リテラルは引き続き NCHAR リテラルとして扱われます。
01 data-item pic N value "dbcs-charaters".
ADIS
Micro Focus 製品では、ADISCTRL ファイルのデフォルトの場所は $COBDIR でした。Enterprise Developer では、このファイルのデフォルトの場所は $COBDIR/etc です。
デフォルトの作業モード
Server Express、および Visual COBOL R4 以前のバージョンでは、COBMODE 環境変数で設定されるデフォルトの作業モードは 32 ビットでした。現行リリースの Visual COBOL および Enterprise Developer では 64 ビットです。
索引の形式
Net Express および Server Express では、IDXFORMAT オプションのデフォルトの設定は 4 でした。現行リリースの Enterprise Developer では 8 です。
FILEMAXSIZE ファイル ハンドラー構成オプション

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

Micro Focus 製品との共存

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_) に設定します。
環境設定に起因するライセンス エラー (Windows 環境にのみ該当)
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 などのファイルを編集すると発生します。