COBOL2002 ユーザーズガイド
stdcall呼び出し規約のプログラムを呼び出す場合,呼び出す側の呼び出し規約もstdcallにする必要があります。呼び出すプログラム側で呼び出し規約をstdcallにするには,COBOLソース中に指定する方法(CALL-CONVENTION句)と,stdcall呼び出し指示ファイルを使用する方法の2種類があります。
作成したstdcall呼び出し指示ファイルを有効にするためには,コンパイル時に-StdCallオプションを指定する必要があります。
-StdCallオプションを指定すると,stdcall呼び出し指示ファイルがあれば使用されます。また,-StdCallオプションの指定がなければ,stdcall呼び出し指示ファイルがあっても無視されます。
----+----1----+----2----+----3----+----
プログラム名
//コメント
プログラム名
// コメント
プログラム名 プログラム名 プログラム名
:stdcall呼び出し指示ファイルを使用してプログラムをコンパイルする例を,次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. DLLMAIN.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DLLMODUL PIC X(7) VALUE 'DLLSUB2'.
PROCEDURE DIVISION.
*
*** DLLモジュール CALL(定数呼び出し)
CALL 'DLLSUB1'.
*
*** DLLモジュール CALL(一意名呼び出し)
CALL DLLMODUL.
*
STOP RUN. IDENTIFICATION DIVISION.
PROGRAM-ID. DLLSUB1.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
*
* STOP 定数文の実行
STOP 01.
*
EXIT PROGRAM. IDENTIFICATION DIVISION.
PROGRAM-ID. DLLSUB2.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
*
* STOP 定数文の実行
STOP 02.
*
EXIT PROGRAM.ccbl2002 DLLSUB1.cbl -Dll,Stdcall -OutputFile DLLSUB1.dll ccbl2002 DLLSUB2.cbl -Dll,Stdcall -OutputFile DLLSUB2.dll
ccbl2002 -Main,System DLLMAIN.cbl -StdCall DLLSUB1.lib
-OutputFile DLLMAIN.exe// DLLSUB1.dllとDLLSUB2.dllを.cbwファイルに登録 DLLSUB1 DLLSUB2
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.