Micro Focus 製品との下位互換性

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

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

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

terminfo ファイル

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

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

診断ツール

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

  • 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 でしたが、Visual COBOL では FCD3 です。

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

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

  • パースペクティブ。COBOL パースペクティブは、COBOL エクスプローラー、[Program Outline]、[Outline]、および [Console] ビューなど、COBOL 開発に関連するビューとメニューを表示します。デバッグ、インターフェイス マッパー、および CTF には他のパースペクティブがあります。
  • [Project > Build automatically]。リソースの変更内容を保存するたびに、増分ビルドが開始されます。これにより、前回のビルド後に変更されたすべてのリソースが再ビルドされます。[Project > Clean] を使用すると、再ビルドを強制できます。
  • ビルド設定。ビルド設定は、次の 3 つの場所で使用できます。
    • [Project > Properties > Micro Focus > Project Settings]。ビルド時にコンパイラに渡される追加の指令を指定できます。これらの設定は、アクティブなビルド構成には依存せず、常にコンパイラに渡されます。
    • [Project > Properties > Micro Focus > Build Configurations]。さまざまなビルド シナリオに合わせて複数のビルド構成を用意し、それらを切り替えることができます。使用する構成を選択するには、選択した構成を現在アクティブな構成として設定します。選択した構成は、プロジェクト言語設定をオーバーライドします。
    • 個々のファイルのコンテキスト メニューの [Properties]。これを設定するには、COBOL エクスプローラー ペインで 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 として扱われました。Visual COBOL では、これは当てはまりません。同等の動作を実現するには、手続き部のリテラルの前に N を付ける必要があります (例:IF N"dbcs-chars" = data-item-1.)。これは、NCHAR リテラルに 2 バイトのスペースを埋め込む比較を実行する際に重要です。Visual COBOL では、文字を指定せずに引用符で囲まれたすべてのリテラル(B"、N" など)は常に英数字として扱われます。
注:次のシナリオでは、リテラルは引き続き NCHAR リテラルとして扱われます。
01 data-item pic N value "dbcs-charaters".
ADIS
Micro Focus 製品では、ADISCTRL ファイルのデフォルトの場所は $COBDIR でした。Visual COBOL では、このファイルのデフォルトの場所は $COBDIR/etc です。
デフォルトの作業モード
Server Express、および Visual COBOL R4 以前のバージョンでは、COBMODE 環境変数で設定されるデフォルトの作業モードは 32 ビットでした。現行リリースの Visual COBOL および Enterprise Developer では 64 ビットです。
索引の形式
Net Express および Server Express では、IDXFORMAT オプションのデフォルトの設定は 4 でした。現行リリースの Visual COBOL では 8 です。
FILEMAXSIZE ファイル ハンドラー構成オプション

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

次の表に、Net Express IDE の一部の機能について、Eclipse IDE の対応する機能の名前と場所を示します。

Net Express IDE Eclipse IDE
.app ファイル .cobolProj ファイル
プロジェクトへのファイルの追加 [File > Import] を選択します。「既存ファイルのインポート方法」を参照してください。
データ変更のブレークポイント [Run > Toggle Watchpoint] を選択するか、左余白でダブルクリックします。

データ項目に監視ポイントが設定され、データ項目が変更されるとプログラムの実行が一時停止します。

ブレークポイント [Run > Toggle Breakpoint] を選択するか、左余白でダブルクリックします。

Eclipse におけるブレークポイントは (他の Micro Focus 製品とは異なり) プログラムではなくソース ファイルに設定されます。つまり、ソース ファイルを複数のプログラムで使用している場合や同じプログラムで複数回使用している場合は、実際には単一のブレークポイントが何度も設定されることになります。「ブレークポイントの例」を参照してください。

ビルド設定とビルド タイプ [Project > Properties > Micro Focus > Build Configuration] を選択します。「プロジェクトのプロパティと構成」を参照してください。
プロジェクトのビルド デフォルトでは、プロジェクトを自動的にビルドするように設定されています ([Project > Build automatically])。これにより、リソースが変更されるたびに、増分ビルドが開始され、前回のビルド後に変更されたすべてのリソースがリビルドされます。手動でビルドする場合は、[Project] をクリックし、[Build Automatically] をオフにします。その後、[Project > Build] または [Project > Clean] をクリックします。
呼び出しスタック [Debug] ビューには呼び出し階層が表示され、現在の文の呼び出し元または実行元、また、以前の文の呼び出し元や実行元が示されます。これには、すべてのスレッドが表示されます。スレッドを右クリックし、メニューからオプションを選択すると、実行ポイントを移動することができます。

