Interne notater STATISTISK SENTRALBYRÅ

Like dokumenter
Interne notater EASYTRIEVE PLUS STATISTISK SENTRALBYRÅ. Av Kristian Lønø. 92/1 14. januar 1992

Interne notater STATISTISK SENTRALBYRÅ LIV DAASVATN EN KORT INNFØRING I IBM 'S JCL (JOB CONTROL LANGUAGE) 13. mai 1988.

Introduksjon til DARK assembly

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

INF Ekstrainnlevering

Norsk informatikkolympiade runde

UNIVERSITETET I OSLO

Enkle generiske klasser i Java

Radene har løpenummer nedover og kolonner navnes alfabetisk. Dermed får hver celle (rute) et eget "navn", eksempelvis A1, B7, D3 osv.

Betinget eksekvering og logiske tester i shell

Kom i gang med Python

Obligatorisk oppgave 6 i INF1010: Dekryptering

Endret litt som ukeoppgave i INF1010 våren 2004

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Generiske mekanismer i statisk typede programmeringsspråk

Kapittel 1 En oversikt over C-språket

Norsk informatikkolympiade runde

UNIVERSITETET I OSLO

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

datatyper Hva er programmering? Variabler og Informasjonsteknologi 2 Kompetansesemål

GJØVIK INGENIØRHØGSKOLE

}?> <!DOCTYPE... <html xmlns=" <head>... </head> <body> <p>nå skal vi printe hallo:</p> <?php //funksjonskall

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

UNIVERSITETET I OSLO

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Øvingsforelesning i Python (TDT4110)

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Løse reelle problemer

Databank for DATSY/NATBLES/TSP. Brukerveiledning. Ola Jacobsen - INNHOLD

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

Onix Personell Prosjektrapport (Excel) Prosjektrapport

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Dagens tema. Perl: Mer om regulære uttrykk Filer Lister og tabeller Kompilering og interpretering (kapittel ) IN 211 Programmeringsspråk

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Hvordan angripe en større oppgave? (og hva skal jeg gjøre i oblig 7!?)

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 5 (del 2) Ada Gjermundsen

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Løse reelle problemer

Del 3. Pekere RR 2016

Eksport /Import person

Obligatorisk oppgave 1 INF1020 h2005

En liten rekap. Spørrespråk. I dag SELECT

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

ENC ENKEL AKSE og KLIPPE LENGDE KONTROLLER for PLATESAKSER

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2014

Algoritmeanalyse. (og litt om datastrukturer)

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

Algoritmer - definisjon

UNIVERSITETET I OSLO

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

K O N T I N U A S J O N S E K S A M E N

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

1 C z I G + + = + + 2) Multiplikasjon av et tall med en parentes foregår ved å multiplisere tallet med alle leddene i parentesen, slik at

Preprocessor for desisjonstabeller x)

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

INF Innleveringsoppgave 6

Versjon Side : 1

Verktøy for boligkartlegging

Norsk informatikkolympiade runde

Steg 1: Tekst på flere linjer

Verktøy for boligkartlegging

Primus Brukerveiledning for masseimport av bilder. Primus 5.6.5

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Noen regneregler som brukes i Keynes-modeller

UNIVERSITETET I OSLO

Hvordan du kommer i gang med LOGO.

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

Dark Stakkmaskin. Aritmetiske instruksjoner

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

DBS18 - Strategier for Query-prosessering

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

Oppgave 1. Del A. (i) Skriv de to desimaltallene 0, 7 og 3, 12 som vanlig brøk og forkort hvis mulig. som desimaltall. 3x 6

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

Enkel matematikk for økonomer 1. Innhold. Parenteser, brøk og potenser. Ekstranotat, februar 2015

Excel. Excel. Legge inn tall eller tekst i en celle. Merke enkeltceller

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

UNIVERSITETET I OSLO

Kort oversikt over. eksport-/import-programmet for. WinMed

Kanter, kanter, mange mangekanter

NIO 1. runde eksempeloppgaver

Bruksanvisning. for Roundcube webmail. Utseende: Larry. Versjon

Obligatorisk oppgave 4 i INF1010, våren 2014: "Leger og resepter" Versjon 1.1

NSOS RETNINGSLINJER FOR PREFERANSEVALG

Lineære likningssystemer og matriser

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

Læringsmål og pensum

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

Hoppehelt. Introduksjon. Steg 1: Streken. Sjekkliste. Skrevet av: Geir Arne Hjelle

Transkript:

Interne notater STATISTISK SENTRALBYRÅ 92/11 21. september 1992 SYNCSORT som filbehandlingsprogram Av Kristian Lønø

1 Innledning Dette notatet henvender seg til deg som jobber med store datamengder pa stormaskinen. Disse må ofte sorteres, kopieres, selekteres, omredigeres og/eller splittes opp. Programmet SYNCSORT er stormaskinens mest effektive filbehandler. Det er godt egnet så lenge filbehandligen er relativt enkel. Notatet vil vise hva SYNCSORT bor Nukes til. Hvis du vil vite mer om SYNCSORT, finnes det engelske manualer på driftskontoret og hos EDBgruppene. Syntaksregler Kun STORE bokstaver godtas, små bokstaver gir syntaksfeil. Dette gjelder ikke tekst skrevet i fnutter. All tekst skal starte tidligst i posisjon 2 ende før posisjon 72. Det skal være minst en blank mellom en instruksjon og dens parametre. Parametre skilles med komma, blanke tillates ikke. En parameter kan ga over fiere linjer. Da skal delingen skje slik at linja ender med et komma. Kommentarer kan skrives på egne linjer. Disse skal ha en stjerne (*) i første posisjon. Andre program som benytter SYNCSORT SYNCSORT kan kalles opp fra andre program. Sorteringer i Natural, Easytrieve Plus og TAB skjer ved at SYNSORT blir kalt opp for A utføre sorteringen. Sortering i Natural og Easytrieve Plus program vil bruke mye mer maskintid enn om SYNCSORT skulle utføre jobben selv. Dette til tross for at det er SYNCSORT som utfører sorteringen i begge tilfelle. Derfor bor du helst ikke sortere filer vha av Natural'. eller Easytrieve Plus. Hvor effektivt TAB bruker SYNCSORT finnes det ingen dokumentasjon på. TAB sorterer ferdige tabeller vha av SYNCSORT. Denne operasjonen kan ikke trekkes ut av TAB-programmet SAS kaller opp SYNCSORT Tar filen som skal sorteres har en viss størrelse, slik at det ikke lønner seg A bruke SAS eget sorteringsprogram. Dette skjer automatisk uten at du som programmerer trenger A gjøre noe ekstra.

2 JCL Du trenger noen få linjer JCL for å kunne kjøre SYNCSORT. JCL er litt forskjellig om du skal en eller flere utfiler. JCL for SYNCSORT med en utfil. //0414KRLS JOB 8019,'SORTf,MSGLEVEL= ( 2,0), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SORT EXEC SYNC4,REGION=6144K //SORTIN DD DSN=P2216.S0137.G184A4Al.G9100.VOLDISP=SHR //SORTOUT DD DSN=P2216.50137.G184A4A2.G9100.V01, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=136,BLKSIZE=23120,DSORG=PS), 1/ SPACE=(CYL,(7,5),RLSE),UNIT=SSB //PARM DD * SYNCSORT kalles opp via JCL-prosedyren SYNC4 i EXEC-instruksjonen i JCL (se over). DD-navnet pi innfilen skal være SORTIN. Utfilens DD-navn skal være SORTOUT. Instruksjonene til SYNCSORT skal skrives på egne linjer under PARM. Her forteller du SYNCSORT hva som skal gjøres. JCL, for SYNCSORT med flere utfiler. //0414KRLS JOB 8019, 1 SORTf,MSGLEVEL= ( 2,0), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SORT EXEC SYNC4,REGION=6144K //SORTIN DD DSN=P2216.S0137.G184A4Al.G9100.VOLDISP=SHR //SORTOF1 DD DSN=P2216.S0137.G184A4A2.G9100.V01, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=136,BLKSIZE=23120,DSORG=PS), // SPACE=(CYL,(7,5),RLSE),UNIT=SSB //SORTOF2 DD DSN=P2216.S0137.G184A4A3.G9100.V01, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=136,BLKSIZE=23120,DSORG=PS), // SPACE=(CYL,(7,5),RLSE),UNIT=SSB //PARM DD * Når du skal ha flere utfiler, må hver utfil ha sin DD-navn. Den første skal hete SORTOF1, den neste SORTOF2 osv. Maksimalt antall utfiler du kan ha er 32. Ved sortering av store datamengder, vil du trenge mye midlertidig lagringskapasitet. Det ordner du ved legge til en JCL-parameter i EXEC-instruksjonen, CYL, som forteller hvor mange sylyndre pa disk som skal brukes under sorteringen. //SORT EXEC SYNC4,REGION=6144K,CYL=40

Instruksjonene Dette er de viktigste instruksjonene: SORT Forteller hvilke(t) felt det skal sorteres etter. INCLUDE Selekterer records etter bestemte kriterier. OMIT Ekskluderer records etter bestemte kriterier. INREC Omredigerer innfilen (og utfilen). OUTFIL Definerer en utfil og selekterer records til denne. SUM Aggregerer felter. OUTREC Omredigerer felt i en utfil. SORT-instruksjonen må du alltid ha med. Alle de andre instruksjonene er frivillige. SYNCSORT utforer INCLUDE og OMIT-instruksjoner ved innlesing av records. INREC-instruksjonen utfores også ved innlesing, men etter INCLUDE og OMIT. Etter selve sorteringen utføres eventuelle SUM, OUTREC og OUTFIL-instruksjoner.

SORT Det enkleste SYNCSORT gjør er å kopiere en fil til en annen. Dette brukes ofte for å kopiere datasett fra disk til tape. Instruksjonen ser slik ut: I SORT FIELDS=COPY Vanligvis Ønsker du A sortere filen din. Da mi du fortelle hvilke felt du skal sortere og om du skal sortere stigende (A) eller synkende (D). Dette gjør du ved å si hvor feltet starter, hvor mange posisjoner det har og hvilket format det har. SORT FIELDS= (1, 7, AQ, A) Parameteren FIELDS inneholder: (Startposisjon,Liengde,Format,Sorteringsorden). Maksimal lengde på felt som skal sorteres er 256. Følgende verdier er aktuelle for Format: AC EBCDIC tegn oversettes til ASCII før sortering. AQ Filen sorteres etter alternativ rekkefølge. Denne ma du bruke nar du vil plassere Æ, Ø,Å, m, ø og å på riktig sted. CH Bokstaver og tall sorteres etter standard rekkefølge. Gir feil plassering av 1E, Ø,Å, m, Ø og A. PD Feltet som skal sorteres er et pakket-desimalfelt. ZD Feltet som skal sorteres er et IBM overpunch felt (Zoned Decimal). Sorteringsorden kan være: A D Stigende (Ascending) Synkende (Descending) Hvis du skal sortere euer mange felt med samme format, kan dette trekkes ut som en egen parameter: SORT FIELDS= (1, 7, A, 23,4,A, 56, 4, D),FORMAT=AQ Fire andre parametre til SORT-instruksjonen: EQUALS Equals sorger for at rekkefølgen på records med like verdier for sorteringsbegrepene beholdes etter sorteringen. NOEQUALS Noequals gjør at for rekkefølgen på, records med like verdier for sorteringsbegrepene blir tilfeldig etter sorteringen. SKIPREC SOrger for A hoppe over et spefisert antall av de første recordene på innfilen. SKJPREC=3000 medfører at programmet ikke behandler de 3000 forste recordene på filen. STOPAFT Programmet stoppes etter et spesifisert antall behandlete records. STOPAFT=6000 gjør at progammet stopper etter at det har behandlet 6000 records.

