Ratkaistu: Ei tulevaisuuden päivämäärälaskentaa

Viimeisin päivitys: 09/21/2023
Kirjoittaja: Cobol SourceTrail

Tulevien päivämäärien laskeminen on yleinen vaatimus ohjelmistokehityksessä, erityisesti yrityssovelluksissa, kuten laskutus- ja aikataulujärjestelmissä. Kielellä, kuten Java tai Python, tämä tehtävä voi olla yksinkertainen sisäänrakennettujen kirjastojen ja toimintojen vuoksi. Kuitenkin vanhemmilla kielillä, kuten Cobol, tämä tehtävä voi osoittautua monimutkaisemmaksi, koska meidän on usein otettava huomioon tekijät, kuten karkausvuodet.

TUNNISTUSJAKSO.
OHJELMA-ID. TULEVAISUUDEN PÄIVÄMÄÄRÄT.
TIETOJAKSO.
TYÖ-VARASTOOSA.
01 WS-CURRENT-DATE.
05 WS-CURRENT-YEAR KUVA 9(04).
05 WS-NYKYINEN KUUKAUSI KUVA 9(02).
05 WS-NYKYPÄIVÄ KUVA 9(02).
01 WS-FUTURE-DATE.
05 WS-FUTURE-YEAR KUVA 9(04).
05 WS-FUTURE-MONTH KUVA 9(02).
05 WS-FUTURE-DAY KUVA 9(02).
MENETTELYJAKO.
HYVÄKSY WS-CURRENT-DATE DATE
LASKE WS-FUTURE-DAY = WS-NYKYINEN-PÄIVÄ + 7
SIIRRÄ WS-CURRENT-MONTH WS-FUTURE-MONTH:hen
SIIRRÄ WS-NYKYINEN-VUOSI WS-FUTURE-VUOSIIN
JOS WS-FUTURE-DAY > 30
LISÄÄ 1 WS-FUTURE-KUUKAUSIIN
VÄHENTÄ 30 WS-FUTURE-DAY:stä
LOPPU JOS
JOS WS-FUTURE-MONTH > 12
LISÄÄ 1 WS-FUTURE-VUOSIIN
VÄHENTÄ 12 WS-FUTURE-KUUKAUSISTA
LOPPU JOS
NÄYTTÖ "YKSI VIIKKOA MYÖHEMMÄN PÄIVÄMÄÄRÄ ON " WS-FUTURE-DATE
STOP RUN.

Puretaan tämä koodi.

Miten koodi rakennetaan?

Cobol-ohjelma alkaa 'TUNNISTUSOSIOLLA', joka on pakollinen jako kaikissa Cobol-ohjelmissa. Sitä seuraava PROGRAM-ID-käsky identifioi ohjelman. 'TIETOJASO' on paikka, jossa määritämme kaikki tiedot tai muuttujat, joita ohjelmassa käytetään. 'WORKING-STORAGE SECTION' on DATA DIVISION'n alajako, jossa ilmoitamme työmuuttujamme: 'WS-CURRENT-DATE' ja 'WS-FUTURE-DATE'. Jokainen näistä on jaettu edelleen päivä-, kuukausi- ja vuosiosiin. 'PROCEDURE DIVISION' on paikka, jossa koodaamme logiikan tulevan päivämäärän laskemiseksi.

Päivämäärän manipuloinnin käsite Cobolissa

Cobol-ohjelmamme hyväksyy ensin nykyisen päivämäärän järjestelmästä. Sitten se laskee tulevan päivämäärän lisäämällä 7 nykyiseen päivään. Jos tuleva päivä ylittää 30:n (merkitsee kuukauden loppua), se lisää kuukautta 1:llä ja vähentää päivästä 30. Samanlaista prosessia käytetään vuoden lopun kirjanpitoon. Ilmeisesti tämä on yksinkertaistettu esimerkki, jossa ei oteta huomioon vaihtelevia kuukausien pituuksia tai karkausvuosia, mutta siinä hahmotellaan perusprosessi.

Yhteenvetona voidaan todeta, että vaikka päivämäärien käsitteleminen Cobolissa voi aluksi tuntua vaikealta, sitä voidaan helpottaa jakamalla päivämäärä pienempiin osiin ja käsittelemällä huolellisesti päivien, kuukausien ja vuosien välisiä siirtymiä. Tällainen huolellinen päivämäärien käsittely on myös muistutus Cobolissa vaadittavasta huomiosta yksityiskohtiin, mikä kuvastaa kielen alkuperäaikaa ja sen jatkuvaa käyttöä järjestelmissä, joissa tarkkuus ja tarkkuus ovat ensiarvoisen tärkeitä.

Related viestiä: