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

Natural ユーザー出口 SHCMD は、Natural プログラム内からオペレーティングシステムコマンドの発行、シェルスクリプトの呼び出し、UNIX 上の実行形式プログラムの実行を行うために使用できます。

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


構文

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

パラメータ

command

オペレーティングシステムのコマンドシェルの制御下で実行されるコマンドです。Natural は、コマンドが完了するまで待った後、Natural プログラムに制御を戻します。

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

option

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

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

パラメータオプション

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

オプション 説明
NOSCREENIO このオプションは、コマンドによって生成される出力を抑制するために使用します。抑制された出力は、NULL デバイスにリダイレクトされます。
SCREENIO このオプションは、コマンドの完了後に Natural 画面の出力をリフレッシュするために使用します。

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

リターンコード

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

リターンコード 説明
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