757996 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

さすらいのプログラマ

COBOL85メモ

COBOL85を試したときのメモ


1.vcvars32b.batの作成
vcvars32e.batをコピーして作成
---> PATH, LIBを変更
CBLLIBを追加(COPYブック用)
CBLCOPTも追加(-Cp -X5)

2.link.exeがあるが、古いバージョンなので、link.exe.oldにリネーム

3.ccbl -X5 test.cbl
COMP-5を使っているので-X5は必須。
Warningが表示されるが、無視 ---> 本当にいいかは未調査
test.rc,test.res,test.cbo,test.lib,test.expなど勝手に生成される。
cbl85lg.lib,cbl85_32.lib,msvcrt.lib,kernel32.lib,cbldcsm.libなどに勝手にリンク・・・
-vを使ってみると、-I4 -O1 -Lg -Mwなどが指定されていることがわかる。

4.では、DB2を使う。TESTDB.sqb
(1) PREP TESTDB.sqb bindfile
(2) BIND TESTDB.bnd
(3) TESTDB.cblの修正
a)STDCALLの指定をコメントアウト
*SPECIAL-NAMES.
* CALL-CONVENTION 74 IS DB2API.
b)CALL DB2API ...のDB2APIを削除
CALL DB2API "sqlgstrt" USING --> CALL "sqlqstrt" USING
c)COPY句を追加
COPY "sqlenv.cbl".
COPY "sqlca.cbl".
COPY "sqlutil.cbl".
COPY "db2ApiDf.cbl".
---> このコピーブックは、修正不要?
C:\Program Files\IBM\SQLLIB\include\cobol_aよりコピー
d)STDCALL用に、TESTDB.cbwを作成
e)ccbl -Cp -X5 TESTDB.cbl db2api.lib --> ccbl TESTDB2.cbl db2api.lib

※2008/3/28追記 プリコンパイルの際に、target ibmcobをつければ.cblファイルの修正はいらなくなるようです。

5.COBOLでDLL作成
(1) 適当にソースを書く。
(2) ccbl -Dl -Cs testsub.cbl
---> -Dl DLLを作成する
-Cs サブプログラム(これを忘れるとDLLは作成できるが、GOBACKでプログラムが終了する)
---> 環境変数CBLCOPTに-Cpが設定されているので、cbwがないといわれるので空のファイルを
作成する。
(3) 呼び出すCプログラムを作成(COBOLはSTDCALLで作成されるようだ)
---> 文字列を渡すときは、null以降はそのままになっているのでちゃんとスペースで埋めてやる
必要があるっぽい。


うちの環境以外でもいけるかなぁ・・・・


Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.