ページの本文へ

Hitachi

ソフトウェアミドルウェア

COBOL2002:Windows版COBOL2002(64ビット版) 03-xx使用上の注意事項

前提ソフトウェア

開発環境製品(COBOL2002 Net Developer(64))と開発・運用環境製品(COBOL2002 Net Server Suite(64))は、動作環境のOSにより下記再頒布可能パッケージが必要です。

前提ソフトウェア
動作環境OS 前提ソフトウェア
Windows 7 x64
Windows Server 2008 R2
Windows Server 2008 x64
Microsoft® .NET Framework 4 再頒布可能パッケージ
または
Microsoft® .NET Framework 4.5 再頒布可能パッケージ
Windows 8.1 x64
Windows Server 2012
OSに同梱されているMicrosoft® .NET Framework 4.5再頒布可能パッケージを使用してください。
Windows 10 x64
Windows Server 2016
OSに同梱されているMicrosoft® .NET Framework 4.6再頒布可能パッケージを使用してください。

文字集合

ファイル名やパス名にJIS X0213の第3水準漢字および第4水準漢字を含むUnicodeの文字は使用できません。

ISAMによる索引編成ファイル使用時の注意

Windows版COBOL2002(64ビット版) 01-xxで作成した、ISAMによる索引編成ファイルを使用したライブラリファイル(.lib)やオブジェクトファイル(.obj)は、本製品へは移行できません。
再コンパイルしてください。

ISAM(単体製品版)との組み合わせ

COBOL2002と製品ISAM(単体製品版)を組み合わせて使用する場合、ISAM Version7(64) (07-60-/C以降)を使用してください。

SORT(単体製品版)との組み合わせ

COBOL2002と製品SORT(単体製品版)を組み合わせて使用する場合は、SORT Version8(64) (08-11以降)を使用してください。

コンパイルとリンクを別々に行う場合の注意

ライブラリファイル(.lib)やオブジェクトファイル(.obj)から、LINKコマンドを使って実行可能ファイル(.exe)、またはDLLファイル(.dll)を作成すると、マニフェストファイル(.manifest) (※)が生成されることがあります。この場合に作成された実行可能ファイル、またはDLLファイルをそのまま使用すると、C実行時ライブラリのローディングエラーとなることがあります。この現象を回避するため、生成されたマニフェストファイルの情報を、LINKコマンドの後でMTコマンドを使用して、対応する実行可能ファイル、またはDLLファイル中に埋め込んでください。
※マニフェストファイルは、使用するC実行時ライブラリの情報やUAC情報などが登録されており、プログラムを実行する際にその情報が必要になります。

Cosminexus連携機能仕様時の注意(03-01未満)

Cosminexus連携機能(Java連携機能)を使用するプログラムの開発には、Windows版COBOL2002(32ビット版)の開発環境、または開発・運用環境が別途必要です。

浮動小数点演算に関する注意

旧バージョンからの移行時は浮動小数点演算の誤差に注意してください

Windows版COBOL2002(64ビット版) 01-xxおよび02-xxで作成した実行可能ファイル(.exe)、DLLファイル(.dll)、オブジェクトファイル(.obj)、COBOLソースファイル(.cblなど)、ライブラリファイル(.lib)を本製品に移行する場合、次のどれかの条件に該当するときは、浮動小数点演算精度の違いによって、移行元システムの結果と差異が発生する場合があります。

  • 被べき数(底)またはべき数(指数)が浮動小数点項目や浮動小数点数字定数である場合
  • べき数(指数)が整数でない定数や整数項目でないべき乗演算を使用する場合
  • ACOS関数、ASIN関数、ATAN関数、COS関数、LOG関数、LOG10関数、RANDOM関数、SIN関数、SQRT関数、TAN関数、ANNUITY関数、PRESENT-VALUE関数のどれかの組み込み関数を使用する場合

浮動小数点数としては妥当な値ですが、条件に該当する場合は、浮動小数点演算精度の違いによる誤差に十分注意して移行してください。

Unicode機能を使用する場合の前提製品

Unicode機能を使用する場合、開発環境と運用環境の両方に下記のいずれかの日立コード変換が必要です。

  • 日立コード変換 - Server Runtime(64) (03-00以降)
  • 日立コード変換 - Client Runtime(64) (03-01以降)

移行やバージョンアップに関する注意

日本語などの多バイト文字を使用した名称のDLLファイルは、Windows版COBOL2002(64ビット版) 01-xxおよび02-xxで作成したライブラリファイル(インポートライブラリ)(.lib)を指定して静的にリンクできません。DLLファイルの再コンパイルによってライブラリファイルを再生成し、再リンクしてください。

Visual Studioと組み合わせて使用する場合の注意事項

Windows版COBOL2002(64ビット版) 03-xxは、Visual Studio 2010より後のバージョンのVisual Studioの開発環境と組み合わせて使用することはサポートしていません。
組み合わせて使用した場合、リンクエラーが発生することがあります。
この場合、COBOL2002のリンカパスの切り替え機能を使用することで問題を解決できることがありますが、使用するときは事前に正しく動作することを確認してください。
なお、Visual Studio 2015は、旧バージョンのVisual Studioと互換がない部分があることが確認されており、リンカパスの切り替え機能を使用しても問題を解決できない場合があります。
当社では以下の事例を確認しています。

現象

コンパイラコマンド(ccblまたはccbl2002)で、Visual Studio 2015で作成したCプログラムのオブジェクトファイルとリンクすると、次の外部シンボルが未解決になる。

エラー表示例:COBOL2002が同梱するリンカでリンクした場合
TEST.obj : error LNK2019: 未解決の外部シンボル __imp____stdio_common_vsprintf_s が関数 _sprintf_sで参照されました。
エラー表示例:Visual Studio 2015のリンカでリンクした場合
cbl2klg.lib(CLS061a.obj) : error LNK2001: 外部シンボル "__imp____argv" は未解決です。
cbl2klg.lib(CLS061a.obj) : error LNK2001: 外部シンボル "__imp____argc" は未解決です。

以下の回避策で問題を解決できることがありますが、回避策を適用される際には事前に回避策で問題ないことを評価してください。

回避策

  • Visual Studio 2015で作成したCプログラムは、オブジェクトファイルをCOBOLプログラムと静的にリンクせずに、CプログラムからDLLファイルを作成し、COBOLプログラムからCプログラムを動的に呼び出す実行可能ファイルを作成してください。
    すなわち、COBOLプログラムはCOBOL2002が同梱するリンカで、Cプログラムは、Visual Studio 2015のリンカで、それぞれリンクしてください。
  1. Visual Studio 2015 の環境でCプログラムからDLLファイルを作成します。
    1. Visual C++のコマンドラインビルド用の環境設定をCOBOL2002が使用する環境変数より前に設定します。Visual Studioが提供するコマンドプロンプトを使用するか、または次のコマンドを実行してください。
      call "<Visual Studio 2015のインストールパス>\VC\vcvarsall.bat" {x86 | amd64}
    2. CプログラムからDLLを作成します。
      cl /Fe<DLLファイル名> /MD /LD <Cソース> /link /DEF:<モジュール定義ファイル>
  2. COBOL2002の環境でCOBOLプログラムの実行可能ファイル(.exe)を作成します。
    1. COBOL2002が使用する環境変数をVisual C++のコマンドラインビルド用の環境設定より前に設定します。「COBOL2002コマンドプロンプト」を使用してください。
    2. -DynamicLink,Callオプションを指定して、COBOLプログラムをコンパイルします。
      ccbl2002 -DynamicLink,Call -Main,System <COBOLソース>