Japan
サイト内の現在位置を表示しています。
COBOL DBアクセス - FAQ
製品に関する質問
- Q1COBOL DBアクセス for Oracle/SQL Serverを共存させることは可能ですか?
- A1
共存はできません。
Oracle版とSQL Server版を1つのサーバにインストールしないでください。 - Q2COBOLプログラムからCOBOL DBアクセスを使ってデータベースにアクセスする場合、何を購入すれば良いのでしょうか?
- A2
- Q3COBOLで使用するファイルとデータベース上の表との関連付けをどのようにするのですか?
- A3
COBOL DBアクセスでは、COBOLアプリケーションで指定するファイル名(表名)とデータベース上の表を関連付けるために、「表対応テーブルメンテナンス」を提供しています。
このツールを使って、COBOLアプリケーションで指定するファイル名(表名)と、データベース上の表名を対応付けます。
- Q4
COBOL DBアクセスは、UNIXマシン上のデータベースにアクセスできますか?
COBOL DBアクセスのUNIX版はありますか? - A4
COBOL DBアクセスでは、Windows Server OS上のデータベース以外へのアクセスはできません。
COBOL DBアクセスのUNIX版はありません。
- Q5ウイルス対策ソフトをCOBOL DBアクセスと同じサーバにインストールしても問題はありませんか?
- A5
COBOL DBアクセスとしては、OS,データベースなどCOBOL DBアクセスのシステムを構成する基本的なソフト以外については、動作の保証(確認)を行っておりません。
ウイルス対策ソフトのインストールにより問題が発生するかどうかについては、事前に十分な検証を行ってください。 - Q6
COBOL DBアクセス、COBOL Standard Editionシステムサブルーチンなどをインストールする順番はありますか?
- A6
COBOL DBアクセスは、ご質問にある他のソフトウェアとのインストール順に関する規則はありませんが、対応するデータベースを先にインストールしていただく必要があります。
- Q7JIS2004の文字は使えますか?
- A7
JIS90を超える範囲のコードは使用できません。JIS90のコード範囲内で使用可能です。この範囲を超えたコードが使用された場合、正しく表示できない、または、処理できない可能性があります。
機能/性能上の質問
COBOL DBアクセス for SQL Server / Oracle 共通のFAQ
- Q1物理順アクセスのデータ順はA-VXと同じくレコード書き出し順ですか?
- A1
物理順アクセスのデータ順はレコードの書き出し順とは異なります。
- Q2複数のDBサーバ上にある表にアクセスする際に、注意点はありますか?
- A2
TCP/IP通信でアクセスする場合、OPEN命令およびREAD命令の順に注意してください。
まずサブサーバ上の表をOPENし、最後にメインサーバ上の表をOPENするようにしてください。 また、READ命令はOPENした表の順に実行してください。
- Q3COBOL DBアクセスは、2件以上重複する値があった場合、どちらを先にREADしますか?
- A3
物理的に最初のレコードをREADします。例えば Oracleの場合は、ROWIDが小さいレコードとなります。
- Q4異なるDBサーバに同一COBOL表名でアクセスしたいが、どうすればよいですか?
- A4
COBOLのファイルマッパーにより異なる表名に変更させた後、表対応テーブルメンテナンスを使用して、ファイルマッパーで変更した表名とデータベース上の表を関連付けることにより、それぞれ異なるDBサーバの表にアクセスさせる方法があります。
- Q5異なるDBサーバ上の同一DB表名にアクセスしたいが、どうすればよいですか?
- A5
COBOLプログラムから指定する表名が異なるのであればマルチサーバ機能をつかって、特定の表に対するアクセスを別のDBサーバに切り替える事ができます。
- Q6
表対応テーブルの情報を移行する方法はありますか?
(例えばテスト環境から本番環境への移行など)
- A6
データベース名、表名、接続する際のユーザ名などに変更がないという前提で、表対応テーブルファイルをそのまま本番環境へ移行していただくことは可能です。次の手順で移行してください。
- 旧環境で、表対応テーブル(※)をセーブ
- 新環境に、COBOL DBアクセスをインストール
- 新環境に、セーブした表対応テーブルをコピー
- 表対応テーブルメンテナンスを起動し、表対応テーブルファイルのパスが新旧環境で異なる場合はファイルが見つからない旨の警告が表示されるので、「環境設定」→「表対応テーブルファイル」から表対応テーブルファイルのパスを正しく設定する
- COBOL DBアクセスのサービスを起動
- COBOL DBアクセスの openall ユーティリティを実行
共通
- (COBOL DBアクセスインストールパス) \ bin \ dblnk.ctl
- (COBOL DBアクセスインストールパス) \ bin \ dblnksql.tbl (既定値のファイル名)
- (COBOL DBアクセスインストールパス) \ bin \ SQLSRV 配下すべて
- (COBOL DBアクセスインストールパス) \ bin \ sql_b 配下すべて
- (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
- Q1データベースのキャラクタセットは何にすればよいですか?
- A1
JA16SJISまたはJA16SJISTILDEを選択してください。
- Q2COBOL DBアクセス for Oracleを使用する場合、OracleのCOMMENT機能を使用する際に、注意点はありますか?
- A2
OracleのCOMMENT機能により仮想表(ビュー)の列にコメントを作成する場合、「コメント」に DBLNK_ で始まるものは指定できません。
性能高速化のキー識別子として予約しています。不正に付加された場合には、OPEN命令がCOBOL DBアクセスエラーとなったり、動作が不定となったりします。
- Q31つのCOBOLアプリケーションから、複数のSIDの表にアクセスすることは可能ですか?
- A3
COBOL DBアクセスから、複数SID環境のデータベースに接続することは可能です。この場合、SID毎にOracle Net Managerなどを使用してサービス名を作成し、そのサービス名を、表対応メンテナンスのデータベース名の箇所に指定ください。
ただし、このデータベースは同一サーバ内に存在していなければなりません。他のサーバ上にあるデータベースをアクセスすることはできません。他のサーバ上にあるデータベースをアクセスする場合は、COBOL DBアクセスのマルチサーバ機能を使用してください。
- Q4使用している表の列数が252を超えるが、COBOL DBアクセスでは使用できませんか?もし使用できない場合、回避策は何かありますか?
- A4
列数が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
以下のような原因が考えられます。
- 同一DB内に同一表名が複数存在する。例えば、Xという表名が所有者Aと所有者Bで存在する場合、レコード定義情報は正しく表示されず空白になる場合があります。
- 該当する表が異なるサーバ上に存在する(マルチサーバ機能を利用した表である)。ローカルサーバ上の表情報のみ取得できますので、実際に表が存在するサーバ上の表対応テーブルメンテナンスで実行してください。
- 表名や列名に全角の記号や演算子を含んでいる。VIEWなどを使用して表名や列名を変更してください。
- Q5COBOLアプリケーションを起動した時に「関連製品エラー:a0000000」が発生します。
- A5
[a0000000]は、COBOL DBアクセスがOSエラーを検出した際に返却されるエラーコードです。通信回線障害が発生していると思われます。
- Q6COBOL-APからWRITEすると「COBOLの内部表現形式の範囲外のデータが指定されました。」とイベントログに記録されるのですが、考えられる原因は何ですか?
- A6
COBOL-APとDB側の表定義が異なっています。表対応テーブルメンテナンスで対象となるCOBOL表名を指定し、レコード定義の「編集」で表示されるデータ型とCOBOL型を確認してください。
- Q7COBOL DBアクセスのインストールに失敗し、イベントログにエラーコード「400」と出力されます。考えられる原因は何ですか?
- A7
administrator以外のユーザでインストールを行った場合、エラーとなります。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 が指定されたパスに見つかりません]というエラーが発生します。
- A1
Oracleのモジュールが見つからないため、このエラーが発生しています。COBOL DBアクセスのインストールを行う前に Oracleのインストールをしてください。
お問い合わせ