GTM-MML4VXJ
Skip to main content

NetCOBOL 技術情報:ノウハウ情報

NetCOBOL

Windows (x86, x64, Itanium)

Q

COBOLプログラムからOSのコマンドや他の実行ファイル (.EXE) およびバッチファイル (.BAT) を起動することができますか。

A

プログラム間連絡機能を使用して、 COBOLからWindows APIのCreateProcessを呼び出すことでCOBOLからOSコマンド、 他の実行ファイルおよびバッチファイルを起動することができます。

CALL文により、CreateProcessの関数名とオプションを指定します。 関数からの復帰値についても、CALL文のRETURNING指定により受け取ることができます。
起動するOSコマンドや他の実行ファイルまたはバッチファイルのフルパス名と、必要に応 じてコマンド文字列を引数に指定してWindows APIを呼び出し、指定したOSのコマンドや他の 実行ファイルまたはバッチファイルを起動します。また、起動に成功した場合、起動が終 了するまで待って、終了コードを受け取ることもできます。

CALL文の例

サンプルプログラム

注)Windows x64およびWindows Itaniumでは、 呼出し規約「WITH STDCALL LINKAGE」は不要となります。

STARTUPINFO 構造体およびPROCESS_INFORMATION 構造体については、Windows APIの仕様を確認してください。
プログラム間連絡機能の使用方法については、COBOL使用手引書を参照してください。
NetCOBOLには例題プログラム「他のプログラムの起動」としてサンプルプログラムが添付されています。

なお、Windows APIを使用する場合は、COBOLから呼び出し可能か(COBOLで必要なパラメータを用意できるかなど)を確認してください。

このほかの方法として、C言語で作成したプログラムからWindows APIを呼び、COBOLからCのプログラムを呼び出すことでも実現できます。この場合は、すべてのWindows APIを使用できます。詳細は、WindowsAPIの仕様を確認してください。

Windows APIの関数名について
Windows APIの関数名には大文字、小文字の区別があるため、翻訳オプション「NOALPHAL」 または「ALPHAL(WORD)」を指定する必要があります。

動的プログラム構造を使用して、Windows APIを呼び出す場合
動的プログラム構造を使用してWindows APIを呼び出す場合、エントリ情報ファイルに以下 の情報を設定してください。

エントリ情報ファイルの設定