ページの先頭です。
サイト内の現在位置を表示しています。
  1. ホーム
  2. ソフトウェア
  3. COBOL DBアクセス
  4. FAQ
ここから本文です。

COBOL DBアクセス - FAQ

製品に関する質問

Q1COBOL DBアクセス for Oracle/SQL Serverを共存させることは可能ですか?
A1共存はできません。
Oracle版とSQL Server版を1つのサーバにインストールしないでください。
Q2COBOLプログラムからCOBOL DBアクセスを使ってデータベースにアクセスする場合、何を購入すれば良いのでしょうか?
A2

サーバ上のCOBOLプログラムから同一サーバ上のデータベースにアクセスされる場合は、COBOL DBアクセス for Oracle/SQL Server(サーバ製品)をご購入いただくことでご利用いただけます。

クライアント上のCOBOLプログラムからアクセスされる場合は、COBOL DBアクセス for Oracle/SQL Server(サーバ製品)に加えて、COBOL DBアクセス Server/Client Runtime(クライアント製品)を購入してください。

ライセンスの考え方についてはこちらを参照してください。

動作イメージはこちらを参照してください。

Q3COBOL DBアクセス for Oracle/SQL Server(サーバ製品)とCOBOL DBアクセス Server/Client Runtime(クライアント製品)の動作環境を教えてください。
A3最新のバージョンの動作環境は次の通りです。
Q4COBOL DBアクセス for Oracle/SQL Server(サーバ製品)とCOBOL DBアクセス Server/Client Runtime(クライアント製品)の価格および型番を教えてください。
A4最新のバージョンの価格および型番は次の通りです。
Q5COBOL DBアクセスは、ODBCドライバ経由でDBMSにアクセスするのですか?
A5
  • COBOL DBアクセス for Oracleの場合
    ODBCではありません。OCIを利用してアクセスしています。
  • COBOL DBアクセス for SQL Serverの場合
    ODBCドライバ経由でアクセスしています。ODBCドライバは「SQL Server Native Client 11.0(SQL Server 2012/2014)」または「ODBC Driver 13 for SQL Server(SQL Server 2016)」を利用してください。
Q6COBOLで使用するファイルとデータベース上の表との関連付けをどのようにするのですか?
A6

COBOL DBアクセスでは、COBOLアプリケーションで指定するファイル名(表名)とデータベース上の表を関連付けるために、「表対応テーブルメンテナンス」を提供しています。

このツールを使って、COBOLアプリケーションで指定するファイル名(表名)と、データベース上の表名を対応付けます。

Q7

COBOL DBアクセスは、UNIXマシン上のデータベースにアクセスできますか?
COBOL DBアクセスのUNIX版はありますか?

A7

COBOL DBアクセスでは、Windows Server OS上のデータベース以外へのアクセスはできません。

COBOL DBアクセスのUNIX版はありません。現在、対応予定はありません。

動作環境についてはこちらをご参照ください

Q8COBOL DBアクセス Server/Client Runtime(クライアント製品)がインストールされているAPサーバ(MetaFrame)とCOBOL DBアクセス for Oracle/SQL Server(サーバ製品)がインストールされているDBサーバを、ワークグループで運用することはできますか?
A8

COBOL DBアクセス for Oracle/SQL Server(サーバ製品)とCOBL DBアクセス Server/Client Runtime(クライアント製品)間の通信方式として[名前付きパイプ]を使用する場合は、Windowsドメイン環境(APサーバ、DBサーバを同一ドメインに属す)でのみ運用可能です。
通信方式として[TCP/IP]を使用する場合は、DBサーバをワークグループにした環境でも運用可能です。但し、その際はWindowsドメインの認証機能を利用できません。

Q9ウィルスチェックソフトをCOBOL DBアクセスと同じサーバにインストールしても問題はありませんか?
A9
  1. COBOL DBアクセスとウィルスチェックソフトとの共存について

    まず、COBOL DBアクセスとしては、OS,データベースなどCOBOL DBアクセスのシステムを構成する基本的なソフト以外については、動作の保証(確認)を行っておりません。これらのソフトウェアは社外製品であり、その製品の機能範囲および仕様を把握できないためです。

  2. 既知の現象について

    一般的な話として、ウィルスチェックのソフトはコンピュータ上のファイルを検査(監視)の対象にしており、検査対象に指定されたファイルに対してウィルス感染の検査を実施します。

    この検査対象の指定で、全ての拡張子のファイルを検査するといった指定を行うと、COBOL DBアクセスが使用している「名前付きパイプ」をファイルとして検査対象に含めて、この「名前付きパイプ」に操作を行う場合があります。

    この操作の内容によっては、COBOL DBアクセスで通信回線障害が発生する原因となりますので、検査対象とするファイルの拡張子を指定するなど「名前付きパイプ」を検査対象としないように設定してください。

