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 処理の必要がなくなります。

DFSORT ステートメントおよび DFSORT からの出力が表示されるのは、エラーが検出された場合のみです。しかし、DFSORT 制御ステートメントと出力のリストが特別に必要な場合、次の File Manager 制御ステートメントをバッチ・ジョブで使用できます。
$$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
                                  ')