ファイル受信 (RCVF)

ファイル受け取り(RCVF)コマンドは,表示装置ファイルまたはデータベース・ファイルからデータを受け取るために,CLプログラムまたはILE CLプロシージャーによって使用されます。このコマンドは,ファイルからレコードを読み取り,そのレコードからのデータを1つ以上のCL変数に入れます。これらのCL変数は,CLソース・プログラムがコンパイルされた時に,プログラム中で自動的に宣言されており,ファイル宣言(DCLF)コマンドがソース・プログラムの一部として処理されています。データの受信に使用するレコード様式の各フィールドに,1つのCL変数があります。ユーザーが画面に入力するデータ,あるいは入力レコードに入っているデータがRCVFコマンドによってプログラム中のCL変数にコピーされて,ここでプログラムによって処理されます。

DCLFコマンドに指定されたレコード様式の,1つのレコード様式だけを各RCVFコマンドに指定することができます。ファイルが前のRCVF, SNDRCVF,またはSNDFコマンドによってオープンされていない場合には,このコマンドによってオープンされます。前のRCVFコマンドでファイルの終わり条件のためにファイルがクローズされた場合には,エラーが起こります。ファイルのオープンの前に一時変更コマンドを入力した場合には,このコマンドに指定されたファイルを一時変更することができます。プログラムがコンパイルされた時にDCLFコマンドに指定されたファイルが表示装置ファイルであった場合には,そのファイルは別の表示装置ファイルにのみ一時変更することができます。ファイルがデータベース・ファイルであった場合には,そのファイルは,単一レコード様式をもつ別のデータベース・ファイルにのみ一時変更することができます。一時変更しているレコード様式のフィールドがそのプログラムに宣言されたCL変数と対応していなければならないことに注意してください。

制約事項:

パラメーター

キーワード 記述 選択項目 ノーツ
DEV 表示装置 名前, *FILE オプショナル, 定位置 1
RCDFMT レコード様式 名前, *FILE オプショナル, 定位置 2
OPNID オープン・ファイルID 単純名, *NONE オプショナル
WAIT 待機 *YES, *NO オプショナル

表示装置 (DEV)

データを送ってくる表示装置の名前を指定します。このパラメーターにCL変数名を使用した場合には,プログラムでいくつかの装置からデータを受け取るためのRCVFコマンドは1つしか必要としません。(装置名を指定する変数は,同じコマンドを反復して実行している間に変更することができます。)ファイルが表示装置ファイルである場合にかぎり,このパラメーターを指定することができます。

*FILE
ユーザーのデータは,装置ファイル(DCLFコマンドのFILEパラメーターで宣言された装置ファイル)と関連した装置から送られてきます。装置ファイルに複数の装置名が指定されている場合には,*FILEを指定することはできません。
名前
装置の名前,またはユーザーのデータを送ってくる装置の名前が入っているCL変数の名前を指定してください。

レコード様式 (RCDFMT)

ファイルからデータを受け取るために使用するレコード様式の名前を指定します。この様式には,レコード中のすべてのフィールドが入っています。装置ファイルに複数のレコード様式がある場合には,このパラメーターはレコード様式名でコーディングしなければなりません。ファイルがデータベース・ファイルの場合には,指定したレコード様式は,データをレコードからCL変数にマップするために使用されます。実行時には,ファイルの実際のレコード様式名が異なることがあります。RCVFはINVITE DDSキーワードを無視します。

*FILE
装置ファイルのレコード様式は1つだけであり,したがって,その様式でデータが受け入れられます。装置ファイルに複数のレコード様式が指定された場合には,*FILEを指定することはできません。
名前
表示装置からデータ・レコードを受け取る時のレコード様式の名前を指定してください。レコード様式名に,CL変数を使用することはできません。

オープン・ファイルID (OPNID)

同じCLプログラムまたはILE CLプロシージャー内の先行するファイル宣言(DCLF)コマンドで宣言したオープン・ファイルIDを指定します。このパラメーター値にCL変数を指定することはできません。

*NONE
オープン・ファイルIDは指定されていません。このコマンドは,OPNIDパラメーターに*NONEを指定したDCLFコマンドと関連したファイルを使用します。オープン・ファイルIDとして*NONEが指定されているCLプログラムまたはILE CLプロシージャーでは1つのファイルしか宣言できません。
単純名
同じCLプログラムまたはILE CLプロシージャー内の先行するDCLFコマンドのOPNIDパラメーター値と一致する名前を指定してください。

待機 (WAIT)

