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日 16:09 発信者:kin
題名:RE:PB5.0.03: PowerBuilderからCOBOLで作成したDLLを使用する

sasakisさんこんにちは。kinです。
COBOLでWindowsのDLLを組んだことがないので例によって無責任モードですが・・

以前私もCで組んだDLLが同じエラーになって悩んだことがあります。
(発言?716参照)
結局原因は外部関数側の宣言にありました。
PBで使う外部関数には以下の条件が必要です。(Cの場合です。)

1.far Pascal(WINAPI) で宣言されていること
2.引数がポインタ渡しであること

COBOLでこれらの宣言をどのように行うのか想像もできませんが、この辺を調べて
みたらいかがかと思います。

>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.