Q10

COBOL DBアクセス、COBOL Standard Editionシステムサブルーチンなどをインストールする順番はありますか?

A10COBOL DBアクセスは、ご質問にある他のソフトウェアとのインストール順に関する規則はありませんが、対応するデータベースを先にインストールしていただく必要があります。
Q11JIS2004の文字は使えますか?
A11JIS90を超える範囲のコードは使用できません。JIS90のコード範囲内で使用可能です。この範囲を超えたコードが使用された場合、正しく表示できない、または、処理できない可能性があります。
Q12COBOL DBアクセスのメモリ使用量を教えてください。
A12
  • COBOL DBアクセス for Oracle
    3300KB + COBOL-AP数×15KB + オープン数×5KB + セッション数×500KB
  • COBOL DBアクセス for SQLServer
    3300KB + COBOL_AP数×15KB + オープン数×5KB + ログイン数×37KB
  • COBOL DBアクセス Server Runtime
    0.3MB
  • COBOL DBアクセス Client Runtime
    0.3MB
  • 備考
    • COBOL_AP数:COBOL DBアクセスを同時に使用するCOBOLのアプリケーション数
    • オープン数:COBOL-APから同時にオープンするDBのテーブル数
    • セッション数:COBOL DBアクセス-Oracle間のセッションの数
    • ログイン数:COBOL DBアクセスからSQLServerへ同時にログインする数
    • セッション数、ログイン数は概ね下記のようになります。

      (a) COMMITモードが「手動」の場合
        1つのAPに対し、1つ必要です。
        一度に複数のAPを実行する場合、その数だけ必要となります。

      (b) COMMITモードが「自動」の場合
        最大値としては、上記オープン数分が必要となります。
        ただ、表のオープンモードにより、1アプリケーション内で
        セッション/ログインを共有する場合もあります

  • 注意
    上記以外にも、処理実行内容に応じて、データベース本体およびデータベース提供のライブラリがメモリを使用します。

機能/性能上の質問

COBOL DBアクセス for SQL Server / Oracle 共通のFAQ

Q1複数のDBサーバ上にある表にアクセスする際に、注意点はありますか?
A1

TCP/IP通信でアクセスする場合、OPEN命令およびREAD命令の順に注意してください。

まずサブサーバ上の表をOPENし、最後にメインサーバ上の表をOPENするようにしてください。 また、READ命令はOPENした表の順に実行してください。

Q2COBOL DBアクセスは、2件以上重複する値があった場合、どちらを先にREADしますか?
A2

物理的に最初のレコードをREADします。例えば Oracleの場合は、ROWIDが小さいレコードとなります。

Q3異なるDBサーバに同一COBOL表名でアクセスしたいが、どうすればよいですか?
A3

COBOLのファイルマッパーにより異なる表名に変更させた後、表対応テーブルメンテナンスを使用して、ファイルマッパーで変更した表名とデータベース上の表を関連付けることにより、それぞれ異なるDBサーバの表にアクセスさせる方法があります。

Q4異なるDBサーバ上の同一DB表名にアクセスしたいが、どうすればよいですか?
A4COBOLプログラムから指定する表名が異なるのであればマルチサーバ機能をつかって、特定の表に対するアクセスを別のDBサーバに切り替える事ができます。
Q5

表対応テーブルの情報を移行する方法はありますか?

(例えばテスト環境から本番環境への移行など)

A5データベース名、表名、接続する際のユーザ名などに変更がないという前提で、表対応テーブルファイルをそのまま本番環境へ移行していただくことは可能です。次の手順で移行してください。
  1. 旧環境で、表対応テーブル(※)をセーブ
  2. 新環境に、COBOL DBアクセスをインストール
  3. 新環境に、セーブした表対応テーブルをコピー
  4. 表対応テーブルメンテナンスを起動し、表対応テーブルファイルのパスが新旧環境で異なる場合はファイルが見つからない旨の警告が表示されるので、「環境設定」→「表対応テーブルファイル」から表対応テーブルファイルのパスを正しく設定する
  5. COBOL DBアクセスのサービスを起動
  6. COBOL DBアクセスの openall ユーティリティを実行
(※)移行する必要のあるファイルは以下の通りです。

