Natural ユーザー出口 SHCMD は、Natural プログラム内からオペレーティングシステムコマンドの発行、シェルスクリプトの呼び出し、UNIX 上の実行形式プログラムの実行を行うために使用できます。
このドキュメントでは、次のトピックについて説明します。
CALL 'SHCMD' 'command' ['option']
|
command |
オペレーティングシステムのコマンドシェルの制御下で実行されるコマンドです。Natural は、コマンドが完了するまで待った後、Natural プログラムに制御を戻します。 詳細については、以下の「例」を参照してください。 |
option |
以下の「パラメータオプション」を参照してください。 |
以下のコマンドオプションを使用できます。
| オプション | 説明 |
|---|---|
NOSCREENIO |
このオプションは、コマンドによって生成される出力を抑制するために使用します。抑制された出力は、NULL デバイスにリダイレクトされます。 |
SCREENIO |
このオプションは、コマンドの完了後に Natural 画面の出力をリフレッシュするために使用します。 |
注意:
オプション SCREENIO と NOSCREENIO は、同時に設定できません。
以下のリターンコードの値を使用できます。
| リターンコード | 説明 |
|---|---|
0 |
コマンドが正常に実行されました。 |
4 |
不正な SHCMD パラメータが指定されました。 |
| その他のすべてのコード | コマンドシェルのリターンコード |
Natural 内からコマンドシェルを実行します。
CALL 'SHCMD' 'myshell.sh'
Natural 内から実行形式プログラムを実行します。
CALL 'SHCMD' 'myprogram'
UNIX 上でオペレーティングシステムコマンド ls を実行して、ディレクトリの内容をリスト出力します。
CALL 'SHCMD' 'ls'
ls コマンドの実行後は、このコマンドが生成した出力によって、直前の Natural の画面出力が変更されています。画面のリフレッシュキーを押して画面をクリアする必要があります。これを自動的に実行するには、SCREENIO オプションを指定します。
CALL 'SHCMD' 'ls' 'SCREENIO'
RET 関数を使用してリターンコードを取得する例:
DEFINE DATA LOCAL
1 rc (I4)
END-DEFINE
CALL 'SHCMD' 'lsDIRECTORY' 'SCREENIO'
ASSIGN rc = RET( 'SHCMD' ) /* retrieve return code
IF rc <> 0 THEN
IF rc = 4 THEN
WRITE NOTITLE 'Illegal option specified'
ELSE
WRITE NOTITLE 'Command not executed successfully (rc=' rc ')'
END-IF
ELSE
WRITE NOTITLE 'Command executed successfully'
END-IF
END