Marc's Place

E$CLCDAT - Datum berekeningen uitvoeren




Aanroep
 
xcall e$clcdat (fout, [datum1], [datum2], operatie, retval)
 
Common velden vóór aanroep
*N/A
Parameters te vullen bij aanroep
datum1 (d8)
Een datum in de vorm [JJ]JJMMDD, een weeknummer in de vorm JJJJWW, een dagnummer in de vorm JJJJDD, etc.
Gebruik bij voorkeur de variabele DATP2 uit E$DATE.H
Geef nooit numerieke literals door met een lengte <> 8.
datum2 (d8)
Een datum in de vorm [JJ]JJMMDD, een aantal, stuurcodes, etc.
Gebruik bij voorkeur de variabele DATP3 uit E$DATE.H
Geef nooit numerieke literals door met een lengte <> 8.
operatie (a2)
Een bewerkingscode. De volgende bewerkingscodes kunnen worden opgegeven:
FS From Screen

Draait een datum1 om van DDMM[JJ]JJ naar JJJJMMDD. Indien het een 6-lange datum betrof, wordt de missende eeuw ingevuld met e$_date(1,2).
(Bedoeld voor 6-lange ingave naar een 8-lang bestandsveld)

TD Turn Date

Draait een datum1 om:

  • DDMMJJ -> JJMMDD
  • JJMMDD -> DDMMJJ
  • JJJJMMDD -> DDMMJJJJ
TS To Screen

Draait een datum1 om van JJJJMMDD naar DDMMJJ.
(Bedoeld voor een 8-lang bestandsveld naar 6-lange ingaveveld)

AD Add Days

Telt een aantal dagen in datum2 op bij een datum1 (JJJJMMDD).

SD Subtract Days

Trekt een aantal dagen in datum2 af van een datum1 (JJJJMMDD).

ND Number to Day

Converteert een dagnummer (JJJJDDD) in datum1 naar een datum (JJJJMMDD).

DN Day to Number

Converteert een datum (JJJJMMDD) in datum1 naar een dagnummer (JJJJDDD).

DF Difference

Berekent het verschil in dagen tussen een oude datum (JJJJMMDD) in datum1 en een jongere datum (JJJJMMDD) in datum2. Draai je oud en jong om, dat wordt het resultaat negatief.

DS Difference Separated

Berekent het verschil tussen een jonge datum (JJJJMMDD) in datum1 en een oudere datum (JJJJMMDD) in datum2. Draai je oud en jong om, dat wordt het resultaat negatief.
Het verschil wordt teruggegeven als een D18 veld wat 3x6 posities bevat: JJJJJJ MMMMMM DDDDDD (jaren, maanden en dagen).

TA To Alpha

Converteert een datum1 [JJ]JJMMDD naar zijn alfanumerieke equivalenten DD M[MMMMMMMM] JJJJ of DD-MM-[JJ]JJ. De lengte van de maandnaam is stuurbaar via datum2, ook of de naam in hoofdletters moet of niet:

  • Meest rechtse positie geeft aan of de maandnaam in hoofdletters moet (1) of niet (0). Deze positie kan ook aangeven dat er niet met maandnamen gewerkt wordt (9), maar geheel met numerieke waarden, gescheiden door scheidingstekens uit e$usr_intl.
  • De tweede positie van rechts geeft de lengte aan die de maandnaam moet krijgen (minimum is 1), indien de meest rechtse <> 9 is.

Dus hier wat voorbeelden:

  • datum2 = 30
    De datum wordt DD Mmm JJJJ (02 Feb 1998)
  • datum2 = 90
    De datum wordt DD Mmmmmmmmm JJJJ (02 Februari 1998)
  • datum2 = 31
    De datum wordt DD MMM JJJJ (02 FEB 1998)
  • datum2 = 9
    De datum wordt DD-MM-JJJJ (02-02-1998).
WK Week

Berekent een weeknummer uit datum1 [JJ]JJMMDD.

WD Week Day

Berekent de dagnaam en/of -nummer van de dag in de week van een datum1 [JJ]JJMMDD of geeft de dagnaam terug van een dagnummer in de week (1 t/m 7) in datum1. De lengte van de dagnaam, ook of de naam in hoofdletters moet of niet, is stuurbaar via datum2:

  • Meest rechtse positie geeft aan of de dagnaam in hoofdletters moet (1) of niet (0).
  • De tweede positie van rechts geeft de lengte aan die de dagnaam moet krijgen (minimum is 1).

Dus hier wat voorbeelden:

  • datum2 = 30
    De dagnaam wordt Ddd (Maa, Din, Woe, etc.)
  • datum2 = 90
    De dagnaam wordt Ddddddddd (Dinsdag, Woensdag, etc.)
  • datum2 = 31
    De dagnaam wordt DDD (MAA, DIN, WOE)
WM Week Monday

Berekent het dagnummer JJJJDDD van de maandag van de week in datum1 JJJJWW.

VL Validate

Valideert datum1 op juistheid. Deze actie wordt voor bijna alle voorgaande acties, waar een [JJ]JJMMDD datum nodig is, uitgevoerd vóórdat er een berekening plaats gaat vinden {behalve bij actie 'TA', daar vindt géén validatie plaats).

VN Validate Number

Valideert een weeknummer (JJJJWW) (1 - 53) in datum1 of een dagnummer (JJJJDDD) (1-365/366) in datum1.

LD Last Day

Geeft het laatste dagnummer van de maand (31,28/29, 30) terug waarin datum1 [JJ]JJMMDD valt.

** Systemdate

Geeft de systeemdatum JJJJMMDD terug.

Gebruik bij voorkeur de variabele DATP4 uit E$DATE.H
Parameters gevuld bij terugkeer
fout (a7)
Indien er bij een validatie van de actiecode, de datums, week- en dagnummers iets niet klopt, wordt in deze parameter de berichtsleutel van een foutmelding teruggegeven:
  • DAT0001
    Parameter 1 niet gevuld.
  • DAT0002
    Onjuiste datum.
  • DAT0003
    Onjuist weeknummer. (JJJJWW)
  • DAT0004
    Onjuist dagnummer. (JJJJDDD)
  • DAT0010
    Onbekende actiecode.
Gebruik bij voorkeur de variabele DATP1 uit E$DATE.H
retval (a20)
Deze waarde wisselt nogal en kan uiteenlopen van een numerieke datum (rechts uitgelijnd met voorloopnullen) tot een alfanumerieke dagnaam (links uitgelijnd).
Gebruik bij voorkeur de variabele DATP5 uit E$DATE.H
Common velden gevuld bij terugkeer
*N/A
Voorbeelden
 
Hier volgt één source-code voorbeeld:
 
datp2 = 19981226
datp3 = 20
datp4 = 'AD'
xcall e$clcdat (datp1, datp2, datp3, datp4, datp5)
if datp1.msgid.ne.' ' xcall e$fatal ("Onjuiste datum")

 

Deze en meerdere resultaten van de diverse actiecodes vindt je in de volgende afbeelding:


© 1997- Marc Vos (and others)   -   Privacy Statement   -    Contact Me

On this website, Google Analytics is used to track visitor statistics. These are anonymised data about the number of visitors, which pages they visit on this site, from which regions they visit, which web browsers they use, etc.. You will also see non-personalised ads via Google AdSense. Cookies from Paddle or Paypal are placed when you click on a 'Buy now!' or 'Donate!' button, and possible cookies from Disqus when you use that system to comment on one or more blogposts.
Privacy Statement