COBOL2002 ユーザーズガイド


30.4.6 CBLEXEC

CBLEXECサービスルーチンは,COBOLプログラムから別のアプリケーションプログラムを起動するものです。

形式
CALL 'CBLEXEC' USING 引数1 引数2 引数3
引数
  • 引数1には,プロセス起動するコマンド文字列の長さを,2バイトの2進項目で指定します。指定できる長さは1〜255バイトです。

  • 引数2には,プロセス起動するコマンド文字列を指定します。この領域中にシステムが認識できないコードがある場合の結果は保証しません。

  • 引数3には,次に示すインタフェース領域の名前を指定します。

    表30‒2 CBLEXECサービスルーチンのインタフェース領域

    記述形式

    内容

    01 データ名1.

    CALL文のUSINGで指定するインタフェース領域の名前を指定する。

     02 FILLER  PIC X(01).

    システムの使用する領域。値はX'00'でなければならない。

     02 データ名2 PIC X(01).

    起動したプロセスの終了を待つかどうかを指定する。

    0:プロセスの終了を待つ。

    1:プロセスの終了を待たない。

     02 データ名3 PIC X(01).

    起動したプロセスのウィンドウ表示方法を指定する。

    0:プロセスのデフォルトウィンドウ表示とする。

    1:ウィンドウをアイコン化して表示する。

     02 FILLER  PIC X(01).

    予備。値は0でなければならない。このシステムではこの領域は使用しない。

戻り値

0:正常に起動し,プロセスの終了を待たない場合

(正常に起動し,プロセスの終了を待つ場合は,呼び出したコマンドの戻り値がそのまま返ります)

-1:起動できなかった場合

規則
  • 引数2の実際の長さより引数1中の長さが長い場合は,結果は保証しません。

  • 引数2の実際の長さより引数1中の長さが短い場合は,引数1の長さまでがコマンド文字列とみなされます。

  • CBLEXECからCOBOLプログラムを呼び出したとき,プログラムの実行終了(STOP RUN文,実行時エラー)と同時にプロセスを終了させたい場合には,次の環境変数を設定します。

    CBL_BATCH=1
  • CBLEXECを使って呼び出したCOBOL主プログラムで設定したRETURN-CODE特殊レジスタの内容は制御が戻ってきたときに参照できます。参照できる範囲は0〜255で,RETURN-CODE特殊レジスタの下位8ビットの内容です。

  • 引数2に空白が含まれた実行可能ファイル名を指定した場合,CALL文のときと同様の注意が必要となります。詳細は,「18.7 実行可能ファイルの呼び出し」の注意事項を参照してください。

使用例

メモ帳を呼び出す例を次に示します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE1.
           :
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 EXEC-NAME-LEN PIC 9(4) USAGE COMP VALUE 29.
       01 EXEC-NAME     PIC X(29)  
                  VALUE 'NOTEPAD.EXE C:\TMP\SAMPLE.TXT'.
       01 EXEC-PARM.
         02 FILLER    PIC X(01) VALUE X'00'.
         02 PROC-IND  PIC X(01).
         02 SHOW-WIND PIC X(01) VALUE '0'.
         02 FILLER    PIC X(01) VALUE '0'.
           :
       PROCEDURE DIVISION.
           :
           MOVE '1' TO PROC-IND.
           CALL 'CBLEXEC'  
                 USING EXEC-NAME-LEN EXEC-NAME EXEC-PARM.
           IF RETURN-CODE NOT = 0 THEN
             CBLEXECエラー処理
           END-IF.
           :