前提
マイクロフォーカスCOBOLとBtrieveAPI(ActianZen)を使ってシステムの開発をしています。
環境
マイクロフォーカスVisualCOBOL Ver.8.0
OS:Windows11 64Bit
BtrieveのデータはVer.6.x形式以降(最新バージョンと読み書きの互換性あり)
インターフェース:COBOL SDK for Zen / PSQL ↓
https://www.agtech.co.jp/actian/support/reference/sdk/access_methods/cobol_info/
実現したいこと
COBOLのソースコードと上記インターフェースのNTBT64.LIBをコンパイラ時にリンクし、システムでBtrieveAPIを呼ぶ。
発生している問題
いくつかあるシステムの中で一つだけランタイムエラーが発生してしまう。
すべてのシステムが同じようなディレクトリ構成になっていますが、エラーが発生するのは一つだけです。それ以外は正常に動作しています。コンパイル時にエラーなどはなく、ライブラリはリンクできているように思います。
問題個所
コンパイルする際のbatファイルはこんな感じです。
ディレクトリやファイル名はちょっと変更していますが、他のシステムすべて同じようにコンパイルしています。
PATH=C:\Program Files (x86)\Micro Focus\Visual COBOL\bin; c: CD\system\system01 :system01_source echo *---------------------------------------------------------------------* echo * system01_source メニュープログラムのコンパイル中 echo *---------------------------------------------------------------------* echo on COBOL C:\Users\username\Desktop\cbl_src\src\system01_source obj case; echo off if errorlevel 1 goto nocob echo *---------------------------------------------------------------------* echo * system01_source プログラムのリンク echo *---------------------------------------------------------------------* :linkc echo on CBLLINK -g -oC:\system\system01\system01_source.EXE C:\Users\username\Desktop\cbl_src\src\system01_source+c:\cobol\lib\NTBT64.LIB
システムを動かす際のbatが以下になります。
set cobsw=+s5 path=\tool\iiiwin;\tool\bti;\Program Files (x86)\Micro Focus\Visual COBOL\bin; cd\system\system01 PSRUN system01_source.EXE
iii/winというGUIエンジンを利用して画面を作成していますので、上記のPSRUNというコマンドはそのエンジンを起動するコマンドですので今回の事象には無関係です。
実際Btrieveで利用するdllファイルは上記のbtiというフォルダに配置してあり、他の動作するシステムも同様です。
呼び出し時のソースコードは下記です。
CALL '_BTRV' USING B-CODE,B-STATUS,POS-KIH,KIH-REC,BUF-KIH,KEY-KIH,KEY-NUM.
ソースコードもコンパイル時も特にエラーはありません。
そもそもAPIのdllがコールできていないのが、なぜか特定のシステムだけなのが不思議です。
上記のCall分だけコメントアウトするとランタイムエラーは発生せずシステムが起動します。
Call出来てないのでソースが間違っている以前の問題かと思います。
試したこと
システム環境変数でdllのフォルダにパスを通す。
システムと同じディレクトリにdllを持ってくる。
LIBファイルとdllファイルを再インストールしてコンパイルしなおす。
32bit版と64bit版と両方で試す。
bat上でパスを通す。
ディレクトリ構成を変えてみる。
など
ネットで検索してもそれらしい情報は出てきません。
インターフェースの使い方に沿ってやってると思うのですが。。。
他のシステムは動作しますし。
補足情報
なんでも良いので試せること、ヒントなど情報があればと思い投稿します。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。