Willkommen, Gast    Noch kein Mitglied? KOSTENLOS ANMELDEN

Kalenderwoche berechnen, Aus $A_DAY usw. KW berechnen

   Antworten Neues Thema
 
 
Beitrag 04.12.2008, 19:35 Uhr
 
 
trollrne
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 14.11.2007
Beiträge: 211
Hallo CNCler,

habe da mal ein Problem.

muß ne Seriennummer signieren im FORMAT JJ KW XXXX also z.B. 08 51 0001.
Nun ja Tag, Monat und Jahr gibt ja als Systemvariablen. Aber die Kalenderwoche?
Ok dazu muß man ja erstmal den Wochentag ausrechnen. Und dann die KW.

Hat so etwas schonmal jemand von Euch gemacht?? coangry.gif

Bin für jeden Tip dankbar.

MfG
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 05.12.2008, 00:40 Uhr
 
 
trollrne
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 14.11.2007
Beiträge: 211
Kleiner Nachtrag:

habe wir schon nen Wolf im Internet gesucht und heut zumindest noch nen Teil geschrieben, welcher den Wochentag eines Datums im Bereich 1.3.2008 bis 31.12.2011 ausrechnet.

Bin noch auf diesen brauchbaren Link gestoßen:
www.nwn.de/hgm/kalender/kal-64.htm

Vielleicht hilft jemand mit, den Krams auf die 840D umzusetzen.. bitte.gif

Mfg
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 05.12.2008, 10:31 Uhr
 
 
uli12us
Level 7 = CNC-Arena-Professor
*******
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 20.04.2002
Beiträge: 4.984
Blöde Frage, wenn du jedesmal Montag früh die KW händisch eingibst. Wär das zu einfach.
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 05.12.2008, 18:56 Uhr
 
 
trollrne
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 14.11.2007
Beiträge: 211
Hallo uli12us,

naja würde gehen aber irgendwann werd ich 6-10 Maschinen fahren und was die Sache noch erschwert, wir fahren Sonntags um 22:00 Uhr an wink.gif

Naja habe jetzt grad nen ersten Entwurf des Unterprogramms. Hier ist noch nix ausprobiert, habe Die Sache halt mal so dahingeschrieben:

Code


Blabla Programmkopf

ERGEBNIS IN R99
DEF INT WT_AKT=0               ; 1.Januar des aktuellen Jahres
DEF INT WT_VOR=0               ; 1.Januar des Vorjahres
DEF INT WT_NACH=0              ; 1.Januar des nachfolgenden Jahres
DEF INT ZAEHLER=0
DEF INT TAGE=0
DEF INT MONATSTAGE[1,12]=(31,28,31,30,31,30,31,31,30,31,30,31)

;Schaljahr bestimmen klappt so gut bis 2099 :-)
IF $A_YEAR MOD 4 == 0
       MONATSTAGE[0,1]=29
ENDIF

Monatstage errechnen
FOR ZAEHLER=0 TO $A_MONTH-1
       TAGE= TAGE+MONATSTAGE[0,ZAEHLER]
ENDFOR
       TAGE= TAGE+$A_DAY

;Wochentag 1.1. des aktuellen Jahres bestimmen

WT_AKT=$A_YEAR-1900                        ;anzahl der vergangen jahre mit schaltjahr
WT_AKT=WT_AKT DIV 4                            ;anzahl der vergangen schaltjahre
WT_AKT=WT_AKT +($A_YEAR-1900)                          ;versatz der wochentage seit 1900
WT_AKT=WT_AKT MOD 7                            ; ergebnis Mon =0 bis Son=6

IF $A_YEAR MOD 4 == 0
       WT_AKT=WT_AKT-1                        ;Jahr ist Schaltjahr, WOCHENTAG muß um -1 korrigiert werden
ENDIF

;Wochentag 1.1. des vorhergehenden Jahres bestimmen

WT_VOR=$A_YEAR-1900-1                          ;anzahl der vergangen jahre mit schaltjahr
WT_VOR=WT_VOR DIV 4                            ;anzahl der vergangen schaltjahre
WT_VOR=WT_VOR +($A_YEAR-1900-1)                        ;versatz der wochentage seit 1900
WT_AKT=WT_AKT MOD 7                            ; ergebnis Mon =0 bis Son=6

IF ($A_YEAR-1) MOD 4 == 0
       WT_VOR=WT_VOR-1                        ;Jahr ist Schaltjahr, der Wochentag muß um -1 korrigiert werden
ENDIF

;Wochentag 1.1. des nachfolgenden Jahres bestimmen

WT_NACH=$A_YEAR-1900+1                         ;anzahl der vergangen jahre mit schaltjahr
WT_NACH=WT_NACH DIV 4                          ;anzahl der vergangen schaltjahre
WT_VOR=WT_NACH +($A_YEAR-1900+1)                               ;versatz der wochentage seit 1900
WT_NACH=WT_NACH MOD 7                          ; ergebnis Mon =0 bis Son=6

IF ($A_YEAR+1) MOD 4 == 0
       WT_NACH=WT_NACH-1                      ;Jahr ist Schaltjahr, der Wochentag muß um -1 korrigiert werden
ENDIF

IF WT_AKT>3
TAGE=TAGE-(7-WT_AKT)                           ; der Knackpunkt -> sind wir in KW 52/53 oder KW 1 ?
ELSE
TAGE=TAGE+WT_AKT

IF TAGE<0                                      ; Tag in der letzten Woche des Vorjahres
       IF (WT_AKT ==4) OR (WT_VOR ==3)
               R99=53
       ELSE
               R99=52
       ENDIF
ELSE
R99=(TAGE DIV / 7) +1                          ; Kalenderwoche ichh hoffe das stimmt :-)

IF (TAGE>360) AND (R99>52)                     ;Tag in KW 1?
       IF WT_AKT==3
               R99==53
       ENDIF
       IF WT_NACH==4
               R99==53
       ENDIF
ELSE
       R99=1
ENDIF
M17



Kommentare erwünscht smile.gif
MfG
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 13.05.2010, 08:50 Uhr
 
 
cnc-wolle
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
Hallo Trollrne

Ist zwar schon ein wenig her, aber ich habe dieses Thema jetzt erst aufgegriffen.

Piet2
ZITAT
Funktioniert soweit Klasse, bis auf das man z.B. 32 Monatstage eingeben kann!
KW und Wochentagbezeichnung stimmen aber... :-)


Dieser Stand überprüft die maximale Tagesangabe.
Wenn die Tageszahl nicht größer + (Tageszahl nächster Monat maximal) ---> Datum wird korrigiert angezeigt
Wenn die Tageszahl größer + (Tageszahl nächster Monat maximal) ---> Abbruch

z.B.
29.2.2003 --> auf 1.3.2003 geändert
29.2.2012 --> auf 29.2.2012 geblieben
61.1.2003 --> Abbruch
59.1.2003 --> auf 28.2.2003 geändert
usw.

Eine von vielleicht anderen(besseren) Lösungen.

Gruß
Wolle

Hier mein letzter Stand vom UP.

%_N_DATUM_KW_SPF
;$PATH=/_N_SPF_DIR
; Version3.4 -- 13.05.2010
; If AKT_D+Differenz<8 --> Abfrage Jahresbeginn alt Fehler
; If TAG_ANZ[AKT_M]+AKT_D+Differenz<8 --> Abfrage Jahresbeginn neu mit Monatstageanzahl
; maximale Tage fuer den aktuellen Monat --> 13.03.20010
;
DEF INT AKT_Y, AKT_M, AKT_D, Differenz, TAG_Nr, TAG_ANZ[13],WochenTag, PLUS_TAG, MAX_M
DEF INT REF_Y=0, REF_D_Nr=6, Dif_Y, Dif_D
DEF STRING[10] Tagname
AKT_D=R91
AKT_M=R92
AKT_Y=R93
; >>>>>>>>>>>>>>> Jahresdifferenz bezogen auf 2008
Dif_Y = AKT_Y - REF_Y
; >>>>>>>>>>>>>>> Anzahl von Schaltjahren aus der Differenz
Dif_D = REF_D_Nr + Dif_Y + TRUNC((Dif_Y-1) / 4) + 1
; >>>>>>>>>>>>>>> Wochentagsnummer aus der Differenz zu 2008
If Dif_Y > 0
TAG_Nr = (Dif_D) MOD 7
Else
TAG_Nr = REF_D_Nr
Endif
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; >>>>>>>>>> Anzahl Tage fr gesuchten Monat
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; >>>>>>>>>>>>>>>>> Eventuelles Schaltjahr + 1 Tag
PLUS_TAG = AKT_Y MOD 4
If (PLUS_TAG == 0)
TAG_ANZ[1]=SET(0,31,60,91,121,152,182,213,244,274,305,335)
Else
TAG_ANZ[1]=SET(0,31,59,90,120,151,181,212,243,273,304,334)
Endif
;
;>>>>>>>>>>>> Tagesangabe prüfen <<<<<<<
If AKT_M < 11
If AKT_D+TAG_ANZ[AKT_M] > TAG_ANZ[AKT_M+2]
MSG("Das Tages-Datum ist zu Groß "<<AKT_D)
M0
Stopre
GOTOF Ausgang
Endif
If AKT_D+TAG_ANZ[AKT_M] > TAG_ANZ[AKT_M+1]
AKT_D = AKT_D - (TAG_ANZ[AKT_M+1] - TAG_ANZ[AKT_M])
AKT_M = AKT_M +1
MSG("!!!! "<<AKT_D<<"."<<AKT_M<<"."<<AKT_Y<<" autom. Datum geändert")
M0
Stopre
M0
Endif
Endif
M0
stopre
M0
If AKT_M == 11
If AKT_D+TAG_ANZ[AKT_M] >= TAG_ANZ[12] + 31
MSG("Das Tages-Datum ist zu Groß "<<AKT_D)
M0
Stopre
GOTOF Ausgang
Endif
If AKT_D+TAG_ANZ[AKT_M] > TAG_ANZ[AKT_M+1]
AKT_D = AKT_D - (TAG_ANZ[AKT_M+1] - TAG_ANZ[AKT_M])
AKT_M = AKT_M +1
MSG("!!!! "<<AKT_D<<"."<<AKT_M<<"."<<AKT_Y<<" autom. Datum geändert")
M0
Stopre
Endif
Endif
If AKT_M == 12
If AKT_D+TAG_ANZ[AKT_M] >= TAG_ANZ[12]+31
AKT_D = 31
MSG("!!!! "<<AKT_D<<"."<<AKT_M<<"."<<AKT_Y<<" Tag auf 31. geändert")
M0
Stopre
Endif
Endif

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

; >>>>>>>>>>>>>> Was an Tage für eine Woche fehlt in der 1.Woche
Differenz = TAG_Nr - 1
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Wochentag=(TAG_ANZ[AKT_M] + AKT_D + Differenz+PLUS_TAG) MOD 7
R99=TRUNC((TAG_ANZ[AKT_M] + AKT_D + Differenz+PLUS_TAG) / 7)

; >>>>>>>>>> 0= Sonntag 1 Woche = MODwert 6->0
If Wochentag == 0
R99 = R99 -1
Endif

; >>>>>>>>>> 1.1. bis Donnerstag in der 1.Woche
If TAG_Nr < 5
R99 = R99 + 1
Endif
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; >>>>>>>>> Jahresende KW kann 1 52 53 sein
; >>>>>>>> Jahresbeginn am Donnerstag = 53 Wochen
; >>>>>>>>>>>>>>>>>>>>>> Sonst 52. Woche oder 1. Woche
If ((TAG_Nr <> 4) And (R99 == 53))
If (TAG_Nr > 4)
R99=R52
Else
R99=1
Endif
Endif
; >>>>>>>> oder am Mittwoch im Schaltjahr = 53 Wochen
If ((TAG_Nr == 3) And (Dif_Y MOD 4 <> 0) And (R99 == 53))
If (TAG_Nr > 4)
R99=R52
Else
R99=1
Endif
Endif
;
; >>>>>>>>>>>>>>>> Das Jahr kann mit der 1. 52. oder mit der 53. Woche enden und beginnen
; >>>>>>>>> Jahresbeginn KW kann 1 52 53 sein
If (TAG_ANZ[AKT_M]+AKT_D+Differenz<8)
If (TAG_Nr == 5)
R99=53
Endif
If (TAG_Nr > 5)
R99=52
Endif
IF (TAG_Nr < 5)
R99=1
Endif
Endif

; >>>>>>>>>>>>>>> Wochentagsausgabe
CASE Wochentag OF 1 GOTOF Montag 2 GOTOF Dienstag 3 GOTOF Mittwoch 4 GOTOF Donnerstag 5 GOTOF Freitag 6 GOTOF Samstag 0 GOTOF Sonntag Default GOTOF Fehler
Montag: Tagname="Montag"
Gotof End_Tag
Dienstag: Tagname="Dienstag"
Gotof End_Tag
Mittwoch: Tagname="Mittwoch"
Gotof End_Tag
Donnerstag: Tagname="Donnerstag"
Gotof End_Tag
Freitag: Tagname="Freitag"
Gotof End_Tag
Samstag: Tagname="Samstag"
Gotof End_Tag
Sonntag: Tagname="Sonntag"
Gotof End_Tag
Fehler: Tagname="Fehler"
End_Tag:
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;
AKT_Y = AKT_Y + 2000
MSG(<<AKT_D<<"."<<AKT_M<<"."<<AKT_Y<<" -- "<<Tagname<<" -- KW "<<R99)
AUSGANG:
M0
M17


Der Beitrag wurde von cnc-wolle bearbeitet: 13.05.2010, 08:58 Uhr
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 13.05.2010, 11:38 Uhr
 
 
nebbe
Level 6 = CNC-Arena-Doktor
******
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 14.06.2002
Beiträge: 816
Moin,
habe das Problem auch schon anderswo für gelöst.
Die letzendliche Formel ist Kalenderwoche = int(($yearday + $weekday - 1) / 7)
Also: rauskriegen, welcher Tag im Jahr ist, rauskriegen, welcher tag in der Woche ist - ausrechnen.
Ausnahmen einbeziehen: Sonntag; Schaltjahre; und dann mal bei Wikipedia schauen, wie die Definition der KW 1 ist. Gibt glaube ich drei Stück davon.
So wars bei mir.

