バージョン 6.3.3
 —  プログラミングガイド  —

Natural プログラム内からのオペレーティングシステムコマンドの発行

Natural ユーザー出口 SHCMD は、Natural プログラム内からオペレーティングシステムコマンドの発行を行うために使用できます。

このドキュメントでは、次のトピックについて説明します。


構文

CALL 'SHCMD' 'command' ['option']

Top of page

パラメータ

command

command は、オペレーティングシステムによって実行されます。 コマンド(ディレクトリ表示の DIR や削除の DEL など)を実行するには、システムコマンドインタープリタも指定する必要があります。

詳細については、以下の「」を参照してください。

option

option には、コマンドを実行する方法を指定します。 このパラメータの指定は任意です。 次のオプションを使用できます。

以下の「パラメータオプション」を参照してください。

Top of page

パラメータオプション

以下のコマンドオプションを使用できます。

オプション 説明
ASYNCH Natural は、コマンドの実行が完全に終了するまで待ちません。 このような種類の処理を非同期処理といいます。
NOSCREENIO このオプションは、コマンドによって生成される出力を抑制するために使用します。 抑制された出力は、NULL デバイスにリダイレクトされます。
SYNCH Natural は、コマンドの実行が完全に終了するまで待ちます。 このような種類の処理を同期処理といいます。デフォルトはこの設定です。

注意:
オプション ASYNCHSYNCH は、同時に設定できません。

Top of page

リターンコード

以下のリターンコードの値を使用できます。

リターンコード 説明
0 コマンドが正常に実行されました。
4 不正な SHCMD パラメータが指定されました。
その他のすべてのコード オペレーティングシステム依存のエラーコード

Top of page

オペレーティングシステムコマンド DIR を実行して、ディレクトリを表示します。

CALL 'SHCMD''CMD.EXE /C DIR'

Natural 関数 RET を使用してリターンコードを取得します。

RESET rc (I4)  
CALL 'SHCMD''CMD.EXE /C DIR'  
rc = RET( 'SHCMD' )                   /* retrieve return code  
IF rc <> 0 THEN                       /* in case of an error  
DISPLAY "Error occurred during SHCMD" /* display an error message

引用符でコマンドを囲むことにより、空白を含むコマンドを実行できます。

以下の例は Microsoft Excel を実行します。

RESET #cmd (A253)
MOVE '"C:\Program Files\Microsoft Office\Office\EXCEL.EXE"' to #cmd
CALL "SHCMD" #cmd "ASYNCH"

この場合、パラメータ TQ(引用符の変換)を OFF にする必要があります。そうしないと、引用符が削除されます。

TQ パラメータに依存しないようにするには、引用符の 16 進数の ASCII コード(H'22')をコマンドの前後に付加します。 以下に例を示します。

RESET #cmd (A253)
MOVE H'22' - "C:\Program Files\Microsoft Office\Office\EXCEL.EXE" - H'22' to #cmd
CALL "SHCMD" #cmd "ASYNCH"

Top of page