ここでは、本製品で提供するサンプルプログラム-Sample31-について説明します。
Sample31では、プログラム間連絡機能を使って、Windowsシステム関数を呼び出し、メッセージボックスを出力するプログラムの例を示します。プログラム間連絡機能の詳細は、“NetCOBOL ユーザーズガイド”の“サブプログラムを呼び出す~プログラム間連絡機能~”を参照してください。
なお、このSampleではCOBOLプログラムの復帰値をバッチファイルで参照します。
概要
STDCALL呼出し規約を使用し、CALL文でWindowsシステム関数の“MessageBoxA”(末尾に“A”が付いていることに注意してください)を呼び出します。[はい]/[いいえ]/[キャンセル]ボタンを持つメッセージボックスを出力し、メッセージボックスからの復帰値をCALL文のRETURNING指定で受け取ります。さらにその復帰値に対応する値をCOBOLプログラムからの復帰値として、バッチファイルで参照します。
COBOLプログラムの復帰値はバッチファイルではERRORLEVELという名前で参照することができます。以下は“Sample31.BAT”の一部です。
:START start /w MsgBox.exe @rem 復帰値が9999以上ならCOBOLプログラムを再度呼び出す if errorlevel 9999 goto START @rem 復帰値が9以上なら『いいえ』が押された。 if errorlevel 9 goto NG echo 『はい』が押されました。
提供プログラム
Msgbox.cob(COBOLソースプログラム)
Makefile(メイクファイル)
Sample31.bat(起動用バッチファイル)
COBOL85.CBR(実行用の初期化ファイル)
使用しているCOBOLの機能
COBOLプログラムからCプログラムを呼び出す方法
STDCALL呼出し規約
BY VALUEでのパラメタの受渡し
CALL文のRETURNING指定
特殊レジスタPROGRAM-STATUS
注意
メッセージ本文とメッセージタイトルの文字列の末尾には、X”00”またはLOW-VALUEを格納しなければなりません。文字列を部分参照して、末尾にX”00”またはLOW-VALUEを格納する必要があります。
メッセージボックスを表示する関数名は、“MessageBoxA”です。小文字を有効にするため、翻訳オプションNOALPHALまたはALPHAL(WORD)を指定する必要があります。