CLプログラムまたはILE CLプロシージャーが,ユーザーの装置からデータを受け取るまで待機するか,あるいはこのRCVFコマンドの後のコマンドの処理に進むかを指定します。WAIT(*NO)が指定された場合には,入力操作を完了するために,プログラムは後でWAITコマンドをプログラム中で出す必要があります。ファイルが表示装置ファイルである場合にかぎり,このパラメーターを指定することができます。

*YES
プログラムは,装置からの入力操作が完了するまで待ちます。それまでは後続のコマンドは処理されません。
*NO
プログラムは入力データを待ちません。プロンプトの中にWAITコマンドが出てくるまで後続のコマンドが実行されます。

1: データベース・ファイルからのデータの受け取り

DCLF   FILE(MENU1)
 :
RCVF   OPNID(*NONE)

制御言語プログラムまたはILE CLプロシージャーは,MENU1という名前のデータベース・ファイルからデータを受け取ります。RCVFコマンドは,オープン・ファイルIDが指定されていないファイル宣言コマンドと関連付けられます。

2:表示装置からのデータの受け取り

DCLF   FILE(SCREENX)  RCDFMT(R1 R2)
 :
RCVF   DEV(DISPLAY2)  RCDFMT(R1)

制御言語プログラムまたはILE CLプロシージャーは,DISPLAY2という名前の表示装置のユーザーからデータを受け取ります。データは,SCREENXという名前の装置ファイルにあるR1という名前のレコード様式で受け取ります。プロシージャーは,処理を続行する前にユーザー・データを待機します。

3:ファイルの終わり例外の処理

DCLF   FILE(INPUT)   OPNID(INFILE1)
 :
RCVF   OPNID(INFILE1)
MONMSG   CPF0864  EXEC(GOTO EOF)

制御言語プログラムまたはILE CLプロシージャーは,INPUTという名前のデータベース・ファイルから順次にレコードを受け取ります。プロシージャーはファイルの終わり例外CPF0864をモニターし,メッセージを受け取ると,ラベルEOFに移動します。

4: WAITコマンドと一緒にRCVFを使用

DCLF   FILE(MSCREEN)  RCDFMT(MIN1 MIN2 MIN3)
 :
RCVF   DEV(&DNAME)  RCDFMT(MIN2)  WAIT(*NO)
WAIT   DEV(&DNAME)

制御言語プログラムまたはILE CLプロシージャーは,MSCREENという名前の装置ファイルを経由して,いくつかの装置(一度に1つずつ)からユーザー・データを受け取ります。プロシージャーは,レコード様式MIN2を使用して,変数&DNAMEに指定された装置からデータを受け取りますが,データが送られてくるのを待ちません。いくつかの装置からデータを受け取るのに同じRCVFコマンドが使用されます。CL変数&DNAMEが使用されるので,コマンドが実行されるたびに,DEVパラメーターにある装置名だけを変更する必要があります。WAITコマンドは実際にはデータを受け取るので,各装置に対するWAITコマンドは,プロシージャーの後の方で出す必要があります。プロシージャーにデータを送る各装置(一度に1つずつ)に対して,RCVFコマンドとWAITコマンドの両方を処理することができます。ユーザー応答が遅延した場合は,ユーザーがデータで応じるか,受け取り終了(ENDRCV)コマンドが要求を取り消すまで,何度でも必要なだけコマンドを処理することができます。

エラー・メッセージ

*ESCAPE メッセージ

CPF0859
ファイル一時変更により入出力バッファー・サイズを超えた。
CPF0860
&2のファイル&1がデータベース・ファイルでない。
CPF0861
ライブラリー&2のファイル&1が表示装置ファイルでない。
CPF0863
10進CL変数に2進データの値が大きすぎる。
CPF0864
&2のファイル&1でファイルの終わりが検出された。
CPF0865
ファイル&1に複数のレコード様式がある。
CPF0883
ファイル&1のDEVパラメーターの*FILEが正しくない。
CPF0886
レコードに正しくないデータ・フィールドが入っている。
CPF4101
ライブラリー&3にファイル&2が見つからないか,インライン・データ・ファイルがない。
CPF502A
メンバー&4で可変長レコード・エラー。
CPF502B
トリガー・プログラムでエラーが起こった。
CPF502D
メンバー&4で参照制約違反。
CPF502E
メンバー&4の参照制約を妥当性検査することができない。
CPF502F
メンバー&4に対する検査制約違反。
CPF5029
メンバー&4でデータ・マッピング・エラー。
CPF503A
メンバー&4で参照制約違反。
CPF503B
メンバー&4にレコードを挿入または更新することができない。
CPF5068
プログラム装置&4がライブラリー&3のファイル&2に見つからない。
CPF5070
ライブラリー&3のファイル&2には獲得済みプログラム装置がない。