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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.