バージョン 6.3.3
 —  ステートメント  —

RUN

RUN [REPEAT] operand1 [ operand2 [(parameter)]] 40

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

構文図で使用されている記号については、「構文記号」を参照してください。


機能

RUN ステートメントは、Natural システムファイルから Natural ソースプログラムを読み込んで実行するときに使用します。

Natural RPC については、『Natural リモートプロシージャコール(RPC)』ドキュメントの「サーバーに対する Natural ステートメントの注意事項」を参照してください。

Top of page

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット ステートメント参照 ダイナミック定義
operand1 C S       A                         不可
operand2 C S A G   A U N P I F B D T L   G   不可

構文要素の説明:

REPEAT

RUN REPEAT は、複数の出力画面が(INPUT ステートメントによって)生成されるような場合でも、プログラムの実行が終了するまで、ユーザーに入力を促さないようにします。

この機能は、各画面でユーザーが応答せずにプログラムで複数画面の情報を表示するような場合に使用できます。

operand1
プログラム名:

operand1 として、プログラムの名前を英数字定数または英数字変数の内容として指定できます。 変数を使用する場合は、長さは 8 文字長で指定する必要があります。

プログラムは、現在のライブラリまたは連結されたライブラリ(デフォルトの STEPLIB は SYSTEM)に保存できます。 プログラムが見つからない場合、エラーメッセージが発行されます。

プログラムはソースプログラムワークエリア内に読み込まれ、エリア内にあるソースプログラムに置き換わります。

operand2
パラメータ:

RUN ステートメントは、実行するプログラムに対してパラメータを渡すためにも使用できます。 パラメータは任意のフォーマットで指定できます。 パラメータは、対応する INPUT フィールドに適したフォーマットに変換されます。 すべてのパラメータは、Natural スタックの最上位に配置されます。

パラメータは INPUT ステートメントで読み込まれます。 最初の INPUT ステートメントが発行されると、INPUT ステートメントで指定されたフィールドに全パラメータが挿入されます。 INPUT ステートメントには数字フォーマットで定義されたパラメータフィールドに対する符号指定(SG=ON)が必要です。

次の INPUT ステートメントで読み取られる以上のパラメータが渡されると、余分のパラメータは無視されます。 パラメータの数はシステム変数 *DATA で取得できます。

注意:
operand2 が時刻変数(フォーマット T)の場合は、変数内容のうち時刻コンポーネントのみが渡され、日付コンポーネントは渡されません。

parameter operand2 が日付変数の場合は、この変数に対するparameterとして、セッションパラメータ DF(『パラメータリファレンス』を参照)を指定できます。

Top of page

ダイナミックなソーステキストの作成/実行

ソースまたはその一部をダイナミックに作成したプログラムは、RUN ステートメントでダイナミックにコンパイルおよび実行できます。

ダイナミックなソーステキスト作成を行うには、グローバル変数にソーステキストを挿入し、その後、ソーステキストでそのグローバル変数を参照します。そのとき、変数名の先頭文字の "+" を "&" に置き換えて参照します。 グローバル変数の内容は、プログラムが RUN ステートメントで呼び出されたときに、ソーステキストとして解釈されます。

インデックス付きグローバル変数を、RUN ステートメントを介して呼び出されるプログラム内で使用しないでください。

グローバル変数にコメントや INCLUDE ステートメントを入れることはできません。

Top of page

RUN ステートメントを含むプログラム:

** Example 'RUNEX1': RUN (with dynamic source program creation)         
************************************************************************
DEFINE DATA                                                             
GLOBAL                                                                  
  USING RUNEXGDA                                                        
LOCAL                                                                   
1 #NAME (A20)                                                           
1 #CITY (A20)                                                           
END-DEFINE                                                              
*                                                                       
INPUT 'Please specify the search values:' //                            
      'Name:' #NAME /                                                   
      'City:' #CITY                                                     
*                                                                       
RESET +CRITERIA     /* defined in GDA 'RUNEXGDA'                        
*                                                                       
IF #NAME = ' ' AND #CITY = ' '                                          
  REINPUT 'Enter at least 1 value'                                      
END-IF                                                                  
*                                                                    
IF #NAME NE ' '                                                      
  COMPRESS 'NAME' ' =''' #NAME '''' INTO +CRITERIA LEAVING NO        
END-IF                                                               
IF #CITY NE ' '                                                      
  IF +CRITERIA NE ' '                                                
    COMPRESS +CRITERIA 'AND' INTO +CRITERIA                          
  END-IF                                                             
  COMPRESS +CRITERIA ' CITY =''' #CITY '''' INTO +CRITERIA LEAVING NO
END-IF                                                               
*                                                                    
RUN 'RUNEXFND'                                                       
*                                                                    
END                                                              

RUN ステートメントで実行されるプログラム RUNEXFND:

** Example 'RUNEXFND': RUN (program executed with RUN in RUNEX1)        
************************************************************************
DEFINE DATA                                                             
GLOBAL                                                                  
  USING RUNEXGDA
LOCAL                                                                   
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 NAME                                                                
  2 CITY                                                                
END-DEFINE                                                              
*                                                                       
* &CRITERIA filled with  "NAME = 'xxxxx' AND CITY = 'xxxx'"             
*                                                                       
FIND NUMBER EMPLOY-VIEW WITH &CRITERIA                                  
     RETAIN AS 'EMP-SET'                                            
DISPLAY *NUMBER                                                         
*                                                                       
END                                                                    

グローバルデータエリア RUNEXGDA:

Global    RUNEXGDA  Library SYSEXSYN                      DBID    10 FNR    32
Command                                                                     > +
I T L  Name                             F Length     Miscellaneous             
All -- -------------------------------- - ---------- ------------------------->
     1 +CRITERIA                        A         80                                        

Top of page