MainframeSupports
tip uge 24/2000:

Man har de sidste mange år kunnet ændre i records med DFSORT (også kaldet ICEMAN eller bare SORT), men mit indtryk er, at det er der bare ikke ret mange, der ved. Det vil jeg nu forsøge at råde bod på.

Jeg vil starte med at vise et eksempel. Eksemplet forudsætter, at de to nævnte datasets er FB 80 datasets. Følgende step laver lidt om på data ved hjælp af den såkaldte lookup-funktion i kommandoen OUTFIL OUTREC=.

//MYCHANGE EXEC PGM=SORT
//SORTIN   DD DISP=SHR,DSN=MY.ORIGINAL.DATA
//SORTOUT  DD DISP=SHR,DSN=MY.CHANGED.DATA
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
  SORT FIELDS=COPY
  OUTFIL OUTREC=(1,50,
  51,4,CHANGE=(4,C'0600',C'0700'),
       NOMATCH=(C'0800'),
  55,4,
  59,8,CHANGE=(8,C'SOMENAME',C'OTHRNAME',
                 C'THISNAME',C'OTHRNAME',
                 C'FRANCE03',C'DENMARK0',
       NOMATCH=(59,8),
  67,14)
/*

For det første kan man kun benytte ovenstående syntaks sammen med OUTFIL-kommandoen. Det virker ikke sammen med den normale OUTREC-kommando. Derudover er mulighederne nøjagtig de samme. Den første CHANGE= laver teksten 0600 om til 0700 i kolonne 51-54. Hvis der står andet end 0600 i kolonne 51-54, så sørger den efterfølgende NOMATCH for at lave det om til 0800. Uden NOMATCH vil DFSORT terminere, hvis en anden værdi end 0600 dukker op. Den anden CHANGE= viser, hvordan man kan ændre flere forskellige værdier, og den efterfølgende NOMATCH sørger for, at alle andre end de listede værdier i CHANGE= bliver overført uændret.

Du kan læse mere om DFSORT på IBM's bookmanager DFSORT bookshelf.

Sidste uges tip        Tip oversigten