PDA

View Full Version : Suche eine Datumsfunktion und finde wieder einmal gar nichts



Seiten : [1] 2

nico1964
05-11-13, 15:12
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

Fuerchau
05-11-13, 15:21
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.

B.Hauser
05-11-13, 16:44
... dann fehlt aber noch das Datum des nächsten Donnerstags.
Dafür gibt es die Funktion NEXT_DAY:


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

Birgitta

mk
05-11-13, 18:03
... dann fehlt aber noch das Datum des nächsten Donnerstags.
Dafür gibt es die Funktion NEXT_DAY:


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

nico1964
06-11-13, 07:43
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

AG1965_2
06-11-13, 07:47
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.

KingofKning
16-02-15, 10:11
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

mk
16-02-15, 10:24
Hallo,

vielleicht geht es so

SELECT current date + 7 days FROM sysibm/sysdummy1

gruß
Michael


Helau

KingofKning
16-02-15, 10:29
Da gibt mir der editor schon einen Syntax Fehler...

Fuerchau
16-02-15, 10:33
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.