[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2009
    Beiträge
    314

    Suche eine Datumsfunktion und finde wieder einmal gar nichts

    Hallo,

    für folgende Aufgabenstellung suche ich eine Lösung:
    Rel. 7.1, COBOL,
    Fristenermittlung für per-notification für SEPA-Direct-Debit.

    Fälligkeit soll 5 Werktage(MO - FR) ab Tagesdatum sein und das Fälligkeitsdatum soll dem Einzugsdatum des nächstmöglichen Donnerstag entsprechen. Vielleicht hat ja jemand von euch den COBOL-Code für mich bei der Hand.

    Ich weiss das klingt ganz trivial nur möchte ich eine globale Routine mit der ich unsere derzeitige Fälligkeitsdatumsberechnung in diversesten Programmen ersetzen(derzeit Tagesdatum + 10 Kalendertage unabhängig von Wochenenden und Feiertagen).

    Liebe Grüße
    Andreas
    Andreas
    Ein AS/400 Dinosaurier since 1989

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    COBOL selber hat da leider keine Routinen für, aber SQL.
    Du kannst ganz einfach die entsprechenden SQL-Funktionen einbinden:

    77 MYDATE PIC X(10).
    77 MYDAYS PIC s9(5) comp-3.

    exec sql set :mydate = date(:MYDATE) + :MYDAYS days end-exec.

    Ebenso kannst du auch die Weekday()-Funktion verwenden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    ... dann fehlt aber noch das Datum des nächsten Donnerstags.
    Dafür gibt es die Funktion NEXT_DAY:

    Code:
    exec sql Set :Faellig = Next_Day(Date(:MyDate) + 7 Days, 'THU') end-exec.
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    850

    Thumbs up

    Zitat Zitat von B.Hauser Beitrag anzeigen
    ... dann fehlt aber noch das Datum des nächsten Donnerstags.
    Dafür gibt es die Funktion NEXT_DAY:

    Code:
    exec sql Set :Faellig = Next_Day(Date(:MyDate) + 7 Days, 'THU') end-exec.
    Birgitta
    Das ist cool Bin immer wieder erstaunt über das Wissen aller Forumsteilnehmer
    gruß
    Michael

  5. #5
    Registriert seit
    Dec 2009
    Beiträge
    314
    Guten Morgen,

    erstmals vielen Dank für die raschen Antworten, besonders an Baldur und Birgitta, Ihr habt mir viel Zeit die ich wieder mal mit Suchen verbraten hätte erspart.
    Gruß aus Wien
    Andreas
    Andreas
    Ein AS/400 Dinosaurier since 1989

  6. #6
    Registriert seit
    Oct 2013
    Beiträge
    175
    Und Feiertage musst Du nicht berücksichtigen?
    Ich bin nach wie vor ein Fan einer Kalenderdatei. Da steht jeder Tag drin, ob es ein Werktag ist oder nicht, am besten ein logische drüber, wo nur Werktage drin sind, aufsetzen, x Sätze = Werktage lesen, fertig. Ist mit einem "schlauen" Programm (Osterformel oder hardcodiert) befüllbar bis zum St.Nimmerleinstag, und kann auch Dinge wie Inventuren, Betriebsferien, etc. kurzfristig berücksichtigen.
    Natürlich kann man zu jedem Tag Infos dazupacken, wie man möchte, und evtl. nimmt man das Land auch gleich in den Key auf, wenn man internationale Verbindungen hat.

  7. #7
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Hallo,
    stehe mal wieder auf dem Syntax Schlauch.
    Habe hier V5R4 und will in SQL Cobol + 7 Tage rechnen.

    So geht schon mal nicht.

    SQL EXEC SQL SET :SQL-LF-DATUM =
    SQL YEAR(CURRENT DATE) * 10000
    SQL + MONTH(CURRENT DATE) * 100
    SQL + DAY(CURRENT DATE) + 7 DAYS
    SQL END-EXEC.

    Wie gehts dann?

    GG

  8. #8
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo,

    vielleicht geht es so

    SELECT current date + 7 days FROM sysibm/sysdummy1

    gruß
    Michael


    Helau

  9. #9
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Da gibt mir der editor schon einen Syntax Fehler...

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da du das Datum ja anschließend als Zahl haben willst, musst du 3 Mal rechnen:

    EXEC SQL SET :SQL-LF-DATUM =
    YEAR(CURRENT DATE + 7 days) * 10000
    MONTH(CURRENT DATE + 7 days) * 100
    DAY(CURRENT DATE + 7 DAYS)
    END-EXEC

    Wobei COBOL inzwischen auch Datum-Felder unterstützt und beim Move eines Datum-Feldes in ein numerisches die Trennzeichen entfernt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Antworten: 10
    Letzter Beitrag: 23-06-03, 07:55
  2. Spools vom PC wieder auf AS
    By Pia in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 06-11-02, 09:03
  3. Wieder IBM 3487-CA0 zu verkaufen!!
    By BSC Computervertrieb in forum NEWSboard Server & Hardware Markt
    Antworten: 0
    Letzter Beitrag: 13-06-02, 13:05
  4. Mal wieder Client Access und DB2
    By Arbi in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 19-10-01, 15:12
  5. suche eine as/400 p9401
    By worpswede in forum NEWSboard Server & Hardware Markt
    Antworten: 2
    Letzter Beitrag: 22-01-01, 11:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •