PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
3123 | 98/09/04 21:47:17 | RE:PB5.0.03: PowerBuilderからCOBOLで作成したDLLを使用する By sasakis |
3109 | 98/09/04 16:09:18 | RE:PB5.0.03: PowerBuilderからCOBOLで作成したDLLを使用する By kin |
3104 | 98/09/04 14:20:28 | RE:PB5.0.03: PowerBuilderからCOBOLで作成したDLLを使用する By こてちゅ |
3095 | 98/09/04 11:57:43 | PB5.0.03: PowerBuilderからCOBOLで作成したDLLを使用する By sasakis |
カテゴリ:旧電子会議室
日付:1998年09月04日 21:47 発信者:sasakis
題名:RE:PB5.0.03: PowerBuilderからCOBOLで作成したDLLを使用する
こてちゅさん、kinさんありがとうございました。
みなさんの意見を参考にいろいろ調査した結果、COBOL側の記述に問題があることが解りました。
COBOLではLINKAGEのエリアの取扱として、C,PASCAL,STDCALLの3つのオプションがありますが
LINKAGE規約を呼出し元に合わせるという意味のSTDCALLを指定することにより、
エラーが発生しなくなりました。
PROCEDURE DIVISION WITH STDCALL LINKAGE USING LNK-AREA.
~~~~~~~~~~~~~~~~~~~~
ありがとうございました。
>COBOL85で作成したDLLをPowerBuilderで用いたいのですがうまくいきません。
>
>●COBOL側
>LINKAGE SECTION.
>01 LNK-AREA.
> 03 LNK-DATA PIC X(16).
>PROCEDURE DIVISION USING LNK-AREA.
>DISPLAY \"受け取った文字列:\"
> LNK-DATA UPON MSGBOX.
>MOVE ZERO TO PROGRAM-STATUS.
>EXIT PROGRAM.
>
>●PowerBuilder側
>?グローバル外部関数宣言
>FUNCTION long FTESTDLL(char c[16]) LIBRARY \"FTESTDLL.DLL\"
>?呼出スクリプト(たとえばボタンのclicked イベントで)
>char lc_value[16]
>lc_value = \"xxx\"
>FTESTDLL(lc_value)
>
>とすると、引数の文字列は呼びだされた関数で正しく認識されているのはMSGBOXで確認できますが、
>以下のエラーメッセージがPowerBuilderのランタイムから通知されます。
>
>「実行時に指定された引数の型がDLL関数ftestdllの引数と一致しません。
>(関数呼出の戻り値のスタックポイントが不適切)」
>
>誰か知っているかたお願いします。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Sybase Open Client/C 11
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Sybase SQL Server System 11
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.