PDA

View Full Version : Uhrzeit SMTP



GfD
01-04-03, 08:57
Unser SMTP-Server hing eigentlich schon immer eine Stunde "vor". Nach der Zeitumstellung (sysval) zeigt das Sytem die "richtige" Zeit, aber bei Mails läuft er nun 2 Stunden vor der Zeit. Idee?

schramka
01-04-03, 09:03
Hallo,

der Systemwert QUTCOFFSET muss bei Sommerzeit auf +2:00 sonst +1:00 stehen, dann sollte es funktionieren.

Maik

GfD
01-04-03, 09:17
Herzlichen Dunk!

Sven Schneider
01-04-03, 12:17
Für alle die Probleme mit der Sommerzeitumstellung haben, hier ein Programm, welches alles automatisch tut.
Im Kopf der Source steht eine kurze Beschreibung.
Die Zeitgrenzen letzter Sonntag/Monat 03 bzw. erster Sonntag/Monat 10 gelten für Mitteleuropäische-Zeitzone !!!
Da der AS/400-Scheduler nichts anderes unterstützt, muß der Job jeden Sonntag um 02:00:00 Uhr laufen.



SETDST_DE: PGM
/************************************************** ****************************/
/* NAME - SETDST_DE */
/* FUNCTION - PERFORM AUTOMATIC DAYLIGHT SAVINGS TIME ADJUSTMENTS. */
/* */
/* NOTE - PROGRAM SHOULD BE COMPILED WITH USRPRF(*OWNER), AND */
/* THE OWNER SHOULD HAVE AUTHORITY TO CHGSYSVAL QHOUR */
/* - OR - */
/* THE JOB SCHEDULE ENTRY SHOULD NAME A USER THAT HAS */
/* AUTHORITY TO CHGSYSVAL QHOUR. */
/* */
/* ===>>> DATE OF LAST MODS. : 2002/03/25 */
/* */
/* TAKEN FROM: MIDRANGE COMPUTING, DECEMBER 1997, PAGE 13. */
/* (FROM DAVID HUMMELL, MODIFICATION OF PROGRAM BY LORI NESJE) */
/* FURTHER MODS BY NEIL PALMER, DPS CANADA LTD. */
/* */
/* ADD TO SYSTEM JOB SCHEDULER AS FOLLOWS (SUBSTITUTE VALID USER): */
/* ADDJOBSCDE JOB(AUTO_DST) CMD(CALL PGM(QGPL/SETDST_DE)) + */
/* FRQ(*MONTHLY) SCDDATE(*NONE) SCDDAY(*SUN) + */
/* SCDTIME(020000) RELDAYMON(*LAST) + */
/* JOBQ(QSYSNOMAX) USER(????) TEXT('DAYLIGHT + */
/* SAVINGS TIME ADJUSTMENT PROGRAM') */
/* */
/************************************************** ****************************/
DCL VAR(&MONTH) TYPE(*CHAR) LEN(2)
DCL VAR(&HOUR) TYPE(*CHAR) LEN(2)
DCL VAR(&DAY) TYPE(*CHAR) LEN(2)
DCL VAR(&DOW) TYPE(*CHAR) LEN(4)
DCL VAR(&HOUR#) TYPE(*DEC) LEN(2 0)
DCL VAR(&UTCOFFSET) TYPE(*CHAR) LEN(5)
DCL VAR(&UTCOFFSET#) TYPE(*DEC) LEN(5 0)
DCL VAR(&CHANGED) TYPE(*LGL) VALUE('0')

RTVSYSVAL SYSVAL(QMONTH) RTNVAR(&MONTH)
RTVSYSVAL SYSVAL(QHOUR) RTNVAR(&HOUR)
RTVSYSVAL SYSVAL(QDAY) RTNVAR(&DAY)
RTVSYSVAL SYSVAL(QUTCOFFSET) RTNVAR(&UTCOFFSET)
RTVSYSVAL SYSVAL(QDAYOFWEEK) RTNVAR(&DOW)

/* IF THIS IS NOT SUNDAY THEN THE AS/400 WAS DOWN ON SUNDAY */
/* TIME MAY HAVE BEEN SET MANUALLY. */
/* SEND MESSAGE TO SYSTEM OPERATOR TO CHECK THE TIME */
IF COND(&DOW *NE '*SUN') THEN(DO)
IF COND(&MONTH = '03' *OR (&MONTH = '04' *AND +
&DAY < '15') *OR &MONTH = '10' *OR +
(&MONTH = '11' *AND &DAY < '15')) THEN(DO)
SNDPGMMSG MSG('Der Job zur Anpassung der Sommer- / +
Winterzeit ist nicht am letzten Sonntag +
im März / Oktober gelaufen. Bitte stellen +
Sie die Systemwerte QHOUR und QUTCOFFSET +
manuell ein. !!!') TOMSGQ(*SYSOPR)
GOTO CMDLBL(END)
ENDDO
ENDDO

CHGVAR VAR(&HOUR#) VALUE(&HOUR)
CHGVAR VAR(&UTCOFFSET#) VALUE(&UTCOFFSET)

IF COND(&MONTH = '03' *AND &UTCOFFSET = +
'+0100') THEN(DO)
CHGVAR VAR(&HOUR#) VALUE(&HOUR# +1)
CHGVAR VAR(&UTCOFFSET#) VALUE(&UTCOFFSET# +100)
CHGVAR VAR(&CHANGED) VALUE('1')
ENDDO
IF COND(&MONTH = '10' *AND &UTCOFFSET = +
'+0200') THEN(DO)
CHGVAR VAR(&HOUR#) VALUE(&HOUR# -1)
CHGVAR VAR(&UTCOFFSET#) VALUE(&UTCOFFSET# -100)
CHGVAR VAR(&CHANGED) VALUE('1')
ENDDO

IF COND(&CHANGED = '1') THEN(DO)
CHGVAR VAR(&HOUR) VALUE(&HOUR#)
CHGSYSVAL SYSVAL(QHOUR) VALUE(&HOUR)

CHGVAR VAR(&UTCOFFSET) VALUE(&UTCOFFSET#)
IF COND(&UTCOFFSET# >= 0) THEN(CHGVAR +
VAR(&UTCOFFSET) VALUE('+' *CAT +
%SST(&UTCOFFSET 2 4)))
CHGSYSVAL SYSVAL(QUTCOFFSET) VALUE(&UTCOFFSET)

SNDPGMMSG MSG('Der Job zur Anpassung der Sommer- / +
Winterzeit hat folgende Werte verändert : +
' *CAT 'QHOUR = ' *CAT &HOUR *CAT '; +
QUTCOFFSET = ' *CAT &UTCOFFSET *CAT ' +
!!!') TOMSGQ(*SYSOPR)
ENDDO

END:


[Dieser Beitrag wurde von Sven Schneider am 01. April 2003 editiert.]

GfD
01-04-03, 13:11
Genial! Hätte man auch selbst drauf kommen können. DAnke.

karin-vogelmann
04-04-03, 17:36
hi *all,

ich hab's ein bischen fester verdrahtet und lasse den job auch nur 2 mal im jahr gezielt laufen mit parameter, siehe beschreibung, hier das cl:

100 /************************************************** ******************/
200 /* */
300 /* ZEITUMSCL */ 04.03.03
400 /* */ 27.04.01
500 /* 04.03.2003, KARIN VOGELMANN */ 04.03.03
600 /* */ 27.04.01
700 /* ZEITUMSTELLUNG WINTER -> SOMMER UND SOMMER -> WINTER */ 04.03.03
800 /* */ 27.04.01
900 /* "SPRING FORWARD, FALL BACK" */ 04.03.03
1000 /* */ 04.03.03
1100 /* W = AUF WINTERZEIT UMSTELLEN, VON 3 AUF 2 UHR, OFFSET +01:00 */ 04.03.03
1200 /* S = AUF SOMMERZEIT UMSTELLEN, VON 2 AUF 3 UHR, OFFSET +02:00 */ 04.03.03
1300 /* */ 04.03.03
1400 /* ACHTUNG BEI WINTERZEIT: ES MUß DIE DATA-AREA "WINTERZEIT" AUF */ 04.03.03
1500 /* WERT 'J' STEHEN, SONST KEINE UMSTELLUNG */ 04.03.03
1600 /* DIE DATA-AREA WIRD EINMAL IM JAHR MANUELL AUF 'J' GESETZT!!! */ 04.03.03
1700 /* */ 04.03.03
1800 /************************************************** ******************/
1900 27.04.01
2000 PGM PARM(&WS) 04.03.03
2100 27.04.01
2200 DCL VAR(&WS) TYPE(*CHAR) LEN(1) 04.03.03
2300 DCL VAR(&DTAWINTER) TYPE(*CHAR) LEN(1) 04.03.03
2400 27.04.01
2500 /* DATENBEREICH AUSLESEN, DAMIT WINTERZEIT NICHT LOOPT */ 04.03.03
2600 RTVDTAARA DTAARA(MUSKUND/WINTERZEIT (1 1)) + 04.03.03
2700 RTNVAR(&DTAWINTER) 04.03.03
2800 04.03.03
2900 /* SOMMERZEIT EINSTELLEN */ 04.03.03
3000 IF COND(&WS = 'S') THEN(DO) 04.03.03
3100 DLYJOB RSMTIME(020000) 04.03.03
3200 CHGSYSVAL SYSVAL(QTIME) VALUE(030000) 04.03.03
3300 CHGSYSVAL SYSVAL(QUTCOFFSET) VALUE('+02:00') 04.03.03
3400 ENDDO 04.03.03
3500 04.03.03
3600 /* WINTERZEIT EINSTELLEN UND LOOP-FALLE UMGEHEN!!! */ 04.03.03
3700 IF COND(&WS = 'W') THEN(DO) 04.03.03
3800 IF COND(&DTAWINTER = 'J') THEN(DO) 04.03.03
3900 DLYJOB RSMTIME(030000) 04.03.03
4000 CHGSYSVAL SYSVAL(QTIME) VALUE(020000) 04.03.03
4100 CHGSYSVAL SYSVAL(QUTCOFFSET) VALUE('+01:00') 04.03.03
4200 CHGDTAARA DTAARA(MUSKUND/WINTERZEIT (1 1)) VALUE('N') 04.03.03
4300 ENDDO 04.03.03
4400 ENDDO 04.03.03
4500 04.03.03
4600 ENDE: ENDPGM 27.07.00
* * * E N D E D E R Q U E L L E * * *