ファイル受信 (RCVF)
実行可能場所:
|
パラメーター 例 エラー・メッセージ |
ファイル受け取り(RCVF)コマンドは,表示装置ファイルまたはデータベース・ファイルからデータを受け取るために,CLプログラムまたはILE CLプロシージャーによって使用されます。このコマンドは,ファイルからレコードを読み取り,そのレコードからのデータを1つ以上のCL変数に入れます。これらのCL変数は,CLソース・プログラムがコンパイルされた時に,プログラム中で自動的に宣言されており,ファイル宣言(DCLF)コマンドがソース・プログラムの一部として処理されています。データの受信に使用するレコード様式の各フィールドに,1つのCL変数があります。ユーザーが画面に入力するデータ,あるいは入力レコードに入っているデータがRCVFコマンドによってプログラム中のCL変数にコピーされて,ここでプログラムによって処理されます。
DCLFコマンドに指定されたレコード様式の,1つのレコード様式だけを各RCVFコマンドに指定することができます。ファイルが前のRCVF, SNDRCVF,またはSNDFコマンドによってオープンされていない場合には,このコマンドによってオープンされます。前のRCVFコマンドでファイルの終わり条件のためにファイルがクローズされた場合には,エラーが起こります。ファイルのオープンの前に一時変更コマンドを入力した場合には,このコマンドに指定されたファイルを一時変更することができます。プログラムがコンパイルされた時にDCLFコマンドに指定されたファイルが表示装置ファイルであった場合には,そのファイルは別の表示装置ファイルにのみ一時変更することができます。ファイルがデータベース・ファイルであった場合には,そのファイルは,単一レコード様式をもつ別のデータベース・ファイルにのみ一時変更することができます。一時変更しているレコード様式のフィールドがそのプログラムに宣言されたCL変数と対応していなければならないことに注意してください。
制約事項:
- このコマンドはCLプログラムまたはILE CLプロシージャー内でのみ有効です。
- このコマンドは条件付きのスレッド・セーフです。RCVFコマンドは,データベース・ファイルに対して出す時はスレッド・セーフです。RCVFは,表示装置ファイルに対して出す時はスレッド・セーフではなく,表示装置ファイルからデータを受け取るために複数のスレッドを使用するジョブで使用してはいけません。
上 |
パラメーター
キーワード | 記述 | 選択項目 | ノーツ |
---|---|---|---|
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には獲得済みプログラム装置がない。
上 |