ページの先頭行へ戻る
NetCOBOL V12.2 PowerCOBOL ユーザーズガイド
FUJITSU Software

9.1.3 PowerCOBOLで作成したDLLをCOBOLから使用する

COBOLで作成したプログラムから、PowerCOBOLで作成したDLLを利用するには、以下の2つの方法があります。

POWEROPENFORMユーティリティを使用する

PowerCOBOLでは、COBOLのプログラムからPowerCOBOLで作成したフォームを開くために、以下の3つのサブルーチンを用意しています。

POWEROPENFORMは、ランタイムコードセットがシフトJISコードで作成されたフォームを開く場合に使用します。また、POWEROPENFORMUXとPOWEROPENFORMUNは、ランタイムコードセットがUnicodeで作成されたフォームを開く場合に使用します。ランタイムコードセットの設定方法については、「5.1.3 Unicodeを利用する」を参照してください。

POWEROPENFORMUXとPOWEROPENFORMUNは、フォームを含むDLL(モジュール)の格納フォルダ名が日本語を含むかどうかによって、使い分けます。

これらのサブルーチンを総称して、POWEROPENFORMユーティリティと呼びます。

このユーティリティは、PowerCOBOLのインストールフォルダにある"F5DDFCB4.DLL"がもっています。したがって、POWEROPENFORMユーティリティを利用するには、このDLLに対応するインポートライブラリ"F5DDFCB4.LIB"を、呼び出し元となるCOBOLのモジュールにインポート結合しておく必要があります。

POWEROPENFORMユーティリティを使ってフォームを開くと、フォームが閉じられるまでCOBOLの実行を中断することができます。つまり、PowerCOBOL上でCallFormメソッドを使ってフォームを開いた場合と同様の動作になります。

注意

  • 実行時には、開こうとするフォームが含まれるPowerCOBOLで作成したDLLファイルが必要です。POWEROPENFORMユーティリティの引数で指定したDLL名が、フルパスで指定されていない場合、以下の順序でDLLファイルを検索します。

    1. COBOLで作成した呼び出し元の実行可能プログラムが起動またはロードされたフォルダ

    2. カレントフォルダ

    3. Windowsのシステムフォルダ

    4. Windowsがインストールされているフォルダ

    5. PATH環境変数で指定されているフォルダ

  • POWEROPENFORMユーティリティは、COBOLのソースプログラムを翻訳およびリンクして作成したアプリケーションから、PowerCOBOLで作成したフォームを開く場合に使用してください。PowerCOBOLで開発するアプリケーションの手続きからフォームを開く場合は、POWEROPENFORMは使用できません。CallFormメソッドおよびDoModalメソッドを使用してください。
    また、COBOL以外の言語で作成したプログラムから呼び出すこともできません。

POWEROPENFORM

POWEROPENFORMは、ランタイムコードセットがシフトJISコードで作成されたフォームを開く場合に使用します。

POWEROPENFORMを呼び出すCOBOLプログラムは、RCS(SJIS)オプションを指定して翻訳する必要があります。

書き方
    CALL  ”POWEROPENFORM”
              USING  DLL名
                          フォーム名
DLL名
    PIC  X(260).

開こうとしているフォームをもつDLL名前です。領域の大きさは、260でなければなりません。

設定できる文字列は、英数字で260文字以下、日本語で130文字以下です。

フォーム名
    PIC  X(14).

開こうとしている子フォームの名前です。領域の大きさは、14でなければなりません。

設定できる文字列は、英数字で14文字以下、日本語で7文字以下です。

復帰値

正常に終了した場合は0が設定されます。エラーが発生した場合には0以外の値が設定されます。

使用例

たとえば、PowerCOBOLで作成したSubA.DLL内のSubFormという名前のフォームを開く場合、以下のように記述します。

    DATA            DIVISION.
    WORKING-STORAGE SECTION.
    01  DLL名    PIC X(260) VALUE "SubA.DLL".
    01  フォーム名  PIC X(14)  VALUE "SubForm".
    PROCEDURE       DIVISION.
        …
        CALL "POWEROPENFORM" USING DLL名 フォーム名

POWEROPENFORMUX

POWEROPENFORMUXは、ランタイムコードセットがUnicodeで作成されたフォームを開く場合に使用します。

また、フォームを含むDLLの格納フォルダ名が日本語を含まない場合に使用します。POWEROPENFORMUXを呼び出すCOBOLプログラムは、RCS(UTF16,LE) オプションまたはRCS(UTF16,BE)オプションを指定して翻訳する必要があります。

書き方
    CALL  ”POWEROPENFORMUX”
              USING  DLL名
                          フォーム名
DLL名
    PIC  X(390).

開こうとしているフォームをもつDLLの名前です。領域の大きさは、390でなければなりません。

設定できる文字列は、英数字で260文字以下です。

フォーム名
    PIC  X(21).

開こうとしている子フォームの名前です。領域の大きさは、21でなければなりません。

設定できる文字列は、英数字で14文字以下です。

復帰値

正常に終了した場合は0が設定されます。エラーが発生した場合には0以外の値が設定されます。

使用例

たとえば、PowerCOBOLで作成したSubU.DLL内のSubFormという名前のフォームを開く場合、以下のように記述します。

    DATA            DIVISION.
    WORKING-STORAGE SECTION.
    01  DLL名    PIC X(390) VALUE "SubU.DLL".
    01  フォーム名  PIC X(21)  VALUE "SubForm".
    PROCEDURE       DIVISION.
        …
        CALL "POWEROPENFORMUX" USING DLL名 フォーム名

POWEROPENFORMUN

POWEROPENFORMUNは、ランタイムコードセットがUnicodeで作成されたフォームを開く場合に使用します。

また、フォームを含むDLLの格納フォルダ名が日本語を含む場合に使用します。POWEROPENFORMUNを呼び出すCOBOLプログラムは、RCS(UTF16,LE) オプションまたはRCS(UTF16,BE)オプションを指定して翻訳する必要があります。

書き方
    CALL  ”POWEROPENFORMUN”
              USING  DLL名
                          フォーム名
DLL名
    PIC  N(260).

開こうとしているフォームをもつDLLの名前です。領域の大きさは、260でなければなりません。

設定できる文字列は、英数字で260文字以下、日本語で130文字以下です。
RCSオプションの設定に従ってエンディアンは自動判定されます。

フォーム名
    PIC  N(14).

開こうとしている子フォームの名前です。領域の大きさは、14でなければなりません。

設定できる文字列は、英数字で14文字以下、日本語で7文字以下です。
RCSオプションの設定に従ってエンディアンは自動判定されます。

復帰値

正常に終了した場合は0が設定されます。エラーが発生した場合には0以外の値が設定されます。

使用例

たとえば、PowerCOBOLで作成したSubU.DLL内のSubFormという名前のフォームを開く場合、以下のように記述します。

    DATA            DIVISION.
    WORKING-STORAGE SECTION.
    01  DLL名    PIC N(260) VALUE "SubU.DLL".
    01  フォーム名  PIC X(14)  VALUE "SubForm".
    PROCEDURE       DIVISION.
        …
        CALL "POWEROPENFORMUN" USING DLL名 フォーム名

オートメーションサーバとして利用する

NetCOBOLのCOM連携機能(*COMクラス)を利用することにより、PowerCOBOLのフォームをオートメーションサーバとして利用することができます。オートメーションサーバの利用方法については、『NetCOBOL ユーザーズガイド』を参照してください。また、フォームをオートメーションサーバとして作成する方法については、「9.4 オートメーションサーバを使ったアプリケーションを作成する」を参照してください。