本節では、他のアプリケーションやバッチファイルを起動する場合の呼び出し方法について説明します。
PowerCOBOLからアプリケーション(EXE)やバッチファイル(BAT)を起動する場合には、フォームのExecuteメソッドまたはExecuteSyncメソッドを使用します。アプリケーションやバッチファイルを起動するコマンド文字列をこれらのメソッドの引数に指定すると、指定したコマンド文字列が実行され、アプリケーションやバッチファイルを起動することができます。
たとえば、"A.TXT"というテキストファイルをWindowsの「メモ帳」で編集する場合には、以下のような手続きを記述します。
ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 COMMANDLINE PIC X(8192) VALUE "NOTEPAD.EXE A.TXT". PROCEDURE DIVISION. INVOKE POW-SELF "Execute" USING COMMANDLINE
Executeメソッドは、コマンドを起動することはできますが、コマンドの終了やコマンドの終了コードを取得することはできません。したがって、コマンドの終了を待って処理を再開するような場合には、利用することができません。逆に、ExecuteSyncメソッドは、コマンドを起動し、コマンドの終了を待って処理を再開します。したがって、上記の例でExecuteメソッドをExecuteSyncメソッドに置き換えると、「メモ帳」が終了するまで、そのイベント手続き中の次の処理が実行されません。
注意
ExecuteSyncメソッドによるコマンドの起動で待ち状態になるのは、ExecuteSyncメソッドを呼び出したイベント手続きだけです。コマンド実行中であっても、フォーム自身は無効状態にはならず、マウスやキーの操作により、他のイベント手続きを実行させることができます。
したがって、コマンド実行中、他のイベントが発生しないことを前提にしたアプリケーションを作成すると、実行時にエラーが発生する場合があります。たとえば、コマンドを実行してイベント手続きが待ち状態のとき、他の操作によってフォームを閉じようとした場合、フォームを閉じることができないという内容のエラーが発生します。