旧 Micro Focus 製品を使用して開発およびビルドされた COBOL アプリケーションは、Enterprise Developer で開発およびビルドすることができます。ただし、動作と用語にはいくつかの相違点があります。
実行可能ファイルの再コンパイルが必要
AIX プラットフォーム上で本製品を実行する場合、バージョン 2.0 における内部的な変更に伴い、以前のバージョンでコンパイルしたプログラムについては、本バージョンのランタイム システムとの互換性を保つために再コンパイルや再リンクが必要になります。
terminfo ファイル
次の terminfo ファイルが削除されました。
- AT&T
- IBM
- Qume
- 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 このランタイム システムでは操作を行えない 」エラーが発生するため、それらの呼び出しも削除します。
Studio Enterprise Edition との後方互換性
- ファイル制御記述 (FCD)
- 32 ビット アプリケーションのファイル処理操作のデフォルトの FCD 形式は、Studio Enterprise Edition では FCD2 でしたが、Enterprise Developer では FCD3 です。
- コピーブック名の変更
- COBOL コピーブック ファイルについて、Studio Enterprise Edition では大文字の名前がいくつか含まれていましたが、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 を使用してコンパイルする際に、コピーブックを特定できずにコンパイルが失敗することがあります。
この問題には、次のいずれかの方法で対処できます。
- コードで参照しているコピーブックの名前を小文字に変更します。
- コピーブックのコピーを作成し、名前を大文字にして保存します。
- 大文字の名前で対応する小文字の名前のファイルを参照するようにシンボリック リンクを設定します。
- スクリプト ファイル copylink.sh を作成し、上記のコピーブックのシンボリック リンクを作成します。
- ファイルに次の内容を貼り付けます。
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
- スーパーユーザーとして、コピーブックを含むフォルダー ($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 には、さまざまな開発製品を使用してビルドされたアプリケーションを実行できる実行環境が用意されています。このため、バージョン 2.3 よりも前の Enterprise Developer を使用してビルドされたメインの COBOL 実行可能ファイル (.exe) がアプリケーションに含まれている場合は、必ずその実行可能ファイルをリビルドし、新しいランタイム システムとともにパッケージ化する必要があります。これによる、Enterprise Server にディプロイされたメインフレーム サブシステム プロジェクトへの影響はありません。リビルドは、IDE またはコマンド ラインから行うことができます。
以前のバージョンの Enterprise Developer を使用してビルドされた他の COBOL サブプログラムには、リビルドは必要ありません。
- JVM COBOL
- Enterprise Developer for Eclipse は現在、Eclipse 4.4 (Luna) に同梱されています。このため、バージョン 2.3 よりも前のバージョンの Enterprise Developer を使用してビルドされた JVM COBOL コードがアプリケーションに含まれている場合は、アプリケーションのそれらの部分をリビルドする必要があります。リビルドを行わないと、コンパイル時または実行時にエラーが発生します。
- casspool リカバリ
- casspool ファイルで回復不能なファイル状態エラーを検出した場合、メッセージがコンソールに表示され、ACCEPT 文が発行されます。これにより処理が停止し、ジョブを続行する前に、原因となったファイルの問題を修正できます。
- Casspool のパフォーマンス強化
- エンタープライズ サーバーのスプール キューを参照する際のパフォーマンス強化の一環として、Enterprise Developer 2.2 Update 1 の前に作成したエンタープライズ サーバーの casspool ファイルを更新する必要があります。更新しないと、エンタープライズ サーバーにジョブをサブミットできません。
- 各エンタープライズ サーバーの casspool を更新するには、コマンド プロンプトから、fixcasspool.bat (Windows) または fixcasspool.sh(UNIX) を実行します。これらのファイルは、%COBDIR%\bin および %COBDIR%\bin64 (Windows) または $COBDIR\bin (UNIX) にあります。実行するには、以下の構文を使用します。
-
fixcasspool.bat casspool.dat backup.dat
または
fixcasspool.sh casspool.dat backup.dat
-
詳細は次のとおりです。
- casspool.dat
- エンタープライズ サーバーのシステム カタログと同じディレクトリにあるスプール ファイル。このファイルは更新されます。
- backup.dat
- 古い casspool.dat ファイルのバックアップによって作成されるファイル。backup.dat がすでに存在する場合、更新は実行されません。
-
casspool を更新せずにエンタープライズ サーバーを起動しようとすると、次のメッセージがコンソールに表示されます。
- 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
- 呼び出し元プログラムの検索順序
- 以前のバージョンの Enterprise Developer (および以前の Micro Focus 製品) では、実行時チューナーを使用して、呼び出し先のサブプログラムを実行時システムが検索する際の特定の順序を定義できました。実行時システムの変更により、実行可能な検索順序が 1 つのみになったため、チューナーを使用できなくなりました。そのため、設定からチューナーを削除する必要があります。デフォルトの (そして唯一の) 順序は次のとおりです。
- サブプログラムがすでにロードされている場合、または静的にリンクされている場合は、サブプログラムが検索され、検索が終了します。
- UNIX プラットフォームでは、特定のパスを指定せずに共有オブジェクト (.so) を呼び出す場合、LD_LIBRARY_PATH または LIBPATH 環境変数が検索されます。
- COBPATH が設定されている場合、変数内のパスのリストが順番に検索されます。COBPATH が設定されていない場合、現在のディレクトリが検索されます。
- Windows プラットフォームでは、特定のパスを指定せずに共有オブジェクト (.so) を呼び出す場合、LD_LIBRARY_PATH または LIBPATH 環境変数が検索されます。
- 呼び出し元のプログラムのパスが検索されます。
上記の方法のいずれかを使用してサブプログラムを見つけることができない場合、実行時エラーが生成されます。
- RM/COBOL 互換ライブラリ ルーチンの呼び出し
- 以前は、RM/COBOL 互換のライブラリ ルーチンを呼び出すには、正しい呼び出し規則が使用されていることを確認する DIALECT"RM" コンパイラ指令を設定しなければなりませんでした。現在、この機能を設定するには、CALL 文で正しい呼び出し規約を明示的に使用する必要があります。
- CALLFH
- コードで ACUFH パラメーターを指定すると、使用時に弊害が生じる場合もあります。このパラメーターを使用する代わりに、「Vision データ ファイルの使用」または「Configuring Access to RM/COBOL Indexed Data Files」で説明されている方法を用いることを推奨します。いずれの方法も、これらのタイプのデータ ファイルを処理するための万全なソリューションを提供しています。
- DIALECT"ENTCOBOL"
- DIALECT"ENTCOBOL" now sets NSYSMBOL"NATIONAL"; previously, this set 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 として公開されていました。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 Express、Mainframe Express および Eclipse IDE の間の主な相違点は、次のとおりです。
- パースペクティブ。Team Developer パースペクティブは、Team Developer Tree View、[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]。これを設定するには、Team Developer Tree View で COBOL ファイルを右クリックします。この設定はこのファイルに固有であり、現在アクティブなビルド構成と [Project Language Settings] をオーバーライドします。
- デバッグ構成と実行構成。プログラムをデバッグまたは実行するには、これらのいずれかが必要です。これらの構成は、次のメニューから使用できます。
- [Project > Properties > Micro Focus > Run-time Configuration]。これらは、このプロジェクトのランタイム設定です (ランタイム引数、実行時チューナー、COBOL スイッチなど)。
- [Run > Debug Configurations]。ビルド構成同様、複数のデバッグ構成を設定し、そのデバッグ構成を入れ替えることができます。これらは、プロジェクトのランタイム構成をオーバーライドします。
- [実行 > 実行構成]。これらはデバッグ構成と同様に機能しますが、若干異なるオプションを提供します。
- 虎の巻。これらはチュートリアルのようなものであり、タスクの実行方法を簡単な説明とともに段階的に案内します。[Help > Cheat Sheets > COBOL Development] を参照してください。次の操作を行うための虎の巻があります。
- "Hello COBOL World" というメッセージを表示するプロジェクトの作成
- Eclipse への既存 COBOL ファイルのインポート
- プログラムのデバッグ
製品の一部のオプションやファイルの変更を次に示します。
- 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 です。
- COBCONFIG に起因するランタイム システム エラー
- Enterprise Developer アプリケーションを実行する場合、または Enterprise Developer を使用してプロジェクトを編集または作成し、Enterprise Developer が参照する構成ファイルに Enterprise Developer にとって無効なエントリが含まれている場合、COBCONFIG または COBCONFIG_ 環境変数を設定すると、ランタイム システム エラーが発生します。
たとえば、Net Express または Studio Enterprise Edition がインストールされていて、それに対する COBCONFIG または COBCONFIG_ が設定されている場合は、このエラーが発生する可能性があります。
この問題を回避するには、Enterprise Developer が実行されていないことを確認してから、次のいずれかを行って構成ファイルを変更します。
- 環境設定に起因するライセンス エラー (Windows 環境にのみ該当)
- Net Express、Mainframe 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 などのファイルを編集した場合に起こります。