Natural ユーザー出口 SHCMD
は、Natural プログラム内からオペレーティングシステムコマンドの発行を行うために使用できます。
このドキュメントでは、次のトピックについて説明します。
CALL 'SHCMD' 'command' ['option']
|
command |
command は、オペレーティングシステムによって実行されます。 コマンド(ディレクトリ表示の 詳細については、以下の「例」を参照してください。 |
---|---|
option |
option には、コマンドを実行する方法を指定します。 このパラメータの指定は任意です。 次のオプションを使用できます。
以下の「パラメータオプション」を参照してください。 |
以下のコマンドオプションを使用できます。
注意:
オプション ASYNCH
と SYNCH
は、同時に設定できません。
以下のリターンコードの値を使用できます。
リターンコード | 説明 |
---|---|
0 | コマンドが正常に実行されました。 |
4 | 不正な SHCMD パラメータが指定されました。 |
その他のすべてのコード | オペレーティングシステム依存のエラーコード |
オペレーティングシステムコマンド 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"