共通
  • (COBOL DBアクセスインストールパス) \ bin \ dblnk.ctl

SQL Server利用時
  • (COBOL DBアクセスインストールパス) \ bin \ dblnksql.tbl (既定値のファイル名)
  • (COBOL DBアクセスインストールパス) \ bin \ SQLSRV 配下すべて
  • (COBOL DBアクセスインストールパス) \ bin \ sql_b 配下すべて

Oracle利用時
  • (COBOL DBアクセスインストールパス) \ bin \ dblnkocl.tbl (既定値のファイル名)
  • (COBOL DBアクセスインストールパス) \ bin \ ORACLE 配下すべて
  • (COBOL DBアクセスインストールパス) \ bin \ ora_b 配下すべて

 

なお、DBリンクキットの表対応テーブルの情報もCOBOL DBアクセスに移行できます。

上記の「COBOL DBアクセスインストールパス」を「DBリンクキットインストールパス」に読み替えてください。

COBOL DBアクセス for SQL ServerのFAQ

Q1オープン高速化を「行わない」に設定したテーブルを使用する際に、注意点はありますか?
A1オープン高速化を「行わない」に設定されたテーブルを使用するCOBOLアプリケーションは、 必ずシングルタスクで実行するようにしてください。
Q2COBOL DBアクセス for SQL Serverを使用する場合、オブジェクト名を作成する際に、注意点はありますか?
A2

COBOL DBアクセス for SQL Serverをご使用の場合、COBOL DBアクセス内部で、dblnk_ という名前で開始するストアドプロシージャを作成しています。
したがって、ユーザは、dblnk_ という名前で開始するオブジェクト名は使用できません。

Q3COBOLアプリケーションが主キーとして使用するインデックスのタイプは何にするのですか?
A3一意なインデックスで、COBOLアプリケーションが主キーとして使用するインデックスは「クラスタ化インデックス」としてください
Q4COBOL DBアクセス for SQL Serverでオープン高速化を「行わない」の状態でOPEN命令を複数回実行した場合、SQL Server上でストアドプロシージャはオープンする度に、新たに作成されるのでしょうか(実行したOPEN命令数だけストアドプロシージャが増えていく のでしょうか)?
A4オープン高速化を「行わない」に設定されている場合、COBOLアプリケーションの最初のOPEN命令(または、openall.exeの実行)が成功した時に、各テーブルごとに、ストアドプロシージャが2~3個作成されます。
各テーブルに対するストアドプロシージャが既に存在していた場合は、一旦削除した後、再度ストアドプロシージャを作成します(OPEN命令毎に増えていくことはありません)。
Q5インストール時に入力したODBCデータソース名を変更できますか?
インストール時に入力したODBCデータソース名を確認する方法はありますか?
A5レジストリエディタにて、以下を参照/編集してください。
HKEY_LOCAL_MACHINE\SOFTWARE\NEC\COBOL DB Access\SQLServer\ODBC
 DataSourceName

COBOL DBアクセス for OracleのFAQ

Q1COBOL DBアクセス for Oracleを使用する場合、OracleのCOMMENT機能を使用する際に、注意点はありますか?
A1

OracleのCOMMENT機能により仮想表(ビュー)の列にコメントを作成する場合、「コメント」に DBLNK_ で始まるものは指定できません。

性能高速化のキー識別子として予約しています。不正に付加された場合には、OPEN命令がCOBOL DBアクセスエラーとなったり、動作が不定となったりします。

Q21つのCOBOLアプリケーションから、複数のSIDの表にアクセスすることは可能ですか?
A2

COBOL DBアクセスから、複数SID環境のデータベースに接続することは可能です。この場合、SID毎にSQL*NETのEasy Configなどを使用してサービス名を作成し、そのサービス名を、表対応メンテナンスのデータベース名の箇所に指定ください。

ただし、このデータベースは同一サーバ内に存在していなければなりません。他のサーバ上にあるデータベースをアクセスすることはできません。他のサーバ上にあるデータベースをアクセスする場合は、COBOL DBアクセスのマルチサーバ機能を使用してください。

Q3使用している表の列数が252を超えるが、COBOL DBアクセスでは使用できませんか?もし使用できない場合、回避策は何かありますか?
A3

列数が252を超える基本表に対して、COBOL DBアクセスから直接アクセスすることはできません。

Oracle上は253列以上定義されたとしても、COBOL DBアクセスを介してのアクセスには仮想表を使用して252列以下に絞り込むことができないかご検討ください。

