ページの先頭行へ戻る
DP/Cライブラリ ソフトウェア開発キット V7.2 使用手引書L10

5.3 COBOLからの言語インタフェース使用時の注意点

  1. 持ち回りで使用するデータ項目の内容を更新しないでください。
    アプリケーション識別子、会話識別子などは、DPCライブラリから返却された数値を、そのまま使用します。ACCEPTなどを用いて、数値を更新しないでください。

  2. 送受信に使用する可変な領域の大きさは最大で確保します。
    LOGON文字列、メッセージデータなどは、領域の大きさが可変です。しかし、COBOLは言語仕様上、領域を可変で獲得することができません。領域の大きさは、最大で確保するようにしてください。

  3. 桁溢れが発生する数値は転記して利用します。
    以下のパラメータ値は、そのままCOBOLで利用すると桁溢れが発生します。パラメータ値を利用する場合、より大きい桁を扱うデータ項目に値を転記してください。そして、より大きい桁を扱うデータ項目を利用してください。

    localerr(DFOPEN,DFCLOSE,DPCFEXPORT,DPCFIMPORT,DPCDISPLAY,DPCDELETEのパラメータ)
    db-retcode(DPCDBCONVERTのパラメータ)
    db-detail(DPCDBCONVERTのパラメータ)

  4. 文字列の設定はパソコン側のコード体系で行います。
    文字列はASCIIコード、シフトJISで指定します。

  5. 翻訳時には、翻訳オプション“BINARY(BYTE),NOALPHAL”が必要です。
    パラメータには、1バイトの大きさの数値を扱うものがあります。また、DPCライブラリSDKの言語インタフェースの関数名には、大文字、小文字が混在します。
    COBOLプログラムを翻訳する時、翻訳オプション“BINARY(BYTE),NOALPHAL”を指定してください。

  6. 翻訳オプション"DLOAD"を指定し、作成したアプリケーションを実行する場合、利用するDPCライブラリSDKの言語インタフェースの関数がどのDLLに格納されているかを示すエントリ情報が必要になります。エントリ情報の詳細については、COBOLの使用手引書の「副プログラムのエントリ情報」を参照してください。また、DPCライブラリSDKの言語インタフェースの関数が、どのDLLに格納されているのかについては「1.2 インストール」の表に記載されている関数ライブラリの名前「~.lib」を「~.dll」と置き換えることによって確認できます。
    例)XDpc_Openをエントリ情報に記述する。

       [ENTRY]
        XDpc_Open = f3azdpc.dll

・プログラムのヒント


a) 文字列の終端にNULLを設定する

文字列を指定するパラメータがあります。このパラメータに、文字列の終端を示すNULL(X"00")を設定する場合があります。COBOLは言語仕様上、文字列の終端を示すNULLを設定しません。したがって、明示的に文字列の終端を示すNULLを設定する必要があります。

以下に、文字列の終端を示すNULLを設定する方法を示します。

MOVE "ABC" TO PRIVATE-NAME
MOVE X"00" TO PRIVATE-NAME(4:1)

PRIVATE-NAMEには、バイナリ値「0x41,0x42,0x43,0x00」が設定されます。


b) 領域の大きさを求める

領域の大きさを指定するパラメータがあります。以下に示すCOBOLの組み込み関数を利用すると便利です。この関数は、指定された領域の大きさをバイト数で返却します。

MOVE FUNCTION LENG(MSG) TO MSGLEN