ページの本文へ

Hitachi

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

COBOL2002:Windows版COBOL2002 03-xx使用上の注意事項

前提ソフトウェア

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

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

文字集合

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

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

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

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

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

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

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

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

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

*
マニフェストファイルは、使用するC実行時ライブラリの情報やUAC情報などが登録されており、プログラムを実行する際にその情報が必要になります。

使用できない機能

本製品を使用する場合、次の機能は使用できません。

  • OLE2オートメーションサーバ機能
  • CGIプログラム作成支援機能

SOAP連携機能は使用できません。

  • SOAP連携機能のコマンドは使用できません。使用した場合、コマンドが見つからず、認識されないためシステムエラーになります。
  • COBOL85およびCOBOL2002 01-xxで作成した実行可能ファイル(.exe)およびDLLファイル(.dll)は使用できません。使用した場合、SOAPアプリケーション起動時にDLLが見つからないためエラーになります。

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

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

  • Hitachi Code Converter - Client Runtime for C/COBOL(04-00以降)
  • Hitachi Code Converter - Server Runtime for C/COBOL(04-00以降)
  • 日立コード変換 - Client Runtime(03-00-01 以降)
  • 日立コード変換 - Server Runtime(03-00-01 以降)

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

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

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

Windows版COBOL2002 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ソース>