FUNCTION FC431 : VOID
Title = 'UP Date nach TTMMJJ umwandeln'
AUTHOR : 'Larry'
VERSION : '1.1'
VAR_INPUT
IN_Date : DATE ; // Datum für Umwandlung
w_Date AT IN_Date : WORD ;
END_VAR
VAR_IN_OUT
END_VAR
VAR_OUTPUT
Jahr : INT ; // Jahr des Vorgabe-Date's
Monat : INT ; // Monat des Vorgabe-Date's
Tag : INT ; // Tag des Vorgabe-Date's
Wochentag : INT ; // Wochentag des Vorgabe-Date's [1=So - 7=Sa]
Schaltjahr : INT ; // Schaltjahr des Vorgabe-Date's
Jahrestag : INT ; // Tag im Jahr des Vorgabe-Date's
Kalenderwoche : INT ; // Kalenderwoche des Vorgabe-Date's
END_VAR
VAR_TEMP
c_Date : DINT ;
Anz_SJ : INT ;
Diff_J : INT ;
JTag : INT ;
END_VAR
BEGIN
c_Date := 1 + WORD_TO_DINT(w_Date) ;
Diff_J := DINT_TO_INT(c_Date / 366) ;
Jahr := Diff_J + 1990 ;
Schaltjahr := 0 ; IF (Jahr MOD 4) = 0 THEN Schaltjahr := 1 ; END_IF ;
Anz_SJ := (Diff_J + 2) / 4 ;
Jahrestag := Schaltjahr - Anz_SJ + DINT_TO_INT(c_Date - (INT_TO_DINT(Diff_J) * 365)) ;
Wochentag := DINT_TO_INT(c_date MOD 7) + 1 ;
Kalenderwoche := (Jahrestag + 7 + 3 - Wochentag) / 7 ;
JTag := Jahrestag ;
IF (JTag > 0) AND (JTag <= 31) THEN
Monat := 1 ; Tag := JTag ;
END_IF ;
JTag := JTag - 31 ;
IF (JTag > 0) AND (JTag <= (28 + Schaltjahr)) THEN
Monat := 2 ; Tag := JTag ;
END_IF ;
JTag := JTag - 28 - Schaltjahr ;
IF (JTag > 0) AND (JTag <= 31) THEN
Monat := 3 ; Tag := JTag ;
END_IF ;
JTag := JTag - 31 ;
IF (JTag > 0) AND (JTag <= 30) THEN
Monat := 4 ; Tag := JTag ;
END_IF ;
JTag := JTag - 30 ;
IF (JTag > 0) AND (JTag <= 31) THEN
Monat := 5 ; Tag := JTag ;
END_IF ;
JTag := JTag - 31 ;
IF (JTag > 0) AND (JTag <= 30) THEN
Monat := 6 ; Tag := JTag ;
END_IF ;
JTag := JTag - 30 ;
IF (JTag > 0) AND (JTag <= 31) THEN
Monat := 7 ; Tag := JTag ;
END_IF ;
JTag := JTag - 31 ;
IF (JTag > 0) AND (JTag <= 31) THEN
Monat := 8 ; Tag := JTag ;
END_IF ;
JTag := JTag - 31 ;
IF (JTag > 0) AND (JTag <= 30) THEN
Monat := 9 ; Tag := JTag ;
END_IF ;
JTag := JTag - 30 ;
IF (JTag > 0) AND (JTag <= 31) THEN
Monat := 10 ; Tag := JTag ;
END_IF ;
JTag := JTag - 31 ;
IF (JTag > 0) AND (JTag <= 30) THEN
Monat := 11 ; Tag := JTag ;
END_IF ;
JTag := JTag - 30 ;
IF (JTag > 0) AND (JTag <= 31) THEN
Monat := 12 ; Tag := JTag ;
END_IF ;
END_FUNCTION