COBOL2002製品は、上位互換があります。COBOL2002で作成したプログラムは、そのバージョン、リビジョンが同じか、それ以降のバージョン、リビジョンの運用環境で動作させることができます。バージョン、リビジョンが同じかそれ以降の運用環境であれば、修正パッチ番号(※1)は同じでなくても動作させることができます。
例えば、Windows版COBOL2002 04-00-02で作成したプログラムをWindows版COBOL2002 04-00やWindows版COBOL2002 04-10の運用環境で動作させることはできますが、Windows版COBOL2002 03-05の運用環境で動作させることはできません。
注※1 修正パッチ番号とは、製品のバージョン、リビジョンを表す「vv-rr-ss」の「ss」(2けたの数字)の部分を示します。
Windows版COBOL85 Version 7で作成したプロジェクトファイルはWindows版COBOL2002で使用できます。ただし、いったんWindows版COBOL2002で使用したプロジェクトファイルはCOBOL2002専用プロジェクトファイルとなり、Windows版COBOL85 Version 7ではその後使用できませんのでご注意が必要です。
プロジェクトファイルの移行時の注意事項については、Web公開しているCOBOL2002 ユーザーズガイドの付録を参照願います。
Windows版COBOL2002では使えません。Windows版COBOL2002で再コンパイルして、DLLや実行可能ファイルを作り直してください。また、Windows版COBOL85 Version 7で作成したオブジェクトファイル(.o)も使えませんので、再コンパイルが必要です。
Windows版COBOL2002 01-xxで作成した実行可能ファイル(EXE)やDLLをWindows版COBOL2002 04-xxに移行する場合、次の注意事項があります。
(1)ISAMによる索引編成ファイルを使用したオブジェクト(.obj、.lib)は移行できません。移行する場合は、再コンパイルが必要です。
(2)以下の個所に日本語などの多バイト文字を使用して作成した実行可能ファイルやDLLファイルは、プログラムを構成する実行可能ファイルやDLLファイルのすべてを再コンパイルしない場合、移行性があります。再コンパイルする場合は、すべての実行可能ファイルやDLLファイルを再コンパイルしてください。また、以下の個所に日本語などの多バイト文字を使用して作成したライブラリファイルやオブジェクトファイルを移行するときは、再コンパイルしてください。
プログラム名/クラス名/インタフェース名/関数名
XML連携機能のインタフェース名
その他のWindows版COBOL2002 04-xxに関する注意事項は、以下を参照してください。
また、COBOL2002 V1からCOBOL2002 V4への移行性・互換性については、Web公開しているCOBOL2002 ユーザーズガイドの付録を参照願います。
Red Hat Enterprise Linux 8またはRed Hat Enterprise Linux 9で実行できます。
ただし、実行可能ファイルや共用ライブラリを作成したOSのバージョンによっては、実行するOSでの再リンクが必要です。
・Red Hat Enterprise Linux 8の場合
Linux版COBOL2002 04-11以降をインストールした環境で実行できます。
Red Hat Enterprise Linux 5で作成した実行可能ファイルや共用ライブラリの場合、
Red Hat Enterprise Linux 8での再リンクが必要です。
これは、Red Hat Enterprise Linux 8のApplication Compatibility GUIDEによるものです。
・Red Hat Enterprise Linux 9の場合
Linux版COBOL2002 04-60以降をインストールした環境で実行できます。
Red Hat Enterprise Linux 5またはRed Hat Enterprise Linux 6で作成した実行可能ファイルや共用ライブラリの場合、Red Hat Enterprise Linux 9での再リンクが必要です。
これは、Red Hat Enterprise Linux 9のApplication Compatibility GUIDEによるものです。
また、COBOL2002製品以外のオブジェクトやアーカイブをリンクしている場合、各製品のOSの対応状況(*1)を製品ホームページなどでご確認の上、必要であれば、再リンクしてください。
*1 日立ミドルウェア製品のRed Hat Enterprise Linux 9、Red Hat Enterprise Linux 8の対応状況については、 以下でもご確認いただけます。
日立ミドルウェア製品のRed Hat Enterprise Linux 9の対応状況
日立ミドルウェア製品のRed Hat Enterprise Linux 8の対応状況
64ビット版のCOBOL2002の言語仕様は、同じプラットフォームの32ビット版のCOBOL2002とソースレベルで高い互換性がありますが、次の点等の見直しが必要です。
・アドレスデータ項目等のアドレス系データを表現する構文
・LENGTH関数等で8バイト2進となるデータ長を表現する構文
注意事項などの詳細は、Web公開している以下のマニュアルを参照ください。
・Windows COBOL2002 ユーザーズガイド 64bitアプリケーションの作成
・UNIX COBOL2002 使用の手引き 手引編 64bitアプリケーションの作成
なお、関連製品が各プラットフォームの64ビット版に対応していないため、未サポートの機能もあります。詳細は担当営業にご相談ください。
Windows版COBOL2002で作成した実行可能ファイル(EXE)やDLLは、Windows版COBOL2002(64ビット版)では使えません。Windows版COBOL2002(64ビット版)で再コンパイルして、実行可能ファイル(EXE)やDLLを作り直してください。また、Windows版COBOL2002で作成したオブジェクトファイル(.obj)やライブラリファイル(.lib)も、Windows版COBOL2002(64ビット版)で作成したオブジェクトとリンクできませんので再コンパイルが必要です。
使用できません。同じプラットフォームの64ビット版のCOBOL2002で再コンパイルして、実行可能ファイルや共用ライブラリを作り直してください。また、32ビット版のCOBOL2002で作成したオブジェクトファイル(.o)も、同じプラットフォームの64ビット版のCOBOL2002で作成したオブジェクトとリンクできませんので再コンパイルが必要です。
Pro*COBOLなど連携製品のライブラリに変更がなけば、実行可能ファイルとライブラリは、そのまま移行が可能です。
移行の際に注意事項がありますので、以下を参照してください。
バージョン04-00の開発環境製品でコンパイルする場合は、運用環境製品のバージョンも上げる必要があります。
運用環境製品のバージョンは、04-00以降のバージョンにしてください。
COBOL言語仕様はCOBOL国際規格で規定されているため、規格が規定した言語仕様の範囲で互換性があります。しかし、各社独自の拡張仕様があり、拡張仕様に関しては互換性がありません。
Windows開発環境製品のバージョンアップは可能です。
Windows開発環境製品(V4)を使って開発する際は、次の点をご注意ください。
COBOL85製品および旧バージョンのCOBOL2002からの移行性・互換性に関する情報は、次のマニュアルを参照してください。
プログラムの動作が保証されないデータ項目が含まれている可能性があります。
次の機能を利用して、プログラムの動作が保証されないデータ項目が含まれているか、チェックしてください。
・データ例外検出機能
格納値がデータ項目の属性と矛盾しているデータ項目は、プログラムの動作が保証されません。
アプリケーションデバッグ機能のデータ例外検出機能を利用すると、格納値がデータ項目の属性と矛盾している場合、デバッグ実行時にデータ例外エラーとなり、プログラムの動作が保証されないデータ項目をチェックできます。
・初期化漏れチェック機能
初期化されていないデータ項目は、プログラムの動作が保証されません。
初期化漏れチェック機能を利用すると、コンパイル時にデータ項目の初期化漏れを検出し、プログラムの動作が保証されないデータ項目をチェックできます。
比較、演算または転記元の外部10進項目の値が、次のマニュアルに記載したデータの場合は、同じ結果となります。
マニュアル「COBOL2002 言語 標準仕様編」
4.4.2 データ項目や定数の字類と項類
(5) 数字項類(Numeric category)
(a) 外部10進形式
上記マニュアル記載以外の値を使用した比較、演算および転記の結果を保証していません。この場合は、実行結果が異なる場合があります。
ただし、不正データが空白文字(X'20')の場合、コンパイラオプション-SpaceAsZeroを指定すると、空白文字(X'20')データがあるとき、ゼロ(X'30')として比較、演算および転記が実行されます。
外部10進項目に不正なデータの空白文字(X'20')があっても、コンパイラオプション-SpaceAsZeroを使用されている場合は、同じ結果になります。
コンパイラオプション-SpaceAsZeroの詳細については、マニュアル「COBOL2002 ユーザーズガイド」またはマニュアル「COBOL2002 使用の手引 手引編」の-SpaceAsZeroオプションの説明を参照ください。
AIXやLinuxからWindowsへ移行する際に-DynamicLinkコンパイラオプションの指定について、以下の観点で見直してください。
(1) 移行元で-DynamicLink,Callコンパイラオプションの指定がある場合
定数指定のCALL文を洗い出して、動的なリンクの呼び出しにする必要があるか見直してください。
必要がある場合は、Windows版でもそのまま-DynamicLink,Callコンパイラオプションを指定してコンパイルしてください。
必要がない場合は、Windows版では-DynamicLink,Callコンパイラオプションを指定しないでコンパイルすることをご検討ください。
(2) 移行元で-DynamicLink,IdentCallコンパイラオプションの指定がある場合
Windows版では-DynamicLink,IdentCallコンパイラオプションを指定しないでコンパイルしてください。
なお、-DynamicLinkコンパイラオプションを指定しないでコンパイルした場合、AIX版/Linux版とWindows版では以下のようにCALL文の動作が異なります。
・AIX版/Linux版では、一意名指定のCALL文も定数指定のCALL文も「静的なリンク」として扱います。
・Windows版では、一意名指定のCALL文を「動的なリンク」、定数指定のCALL文を「静的なリンク」として扱います。
KCCC0003R-Sは、動的なリンクによるCALL文で、指定されたプログラム名が呼び出し可能なプログラムではないときに出力されます。
以下を見直して対処してください。
(1) 関連PPを含み呼び出し先プログラム名が、Windows版で変わってないかを確認し、変わっている場合は正しいプログラム名が指定されるようにプログラムを修正する。およびWindowsの32bit版COBOL2002へ移行する場合は、呼び出し規約が呼び出されるプログラムと、呼び出すプログラムで同じかを確認して、異なる場合は同じになるようにプログラムを修正する。
(2) Windowsでは、環境変数CBLLDLLに呼び出し先プログラムが含まれるDLLが指定されているか確認し、指定されてない場合は指定する。
(3) Windowsで環境変数CBLLDLLに呼び出し先プログラムが含まれるDLLのファイル名称だけを指定する場合は、指定したDLLが、次のDLL検索フォルダに存在するか確認し、存在しなければ、DLL検索フォルダのどこかに格納する。または、指定したDLLが存在するフォルダを環境変数PATHに追加登録する。
・現在のプロセスの実行可能ファイルがあるフォルダ
・Windowsのシステムフォルダ
・Windowsフォルダ
・カレントフォルダ
・環境変数PATHで登録されているフォルダ
なお、移行元で指定されていた環境変数CBLLPATH、CBLLSLIB、CBLLTAGやLD_LIBRARY_PATHは、Windows版では無効です。