[Debug] ビューは、[Debug] パースペクティブの左上にデフォルトで表示されます。このビューは、[Window > Show View > Debug] をクリックすると表示できます。

コンパイル 上記の「プロジェクトのビルド」を参照してください。
単一ファイルのコンパイル Eclipse ではサポートされていません。代わりに、プロジェクト全体をコンパイルします。ファイルを右クリックし、[Build Action > Ignore] を設定すると、特定のファイルをコンパイルから除外できます。
コピーブック パス [Project > Properties > Micro Focus > Copybook Paths] を選択します。この検索順序は、COBCPY 環境変数の設定よりも優先されます。コピーブックのパスをこのリストに追加するには、そのパスをリンクされたリソースとして指定します。
コピーブックの展開 COBOL コピー表示を開きます。コピーブックの内容がメイン プログラムのコードでインラインで展開されます。このビューは読み取り専用です。コピーブックを編集する場合は、COBOL エディターで開く必要があります。
データ項目の値 データ項目の上にカーソルを置くと値が表示されます。
デバッグ COBOL プログラムのデバッグ方法」を参照してください。
検査 データ項目を右クリックして、[Inspect COBOL] をクリックします。
デバッグするメイン プログラム [Run > Debug Configurations] を選択し、[General] タブでメイン プログラム ファイルを指定します。デバッグ構成の作成方法
データ項目のモニター [Variables] ビューで変数の変更をモニターできます。[Variables] ビューは、[Debug] パースペクティブの上部にデフォルトで表示されます。このビューは、[Window > Show View > Variables] をクリックすると表示できます。
プロジェクトのプロパティ [Project > Properties > Micro Focus > Build Configuration] を選択します。「プロジェクトのプロパティと構成」および「方法」を参照してください。
デバッグの再開 [Debug] パースペクティブの [Stack] ビューで右クリックし、[Terminate and Relaunch] をクリックします。
ランタイム環境設定 [Project > Properties > Micro Focus > Run-time Environment Configuration] を選択します。「プロジェクトのプロパティと構成」および「COBOL プロジェクトのビルド手順」を参照してください。
デバッグの停止 [Run > Terminate] を選択します。上部にある赤い四角をクリックしても停止できます。「COBOL プログラムのデバッグ方法」を参照してください。
ウォッチリスト 右クリックして [Inspect COBOL > Add to Expressions] を選択します。

[Expressions] ビューは、[Debug] パースペクティブの左上にデフォルトで表示されます。このビューは、[Window > Show View > Expressions] をクリックすると表示できます。

旧バージョンの Visual COBOL との下位互換性

ファイル ロック
Visual COBOL 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) を優先して使用してください。
ランタイム システムの更新

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

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

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

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

メンバー参照でのかっこの使用
マネージ 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" を設定していました。
JVMDECIMAL
注:これは JVM COBOL にのみ該当します。
このコンパイラ指令は、次の項目を Java で公開する方法を制御します。
  • DECIMAL 型のデータ項目
  • ILSMARTLINKAGE の結果として公開される整数以外のデータ項目
  • PROPERTY キーワードの結果として公開される整数以外のデータ項目
これらの各項目は、旧バージョンでは ScaledInteger として公開されていました。ScaledInteger は JVMDECIMAL で引き続き使用できますが、指令のデフォルト設定では、各項目は BigDecimal として公開されます。
IDXFORMAT
Visual COBOL Development Hub R4 以降では、IDXFORMAT オプションのデフォルトの設定が 4 から 8 に変更されています。
ILREF
以前は、このコンパイラ指令を使用する際に、.jar ファイルやその他の形式をパラメーターとして指定できました。現在は、.class ファイルのみ指定できます。
ILUSING
$setコマンドを使用してこのコンパイラ指令を設定した場合、インポートされたネームスペースは、そのファイル内のプログラム、クラス、および参照されるコピーブックにのみ適用されます。IDE またはコマンド ラインから指令を設定すると、インポートされたネームスペースは、プロジェクト内またはコマンド ラインで指定されたすべてのプログラムおよびクラスに適用されます。
FLAGCD
この指令は、Visual COBOL では使用できなくなりました。この指令はコードから削除する必要があります。このコードが残っていると、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

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

Micro Focus 製品との共存

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

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

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

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

この問題は、Net Express または Studio Enterprise Edition に関連付けられている .dat などのファイルを編集すると発生します。