summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/0.erf zeitraster
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/0.erf zeitraster')
-rw-r--r--app/schulis/2.2.1/src/0.erf zeitraster145
1 files changed, 145 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/0.erf zeitraster b/app/schulis/2.2.1/src/0.erf zeitraster
new file mode 100644
index 0000000..b1b1bd7
--- /dev/null
+++ b/app/schulis/2.2.1/src/0.erf zeitraster
@@ -0,0 +1,145 @@
+PACKET erfzeitrasterDEFINES zeitrasterveraendern,zeitrasterspeichern,
+zeitrasteruebernehmen,zeitrasterkopieren:LET trenner="�",niltext="",
+titelanfang="Zeitraster für das ",titelmitte=". Halbjahr ",
+trennerfuerschuljahr="/",null=0,eins=1;LET fnrfueruebernehmen=2,
+fnrfuergeplbearb=3,fnrfueraktbearb=4,fnrcursorruhepos=5,maske="ms zeitraster"
+,fnrerstertagesteil=2,wochentage=6,stundenprowochentag=12,stundenamsamstag=6,
+vormittagsstunden=6,nachmittagsstunden=6,zeitfelderprowochentag=24,
+felderprowochentag=36,datensaetzepromaske=66,erstesfeldfuersamstag=182;LET
+textschuljahr="Schuljahr",textschulhalbjahr="Schulhalbjahr";LET
+kennungvormittag="v",kennungnachmittag="n",allekennungen="vnx",
+kennungmoerstestd=1;LET meldungeingabesinnlos=56,meldungfalschekennung=55,
+meldungfalschezeitangabe=54,meldungzeitangabezulang=341,
+meldungfalschezeitfolge=342,meldungplausi=57,meldungdatenfehlen=68,
+meldungfrageuebernehmen=300,meldunguebernehmen=301,meldungfeldfuellen=52,
+meldungspeicherfehler=73,meldungspeicherung=50;TEXT VAR schuljahr:=niltext,
+halbjahr:=niltext;BOOL VAR datenvorhanden,datenlueckenhaft;ROW
+datensaetzepromaskeTEXT VAR alteszeitraster;INT VAR aktindex;PROC
+zeitrasterveraendern:INT VAR i,j,aktfnr;IF standardmaskenfeld(
+fnrfueruebernehmen)=niltextAND (standardmaskenfeld(fnrfuergeplbearb)<>niltext
+XOR standardmaskenfeld(fnrfueraktbearb)<>niltext)THEN schuljahr:=
+schulkenndatum(textschuljahr);halbjahr:=schulkenndatum(textschulhalbjahr);IF
+standardmaskenfeld(fnrfuergeplbearb)<>niltextTHEN geplanteshjundsjberechnen(
+halbjahr,schuljahr)FI ;standardstartproc(maske);
+standardkopfmaskeaktualisieren(titelanfang+halbjahr+titelmitte+text(schuljahr
+,2)+trennerfuerschuljahr+subtext(schuljahr,3));aktindex:=null;inittupel(
+dnrzeitraster);statleseschleife(dnrzeitraster,schuljahr,halbjahr,fnrzrsj,
+fnrzrhj,PROC fuellemaskeundpuffer);datenvorhanden:=aktindex>null;
+datenlueckenhaft:=datenvorhandenCAND aktindex<datensaetzepromaske;IF NOT
+datenvorhandenTHEN aktfnr:=fnrerstertagesteil;FOR iFROM einsUPTO wochentage-
+einsREP FOR jFROM einsUPTO vormittagsstundenREP standardmaskenfeld(
+kennungvormittag,aktfnr);aktfnrINCR einsPER ;FOR jFROM einsUPTO
+nachmittagsstundenREP standardmaskenfeld(kennungnachmittag,aktfnr);aktfnr
+INCR einsPER ;aktfnrINCR zeitfelderprowochentag;PER ;FOR iFROM einsUPTO
+stundenamsamstagREP standardmaskenfeld(kennungvormittag,aktfnr);aktfnrINCR
+einsPER ;FI ;standardnprocELSE standardmeldung(meldungeingabesinnlos,niltext)
+;IF standardmaskenfeld(fnrfueruebernehmen)=niltextTHEN infeld(
+fnrfuergeplbearb)ELSE infeld(fnrfueruebernehmen)FI ;return(1)FI END PROC
+zeitrasterveraendern;PROC zeitrasterspeichern:INT VAR fehlerstatus:=null,
+aktfnr,aktfnrbeginn,aktfnrende,beginnzeit,endezeit,i;pruefeplausibilitaet;IF
+fehlerstatus<>nullTHEN infeld(fehlerstatus);return(1);LEAVE
+zeitrasterspeichernELSE speicherungdurchfuehrenFI ;enter(2).
+pruefeplausibilitaet:standardmeldung(meldungplausi,niltext);FOR iFROM null
+UPTO datensaetzepromaske-einsREP aktfnr:=fnrerstertagesteil+iMOD
+stundenprowochentag+(iDIV stundenprowochentag)*felderprowochentag;IF aktfnr>=
+erstesfeldfuersamstagTHEN aktfnrbeginn:=aktfnr+stundenamsamstag;aktfnrende:=
+aktfnrbeginn+stundenamsamstagELSE aktfnrbeginn:=aktfnr+stundenprowochentag;
+aktfnrende:=aktfnrbeginn+stundenprowochentagFI ;IF standardmaskenfeld(aktfnr)
+=niltextTHEN standardmeldung(meldungfeldfuellen,niltext);fehlerstatus:=aktfnr
+;LEAVE pruefeplausibilitaetFI ;IF pos(allekennungen,standardmaskenfeld(aktfnr
+))=nullTHEN standardmeldung(meldungfalschekennung,niltext);fehlerstatus:=
+aktfnr;LEAVE pruefeplausibilitaetFI ;beginnzeit:=int(standardmaskenfeld(
+aktfnrbeginn));IF falschezeitangabe(beginnzeit,aktfnrbeginn,fehlerstatus)
+THEN LEAVE pruefeplausibilitaetFI ;endezeit:=int(standardmaskenfeld(
+aktfnrende));IF falschezeitangabe(endezeit,aktfnrende,fehlerstatus)THEN
+LEAVE pruefeplausibilitaetFI ;IF beginnzeit>endezeitAND endezeit>0THEN
+standardmeldung(meldungfalschezeitfolge,niltext);fehlerstatus:=aktfnrbeginn;
+LEAVE pruefeplausibilitaetFI PER .speicherungdurchfuehren:standardmeldung(
+meldungspeicherung,niltext);FOR aktindexFROM einsUPTO datensaetzepromaskeREP
+berechnemaskenunddbgroessen;IF datenvorhandenTHEN IF stundewurdeveraendert
+THEN infeld(aktfnr);putwert(fnrzrsj,schuljahr);putwert(fnrzrhj,halbjahr);
+putintwert(fnrzrtagstunde,aktindex);search(dnrzeitraster,true);putwert(
+fnrzrkennungteil,standardmaskenfeld(aktfnr));putwert(fnrzrbeginnuhr,
+standardmaskenfeld(aktfnrbeginn));putwert(fnrzrendeuhr,standardmaskenfeld(
+aktfnrende));IF dbstatus<>nullTHEN insert(dnrzeitraster)ELSE update(
+dnrzeitraster)FI ;speicherfehlerabfangenFI ELSE infeld(aktfnr);putwert(
+fnrzrsj,schuljahr);putwert(fnrzrhj,halbjahr);putintwert(fnrzrtagstunde,
+aktindex);putwert(fnrzrkennungteil,standardmaskenfeld(aktfnr));putwert(
+fnrzrbeginnuhr,standardmaskenfeld(aktfnrbeginn));putwert(fnrzrendeuhr,
+standardmaskenfeld(aktfnrende));insert(dnrzeitraster)FI PER .
+berechnemaskenunddbgroessen:aktfnr:=fnrerstertagesteil+(aktindex-eins)MOD
+stundenprowochentag+((aktindex-eins)DIV stundenprowochentag)*
+felderprowochentag;IF aktfnr>=erstesfeldfuersamstagTHEN aktfnrbeginn:=aktfnr+
+stundenamsamstag;aktfnrende:=aktfnrbeginn+stundenamsamstagELSE aktfnrbeginn:=
+aktfnr+stundenprowochentag;aktfnrende:=aktfnrbeginn+stundenprowochentagFI ;.
+stundewurdeveraendert:datenlueckenhaftCOR standardmaskenfeld(aktfnr)+trenner+
+standardmaskenfeld(aktfnrbeginn)+trenner+standardmaskenfeld(aktfnrende)<>
+alteszeitraster(aktindex).speicherfehlerabfangen:IF dbstatus<>nullTHEN
+standardmeldung(meldungspeicherfehler,niltext);return(1);LEAVE
+zeitrasterspeichernFI .END PROC zeitrasterspeichern;PROC zeitrasterkopieren:
+TEXT VAR tagesteil,beginn,ende;INT VAR i,j,aktfnr:=fnrerstertagesteil;FOR i
+FROM 0UPTO stundenprowochentag-1REP aktfnr:=fnrerstertagesteil+i;tagesteil:=
+standardmaskenfeld(aktfnr);aktfnrINCR stundenprowochentag;beginn:=
+standardmaskenfeld(aktfnr);aktfnrINCR stundenprowochentag;ende:=
+standardmaskenfeld(aktfnr);aktfnrINCR stundenprowochentag;FOR jFROM 1UPTO
+wochentage-2REP standardmaskenfeld(tagesteil,aktfnr);aktfnrINCR
+stundenprowochentag;standardmaskenfeld(beginn,aktfnr);aktfnrINCR
+stundenprowochentag;standardmaskenfeld(ende,aktfnr);aktfnrINCR
+stundenprowochentagPER ;IF i<stundenamsamstagTHEN standardmaskenfeld(
+tagesteil,aktfnr);aktfnrINCR stundenamsamstag;standardmaskenfeld(beginn,
+aktfnr);aktfnrINCR stundenamsamstag;standardmaskenfeld(ende,aktfnr)FI PER ;
+return(1);END PROC zeitrasterkopieren;PROC zeitrasteruebernehmen(BOOL CONST
+hauptaktion):INT VAR posi,i;TEXT VAR satz;BOOL VAR ueberschreiben;IF NOT
+hauptaktionTHEN IF NOT eingangsmaskerichtigangekreuztTHEN standardmeldung(
+meldungeingabesinnlos,niltext);infeld(fnrfueruebernehmen);return(1);LEAVE
+zeitrasteruebernehmenFI ;schuljahr:=schulkenndatum(textschuljahr);halbjahr:=
+schulkenndatum(textschulhalbjahr);fuelledenpuffermitdemzeitraster;IF
+datenvorhandenTHEN standardmeldung(meldungfrageuebernehmen,niltext);
+feldschutz(fnrfueruebernehmen);feldschutz(fnrfuergeplbearb);feldschutz(
+fnrfueraktbearb);feldfrei(fnrcursorruhepos);infeld(fnrcursorruhepos);
+standardnproc;ELSE standardmeldung(meldungdatenfehlen,niltext);infeld(
+fnrfueruebernehmen);return(1)FI ELSE standardmeldung(meldunguebernehmen,
+niltext);geplanteshjundsjberechnen(halbjahr,schuljahr);
+testeobdatenschonvorhanden;FOR iFROM einsUPTO aktindexREP
+ladedendatenbankpuffer;IF ueberschreibenCAND dbstatus=nullTHEN update(
+dnrzeitraster)ELSE insert(dnrzeitraster)FI ;speicherfehlerabfangen;PER ;enter
+(2)FI .eingangsmaskerichtigangekreuzt:standardmaskenfeld(fnrfueruebernehmen)
+<>niltextAND standardmaskenfeld(fnrfuergeplbearb)=niltextAND
+standardmaskenfeld(fnrfueraktbearb)=niltext.fuelledenpuffermitdemzeitraster:
+aktindex:=null;inittupel(dnrzeitraster);statleseschleife(dnrzeitraster,
+schuljahr,halbjahr,fnrzrsj,fnrzrhj,PROC fuellenurpuffer);datenvorhanden:=
+aktindex>null.testeobdatenschonvorhanden:putwert(fnrzrsj,schuljahr);putwert(
+fnrzrhj,halbjahr);putintwert(fnrzrtagstunde,kennungmoerstestd);search(
+dnrzeitraster,TRUE );ueberschreiben:=dbstatus=null.ladedendatenbankpuffer:
+putwert(fnrzrsj,schuljahr);putwert(fnrzrhj,halbjahr);satz:=alteszeitraster(i)
+;posi:=pos(satz,trenner);putwert(fnrzrtagstunde,text(satz,posi-eins));IF
+ueberschreibenTHEN search(dnrzeitraster,TRUE )FI ;satz:=subtext(satz,posi+
+eins);posi:=pos(satz,trenner);putwert(fnrzrkennungteil,text(satz,posi-eins));
+satz:=subtext(satz,posi+eins);posi:=pos(satz,trenner);putwert(fnrzrbeginnuhr,
+text(satz,posi-eins));satz:=subtext(satz,posi+eins);putwert(fnrzrendeuhr,satz
+).speicherfehlerabfangen:IF ueberschreibenCAND dbstatus<>nullTHEN
+standardmeldung(meldungspeicherfehler,niltext);infeld(fnrfueruebernehmen);
+return(1);LEAVE zeitrasteruebernehmenFI .END PROC zeitrasteruebernehmen;PROC
+fuellemaskeundpuffer(BOOL VAR b):INT VAR feldnr,feldnr2;IF wert(fnrzrsj)>
+schuljahrCOR wert(fnrzrhj)>halbjahrCOR dbstatus<>0THEN b:=TRUE ELSE feldnr:=
+fnrerstertagesteil+aktindexMOD stundenprowochentag+(aktindexDIV
+stundenprowochentag)*felderprowochentag;aktindexINCR eins;alteszeitraster(
+aktindex):=wert(fnrzrkennungteil)+trenner+wert(fnrzrbeginnuhr)+trenner+wert(
+fnrzrendeuhr);standardmaskenfeld(wert(fnrzrkennungteil),feldnr);IF feldnr>=
+erstesfeldfuersamstagTHEN feldnrINCR stundenamsamstag;feldnr2:=feldnr+
+stundenamsamstagELSE feldnrINCR stundenprowochentag;feldnr2:=feldnr+
+stundenprowochentagFI ;standardmaskenfeld(wert(fnrzrbeginnuhr),feldnr);
+standardmaskenfeld(wert(fnrzrendeuhr),feldnr2);FI END PROC
+fuellemaskeundpuffer;PROC fuellenurpuffer(BOOL VAR b):IF wert(fnrzrsj)>
+schuljahrCOR wert(fnrzrhj)>halbjahrCOR dbstatus<>0THEN b:=TRUE ELSE aktindex
+INCR eins;alteszeitraster(aktindex):=wert(fnrzrtagstunde)+trenner+wert(
+fnrzrkennungteil)+trenner+wert(fnrzrbeginnuhr)+trenner+wert(fnrzrendeuhr)FI
+END PROC fuellenurpuffer;BOOL PROC falschezeitangabe(INT CONST zeit,fnr,INT
+VAR status):IF standardmaskenfeld(fnr)=niltextTHEN LEAVE falschezeitangabe
+WITH FALSE FI ;IF length(standardmaskenfeld(fnr))>4THEN standardmeldung(
+meldungzeitangabezulang,niltext);status:=fnr;LEAVE falschezeitangabeWITH
+TRUE FI ;standardpruefe(2,fnr,null,null,niltext,status);IF status<>nullTHEN
+LEAVE falschezeitangabeWITH TRUE FI ;IF zeit<nullOR zeitMOD 100>59OR zeitDIV
+100>24THEN standardmeldung(meldungfalschezeitangabe,niltext);status:=fnr;
+TRUE ELSE FALSE FI END PROC falschezeitangabe;END PACKET erfzeitraster;
+