t.
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 20.05.2010, 09:41 Uhr
 
 
cnc-wolle
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
Hallo Trollrne

Meine Bedingungen habe ich natürlich auch in Wiki gefunden.

Das Problem liegt aber, wie meistens, im Detail und den Möglichkeiten die einem in dem System zur Verfügung stehen. (und auch mit viel Geduld bis es letztlich schlüssig ist)

Den schwarzen Hintergrund des aktuellen Datums habe ich nur zum Test angefangen und müsste letztendlich noch zu Ende geführt werden.

In nächster Zeit habe ich etwas Größeres um die Ohren, deshalb breche ich erstmal ab.
Für die eine oder andere Frage ist aber immer Zeit.

Ich habe ein paar Bildchen mit Beispielen und die Maskendefinition “Dat_Kw.COM“ beigelegt.


Gruß
Wolle

//M(KaWo/"Kalenderwoche")
DEF LEER003 = (I///,"",,/,WR0,//""/530,,/400,,150/1,10)
Def JahrStr= (S///,"Jahres",,""/,WR0,//""/10,,/50,,90/10,1),
AKT_D = (I/1,28//,"Tag",,/,WR2,///150,,/180,,35/7,0),
AKT_M = (I/1,12//,"Monat",,/,WR2,///230,,/270,,35/7,0),
AKT_Y = (I/2000,2099//,"Jahr",,/,WR2,///310,,/340,,50/7,0),
REF_Str = (S///,"",,/,WR1,///440,,120/50,,90/3,9),
SchJahr = (S///,"",,/,WR2,///400,,120/460,,10/3,9)
Def TagStr = (S////WR1//""/,,/120,,100/6,0),
StartTag= (I///,"Anfang",,""/,WR0,//""/10,,/50,,90/6,0),
StartStr = (S////WR1//""/,,/50,,90/10,1),
MonStr = (S////WR1//""/,,/210,,90/6,0),
XTag = (I///,"JahresTag",,/,WR1,//""/310,,100/370,,40/6,0),
KaWo = (I///,"KW",,/,WR1//""/410,,/430,,40/6,0)
Def EndStr= (S///,"Ende",,""/,WR1,//""/20,,/50,,90/10,1)
DEF LEER023 = (I///,"",,/,WR0,//""/530,,/400,,150/1,10)
;
; >>>>>>>>>>>> Berechnungsparameter <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
DEF MonDiff = (R///,"MonDiff",,/,WR1,//""/230,,/300,,90/1,10),
MonDif = (I///,"",,/,WR0,//""/,,/,,/),
MonAnf = (I///,"",,/,WR0,//""/,,/,,/),
MonEnd = (I///,"",,/,WR0,//""/,,/,,/),
REF_D = (I///,"",,/,WR0,//""/,,/,,/),
REF_Y = (I///,"",,/,WR0,//""/,,/,,/),
DIF_D = (I///,"",,/,WR0,//""/,,/,,/),
DIF_Y = (I///,"",,/,WR0,//""/,,/,,/),
DIF_S = (I///,"",,/,WR0,//""/,,/,,/),
DIF_SM = (I///,"",,/,WR0,//""/,,/,,/),
KaWo_SM = (I///,"",,/,WR0,//""/,,/,,/),
MonLang = (I///,"",,/,WR0,//""/,,/,,/),
MoKaWo = (I///,"",,/,WR0,//""/,,/,,/),
MoKaWo_SM = (I///,"",,/,WR0,//""/,,/,,/),
Differenz= (I///,"",,/,WR0,//""/,,/,,/),
TMP01 = (I///,"",,/,WR0,//""/,,/,,/),
TMP11 = (I///,"",,/,WR0,//""/,,/,,/),
TMP12 = (I///,"",,/,WR0,//""/,,/,,/),
TagNr = (I///,"",,/,WR0,//""/,,/,,/1)
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
DEF MonAkt = (S////WR1//""/,,/210,,90/7,0),
JahrAkt = (S////WR1//""/,,/280,,50/7,0)
DEF Lin01 = (S///,"-------------------------------------------------",,/,WR1,//""/190,,300/,,/0,0)
DEF KWStr = (s///,,,/,WR1//""/,,/150,,40/1,0),
MoStr = (s///,,,/,WR1//""/,,/190,,40/1,0),
DiStr = (s///,,,/,WR1//""/,,/220,,40/1,0),
MiStr = (s///,,,/,WR1//""/,,/250,,40/1,0),
DoStr = (s///,,,/,WR1//""/,,/280,,40/1,0),
FrStr = (s///,,,/,WR1//""/,,/310,,40/1,0),
SaStr = (s///,,,/,WR1//""/,,/340,,40/1,0),
SoStr = (s///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt1 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz1 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz2 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz3 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz4 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz5 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz6 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz7 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt2 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz8 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz9 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz10 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz11 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz12 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz13 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz14 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt3 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz15 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz16 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz17 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz18 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz19 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz20 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz21 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt4 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz22 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz23 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz24 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz25 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz26 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz27 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz28 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt5 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz29 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz30 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz31 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz32 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz33 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz34 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz35 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt6 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz36 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz37 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz38 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz39 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz40 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz41 = (I///,,,/,WR0//""/,,/340,,40/1,10),
TagPlatz42 = (I///,,,/,WR0//""/,,/370,,40/1,9)

HS1=("",,se2)
HS2=("",,se2)
HS3=("",,se2)
HS4=("",,se2)
HS5=("",,se2)
HS6=("",,se2)
HS7=("",,se2)
HS8=("",,se2)
VS1=("",,se1)
VS2=("",,se1)
VS3=("",,se1)
VS4=("",,se1)
VS5=("",,se1)
VS6=("",,se1)
VS7=("",,se1)
VS8=("Ausgang",,se1)

LOAD
KWStr.val="KW"
MoStr.val="Mo"
DiStr.val="Di"
MiStr.val="MI"
DoStr.val="Do"
FrStr.val="Fr"
SaStr.val="Sa"
SoStr.val="So"
REF_D.val=6
REF_Y.val=2000
REF_Str.val="Referenzjahr"
TagNr.val=REF_D
Differenz.val=TagNr-1
MonDif.val=Differenz
AKT_D.val=1
AKT_D.max=31
AKT_M.val=1
AKT_Y.val=REF_Y.val
KaWo.val=52
MoKaWo=52
MonAnf=KaWo
StartTag.val = REF_D.val
StartStr.val = Tag_Jahr[1,StartTag,1]
EndStr.val = Tag_Jahr[1,StartTag,1]
TagStr.val = Tag_Jahr[1,StartTag,1]
MonStr.val = Tag_Jahr[2,AKT_M,1]
XTag.val = 1
SchJahr.st="Schaltjahr"
SchJahr.val=1
; >>>>>>>>>>>>>>>>>>>
CALL("Monat")
END_LOAD


press(VS8)
EXIT
END_PRESS

PRESS(RECALL)
EXIT
END_PRESS


FOCUS
; >>>>>>>>>> Jahresbeginn-Wochentag errechnen <<<<<<<<<<<<<<<<<<
Dif_Y = AKT_Y-REF_Y
Dif_S = Dif_Y / 4
Dif_SM = Dif_S MOD 1
If Dif_Y > 0
Ref_Str.wr=0
If Dif_S <= 1
StartTag= (REF_D + Dif_Y) MOD 7 + 1
Else
If Dif_SM == 0
StartTag= (REF_D + Dif_Y + Dif_S ) MOD 7
Else
StartTag= (REF_D + Dif_Y + Dif_S - Dif_SM) MOD 7 + 1
Endif
Endif
Else
StartTag=REF_D
Ref_Str.wr=1
Endif
StartStr.val = Tag_Jahr[1,StartTag,1]
EndStr.val = Tag_Jahr[1,StartTag,1]
Differenz= StartTag - 1
; >>>>>>>> Monats- -Name -Starttag -Jahrestag -Schaltjahr
If (AKT_Y MOD 4 == 0)
MonStr.val = Tag_Jahr[2,AKT_M,1]
MonDiff = Tag_Anz[2,AKT_M,1]
MonEnd = Tag_Anz[2,AKT_M,1]
MonLang = Tag_Anz[4,AKT_M,1]
AKT_D.max=MonLang
XTag.val = MonDiff + AKT_D
SchJahr.st="Schaltjahr"
SchJahr.val="J"
If StartTag >= 7
EndStr.val = Tag_Jahr[1,1,1]
Else
EndStr.val = Tag_Jahr[1,StartTag+1,1]
Endif
Else
MonStr.val = Tag_Jahr[2,AKT_M,1]
MonDiff.val = Tag_Anz[1,AKT_M,1]
MonEnd.val = Tag_Anz[1,AKT_M,1]
MonLang = Tag_Anz[3,AKT_M,1]
AKT_D.max=MonLang
XTag.val = MonDiff + AKT_D
SchJahr.st=""
SchJahr.val="N"
Endif
; >>>>> Tagesnummer von 1-6 + 0=Sonntag <<<<<<<<<<
TagNr.val= (Differenz+Xtag) MOD 7
If TagNr == 0
TagStr.val = Tag_Jahr[1,7,1]
Else
TagStr.val = Tag_Jahr[1,TagNr,1]
Endif
; >>>>>>>> Wochentags Nummer Monatsstartnummer
MonDif.val=(Differenz+MonDiff) MOD 7
If MonDif == 7
MonDif = 0
Endif
TagPlatz41.val=MonDif
;
; >>>>>>>>>>> KW rechnen >>>>>>>>
;
TMP11.val = (Differenz + XTag) / 7
KaWo_SM.val = TMP11 MOD 1
KaWo.val = TMP11 - KaWo_SM
If StartTag < 5
KaWo.val=KaWo.val + 1
Endif
If (TagNr == 0)
KaWo.val=KaWo.val - 1
Endif

TMP12.val = (Differenz + MonDiff) / 7
MoKaWo_SM.val = TMP12 MOD 1
MoKaWo.val = TMP12 - MoKaWo_SM
If StartTag < 5
MoKaWo.val=MoKaWo.val + 1
Endif
If MoKaWo == 0
MoKaWo=1
Endif
;
KWInt1.val=MoKaWo
KWInt2.val=MoKaWo+1
KWInt3.val=MoKaWo+2
KWInt4.val=MoKaWo+3
KWInt5.val=MoKaWo+4
KWInt6.val=MoKaWo+5
;
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jahresende <<<<<<<<
If (StartTag <> 4) And (KaWo == 53)
If StartTag > 4
KaWo.val = 52
Else
KaWo.val = 1
Endif
Endif
If (StartTag == 3) And (KaWo == 53) And (Dif_Y MOD 4 <> 0)
If StartTag > 4
KaWo.val = 52
Else
KaWo.val = 1
Endif
Endif
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jahresanfang <<<<<<<<
If (Differenz + XTag) < 8
If StartTag == 5
KaWo.val = 53
KWInt1.val=53
KWInt2.val=MoKaWo
KWInt3.val=MoKaWo+1
KWInt4.val=MoKaWo+2
KWInt5.val=MoKaWo+3
KWInt6.val=MoKaWo+4
Endif
If StartTag > 5
KaWo.val = 52
KWInt1.val=52
KWInt2.val=MoKaWo
KWInt3.val=MoKaWo+1
KWInt4.val=MoKaWo+2
KWInt5.val=MoKaWo+3
KWInt6.val=MoKaWo+4
Endif
If StartTag < 5
KaWo.val = 1
If MoKaWo == 0 )
MoKaWo = 1
Endif
KWInt1.val=MoKaWo
KWInt2.val=MoKaWo+1
KWInt3.val=MoKaWo+2
KWInt4.val=MoKaWo+3
KWInt5.val=MoKaWo+4
KWInt6.val=MoKaWo+5
Endif
Endif
MonAkt.val=MonStr.val
JahrAkt.val=AKT_Y.val
Call("Monat")
END_FOCUS
; ==================== Unterprogramme =============
SUB(Monat)
; >>>>>>> Monatstage auffuellen <<<<<<<
TagPlatz1.val=1-MonDif
TagPlatz2.val=2-MonDif
TagPlatz3.val=3-MonDif
TagPlatz4.val=4-MonDif
TagPlatz5.val=5-MonDif
TagPlatz6.val=6-MonDif
If TagPlatz1.val <= 0
TagPlatz1.fc = 10
TagPlatz1.wr = 0
Else
If AKT_D == 1-MonDif
TagPlatz1.fc = 10
TagPlatz1.bc = 1
Else
TagPlatz1.fc = 1
TagPlatz1.bc = 10
Endif
TagPlatz1.wr = 1
Endif
If TagPlatz2.val <= 0
TagPlatz2.fc = 10
TagPlatz2.wr = 0
Else
If AKT_D == 2-MonDif
TagPlatz2.fc = 10
TagPlatz2.bc = 1
Else
TagPlatz2.fc = 1
TagPlatz2.bc = 10
Endif
TagPlatz2.wr = 1
Endif
If TagPlatz3.val <= 0
TagPlatz3.fc = 10
TagPlatz3.wr = 0
Else
If AKT_D == 3-MonDif
TagPlatz3.fc = 10
TagPlatz3.bc = 1
Else
TagPlatz3.fc = 1
TagPlatz3.bc = 10
Endif
TagPlatz3.wr = 1
Endif
If TagPlatz4.val <= 0
TagPlatz4.fc = 10
TagPlatz4.wr = 0
Else
If AKT_D == 4-MonDif
TagPlatz4.fc = 10
TagPlatz4.bc = 1
Else
TagPlatz4.fc = 1
TagPlatz4.bc = 10
Endif
TagPlatz4.wr = 1
Endif
If TagPlatz5.val <= 0
TagPlatz5.fc = 10
TagPlatz5.wr = 0
Else
If AKT_D == 5-MonDif
TagPlatz5.fc = 10
TagPlatz5.bc = 1
Else
TagPlatz5.fc = 1
TagPlatz5.bc = 10
Endif
TagPlatz5.wr = 1
Endif
If TagPlatz6.val <= 0
TagPlatz6.fc = 10
TagPlatz6.wr = 0
Else
If AKT_D == 6-MonDiff
TagPlatz6.fc = 10
TagPlatz6.bc = 1
Else
TagPlatz6.fc = 1
TagPlatz6.bc = 10
Endif
TagPlatz6.wr = 1
Endif
TagPlatz7.val=7-MonDif
If AKT_D == 7-MonDif
TagPlatz7.fc = 10
TagPlatz7.bc = 1
Else
TagPlatz7.fc = 1
TagPlatz7.bc = 9
Endif
TagPlatz8.val=8-MonDif
If AKT_D == 8-MonDif
TagPlatz8.fc = 10
TagPlatz8.bc = 1
Else
TagPlatz8.fc = 1
TagPlatz8.bc = 10
Endif
TagPlatz9.val=9-MonDif
If AKT_D == 9-MonDif
TagPlatz9.fc = 10
TagPlatz9.bc = 1
Else
TagPlatz9.fc = 1
TagPlatz9.bc = 10
Endif
TagPlatz10.val=10-MonDif
TagPlatz11.val=11-MonDif
TagPlatz12.val=12-MonDif
TagPlatz13.val=13-MonDif
TagPlatz14.val=14-MonDif
TagPlatz15.val=15-MonDif
TagPlatz16.val=16-MonDif
TagPlatz17.val=17-MonDif
TagPlatz18.val=18-MonDif
TagPlatz19.val=19-MonDif
TagPlatz20.val=20-MonDif
TagPlatz21.val=21-MonDif
TagPlatz22.val=22-MonDif
If AKT_D == 22-MonDif
TagPlatz22.fc = 10
TagPlatz22.bc = 1
Else
TagPlatz22.fc = 1
TagPlatz22.bc = 10
Endif
TagPlatz23.val=23-MonDif
TagPlatz24.val=24-MonDif
TagPlatz25.val=25-MonDif
TagPlatz26.val=26-MonDif
TagPlatz27.val=27-MonDif
TagPlatz28.val=28-MonDif
If MonLang + MonDif >= 29
TagPlatz29.val=29-MonDif
TagPlatz29.fc = 1
TagPlatz29.wr = 1
Else
TagPlatz29.bc =10
TagPlatz29.wr =0
Endif
If MonLang + MonDif >= 30
TagPlatz30.val=30-MonDif
TagPlatz30.fc = 1
TagPlatz30.wr = 1
Else
TagPlatz30.val=29-MonDif
TagPlatz30.fc = 10
TagPlatz30.wr = 0
Endif
If MonLang + MonDif >= 31
TagPlatz31.val=31-MonDif
TagPlatz31.fc = 1
TagPlatz31.wr = 1
Else
TagPlatz31.fc = 10
TagPlatz31.wr = 0
Endif
If MonLang + MonDif >= 32
TagPlatz32.val=32-MonDif
TagPlatz32.fc = 1
TagPlatz32.wr = 1
Else
TagPlatz32.fc = 10
TagPlatz32.wr = 0
Endif
If MonLang + MonDif >= 33
TagPlatz33.val=33-MonDif
TagPlatz33.fc = 1
TagPlatz33.wr = 1
Else
TagPlatz33.fc = 10
TagPlatz33.wr = 0
Endif
If MonLang + MonDif >= 34
TagPlatz34.val=34-MonDif
TagPlatz34.fc = 1
TagPlatz34.wr = 1
Else
TagPlatz34.fc = 10
TagPlatz34.wr = 0
Endif
If MonLang + MonDif >= 35
TagPlatz35.val=35-MonDif
TagPlatz35.fc = 1
TagPlatz35.wr = 1
Else
TagPlatz35.fc = 10
TagPlatz35.wr = 0
Endif
If MonLang + MonDif >= 36
TagPlatz36.val=36-MonDif
TagPlatz36.fc = 1
TagPlatz36.wr = 1
Else
TagPlatz36.fc = 10
TagPlatz36.wr = 0
Endif
If MonLang + MonDif >= 37
TagPlatz37.val=37-MonDif
TagPlatz37.fc = 1
TagPlatz37.wr = 1
Else
TagPlatz37.wr = 0
Endif
Endif
If MonLang + MonDif >= 38
TagPlatz38.val=38-MonDif
TagPlatz38.fc = 1
TagPlatz38.wr = 1
Else
TagPlatz38.wr = 0
Endif
Endif
If MonLang + MonDif >= 39
TagPlatz39.val=39-MonDif
TagPlatz39.fc = 1
TagPlatz39.wr = 1
Else
TagPlatz39.wr = 0
Endif
Endif
Endif
If MonLang + MonDif >= 40
TagPlatz40.fc = 1
TagPlatz40.wr = 1
Else
TagPlatz40.wr = 0
Endif
Endif
Endif
END_SUB
//end
;====================== Daten ============
;
//A(Tag_Jahr)
(1/"Montag"/"Dienstag"/"Mittwoch"/"Donnerstag"/"Freitag"/"Samstag"/"Sonntag"/0/0/0/0/0)
(2/"Januar"/"Februar"/"Maerz"/"April"/"Mai"/"Juni"/"Juli"/"August"/"September"/"Oktober"/"November"/"Dezember")
//END
//A(Tag_Anz)
(1/0/31/59/90/120/151/181/212/243/273/304/334)
(2/0/31/60/91/121/152/182/213/244/274/305/335)
(3/31/28/31/30/31/30/31/31/30/31/30/31)
(4/31/29/31/30/31/30/31/31/30/31/30/31)
//END


Der Beitrag wurde von cnc-wolle bearbeitet: 20.05.2010, 09:44 Uhr
Angehängte Datei(en)
Angehängte Datei  beispiel01.jpg ( 518.17KB ) Anzahl der Downloads: 60
Angehängte Datei  schaltjahr.jpg ( 622.51KB ) Anzahl der Downloads: 58
 
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 21.05.2010, 08:51 Uhr
 
 
cnc-wolle
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
Hi

Habe noch ein Haar in der Suppe gefunden.

Wenn der Monat mit KW 52/53 und der Tag startet in der 1. Zeile ---> dann war es o.K.
Wenn der Tag in der 2. bis 6. Zeile kam es zu einem Fehler ---> die KW 52/53 war weg.
Diese KW-Zeilen waren nur innerhalb der Startwoche definiert.

Die Definition findet jetzt gesondert statt in einem eigenen If Monat Januar ---> dann kommt die richtige Ausgabe
(siehe Änderungsfarben)

Kleine Zugabe mit 2 Button Monat Auf/Ab auf Knopfdruck.

geändert ....... gelöscht........hinzu


;;; Version 2.0
;;; 21.5.10 Monatsuebersicht KW 6 Zeilen ge„ndert
;;; 2 Button Monat- -Auf -Ab hinzu
//M(KaWo/"Kalenderwoche")
DEF LEER003 = (I///,"",,/,WR0,//""/530,,/400,,150/1,10)
Def JahrStr= (S///,"Jahres",,""/,WR0,//""/10,,/50,,90/10,1),
AKT_D = (I/1,28//,"Tag",,/,WR2,///150,,/180,,35/7,0),
AKT_M = (I/1,12//,"Monat",,/,WR2,///230,,/270,,35/7,0),
AKT_Y = (I/2000,2099//,"Jahr",,/,WR2,///310,,/340,,50/7,0),
REF_Str = (S///,"",,/,WR1,///440,,120/50,,90/3,9),
SchJahr = (S///,"",,/,WR2,///400,,120/460,,10/3,9)
Def TagStr = (S////WR1//""/,,/120,,100/6,0),
StartTag= (I///,"Anfang",,""/,WR0,//""/10,,/50,,90/6,0),
StartStr = (S////WR1//""/,,/50,,90/10,1),
MonStr = (S////WR1//""/,,/210,,90/6,0),
XTag = (I///,"JahresTag",,/,WR1,//""/310,,100/370,,40/6,0),
KaWo = (I///,"KW",,/,WR1//""/410,,/430,,40/6,0)
Def EndStr= (S///,"Ende",,""/,WR1,//""/20,,/50,,90/10,1)
DEF LEER023 = (I///,"",,/,WR0,//""/530,,/400,,150/1,10)
;
; >>>>>>>>>>>> Berechnungsparameter <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
DEF MonDiff = (R///,"",,/,WR0,//""/230,,/300,,90/1,10),
MonDif = (I///,"",,/,WR0,//""/,,/,,/),
MonAnf = (I///,"",,/,WR0,//""/,,/,,/),
MonEnd = (I///,"",,/,WR0,//""/,,/,,/),
REF_D = (I///,"",,/,WR0,//""/,,/,,/),
REF_Y = (I///,"",,/,WR0,//""/,,/,,/),
DIF_D = (I///,"",,/,WR0,//""/,,/,,/),
DIF_Y = (I///,"",,/,WR0,//""/,,/,,/),
DIF_S = (I///,"",,/,WR0,//""/,,/,,/),
DIF_SM = (I///,"",,/,WR0,//""/,,/,,/),
KaWo_SM = (I///,"",,/,WR0,//""/,,/,,/),
MonLang = (I///,"",,/,WR0,//""/,,/,,/),
MoKaWo = (I///,"",,/,WR0,//""/,,/,,/),
MoKaWo_SM = (I///,"",,/,WR0,//""/,,/,,/),
Differenz= (I///,"",,/,WR0,//""/,,/,,/),
TMP01 = (I///,"",,/,WR0,//""/,,/,,/),
TMP11 = (I///,"",,/,WR0,//""/,,/,,/),
TMP12 = (I///,"",,/,WR0,//""/,,/,,/),
TagNr = (I///,"",,/,WR0,//""/,,/,,/1)
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
DEF MonAkt = (S////WR1//""/,,/210,,90/7,0),
JahrAkt = (S////WR1//""/,,/280,,50/7,0)
DEF Lin01 = (S///,"-------------------------------------------------",,/,WR1,//""/190,,300/,,/0,0)
DEF KWStr = (s///,,,/,WR1//""/,,/150,,40/1,0),
MoStr = (s///,,,/,WR1//""/,,/190,,40/1,0),
DiStr = (s///,,,/,WR1//""/,,/220,,40/1,0),
MiStr = (s///,,,/,WR1//""/,,/250,,40/1,0),
DoStr = (s///,,,/,WR1//""/,,/280,,40/1,0),
FrStr = (s///,,,/,WR1//""/,,/310,,40/1,0),
SaStr = (s///,,,/,WR1//""/,,/340,,40/1,0),
SoStr = (s///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt1 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz1 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz2 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz3 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz4 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz5 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz6 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz7 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt2 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz8 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz9 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz10 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz11 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz12 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz13 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz14 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt3 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz15 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz16 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz17 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz18 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz19 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz20 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz21 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt4 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz22 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz23 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz24 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz25 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz26 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz27 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz28 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt5 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz29 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz30 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz31 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz32 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz33 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz34 = (I///,,,/,WR1//""/,,/340,,40/1,10),
TagPlatz35 = (I///,,,/,WR1//""/,,/370,,40/1,9)
DEF KWInt6 = (I///,,,/,WR1//""/,,/150,,40/6,10),
TagPlatz36 = (I///,,,/,WR1//""/,,/190,,40/1,10),
TagPlatz37 = (I///,,,/,WR1//""/,,/220,,40/1,10),
TagPlatz38 = (I///,,,/,WR1//""/,,/250,,40/1,10),
TagPlatz39 = (I///,,,/,WR1//""/,,/280,,40/1,10),
TagPlatz40 = (I///,,,/,WR1//""/,,/310,,40/1,10),
TagPlatz41 = (I///,,,/,WR0//""/,,/340,,40/1,10),
TagPlatz42 = (I///,,,/,WR0//""/,,/370,,40/1,9)

HS1=("",,se2)
HS2=("",,se2)
HS3=("",,se2)
HS4=("",,se2)
HS5=("",,se2)
HS6=("",,se2)
HS7=("",,se2)
HS8=("",,se2)
VS1=("",,se1)
VS2=("Monat +auf+",,se1)
VS3=("Monat -ab- ",,se1)
VS4=("",,se1)
VS5=("",,se1)
VS6=("",,se1)
VS7=("",,se1)
VS8=("Ausgang",,se1)

LOAD
KWStr.val="KW"
MoStr.val="Mo"
DiStr.val="Di"
MiStr.val="MI"
DoStr.val="Do"
FrStr.val="Fr"
SaStr.val="Sa"
SoStr.val="So"
REF_D.val=6
REF_Y.val=2000
REF_Str.val="Referenzjahr"
TagNr.val=REF_D
Differenz.val=TagNr-1
MonDif.val=Differenz
AKT_D.val=1
AKT_D.max=31
AKT_M.val=1
AKT_Y.val=REF_Y.val
KaWo.val=52
MoKaWo=52
MonAnf=KaWo
StartTag.val = REF_D.val
StartStr.val = Tag_Jahr[1,StartTag,1]
EndStr.val = Tag_Jahr[1,StartTag,1]
TagStr.val = Tag_Jahr[1,StartTag,1]
MonStr.val = Tag_Jahr[2,AKT_M,1]
XTag.val = 1
SchJahr.st="Schaltjahr"
SchJahr.val=1
; >>>>>>>>>>>>>>>>>>>
CALL("Monat")
END_LOAD



press(VS2)
FOC = "AKT_M"
AKT_M = AKT_M + 1
Endif
FOC = "AKT_Y"
END_PRESS
press(VS3)
FOC = "AKT_M"
AKT_M = AKT_M - 1
Endif
FOC = "AKT_Y"
END_PRESS

press(VS8)
EXIT
END_PRESS

PRESS(RECALL)
EXIT
END_PRESS


FOCUS

If AKT_M > 12
AKT_M = 1
Endif
If AKT_M < 1
AKT_M = 12
Endif

; >>>>>>>>>> Jahresbeginn-Wochentag errechnen <<<<<<<<<<<<<<<<<<
Dif_Y = AKT_Y-REF_Y
Dif_S = Dif_Y / 4
Dif_SM = Dif_S MOD 1
If Dif_Y > 0
Ref_Str.wr=0
If Dif_S <= 1
StartTag= (REF_D + Dif_Y) MOD 7 + 1
Else
If Dif_SM == 0
StartTag= (REF_D + Dif_Y + Dif_S ) MOD 7
Else
StartTag= (REF_D + Dif_Y + Dif_S - Dif_SM) MOD 7 + 1
Endif
Endif
Else
StartTag=REF_D
Ref_Str.wr=1
Endif
StartStr.val = Tag_Jahr[1,StartTag,1]
EndStr.val = Tag_Jahr[1,StartTag,1]
Differenz= StartTag - 1
; >>>>>>>> Monats- -Name -Starttag -Jahrestag -Schaltjahr
If (AKT_Y MOD 4 == 0)
MonStr.val = Tag_Jahr[2,AKT_M,1]
MonDiff = Tag_Anz[2,AKT_M,1]
MonEnd = Tag_Anz[2,AKT_M,1]
MonLang = Tag_Anz[4,AKT_M,1]
AKT_D.max=MonLang
XTag.val = MonDiff + AKT_D
SchJahr.st="Schaltjahr"
SchJahr.val="J"
If StartTag >= 7
EndStr.val = Tag_Jahr[1,1,1]
Else
EndStr.val = Tag_Jahr[1,StartTag+1,1]
Endif
Else
MonStr.val = Tag_Jahr[2,AKT_M,1]
MonDiff.val = Tag_Anz[1,AKT_M,1]
MonEnd.val = Tag_Anz[1,AKT_M,1]
MonLang = Tag_Anz[3,AKT_M,1]
AKT_D.max=MonLang
XTag.val = MonDiff + AKT_D
SchJahr.st=""
SchJahr.val="N"
Endif
; >>>>> Tagesnummer von 1-6 + 0=Sonntag <<<<<<<<<<
TagNr.val= (Differenz+Xtag) MOD 7
If TagNr == 0
TagStr.val = Tag_Jahr[1,7,1]
Else
TagStr.val = Tag_Jahr[1,TagNr,1]
Endif
; >>>>>>>> Wochentags Nummer Monatsstartnummer
MonDif.val=(Differenz+MonDiff) MOD 7
If MonDif == 7
MonDif = 0
Endif
TagPlatz41.val=MonDif
;
; >>>>>>>>>>> KW rechnen >>>>>>>>
;
TMP11.val = (Differenz + XTag) / 7
KaWo_SM.val = TMP11 MOD 1
KaWo.val = TMP11 - KaWo_SM
If StartTag < 5
KaWo.val=KaWo.val + 1
Endif
If (TagNr == 0)
KaWo.val=KaWo.val - 1
Endif

TMP12.val = (Differenz + MonDiff) / 7
MoKaWo_SM.val = TMP12 MOD 1
MoKaWo.val = TMP12 - MoKaWo_SM
If StartTag < 5
MoKaWo.val=MoKaWo.val + 1
Endif
If MoKaWo == 0
MoKaWo=1
Endif
;
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jahresende <<<<<<<<
If (StartTag <> 4) And (KaWo == 53)
If StartTag > 4
KaWo.val = 52
Else
KaWo.val = 1
Endif
Endif
If (StartTag == 3) And (KaWo == 53) And (Dif_Y MOD 4 <> 0)
If StartTag > 4
KaWo.val = 52
Else
KaWo.val = 1
Endif
Endif


; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jahresanfang <<<<<<<<
If (Differenz + XTag) < 8
If StartTag == 5
KaWo.val = 53
Endif
If StartTag > 5
KaWo.val = 52
Endif
If StartTag < 5
KaWo.val = 1
Endif

MonAkt.val=MonStr.val
JahrAkt.val=AKT_Y.val
Call("Monat")
END_FOCUS
; ==================== Unterprogramme =============
SUB(Monat)

If AKT_M == 1
If StartTag == 5
KWInt1.val=53
KWInt2.val=MoKaWo
KWInt3.val=MoKaWo+1
KWInt4.val=MoKaWo+2
KWInt5.val=MoKaWo+3
KWInt6.val=MoKaWo+4
Endif
If StartTag > 5
KWInt1.val=52
KWInt2.val=MoKaWo
KWInt3.val=MoKaWo+1
KWInt4.val=MoKaWo+2
KWInt5.val=MoKaWo+3
KWInt6.val=MoKaWo+4
Endif
If StartTag < 5
KWInt1.val=MoKaWo
KWInt2.val=MoKaWo+1
KWInt3.val=MoKaWo+2
KWInt4.val=MoKaWo+3
KWInt5.val=MoKaWo+4
KWInt6.val=MoKaWo+5
Endif
Else
KWInt1.val=MoKaWo
KWInt2.val=MoKaWo+1
KWInt3.val=MoKaWo+2
KWInt4.val=MoKaWo+3
KWInt5.val=MoKaWo+4
KWInt6.val=MoKaWo+5
Endif
; >>>>>>> Monatstage auffuellen <<<<<<<
TagPlatz1.val=1-MonDif
TagPlatz2.val=2-MonDif
TagPlatz3.val=3-MonDif
TagPlatz4.val=4-MonDif
TagPlatz5.val=5-MonDif
TagPlatz6.val=6-MonDif
If TagPlatz1.val <= 0
TagPlatz1.fc = 10
TagPlatz1.wr = 0
Else
If AKT_D == 1-MonDif
TagPlatz1.fc = 10
TagPlatz1.bc = 1
Else
TagPlatz1.fc = 1
TagPlatz1.bc = 10
Endif
TagPlatz1.wr = 1
Endif
If TagPlatz2.val <= 0
TagPlatz2.fc = 10
TagPlatz2.wr = 0
Else
If AKT_D == 2-MonDif
TagPlatz2.fc = 10
TagPlatz2.bc = 1
Else
TagPlatz2.fc = 1
TagPlatz2.bc = 10
Endif
TagPlatz2.wr = 1
Endif
If TagPlatz3.val <= 0
TagPlatz3.fc = 10
TagPlatz3.wr = 0
Else
If AKT_D == 3-MonDif
TagPlatz3.fc = 10
TagPlatz3.bc = 1
Else
TagPlatz3.fc = 1
TagPlatz3.bc = 10
Endif
TagPlatz3.wr = 1
Endif
If TagPlatz4.val <= 0
TagPlatz4.fc = 10
TagPlatz4.wr = 0
Else
If AKT_D == 4-MonDif
TagPlatz4.fc = 10
TagPlatz4.bc = 1
Else
TagPlatz4.fc = 1
TagPlatz4.bc = 10
Endif
TagPlatz4.wr = 1
Endif
If TagPlatz5.val <= 0
TagPlatz5.fc = 10
TagPlatz5.wr = 0
Else
If AKT_D == 5-MonDif
TagPlatz5.fc = 10
TagPlatz5.bc = 1
Else
TagPlatz5.fc = 1
TagPlatz5.bc = 10
Endif
TagPlatz5.wr = 1
Endif
If TagPlatz6.val <= 0
TagPlatz6.fc = 10
TagPlatz6.wr = 0
Else
If AKT_D == 6-MonDiff
TagPlatz6.fc = 10
TagPlatz6.bc = 1
Else
TagPlatz6.fc = 1
TagPlatz6.bc = 10
Endif
TagPlatz6.wr = 1
Endif
TagPlatz7.val=7-MonDif
If AKT_D == 7-MonDif
TagPlatz7.fc = 10
TagPlatz7.bc = 1
Else
TagPlatz7.fc = 1
TagPlatz7.bc = 9
Endif
TagPlatz8.val=8-MonDif
If AKT_D == 8-MonDif
TagPlatz8.fc = 10
TagPlatz8.bc = 1
Else
TagPlatz8.fc = 1
TagPlatz8.bc = 10
Endif
TagPlatz9.val=9-MonDif
If AKT_D == 9-MonDif
TagPlatz9.fc = 10
TagPlatz9.bc = 1
Else
TagPlatz9.fc = 1
TagPlatz9.bc = 10
Endif
TagPlatz10.val=10-MonDif
TagPlatz11.val=11-MonDif
TagPlatz12.val=12-MonDif
TagPlatz13.val=13-MonDif
TagPlatz14.val=14-MonDif
TagPlatz15.val=15-MonDif
TagPlatz16.val=16-MonDif
TagPlatz17.val=17-MonDif
TagPlatz18.val=18-MonDif
TagPlatz19.val=19-MonDif
TagPlatz20.val=20-MonDif
TagPlatz21.val=21-MonDif
TagPlatz22.val=22-MonDif
If AKT_D == 22-MonDif
TagPlatz22.fc = 10
TagPlatz22.bc = 1
Else
TagPlatz22.fc = 1
TagPlatz22.bc = 10
Endif
TagPlatz23.val=23-MonDif
TagPlatz24.val=24-MonDif
TagPlatz25.val=25-MonDif
TagPlatz26.val=26-MonDif
TagPlatz27.val=27-MonDif
TagPlatz28.val=28-MonDif
If MonLang + MonDif >= 29
TagPlatz29.val=29-MonDif
TagPlatz29.fc = 1
TagPlatz29.wr = 1
Else
TagPlatz29.bc =10
TagPlatz29.wr =0
Endif
If MonLang + MonDif >= 30
TagPlatz30.val=30-MonDif
TagPlatz30.fc = 1
TagPlatz30.wr = 1
Else
TagPlatz30.val=29-MonDif
TagPlatz30.fc = 10
TagPlatz30.wr = 0
Endif
If MonLang + MonDif >= 31
TagPlatz31.val=31-MonDif
TagPlatz31.fc = 1
TagPlatz31.wr = 1
Else
TagPlatz31.fc = 10
TagPlatz31.wr = 0
Endif
If MonLang + MonDif >= 32
TagPlatz32.val=32-MonDif
TagPlatz32.fc = 1
TagPlatz32.wr = 1
Else
TagPlatz32.fc = 10
TagPlatz32.wr = 0
Endif
If MonLang + MonDif >= 33
TagPlatz33.val=33-MonDif
TagPlatz33.fc = 1
TagPlatz33.wr = 1
Else
TagPlatz33.fc = 10
TagPlatz33.wr = 0
Endif
If MonLang + MonDif >= 34
TagPlatz34.val=34-MonDif
TagPlatz34.fc = 1
TagPlatz34.wr = 1
Else
TagPlatz34.fc = 10
TagPlatz34.wr = 0
Endif
If MonLang + MonDif >= 35
TagPlatz35.val=35-MonDif
TagPlatz35.fc = 1
TagPlatz35.wr = 1
Else
TagPlatz35.fc = 10
TagPlatz35.wr = 0
Endif
If MonLang + MonDif >= 36
TagPlatz36.val=36-MonDif
TagPlatz36.fc = 1
TagPlatz36.wr = 1
Else
TagPlatz36.fc = 10
TagPlatz36.wr = 0
Endif
If MonLang + MonDif >= 37
TagPlatz37.val=37-MonDif
TagPlatz37.fc = 1
TagPlatz37.wr = 1
Else
TagPlatz37.wr = 0
Endif
Endif
If MonLang + MonDif >= 38
TagPlatz38.val=38-MonDif
TagPlatz38.fc = 1
TagPlatz38.wr = 1
Else
TagPlatz38.wr = 0
Endif
Endif
If MonLang + MonDif >= 39
TagPlatz39.val=39-MonDif
TagPlatz39.fc = 1
TagPlatz39.wr = 1
Else
TagPlatz39.wr = 0
Endif
Endif
Endif
If MonLang + MonDif >= 40
TagPlatz40.fc = 1
TagPlatz40.wr = 1
Else
TagPlatz40.wr = 0
Endif
Endif
Endif
END_SUB
//end
;====================== Daten ============
;
//A(Tag_Jahr)
(1/"Montag"/"Dienstag"/"Mittwoch"/"Donnerstag"/"Freitag"/"Samstag"/"Sonntag"/0/0/0/0/0)
(2/"Januar"/"Februar"/"Maerz"/"April"/"Mai"/"Juni"/"Juli"/"August"/"September"/"Oktober"/"November"/"Dezember")
//END
//A(Tag_Anz)
(1/0/31/59/90/120/151/181/212/243/273/304/334)
(2/0/31/60/91/121/152/182/213/244/274/305/335)
(3/31/28/31/30/31/30/31/31/30/31/30/31)
(4/31/29/31/30/31/30/31/31/30/31/30/31)
//END

Angehängte Datei(en)
Angehängte Datei  korrektur1.jpg ( 595.16KB ) Anzahl der Downloads: 76
 
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 11.02.2011, 20:56 Uhr
 
 
fonsi
Level 2 = CNC-Arena-Facharbeiter
**
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 24.03.2005
Beiträge: 56
Hi cnc-wolle,

hast du diese Maske von Hand geschrieben, oder hast du einen Editor(IDE) der dich unterstützt?

Gruss
fonsi
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 12.02.2011, 04:26 Uhr
 
 
Hexogen
Level 4 = CNC-Arena-Meister
****
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 29.09.2004
Beiträge: 364
hi ...

also ich suche auch schon geraume zeit einen Editor der mich bei der Maskenersttellung unterstützt!

Wenn jemand einen kennt einfach mal melden!
TOP     Richtlinien bestätigt am: Heute, 13:00 Antworten   Zitieren  
 
 
Suchbegriff finden          Antworten    Neues Thema

1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder:

 OK

Anzeige