View Full Version : Woche des Monats, Quartal
KingofKning
11-12-13, 07:51
@F: hab leider nur ein älteres OS zur Verfügung.
@KoK: Bitte um Hilfe - wie geh ich das an?
Hallo,
diese Aussage hilft keinem weiter!
Welche Version hast Du konkret im Einsatz, welches RPG benutzt Du?
Ich nehme aber an daß das Beispiel von malzusrex Dir weiterhilft.
Ansonsten kannst Du beim Job Scheduler unter
Häufigkeit . . . . . . . . . . . *WEEKLY *SAME, *ONCE, *WEEKLY...
Geplantes Datum . . . . . . . . *NONE Datum, *SAME, *CURRENT...
Geplanter Tag . . . . . . . . . *ALL *SAME, *NONE, *ALL, *MON...
+ für weitere Werte
Die Werte für Monatsende eingeben.
GG
camouflage
11-12-13, 08:53
So schlecht find ich jetzt Ronalds Vorschlag nicht...
Damit Du die Woche auf den Monat reduzieren kannst, errechne doch die Woche des Tagesdatum, dann die Woche des 1. des jeweiligen Monats; Differenz + 1 et voilà, c'est fait.
Haste kein SQL hilft dir vielleicht das weiter:
H NoMain
* ------------------------------------------------------- Prototypes
D DayOfWeek PR 5I 0
D D Value
D WeekOfYear PR 5I 0
D D Value
* -----------------------------------------------------------------
*
* Procedure: DayOfWeek
* Description: Retrieve day of week using ISO 8601 standard
* (0=Monday - 6=Sunday)
*
P DayOfWeek B Export
D DayOfWeek PI 5I 0
D DateIn D Value
D NbrDays S 10I 0
D Monday C D('2001-01-04')
/Free
NbrDays = %DIFF(DateIn:Monday:*DAYS);
Return = %REM( %REM(NbrDays:7) + 7 : 7);
/End-Free
P DayOfWeek E
* -----------------------------------------------------------------
*
* Procedure: WeekOfYear
* Description: Retrieve week of year using ISO 8601 standard
* (Year starts on Monday of week containing January 4)
*
P WeekOfYear B Export
D WeekOfYear PI 5I 0
D DateIn D Value
D DS
D Jan04Date D INZ(D'0001-01-04')
D Jan04Year 4 0 Overlay(Jan04)
D FirstMonday S D
D Jan04DOW S 5I 0
/Free
// Change Jan04Date to target year,
// then calculate first Monday of target year
Jan04Year = %SUBDT(DateIn:*Y);
Jan04DOW = DayOfWeek(Jan04Date);
FirstMonday = Jan04Date - %DAYS(Jan04DOW);
// If target date is before first Monday, switch to prior year
If DateIn < FirstMonday;
Jan04Year = Jan04Year D 1;
Jan04DOW = DayOfWeek(Jan04Date);
FirstMonday = Jan04Date - %DAYS(Jan04DOW);
Endif;
// Return week number (number of full weeks since first Monday + 1)
Return %DIV(%DIFF(DateIn:FirstMonday:*DAYS):7) + 1;
/End-Free
P WeekOfYear E
Quelle: iprodeveloper.com (geht ab V5R1)
programmer400
11-12-13, 09:21
@KoK: das war mir schon klar, wie ich das mit dem jobscd in System stelle. Ich dachte, dass ich aus dem jobscd Werte (z.B.) Monatsletzten zurückbekomme und mit diesem Parameter ein Verzeichnis erstellen kann.
Für jede benötigte Variante einen eigenen JOBSCD einstellen.
Per CALL einen Parameter an das Programm für die "Typ" des Job's übergeben:
Z.B.
"ME" = Monatserster
"ML" = Monatsletzter
"M1" - "M5" = Monats-Woche
usw. usw.
Per Weekday kannst du den Wochentag ermitteln, per %month(%date()) kennst du den Monat, usw. usw.