INCLUDE og OMIT Records selekteres eller ekskluderes etter betingelser. Du kan ha opptil 180 betingelser. Betingelsene skilles med AND (kan skrives &) eller OR (kan skrives!). AND betingelser utfores for OR, uansett rekkefølgen. Du kan bruke parenteser for A endre rekkefølgen betingelser skal utføres etter, eller for A gjøre rekkefølgen tydeligere. Betingelser inne i parenteser blir utført før parentesene loses opp. INCLUDE og OMIT-instruksjoner er de første som utføres etter at en record er lest inn. En betingelse er en sammenligning mellom et felt og en konstant eller mellom to felt. INCLUDE COND=(23,4,CH,EQ,C'0301' Betingelsen (COND) består av (Startposisjon, Lengde, Format, Operator, Verdi). Som format kan du bruke CH, PD eller ZD, se SORT-instruksjonen, side 4. Følgende Operatorer er lovlige: EQ Lik (EQual) NE Ulik (Not Equal) GT Større enn (Greater Than) GE Større enn eller lik (Greater than or Equal) LT Mindre enn (Less Than) LE Mindre enn eller lik (Less than or Equal) Når Verdi ikke er et felt, skal det være et tall når Format er PD og ZD, og det skal være en tekststreng når Format er CH. Tekststrenger skal stå i fnutter og ha en C umiddelbart før den forste fnutt (C'tekse). INCLUDE COND=(23,4,ZD,EQ,0301,AND,67,3,ZD,LT,67) Denne betingelsen er oppfylt när feltet som starter i posisjon 23 og er 4 langt er 0301, og feltet som starter i 67 og er 3 langt er mindre 67. Når Verdi er et felt, må feltet ha samme Format som feltet det skal sammenlignes med. OMIT COND=(23,4,CH,EQ,67,4,CH) Her fjernes records der posisjon 23-26 er lik posisjon 67-70.

INREC Hvis du bare er interessert i noen få felter fra innfilen, bor du bruke INREC. Her selekterer du ut de felt du Ønsker A behandle og slipper derved A drasse med det en masse data du ikke er interessert i. Dette gjør at programmet kan behandle mindre data, noe som fører til at det gär fortere. Det er en stor fallgruve når du bruker INREC. Det er nemlig slik at INREC omredigerer (krymper) recorden. Det betyr at de feltene du velger fra irmfilen får nye posisjoner. Det er de nye posisjonene du skal bruke i f.eks. SORT-instruksjonen. Bruker du INCLUDE- eller OM1T4nstruksjonene sammen med INREC, vær da klar over at startposisjoner i INCLUDE/OMIT skal være de opprinnelige, ikke de som er omdefinert i INREC. INREC FIELDS=(1:23,4, 5:1,7, 12:29,38) SORT FIELDS=(1,4,A,5,7,A),FORMAT=AQ FIELDS= består av (Ny startposisjon:opprirmelig startposisjon,lengde) for hvert felt som skal være med. Her sier du at det skal sorteres stigende på posisjon 1-4 og 5-11. Disse posisjonene er de nye startposisjonene hentet fra filbeskrivelsen i INREC-instruksjonen, IKKE hvordan filen ser ut opprinnelig. Det er 3 felt som skal hentes fra innfilen (23-26, 1-7, 29-66). Disse skal plasseres fra henholdsvis posisjon 1, 5 og 12. Startposisjonen på den nye filen som skal sorteres skrives foran :, mens Startposisjon og Lengde fra irmfilen skrives etter :. Hvis vi ikke spesifiserer noe annet, vil utfilen bli slik som 1NREC-instruksjonen antyder.

OUTFIL Når du vil ha flere filer ut fra programmet, må du bruke OUTFIL. Det lages en utfil for hver OUTFILinstruksjon du har med. Husk at du må definere gle utfilene i JCL også. For å bestemme hvilke records som skal til de forskjellige filene, bruker du INCLUDE- eller OMITparameteren. Disse tilsvarer, med visse unntak, INCLUDE- og OMIT-instruksjonene, se side 5. INCLUDE og OMIT parametrene blir utfort umiddelbart før skriving, det betyr at du må forholde deg til den recordbeskrivelsen som programmet bruker på dette tidspunkt. Hvis INREC-instruksjonen er benyttet i programmet, vil recordbeskrivelsen for denne gjelde ved bruk av INCLUDE og OMIT-parametrene. Dette i motsetning til INCLUDE og OMIT-instruksjonene, som altså forholder seg til irmfilens opprinnelige recordbeskrivelse. SORT FIELDS=(1,4,A,8,7,A),FORMAT=AQ OUTFIL FILES=1,INCLUDE=(25,1,CH,EQ,C'1') OUTFIL FILES=2,0MIT=(25,1,CH,EQ,C'1') Utfil 1 vil inneholde alle records med posisjon 25 lik 1, mens utfil2 vil inneholde alle records som ikke har posisjon 25 lik 1. Begge filene sorteres stigende etter posisjon 1-4 og 8-14. SORT FIELDS=(1,4,A,8,7,A),FORMAT=AQ OUTFIL FILES=1,INCLUDE=(25,1,CH,EQ,C'1') OUTFIL FILES=2,INCLUDE=(25,1,CH,EQ,C'1',AND,28,3,ZD,LT,30) OUTFIL FILES=3,INCLUDE=(8,7,ZD,GE,3000) Utfilene kan overlappe hverandre. Her kan teoretisk samme record havne på alle tre filene. SORT FIELDS= (1,4,A,8,7,A),FORMAT=AQ OUTFIL FILES=1,INCLUDE=(25, 1,CH,NE,C'1'), OUTREC= (1:1,4, 5:8,7) OUTFIL FILES=2,INCLUDE=(8,7,ZD,GT,3000), OUTREC= (1:8,7, 8:23,10, 18:1,4) Her vil utfilene få forskjellig filbeskrivelse. Til dette brukes OUTREC-parameteren. Den tilsvarer OUTREC-instruksjonen, se side 9.

SUM Du kan aggregere felt i SYNCSORT. For records med like verdier for sorteringskriteriet vil aggregering bli utført hvis summen ikke trenger flere posisjoner enn feltet har pa innelen. Hvis det ikke er plass til summen, slås ikke recordene sammen. Vi kan ikke si at feltet skal ha flere posisjoner på utfilen enn det har på innfilen, hvilket vi ofte trenger ved aggregering av felt. Derfor er denne nytten av SUMinstruksjonen begrenset. Sumfeltene må selvfølgelig ha numerisk format (ZD eller PD) og inneholde tall (blanke posisjoner medfører ABEND hvis feltet blir blir forsøkt summert). Med SUM-instruksjonen kan du fjerne dubletter i en fil. Dette kan være meget nyttig. SORT FIELDS=(1,4,A,8,7,A),FORMAT=AQ,EQUALS SUM FIELDS=NONE Denne SUM-instruksjonen sørger for at for de records som har like verdier i posisjon 1-4 og 8-14, fjernes alle unntatt en. Med EQUALS som parameter til SORT-instruksjonen sørger du for A beholde den som var forst på innfilen. SORT FIELDS=(1,4,D),FORMAT=AQ,EQUALS SUM FIELDS=(23,8,ZD, 31,8,ZD, 39,8,ZD) Her vil feltene i posisjon 23-30, 31-38 og 39-46 summeres for records som har samme verdi i posisjon 1 til 4. Andre felt på recorden summeres ikke, men vil få verdiene som den forste fra innfilen hadde (EQUALS).

OUTREC Med OUT'REC-instruksjonen kan du bestemme utfilens utseende. Nytteeffekten av denne er vel heller ikke så stor, omredigering er ofte bedre å gjøre med INREC- eller OUTFIL-instruksjonene. SORT FIELDS=(1,4,D),FORMAT=AQ OUTREC FIELDS=(5:1,4, 9:23,8, 17:31,8, 25:39,8) Utfilen vil få innfilens 4 første posisjoner i posisjon 5-8, 23-30 fra innfilen plasseres fra posisjon 9, posisjon 31-38 flyttes til 17-24 og 39-46 flyttes til posisjon 25-32. Hvis du f.eks. ikke har ärstall på innfilen, men vil ha det pä utfilen, kan du få det til ved å flytte ut Arstallet som et eget felt. SORT FIELDS=(1,4,D),FORMAT=AQ OUTREC FIELDS=(1:C'1992', 5:1,4, 9:23,8, 17:31,8, 25:39,8) Her vil hver eneste record på utfilen få 1992 i posisjon 1-4. Resten er som i forrige eksempel.

10 Eksempler Vanlig sortering med format AQ //0414KRLS JOB S8019,'SORT',MSGLEVEL=(1,1), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SOTEST1 EXEC SYNC4,REGION=6144K //SORTIN DD * Arne Jorn 811141 617801 1 Øystein 239404 214464 1 Karl Age 341000 005344 1 Adne 978393 1 Sånja 098345 098345 2 Erlend 349012 399432 1 Bitte 245245 116230 2 Karl 5. 246738 246738 1 Arne Jon 311159 140000 1 Soren 009832 009832 1 Sæmund 120034 120034 1 Stine 240070 240070 2 Kristian 234970 035409 1 Karl 0scar004933 020042 1 //SORTOUT DD SYSOUT=* //PARM DD * SORT FIELDS=(1,8,A),FORMAT=AQ,EQUALS Resultat:, Arne Jon 311159 140000 1 Arne Jorn 811141 617801 1 Bitte 245245 116230 2 Karl Oscar004933 020042 1 Karl Age 341000 005344 1 Karl 5. 246738 246738 1 Kristian 234970 035409 1 Stine 240070 240070 2 Sæmund 120034 120034 1 Soren 009832 009832 1 Sånja 098345 098345 2 Erlend 349012 399432 1 Øystein 239404 214464 1 Adne 978393 1

11 Sortering med to utfiler //0414KRLS JOB S8019,'SORT',MSGLEVEL=(1,1), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SOTEST2 EXEC SYNC4,REGION=6144K //SORTIN DD * Arne Jorn 811141 617801 1 Øystein 239404 214464 1 Karl Age 341000 005344 1 Adne 978393 1 Sånja 098345 098345 2 Erlend 349012 399432 1 Bitte 245245 116230 2 Karl 5. 246738 246738 1 Arne Jon 311159 140000 1 Soren 009832 009832 1 Sæmund120034 120034 1 Stine 240070 240070 2 Kristian 234970 035409 1 Karl 0scar004933 020042 1 //SORTOF1 DD SYSOUT=* //SORTOF2 DD SYSOUT=* //PARM DD * SORT FIELDS=(1,4,A),FORMAT=AQ,EQUALS OUTFIL FILES=1,INCLUDE=(25,1,CH,EQ,C 1') OUTFIL FILES=2,0MIT=(25,1,CH,EQ,C'1 1 ) Resultat: SORTOF1 1 SORTOF2 Arne Jorn 811141 617801 1 Bitte 245245 116230 2 Arne Jon 311159 140000 1 Stine 240070 240070 2 Karl Age 341000 005344 1 Sånja 098345 098345 2 Karl 5. 246738 246738 1 Karl 0scar004933 020042 1 Kristian 234970 035409 1 Soren 009832 009832 1 Sæmund 120034 120034 1 Erlend 349012 399432 1 Øystein 239404 214464 1 Adne 978393 1...

12 Selektering og fjerning av dubletter //0414KRLS JOB S8019,'SORTr,MSGLEVEL=(1,1), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SOTEST3 EXEC SYNC4,REGION=6144K //SORTIN DD * Arne Jorn 811141 617801 1 Øystein 239404 214464 1 Karl Age 341000 005344 1 Adne 978393 1 Sånja 098345 098345 2 Erlend 349012 399432 1 Bitte 245245 116230 2 Karl 5. 246738 246738 1 Arne Jon 311159 140000 1 Soren 009832 009832 1 Sæmund 120034 120034 1 Stine 240070 240070 2 Kristian 234970 035409 1 Karl 0scar004933 020042 1 //SORTOUT DD SYSOUT=* //PARM DD * SORT FIELDS=(1,4,A),FORMAT=AQ,EQUALS INCLUDE COND(25,1,CH,EQ,Cr1r) SUM FIELDS=NONE Resultat: Arne Jorn 811141 617801 1 Karl Age 341000 005344 1 Kristian 234970 035409 1 Soren 009832 009832 1 Sæmund 120034 120034 1 Erlend 349012 399432 1 Øystein 239404 214464 1 Adne 978393 1

13 Selektering og omredigering av recorden //0414KRLS JOB S8019,'SORT',MSGLEVEL=(1,1), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SOTEST4 EXEC SYNC4,REGION=6144K //SORTIN DD * Arne Jorn 811141 617801 1 Øystein 239404 214464 1 Karl Age 341000 005344 1 Adne 978393 1 Sånja 098345 098345 2 Erlend 349012 399432 1 Bitte 245245 116230 2 Karl 5. 246738 246738 1 Arne Jon 311159 140000 1 Soren 009832 009832 1 Sæmund120034 120034 1 Stine 240070 240070 2 Kristian 234970 035409 1 Karl 0scar004933 020042 1 //SORTOUT DD SYSOUT=* //PARM DD * INREC FIELDS=(1:2,4, 5:25,1, 6:18,6) SORT FIELDS=(1,4,A,6,6,D),FORMAT=AQ,EQUALS INCLUDE COND(25,1,CH,EQ,C'1') Resultat: arl 1246738 arl 1020042 arl 1005344 dne 1 rist1035409 r1en1399432 me 1617801 me 1140000 yste1214464 mmun1120034 oren1009832

14 Sortering pd to felt med omredigering av innfil og 2 utfiler //0414KRLS JOB S8019,'SORT',MSGLEVEL=(1,1), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SOTEST5 EXEC SYNC4,REGION=6144K //SORTIN DD * Arne Jorn 811141 617801 1 Øystein 239404 214464 1 Karl Age 341000 005344 1 Adne 978393 1 Sånja 098345 098345 2 Erlend 349012 399432 1 Bitte 245245 116230 2 Karl 5. 246738 246738 1 Arne Jon 311159 140000 1 Soren 009832 009832 1 Sæmund 120034 120034 1 Stine 240070 240070 2 Kristian 234970 035409 1 Karl Oscar004933 020042 1 //SORTOF1 DD SYSOUT=* //SORTOF2 DD SYSOUT=* //PARM DD * INREC FIELDS=(1:2,4, 5:25,1, 6:18,6) SORT FIELDS=(1,4,A,6,6,D),FORMAT=AQ,EQUALS OUTFIL FILES=1,INCLUDE=(5,1,CH,EQ,C'1') OUTFIL FILES=2,0MIT=(5,1,CH,EQ,C'1') Resultat: SORTOF1 arl 1246738 arl 1020042 arl 1005344 dne 1 rist1035409 r1en1399432 me 1617801 me 1140000 yste1214464 mmun1120034, oren1009832, SORTOF2 itte2116230 tine2240070 Anja2098345

15 Sortering pd to felt med omredigering av innfil og 2 omredigerte utfiler //0414KRLS JOB S8019,'SORT',MSGLEVEL=(1,1), // CLASS=A,MSGCLASS=X,NOTIFY=0414KRL,REGION=6144K //SOTEST6 EXEC SYNC4,REGION=6144K //SORTIN DD * Arne Jorn 811141 617801 1 Øystein 239404 214464 1 Karl Age 341000 005344 1 Adne 978393 1 Sånja 098345 098345 2 Erlend 349012 399432 1 Bitte 245245 116230 2 Karl 5. 246738 246738 1 Arne Jon 311159 140000 1 Soren 009832 009832 1 Sæmund120034 120034 1 Stine 240070 240070 2 Kristian 234970 035409 1 Karl Oscar004933 020042 1 //SORTOF1 DD SYSOUT=* //SORTOF2 DD SYSOUT=* //PARM DD * INREC FIELDS=(1:2,4, 5:25,1, 6:18,6, 12:11,6) SORT FIELDS=(1,4,A,6,6,D),FORMAT=AQ,EQUALS OUTFIL FILES=1,INCLUDE=(5,1,CH,EQ,C'1'), OUTREC=(1:1,4, 5:5,1, 6:12,6) OUTFIL FILES=2,0MIT=(5,1,CH,EQ,C'1'), OUTREC=(1:5,1, 2:1,4, 6:6,6) Resultat:, SORTOF1 SORTOF2 arl 1246738 arl 1004933 arl 1341000 dne 1978393 rist1234970 rlen1349012 me 1811141 me 1311159 yste1239404 mmun1120034 oren1009832 2itte116230 2tine240070 2ånja098345,.

16 VEDLEGG Vedlegg I: Vedlegg II: Tegnenes sorteringsrekkefølge ved sortering med FORMAT=CH Tegnenes sorteringsrekkefølge ved sortering med FORMAT=AQ

17 Tegnenes sorteringsrekkefølge ved sortering med FORMAT=CH Med FORMAT=CH vil w, 0, A, Æ, Ø og Å plassere seg feil for oss. (blank) Y o (soltegn) A B C AE - (strek) F G H, (komma) (understrek) J K ' (fnutt) N 0 P Q R a b C d e h 0 1 k 2 1 3 4 n 5 o 6 P 7 8 9 V X Y

18 Tegnenes sorteringsrekkefølge ved sortering med FORMAT=AQ FORMAT=AQ sorger for A plassere Æ, 0, A, m, (6 og A riktig. (blank) X Y A (soltegn) B C D E AF - (strek) G H, (komma) J (understrek) K N o ' (mutt)p tf R a b C d e h Q X Y j k 1 n 1 o 2 P 3 4 5 ti 6 7 9

19 Stikkordregister AC 4 Utfil 2 Aggregere felt 3, 8 ZD 4 AND AQ 4, 10, 18 Betingelser 5 CH 4,17 COND 5, 12, 13 COPY 4 CYL 2 DD-navn 2 Dubletter 8, 12 Easytrieve Plus 1 Ekskludering 3, 5 EQUALS 4, 8 FIELDS 4 Fjerne dubletter 8, 12 Format 4 INCLUDE 3, 5-7, 11-15 Innfil 2 INREC 3, 6, 7, 9, 13-15 JCL 2 Kommentarer 1 Kopiere en fil 4 Natural 1 NOEQUALS 4 Norske bokstaver 4, 10, 17, 18 OMIT 3, 5-7, 11, 14 Omredigering 3, 6, 9, 13-15 OR 5 OUTFIL 3, 7, 9, 11, 14, 15 OUTREC 3, 9, 15 PARM 2 PD 4 SAS 1 Selektering 3, 5, 12, 13 SKIPREC 4 SORT 3, 4, 10-15 Sorteringsorden Sorteringsrekkefølge 17, 18 SORTIN 2 SORTOF1 2 SORTOUT 2 Stigende sortering 4 STOPAFT 4 SUM 3, 8, 12 Synkende sortering 4 Syntaksregler 1 TAB 1