DFSORT プロシージャー・ステートメントのコーディング
プロシージャー内の DFSORT ステートメントを使用したい場合には、プロシージャーの先頭行には第 1 桁目からコーディングされたストリング *FASTPROC
が入っている必要があります。その場合、後続の行に、どの REXX ステートメントよりも前に DFSORT ステートメントをコーディングしなければなりません。DFSORT ステートメントは、1 から 71 桁目にコーディングされます。
File Manager がサポートするのは、以下の DFSORT ステートメントのみです。
- INCLUDE/OMIT
- INREC
- OUTREC
- OUTFIL
DFSORT Format Comment ステートメントを DFSORT ステートメントと混在させることができることを除いて、他の DFSORT ステートメントはサポートされません。これらのステートメントの第 1 桁目にアスタリスク (*) があります。これらのステートメントは File Manager に無視され、出力にリストされることはありません。
レコードを条件付きで選択するために DFSORT INCLUDE および OMIT ステートメントを、データの再形式設定のために INREC および OUTREC ステートメントを、そして 1 次出力データ・セットに加えてデータ・セットに書き込むために OUTFIL ステートメントを使用できます。これによって、多くの基本シナリオでの REXX 処理の必要がなくなります。
$$FILEM SHOWSORT
このステートメントは、最初の File Manager 制御ステートメントとして入れる必要があります。出力は SYSPRINT データ・セットに書き込まれます。DFSORT ステートメントの書き方の一般情報および DFSORT ステートメントの構文について詳しくは、「DFSORT アプリケーション・プログラミング・ガイド」を参照してください。
以下の点については特に注意してください。
- DFSORT ラベル
- DFSORT の構文によってステートメント・ラベルは第 1 桁目にコーディングできます。これは、操作キーワード (INCLUDE など) は第 2 桁目より前から開始してはならないことを意味します。
- DFSORT キーワード
- 大文字でコーディングしなければなりません。
- ステートメントの継続
- コンマまたはセミコロンで終了するステートメントは、最初の非ブランク文字で次のステートメントと連結されます。
第 72 桁目に非ブランク文字を持つステートメントは次のステートメントと連結されます。第 71 桁目までの (第 71 桁目を含む) すべてのブランクは、連結されたステートメントに含まれます。
注: これらの継続規則は File Manager に特有で、標準の DFSORT ステートメントの継続規則とは少し異なります。DFSORT 製品と一緒に使用するためにコーディングされた DFSORT ステートメントを使用する場合、それを File Manager プロシージャーで使用するためには変更が必要となる場合があります。 - 可変長レコードでのデータ位置の指定
- 可変長レコードを参照する DFSORT 制御ステートメントでのデータ位置は、そのデータに先行してレコード記述子ワード (RDW) のために余分に 4 バイト取る必要があります。例えば、固定長レコードの場合に以下のようになる INCLUDE ステートメントは、
INCLUDE COND=(1,2,CH,EQ,'01')
次のようになります。
INCLUDE COND=(5,2,CH,EQ,'01')
これは可変長レコードの場合です。
File Manager が DFSORT を使用してレコードを処理するとき、固定長の相対レコード・データ・セット (RRDS) を除き、すべての VSAM データ・セットは可変長として扱われます。VSAM 以外のデータ・セットは、データ・セットの仕様に応じて、固定長または可変長として扱われます。
- OUTFIL ステートメントの使用
- OUTFIL ステートメントを使用して複数出力ファイルを書き込むとき、OUTFIL データ・セットに必要でないデータはすべて破棄される (例については、データのコピーを参照) ように、その出力ファイルのいずれかを File Manager 出力と同じファイルに送信してください。
以下の例は、いくつかの簡単な DFSORT ステートメントを示します。
- 例 1
- 1 から 4 桁目に名前 FRED が入っているすべてのレコードを含めるには、次のようにします。
*FASTPROC INCLUDE COND=(1,4,CH,EQ,C'FRED')
- 例 2
- 1 から 80 桁目にすべてブランクが入っていないレコードのみを処理するには、次のようにします。
col 72 *FASTPROC OMIT COND=(1,80,CH,EQ,C' X ')