■  SORTでレコードまたは項目をTRIMする方法

SORTでレコードまたは項目をTRIMする方法です。
DFSORTでは、SQUEEZE関数を使ってレコードまたは項目をTRIMすることができます。

その1〜単純な例

  //SORT  EXEC SORT
  //SYSPRINT DD SYSOUT=*
  //SORTIN   DD *
  11111     ,"あああ  いい ",    123,456,@@@@@@@@@@
    22222   ,"え       ",          1,%%%%%%%%%%
        3333,"おおおおおおおお",12345678901,##########
  //SORTOUT  DD SYSOUT=*
  //SYSIN    DD  *
  OPTION COPY
  OUTREC FIELS=(1,80,SQZ=(SHIFT=LEFT,PAIR=QUOTE)    ←入力レコードの1〜80バイト空白を削除して左詰め。クォーテーションで囲まれた部分はそのまま
  /*
          実行結果

********************************** TOP OF DATA **********************************
  11111,"あああ  いい ",123,456,@@@@@@@@@@
  22222,"え       ",1,%%%%%%%%%%
  3333,"おおおおおおおお",12345678901,##########
********************************** BOTTOM OF DATA *******************************




その2〜固定長ファイルから可変長CSVファイルを作る例

  //SORT  EXEC SORT
  //SYSPRINT DD SYSOUT=*
  //SORTIN   DD *
  11111     ,"あああ  いい ",    123,456,@@@@@@@@@@
    22222   ,"え       ",          1,%%%%%%%%%%
        3333,"おおおおおおおお",12345678901,##########
  //SORTOUT  DD DSN=TEST.CSV.FILE,DISP=(NEW,CATLG),SAPCE=(CYL,(1,1),RLSE),
  //         DCB=(RECFM=VB,LRECL=23000,BLKSIZE=23004)  ←DCBは可変長で!
  //SYSIN    DD  *
  OPTION COPY
  OUTFIL FNAMES=SORTOUT,FTOV,VLTRIM=C' '←詳しくはここを見てください
  OUTREC FIELS=(1,80,SQZ=(SHIFT=LEFT,PAIR=QUOTE)
  /*

   見た目の実行結果は、その1と同じです




その3〜全ての空白を無条件に削除!

  //SORT  EXEC SORT
  //SYSPRINT DD SYSOUT=*
  //SORTIN   DD *
  11111     ,"あああ  いい ",    123,456,@@@@@@@@@@
    22222   ,"え       ",          1,%%%%%%%%%%
        3333,"おおおおおおおお",12345678901,##########
  //SORTOUT  DD SYSOUT=*
  //SYSIN    DD  *
  OPTION COPY
  OUTREC FINDREP=(IN=C' ',OUT='')    ←出力に空白あったら削除
  /*
          実行結果

********************************** TOP OF DATA **********************************
  11111,"あああいい",123,456,@@@@@@@@@@
  22222,"え",1,%%%%%%%%%%
  3333,"おおおおおおおお",12345678901,##########
********************************** BOTTOM OF DATA *******************************




【主なSQZの形式】
タイプ 説明
SQZ=(SHIFT=LEFT)先頭の空白を削除し、左詰めにします
SQZ=(SHIFT=RIGHT)末尾の空白を削除し、右詰めにします

※先行のゼロを削除するためにPREBLANK=C'0'パラメータを使う方法もありますが、DFSORTのバージョンによって、 かなりへんな動きをしますので、ご注意ください。
 また、SQZパラメータの省略形もDFSORTのバージョンによって違うやつがります。


BEFORE PAGE

TOP PAGE