-
Woche des Monats, Quartal
Wie kann ich in ILE am besten die Woche des Monats bzw. das Quaral ermitteln. Basis wäre das aktuelle Tagesdatum.
Es soll z.B. immer Ende der 4.Woche eines Monats bzw. Ende eines Quartals eine bestimmte Aktion durchgeführt werden.
-
Also mit wrkjobscde kannst Du einen Job erstellen der immer am Monatsende läuft.
(Ich weiß, hilft die bei ILE RPG nicht weiter, wäre aber evtl. eine Alternativlösung)
GG
-
Das kannst du eigentlich per ADDJOBSCDE automatisieren. Da gibt es die diversen Möglichkeiten für genau solche Aktionen.
-
Ich brauch aber den betreffenden Wert als Parameter im Programm, da ich im Programm einen FTP-Command zusammenbastle, der mir dann zum jeweiligen Zeitpunkt in ein, für diesen Zeitpunkt gültiges Verzeichnis, was reinschreibt.
-
Ab V6 hilft dir da VARCHAR_FORMAT:
http://pic.dhe.ibm.com/infocenter/is...6e%74%68%22%20
Beispiel:
select varchar_format(current timestamp, 'Q W MM D')
from sysibm/sysdummy1
Q = Quartal
W = Woche im Monat
MM = Monat
D = Wochentag
u.v.m.
-
Wenn der Job über den Scheduler läuft bräuchtest Du ja nur das Tagesdatum abzufragen. Dann hättest Du deinen Parameter
GG
-
@F: hab leider nur ein älteres OS zur Verfügung.
@KoK: Bitte um Hilfe - wie geh ich das an?
-
Vielleicht hilft ja folgender Ansatz. Hatte da mal ein Programm, was an Hand des Datums das Jahr, Woche, Wochentag ermittelt. Und wenn Du Monat und/bzw Woche hast, sollte auch das Quartal zu ermitteln sein
PHP-Code:
d Datum s d datfmt(*eur)
d Woche s 3u 0
d WoTag s 3u 0
d Jahr s 4s 0
d
d parm_Dat s 8a
d parm_WoTag s 10a
d parm_DayOf s 1a
d parm_Woche s 2a
d parm_Jahr s 4
d
d Datum_num s 8 0
d
d ds
d $woche 10a
d dim(7)
d 1 10a inz('Montag ')
d 11 20a inz('Dienstag ')
d 21 30a inz('Mittwoch ')
d 21 30a inz('Mittwoch ')
d 31 40a inz('Donnerstag')
d 41 50a inz('Freitag ')
d 51 60a inz('Samstag ')
d 61 70a inz('Sonntag ')
c *entry plist
c parm parm_Dat
c parm parm_WoTag
c parm parm_DayOf
c parm parm_Woche
c parm parm_Jahr
c
c move parm_Dat datum_num
c move datum_num datum
c
c/EXEC SQL
c+ set :Woche = week_iso(:Datum)
C/END-EXEC
c/EXEC SQL
c+ set :WoTag = DayOfWeek_iso(:Datum)
C/END-EXEC
c
c*
c Select
c When woche = 1
c and
c %SubDt(Datum: *M) = 12
c eval Jahr = %SubDt(Datum: *Y) + 1
c When woche >= 52
c and
c %SubDt(Datum: *M) = 1
c eval Jahr = %SubDt(Datum: *Y) - 1
c Other
c eval Jahr = %SubDt(Datum: *Y)
c EndSl
c*
c eval parm_WoTag = $Woche(Wotag)
c move wotag parm_DayOf
c move woche parm_woche
c move Jahr parm_Jahr
c*
c return
In ähnlicher Form findest du das Programm hier bestimmt noch mal im Forum
(Danke an dieser Stelle noch mal an Birgitta)
Gruß Ronald
-
Das ist aber die "Woche des Jahres".
Die "Woche des Monats" liegt immer zwischen 1-4/5.
So kann ich im JOBSCD bestimmen, dass immer am letzten Freitag eines Monats oder immer am Dienstag in der 2 Woche eines Monates welche Jobs gestartet werden.
Sicherlich kann ich mir dieses zu nutze machen in dem ich an das aufgerufene Programm einen eintsprechenden Parameter (als Konstante) übergebe und die Art des Aufrufes zu bestimmen (wie oben vorgeschlagen).
-
Upps,
wieder nicht richtig gelesen....
..Thema verfehlt! .. Setzen, Sechs!
;-)
-
Zitat von programmer400
@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
-
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:
Code:
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)
kf
Similar Threads
-
By Burgy Zapp in forum Archiv NEWSblibs
Antworten: 0
Letzter Beitrag: 09-02-02, 20:58
-
By Timmo in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 29-03-01, 21:12
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks