COBOL2002 ユーザーズガイド


35.2.1 DLLの作成

DLL(ダイナミックリンクライブラリ)とは,副プログラムだけで構成され,実行可能ファイル中のプログラムから呼ばれることで実行できるファイルのことです。ここでは,拡張子が(.dll)のファイルをDLLと呼びます。

DLLを作成する方法は,実行可能ファイルの生成と同じです。ここでは,DLLの作成方法のうち,実行可能ファイルの生成と異なる部分について説明します。

なお,Windows(x64) COBOL2002の場合は「-Dll,Stdcall」と「Dll,Cdecl」を「-Dll」に読み替えてください。

〈この項の構成〉

(1) DLLを作成する

ccbl2002コマンドでCOBOLプログラムからDLLを作成する場合は,-Dll,Stdcallまたは-Dll,Cdeclオプションを指定します。コンパイルとリンクを別々にccbl2002コマンドでする場合は,コンパイル時,リンク時共に-Dll,Stdcallまたは-Dll,Cdeclオプションを指定します。

次に,DLLを作成する例を示します。

ソースファイル名称:TEST02.CBL
       IDENTIFICATION DIVISION.
       PROGRAM-ID. TEST02.
       PROCEDURE DIVISION.
           DISPLAY '--- TEST02  START ---'.
           DISPLAY '--- TEST02    END ---'.
ccbl2002コマンドの指定

COBOLプログラム"test02.cbl"と-Dll,Stdcallまたは-Dll,Cdeclオプションを指定し,-OutputFileオプションにDLL名称"test02.dll"を指定します。

ccbl2002 -Dll,Stdcall test02.cbl -OutputFile test02.dll

上記のコマンドを実行すると,DLLファイル"test02.dll"が生成されます。

注意事項
  • 見出し部にINITIAL句がないプログラムに対して-Dll,Stdcallまたは-Dll,Cdeclオプションだけを指定した場合,生成されるDLLは,初期化属性を持ちません。このため,DLLが繰り返し呼び出されても,次の情報が初期状態に戻されないで,前の状態を保持します。

(情報が保持される項目)
  • プログラムに関連するファイルや報告書の状態・画面節(SCREEN SECTION),画面節(WINDOW SECTION),通信節,サブスキーマ節で使用された資源の状態

  • 作業場所節,報告書節,画面節(SCREEN SECTION),画面節(WINDOW SECTION),ファイル節,サブスキーマ節,通信節の内容

  • PERFORM文に対する制御機構

  • ALTER文で設定したGO TO文

  • -Dll,Stdcallまたは-Dll,Cdeclオプションを指定してコンパイルするプログラム中でEXTERNAL句を使用する場合,DYNAMIC指定のEXTERNAL句だけが使用できます。

(2) 呼び出し時にDLLを初期化する

ccbl2002コマンドに,-Dll,Stdcallまたは-Dll,Cdeclオプションと合わせて,-DllInitオプションを指定すると,生成されたDLLは初期化属性プログラムとなり,そのDLLが呼び出されるたびに,次の情報が初期状態に戻されます。

初期化属性のプログラムの詳細については,「18.4.1 プログラム属性」を参照してください。

(3) 注意事項