実行時の障害に関する質問

COBOL DBアクセス for SQL Server / Oracle 共通のFAQ

Q1COBOL DBアクセスの実行エラー「関連製品エラー:61000000」はどういったエラーですか?
A1

[61000000]は、COBOL85アプリケーションとデータベースの表定義のデータ型が異なっている際に返却されるエラーコードです。

表対応テーブルメンテナンスでCOBOLデータ型を一致させてください。

詳細は、注意事項をご覧ください。

Q2TCP/IP通信を使用した場合、OPEN命令実行後長時間放っておいた後に終了キーを押下すると、 「関連製品エラー:a0000000」が発生します。
A2

セション開設後、TCP/IP通信を長時間放置した場合の正しい動作です。

COBOL DBアクセスのクライアントからTCP/IP接続を行った場合、10時間以上クライアント・サーバ間で通信が行われない状態(無通信の状態)が続くと、サーバ側から自動的にセションを切断する仕様です。

クライアント側では、このセション切断を次のデータベースに対する処理(終了キー押下など)のタイミングで検出し、エラーを通知します。

Q3サーバ上のCOBOLプログラムからデータベースにアクセスはできますが、クライアント上のCOBOLプログラムからアクセスすると「関連製品エラー:a000274d」が発生します。
A3[a000274d]は、相手のコンピュータから接続が拒否されています。
  • サーバ側でTCP/IP接続が選択されていない
  • サーバまたはクライアント側でのポート番号が誤っている
  • クライアントから指定するメインサーバ名が誤っている

などの原因が考えられます。
Q4表の定義やインデックスを変更した後に、表対応テーブルメンテナンスを使って「データベース情報の取得」を行ったが、表のオープンに失敗して何も表示されません。どういう原因が考えられますか?
A4以下のような原因が考えられます。
  1. 同一DB内に同一表名が複数存在する。例えば、Xという表名が所有者Aと所有者Bで存在する場合、レコード定義情報は正しく表示されず空白になる場合があります。
  2. 該当する表が異なるサーバ上に存在する(マルチサーバ機能を利用した表である)。ローカルサーバ上の表情報のみ取得できますので、実際に表が存在するサーバ上の表対応テーブルメンテナンスで実行してください。
  3. 表名や列名に全角の記号や演算子を含んでいる。VIEWなどを使用して表名や列名を変更してください。
Q5COBOLアプリケーションを起動した時に「関連製品エラー:a0000000」が発生します。
A5[a0000000]は、COBOL DBアクセスがOSエラーを検出した際に返却されるエラーコードです。通信回線障害が発生していると思われます。
Q6COBOL-APからWRITEすると「COBOLの内部表現形式の範囲外のデータが指定されました。」とイベントログに記録されるのですが、考えられる原因は何ですか?
A6COBOL-APとDB側の表定義が異なっています。表対応テーブルメンテナンスで対象となるCOBOL表名を指定し、レコード定義の「編集」で表示されるデータ型とCOBOL型を確認してください。
Q7COBOL DBアクセスのインストールに失敗し、イベントログにエラーコード「400」と出力されます。考えられる原因は何ですか?
A7administrator以外のユーザでインストールを行った場合、エラーとなります。administratorでログインしなおし、再度インストールを行ってください。

COBOL DBアクセス for SQL ServerのFAQ

Q1COBOL DBアクセス for SQL Serverを使用中、CURRENT指定のREWRITE命令を実行するとレスポンスが低下します。
A1テーブルに text型の列が含まれている可能性があります。
COBOL DBアクセスは、 CURRENT指定のREWRITE命令を実行する場合、変更が必要な項目のみを SQL Serverに更新を要求しています。 しかし、この制御は text型の列には行えないため、text型の列は変更が必要ない場合にも SQL Server に更新を要求します。 したがって、テーブルに text型の列が含まれる場合、CURRENT指定のREWRITE命令の性能が多少劣化します。
このため、文字項目であまり更新を行わない項目は、text型でなく char型でテーブルを作成するようにしてください。

COBOL DBアクセス for OracleのFAQ

Q1COBOL DBアクセス for Oracleをインストール後、COBOL DBアクセスのサービス起動したら、 [CBLDB01.exe - DLLが見つかりません]及び[OCIW32.DLL が指定されたパスに見つかりません]というエラーが発生します。
A1Oracleのモジュールが見つからないため、このエラーが発生しています。COBOL DBアクセスのインストールを行う前に Oracleのインストールをしてください。

ページの先頭へ戻る