19.2.1 Visual BasicからCOBOLを呼び出すときの規則
Visual BasicプログラムからCOBOLプログラムを呼ぶときの規則を,次に示します。
-
Visual Basicプログラムは,COBOLプログラムのRETURN-CODE特殊レジスタで設定された戻り値を,関数の戻り値として参照できます。COBOLプログラムが返す戻り値の有効な範囲については,「17 プログラム間の引数と返却項目」を参照してください。
-
Visual BasicプログラムからGUIモードのCOBOLプログラムを呼び出す場合は,最初のCOBOLプログラムを呼び出す前に,CBLGINTサービスルーチンを呼び出す必要があります。詳細は,「16.3 COBOLプログラムのモード」を参照してください。
-
Visual BasicプログラムからCOBOLプログラムを呼び出す場合,COBOL主プログラムとCOBOL副プログラムによってGOBACK文,EXIT PROGRAM文の動作が異なります。詳細については,「16.4 COBOL実行単位の終了」を参照してください。
-
Visual BasicプログラムからCOBOLプログラムを呼び出す場合,DLLの関数宣言で呼び出し規則に合わせたエイリアスを指定する必要があります。
また,呼び出されるCOBOLプログラムは,stdcall呼び出し規約でなければなりません。
- エイリアス名称
_プログラム名@n
- n
-
次の計算式で求められる値を指定します。
n =(引数の数×4) +
(値渡しで受け取る倍精度浮動小数点数字項目引数の数×4)
- (例)
-
プログラム名がSAMPLE1で,2進項目と倍精度浮動小数点数字項目の引数を値渡しにする場合の関数宣言
Private Declare Sub SAMPLE1 Lib "COB1.DLL" Alias "_SAMPLE1@12" (ByVal A As Long, ByVal B As Double)
-
手続き部見出しにRETURNING指定がある場合,COBOLプログラムの返却項目は,そのデータ項目に対応したVisual Basicのデータ型にしなければなりません。RETURNING指定がない場合はlong型にしなければなりません。
-
Visual Basicプログラムでは,COBOLプログラムの手続き部見出しのRETURNINGのデータ項目(返却項目)に設定した戻り値を参照できます。RETURNING指定がない場合は,RETURN-CODE特殊レジスタを参照します。
-
Visual Basicから呼び出されるCOBOLプログラムは,stdcall呼び出し規約でなければなりません。cdecl呼び出し規約のプログラムは,呼び出せません。