MainframeSupports
tip uge 20/2016:

Jeg har skrevet en del tip om DFSORT i løbet af årene, og jeg må konstatere, at der hele tiden kommer ny og brugbar funktionalitet til. Noget af det, jeg opdager, er helt nyt, men det meste har sandsynligvis været tilgængeligt i mange år. Dette gælder nok også muligheden for at regne. Sortering og filtrering er der ikke rigtig sket noget med i lang tid, med formatering af output er en videnskab for sig. OUTFIL og herunder OUTREC burde efterhånden have sin egen manual.

I dette tip vil jeg vise et simpelt eksempel på, hvordan man kan lægge to tal sammen og vise resultatet sammen med de oprindelige data:

//TESTING EXEC PGM=SORT
//SORTIN DD *
00001 00002
00006 00003
//SORTOUT  DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
 OPTION COPY
 OUTREC FIELDS=(1,11,X,1,5,ZD,ADD,7,5,ZD,
                     X,1,5,ZD,ADD,7,5,ZD,TO=ZD,LENGTH=5)
/*

For det første læg mærke til, hvordan det rent faktisk er muligt at benytte instream SORTIN data og SYSOUT=* som SORTOUT. Det gør det meget nemmere at teste funktionalitet i SORT. Med OUTREC kopierer jeg først de 11 første tegn fra SORTIN. Herefter giver jeg mig til at regne på hver record. De to tal, der skal regnes på angives med position, længde og type. Typen ZD står for Zoned Decimal også kendt som PIC 9. Mellem de to tal angives, hvilken operation, der skal foretages, men med en bogstavskommando lidt ligesom i COBOL! ADD står naturligvis for addition, MUL for multiplikation, DIV for heltalsdivision, SUB for subtraktion, og sidst men ikke mindst MOD for modulus. Du kan benytte parenteser til at lave mere komplicerede regnestykker. Udfordringen er, at selv rimeligt simple regnestykker hurtigt fylder en hel masse. Det er der råd for, men det må vente til en anden god gang. Som afslutning på et regnestykke kan du lave en konvertering til et andet format, som vist i den sidste linie i SYSIN. Og resultatet ser således ud:

00001 00002               3  00003
00006 00003               9  00009

Hvis du ikke angiver et format, så benytter DFSORT et foruddefineret format, som man nok lige skal have styr på før det benyttes i større udstrækning. Som du kan se, så kan det fylde noget mindre i output, når du selv bestemmer formatet.

Forrige danske tip        Last tip in english        Tip oversigten