Hvor å Sjekk datoperiode i COBOL

COBOL kan virke gammeldags i forhold til objektorienterte språk, men det fortsatt trives på eldre stormaskiner der sin lynraske nummer-knaser er sannsynlig å sikre bruken i årene som kommer. For de bevandret i Java eller C #, kan det komme som et sjokk at dette språket har ingen dato primitiver, men mye av applikasjonskoden avhenger av dato avhengigheter. Her er noen tips for å håndtere datoer i COBOL.

Bruksanvisning

1 Forstå den grunnleggende strukturen i COBOL. Hver COBOL-programmet har fire store seksjoner kalt divisjoner. Dette er identifikasjon, MILJØ, DATA og prosedyre. Dato data går i DATA divisjon, et område som beskriver minnestrukturer.

2 Bestem hvor datoene er lagret på disken. Datoer lagres ofte som rå tall i formatet ÅÅÅÅMMDD. For eksempel, 10 februar 2014 blir vanligvis lagret som 20140210. Representert i COBOL, dato strukturen i DATA Division ser slik ut:

01 DATA-posten.

… data fields …
03 EVENT-DATE.
05 EVENT-YEAR PIC 9999.
05 EVENT-MONTH PIC 99.
05 EVENT-DAY PIC 99.
.. more fields ..

En rad med data blir lest inn i DATA-RECORD element, som er delt inn i en rekke felt. Feltet hendelse dato (EVENT-DATE) er lagret et sted i hver rad data i ÅÅÅÅMMDD format. Datoen er delt inn i år, måned og dag felt.

3 Definer en struktur der datoene kan bli akseptert fra konsollen. Fordi datoer er vanligvis angitt i MM / DD / ÅÅÅÅ-format, må strukturen gjenspeile dette.

01 DATE-IN.

03 MM-IN PIC 99.
03 FILLER PIC X.
03 DD-IN PIC 99.
03 FILLER PIC X.
03 YYYY-IN PIC 9999.

4 Definer lagringsplass for både start og sluttdato. Etter datoene blir lest inn i DATE-IN struktur, må de være formatert til å ÅÅÅÅMMDD format. De startdato og sluttdato strukturer vil holde disse verdiene.

01 START-DATE.

03 START-YYYY PIC 9999.
03 START-MM PIC 99.
03 START-DD PIC 99.

Opprett en lignende struktur sluttdato med felt END-ÅÅÅÅ, END-MM og END-DD.

5 Godta datoene fra konsollen eller JCL (Job Control Language) og reformatere dem til ÅÅÅÅMMDD format. I Prosedyre divisjon, legge til følgende kode:

PROSEDYRE DIVISION.
0000-START.

DISPLAY “Start Date: “.
ACCEPT DATE-IN.
START-YYYY = YYYY-IN.
START-MM = MM-IN.
START-DD = DD-IN.

DISPLAY & # 8220; Sluttdato: & # 8220 ;.
GODTAR DATE-IN.
END-ÅÅÅÅ = ÅÅÅÅ-IN.
END-MM = MM-IN.
END-DD = DD-IN.

Programmet starter, en melding som spør om startdato, datoen verdien er akseptert og deretter reforma inn i START-DATE-feltet ved å tildele hvert felt for å referere til sin inngang motstykke. Den tilsvarende prosessen er gjort for sluttdatoen.

6 Les en rekord og sammenligne datoene. Fordi alle datoer er nå i ÅÅÅÅMMDD format, trenger du bare sammenligne strenger å finne ut om noen rekord er innenfor datoperioden du nettopp opprettet.

0100READ-RECORD.
Les data til data-RECORD

AT END, GO TO 0900-END.

IF EVENT - DATO> = START-DATE eller <= sluttdato

PERFORM 1000-PROCESS-DATA.

Hver post blir lest inn i DATA-RECORD struktur, så EVENT-DATE-feltet blir sammenlignet med startdato og sluttdato felt. I dette eksempelet, hvis posten dato er mellom start- og sluttdato, blir posten behandlet.