MainframeSupports
tip uge 47/2004:

Jeg har skrevet en del tip om at sammenligne data i DB2 og i datasets. Disse tip har koncentreret sig om at finde forskelle ved sammenligning af samtlige data. Oftest er behovet dog et helt andet, nemlig at sammenligne indholdet af bestemte felter. En sådan sammenligning kan være interessant mellem records i samme fil, men også på tværs af filer.

En af de absolut hurtigste IBM produkter er i mine øjne DFSORT. DFSORT har indbygget i sig et værktøj kaldet ICETOOL, som kan rigtig mange sjove ting. ICETOOL har en skræddersyet funktion til at sammenligne records med, kaldet SELECT. Forestil dig, at du i datasettet MY.NEW.DATASETS har en liste af datasetnavne med tilhørende oplysninger. I datasettet MY.OLD.DATASETS har du en anden liste med datasetnavne med tilhørende oplysninger, men ikke nødvendigvis de samme oplysninger. Fælles for de to datasets er, at datasetnavnet står i position 1 til 44. Du vil nu gerne finde ud af, hvilke datasetnavne de to dataset har til fælles. Det gør du lettest med følgende step:

//COMPARE  EXEC PGM=ICETOOL
//SORTIN   DD DISP=SHR,DSN=MY.NEW.DATASETS
//         DD DISP=SHR,DSN=MY.OLD.DATASETS
//SORTOUT  DD SYSOUT=*
//TOOLMSG  DD SYSOUT=*
//DFSMSG   DD SYSOUT=*
//TOOLIN   DD *
    SELECT FROM(SORTIN) TO(SORTOUT) ON(1,44,CH) ALLDUPS
/*

Records med samme datasetnavn i udskrives på SORTOUT. Jeg har i eksemplet valgt at udskrive dem på SYSOUT, så jeg med det samme kan se resultatet i SDSF eller SYSVIEW. Alle records med samme datasetnavn udskrives, også selv om de kommer fra samme dataset. Hvis jeg i stedet kun var interesseret i de datasetnavne, der kun findes een af, så skal jeg ændre parameteren ALLDUPS til NODUPS.

Det er vigtigt at bemærke, at det er ens eget ansvar at kunne identificere om en record kommer fra den ene fil eller fra den anden. ICETOOL er totalt ligeglad og betragter alle records som kommende fra en og samme fil. Der er mange flere muligheder med SELECT kommandoen til ICETOOL. Du kan læse meget mere om dem her.

Forrige danske tip        Last tip in english        Tip oversigten