2011-07-29 15 views
0

私は最初の17行が空白の9787レコードを持っています。私はそれらの17行をファイルの最後に移動したい。 どうすればいいですか?SORTを使って空白行をファイルの末尾に移動するには?

+0

空白行だけを末尾に置き、残りを元の順序で残しますか?レコードにはどのようなタイプのデータセットがありますか?どのソートプログラムにアクセスできますか? – Deuian

+0

はい、レコードはPSに常駐しています。私はDFSORTにしかアクセスできません – Dobby

答えて

2

以下の末尾に空白行を持つ入力データセットをソートしますSORTOUT DD

// SORT EXEC PGM = SORT
// SYSOUT DD SYSOUT = *
// SORTWK01 DDスペース= (CYL、(10,5)、RLSE)
// SORTWK02 DDスペース=(CYL、(10,5)、RLSE)
// SORTWK03 DDスペース=(CYL、(10,5)、RLSE)
// SORTIN DD DSN = INPUT.DATASET、DISP = SHR
// SORTOUT DD SYSOUT = *
// SYSIN DD *
SORT FIELDS =(1,80、CH、D)
// *

FIELDS =(1,80、CH、D)は、文字データを用いて、80文字の位置1から降順にソートされることを意味。
データセットが80文字より広い場合は、実際の幅をここに入力する必要がある場合や、空白行を最後に配置しない場合があります。

+0

Deuian ... – Dobby

+0

@cruzcarrolありがとうございました。それが問題を解決する場合はチェックマークをクリックして受け入れる - http://stackoverflow.com/faq#howtoask – dsolimano

1

データを並べ替える必要はありません。幸運にも、データラインは、1)レコードごとに順番に、2)に降順での順番であること:-)。

これは、各レコードの「末尾」にシーケンス番号を追加することで、各レコードを一時的に拡張します(5桁で拡張できるようにする必要があります)。 OUTFIL OMITでは、データの最初の17レコードからの空白行が削除されます。 TRAILER1と "スラッシュ演算子" "/"を使用すると、ファイルの "最後"に17行の空白行が追加されます。 REMOVECCは、TRAILER1(報告機能)が追加するプリンタ制御文字を持たない必要があるためです。 OUTFILのBUILDは、レコードを元のサイズに戻し、5桁のシーケンス番号を削除します。

OPTION COPY 

INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,5,ZD)) 

OUTFIL OMIT=((1,80,CH,EQ,C' ', 
      AND,81,5,ZD,LE,17)), 
     BUILD=(1,80), 
     REMOVECC, 
     TRAILER1=(/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/) 
関連する問題