From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/schulis/2.2.1/src/4.anschr.vertretungen | 149 ++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 app/schulis/2.2.1/src/4.anschr.vertretungen (limited to 'app/schulis/2.2.1/src/4.anschr.vertretungen') diff --git a/app/schulis/2.2.1/src/4.anschr.vertretungen b/app/schulis/2.2.1/src/4.anschr.vertretungen new file mode 100644 index 0000000..d806e14 --- /dev/null +++ b/app/schulis/2.2.1/src/4.anschr.vertretungen @@ -0,0 +1,149 @@ +PACKET anschrvertretungenDEFINES vertretungeneingang,vertretungenstarten, +vertretungensonderwerte,vertretungendruckdateibauen,vertretungenscanbedingung +,vertretungslistedrucken:LET swnameaufbereitet=550,swdatum=520,swzeit=521, +swstd=521,swart=522,swlv=523,swlangtext=523;LET maske= +"ms vertretungen eingang",fnrparaphe=2,fnrvonzeit=3,fnrbiszeit=4,fnrbsausgabe +=5,fnrdrausgabe=6,niltext="",blank=" ",strich="-----",kreuz="+",klammerauf= +"(",klammerzu=")",maxvertretungsarten=16,sonstigkuerzel="qq", +mnrauswahlnichtsinnvoll=56,mnrbittewarten=69,mnrlistewirderstellt=7, +mnrnichtimbestand=55;LET druckdatei="liste.1";TEXT CONST sonstiges:= +"Sonstiges",dateimitformularkopf:="vordruck1 vertretungen", +dateimitvertretungsdaten:="vordruck2 vertretungen";REAL VAR obergrenze, +untergrenze,aktzeit;INT VAR index:=dnrlehrer,status,zeilenzahl, +zeilenhilfszahl,zusatzzeilen,zaehler;TEXT VAR angegebeneparaphe:="", +aktparaphe,letzteparaphe,datum,hilfstext,bestand:="c02 anrechnung vertret", +vertretungsarten;ROW maxvertretungsartenTEXT VAR vertretungen;BOOL VAR +bildschirmausgabe,einzelbearbeitung,zeituntergrenze,zeitobergrenze,dateiende, +ersteraufruf;PROC vertretungslistedrucken(BOOL CONST drucken):IF druckenTHEN +print(druckdatei);FI ;forget(druckdatei,quiet);IF einzelbearbeitungTHEN +forget(dateimitformularkopf,quiet);forget(dateimitvertretungsdaten,quiet); +enter(2)ELIF dateiendeTHEN forget(dateimitformularkopf,quiet);forget( +dateimitvertretungsdaten,quiet);enter(2)ELSE enter(1)FI ;END PROC +vertretungslistedrucken;PROC vertretungeneingang:ersteraufruf:=TRUE ; +standardvproc(maske)END PROC vertretungeneingang;PROC vertretungenstarten: +TEXT VAR vonzeit,biszeit;IF NOT ersteraufrufTHEN putwert(fnrvparaphe, +aktparaphe);zusammengesetztesanschreiben(ixvpar,bildschirmausgabe, +einzelbearbeitung,BOOL PROC vertretungensonderwerte,BOOL PROC +vertretungenscanbedingung,TEXT PROC vertretungendruckdateibauen);ELSE last( +ixvpar);letzteparaphe:=wert(fnrvparaphe);standardpruefe(5,fnrbsausgabe, +fnrdrausgabe,0,"",status);IF status<>0THEN infeld(status);return(1);ELSE +standardmeldung(mnrbittewarten,niltext);vonzeit:=standardmaskenfeld( +fnrvonzeit);biszeit:=standardmaskenfeld(fnrbiszeit);zeituntergrenze:=vonzeit +<>niltext;zeitobergrenze:=biszeit<>niltext;IF datumspruefungenkorrektTHEN +angegebeneparaphe:=standardmaskenfeld(fnrparaphe);IF +angabenindateivertretungenvorhandenTHEN ersteraufruf:=FALSE ; +parametersetzenundstartenELSE standardmeldung(mnrnichtimbestand,niltext); +return(1)FI ;ELSE return(1)FI ;FI ;FI ;.parametersetzenundstarten:dateiende:= +FALSE ;datum:=wert(fnrvdatum);vertretungsartenausbestandholen; +bildschirmausgabe:=standardmaskenfeld(fnrdrausgabe)=niltext; +setzesonderwerteschulkenndaten;vordruckeholen;standardmeldung( +mnrlistewirderstellt,niltext);putwert(fnrvparaphe,aktparaphe);disablestop; +zusammengesetztesanschreiben(ixvpar,bildschirmausgabe,einzelbearbeitung,BOOL +PROC vertretungensonderwerte,BOOL PROC vertretungenscanbedingung,TEXT PROC +vertretungendruckdateibauen);IF iserrorTHEN clearerrorFI ;enablestop. +vordruckeholen:forget(dateimitformularkopf,quiet);forget( +dateimitvertretungsdaten,quiet);fetch(dateimitformularkopf,/ +"anschreiben server");fetch(dateimitvertretungsdaten,/"anschreiben server");. +datumspruefungenkorrekt:IF zeituntergrenzeTHEN standardpruefe(6,fnrvonzeit,0, +0,"",status);IF status<>0THEN infeld(status);LEAVE datumspruefungenkorrekt +WITH FALSE ELSE datum:=subtext(vonzeit,5,6);datumCAT subtext(vonzeit,3,4); +datumCAT subtext(vonzeit,1,2);untergrenze:=real(datum);FI ;FI ;IF +zeitobergrenzeTHEN standardpruefe(6,fnrbiszeit,0,0,"",status);IF status<>0 +THEN infeld(status);LEAVE datumspruefungenkorrektWITH FALSE ELSE datum:= +subtext(biszeit,5,6);datumCAT subtext(biszeit,3,4);datumCAT subtext(biszeit,1 +,2);obergrenze:=real(datum);FI ;FI ;IF zeituntergrenzeAND zeitobergrenzeTHEN +IF untergrenze>obergrenzeTHEN infeld(fnrvonzeit);standardmeldung( +mnrauswahlnichtsinnvoll,niltext);LEAVE datumspruefungenkorrektWITH FALSE FI ; +FI ;TRUE .vertretungsartenausbestandholen:vertretungsarten:=niltext;inittupel +(dnrschluessel);putwert(fnrschlsachgebiet,bestand);search(dnrschluessel); +WHILE wert(fnrschlsachgebiet)=bestandREP vertretungsartenCAT text(wert( +fnrschlschluessel),2);succ(dnrschluessel);PER ;. +angabenindateivertretungenvorhanden:BOOL VAR ok:=FALSE ;einzelbearbeitung:= +angegebeneparaphe<>niltext;inittupel(dnrvertretungen);IF einzelbearbeitung +THEN putwert(fnrvparaphe,angegebeneparaphe);search(ixvpar,TRUE )ELSE search( +ixvpar,FALSE )FI ;IF dbstatus<>0THEN ok:=FALSE ELSE aktparaphe:=wert( +fnrvparaphe);IF einzelbearbeitungTHEN WHILE dbstatus=0AND angegebeneparaphe= +aktparapheAND obergrenzeokAND NOT untergrenzeokREP succ(ixvpar);aktparaphe:= +wert(fnrvparaphe);PER ;ok:=dbstatus=0AND obergrenzeokAND untergrenzeokAND +angegebeneparaphe=aktparapheELSE WHILE dbstatus=0AND (NOT obergrenzeokCOR +NOT untergrenzeok)REP succ(ixvpar);PER ;aktparaphe:=wert(fnrvparaphe);ok:= +dbstatus=0AND obergrenzeokAND untergrenzeokFI ;FI ;okEND PROC +vertretungenstarten;BOOL PROC obergrenzeok:BOOL VAR b:=TRUE ;IF +zeitobergrenzeTHEN datum:=wert(fnrvdatum);hilfstext:=subtext(datum,7,8); +hilfstextCAT subtext(datum,4,5);hilfstextCAT subtext(datum,1,2);aktzeit:=real +(hilfstext);b:=aktzeit<=obergrenze;FI ;bEND PROC obergrenzeok;BOOL PROC +untergrenzeok:BOOL VAR b:=TRUE ;IF zeituntergrenzeTHEN datum:=wert(fnrvdatum) +;hilfstext:=subtext(datum,7,8);hilfstextCAT subtext(datum,4,5);hilfstextCAT +subtext(datum,1,2);aktzeit:=real(hilfstext);b:=aktzeit>=untergrenze;FI ;bEND +PROC untergrenzeok;BOOL PROC vertretungenscanbedingung:BOOL VAR b;IF +einzelbearbeitungTHEN b:=aktparaphe=angegebeneparapheAND dbstatus=0ELSE b:= +dbstatus=0AND NOT dateiendeFI ;bEND PROC vertretungenscanbedingung;BOOL PROC +vertretungensonderwerte:TEXT VAR hilfsstring1:=niltext,hilfsstring2;INT VAR +dbstatussave;initialisieresonderwerte;adressat(aktparaphe);dbstatussave:= +dbstatus;inittupel(dnrlehrer);putwert(fnrlparaphe,aktparaphe);search( +dnrlehrer,TRUE );IF wert(fnrlgeschlecht)="m"THEN hilfsstring1:="Herrn "ELSE +hilfsstring1:="Frau ";FI ;hilfsstring2:=wert(fnrlamtsbeztitel);IF +hilfsstring2<>niltextTHEN hilfsstring1CAT hilfsstring2+blank;FI ;hilfsstring2 +:=wert(fnrlzusatz);IF hilfsstring2<>niltextTHEN hilfsstring1CAT hilfsstring2+ +blank;FI ;hilfsstring1CAT wert(fnrlfamname);setzesonderwert(swnameaufbereitet +,hilfsstring1);dbstatus(0);TRUE END PROC vertretungensonderwerte;TEXT PROC +vertretungendruckdateibauen:LET druckdatei="liste.1",hilfsdatei="hilfsdatei"; +TEXT VAR zeile;INT VAR i;BOOL VAR einsatzda:=FALSE ;setzemitseitennummern( +TRUE );druckvorbereiten;zeilenzahl:=0;zusatzzeilen:=0;briefalternative( +dateimitformularkopf,hilfsdatei);hilfsdateiindruckdatei(hilfsdatei);FOR +zaehlerFROM 1UPTO maxvertretungsartenREP vertretungen(zaehler):=niltextPER ; +vordruck2xmalinhilfsdatei;hilfsdateiindruckdatei(hilfsdatei);IF zeilenzahl+3> +drucklaengeTHEN seitenwechsel;zeilenzahl:=0FI ;zeile:=blank; +druckzeileschreiben(zeile);druckzeileschreiben(zeile);zeile:= +"Summe Stunden Art";druckzeileschreiben(zeile);zeile:=3*strich+kreuz+7* +strich;druckzeileschreiben(zeile);zeilenzahlINCR 4;setzesonderwert(swdatum, +niltext);imrowgemerktedatenübervordruck2indruckdatei; +drucknachbereitenohneausdrucken;druckdateiEND PROC +vertretungendruckdateibauen;PROC vordruck2xmalinhilfsdatei:LET hilfsdatei= +"hilfsdatei";INT VAR savedbstatus;savedbstatus:=dbstatus;inittupel( +dnrvertretungen);statleseschleife(ixvpar,"",aktparaphe,fnrvparaphe, +fnrvparaphe,PROC saetzezurparapheinvordruck);dbstatus(savedbstatus);IF NOT +einzelbearbeitungTHEN search(ixvpar,FALSE );WHILE dbstatus=0AND (NOT +obergrenzeokCOR NOT untergrenzeokCOR aktparaphe=wert(fnrvparaphe))REP succ( +ixvpar);PER ;dateiende:=letzteparaphe=aktparapheOR dbstatus<>0;aktparaphe:= +wert(fnrvparaphe);FI ;END PROC vordruck2xmalinhilfsdatei;PROC +saetzezurparapheinvordruck(BOOL VAR b):LET hilfsdatei="hilfsdatei";b:=FALSE ; +IF NOT obergrenzeokCOR wert(fnrvparaphe)<>aktparapheCOR dbstatus=3THEN b:= +TRUE ;ELSE IF untergrenzeokTHEN swvertretungenfuellen;briefalternative( +dateimitvertretungsdaten,hilfsdatei);FI ;FI ;END PROC +saetzezurparapheinvordruck;PROC swvertretungenfuellen:TEXT VAR zeitaufber, +artvertr,lehrveranstg,lvaufber;INT VAR zeit,std,tag,position;zeit:=intwert( +fnrvtagstd);lehrveranstg:=wert(fnrvveranstaltung);artvertr:=text(wert( +fnrvanrechnung),2);datum:=wert(fnrvdatum);position:=pos(vertretungsarten, +artvertr);IF position=0THEN vertretungen(16)CAT sonstigkuerzelELSE WHILE ( +positionMOD 2)=0AND position<>0AND position<32REP position:=pos( +vertretungsarten,artvertr,position+1);PER ;IF position=0OR (positionMOD 2)=0 +THEN vertretungen(16)CAT sonstigkuerzelELSE vertretungen(position)CAT +artvertrFI ;FI ;tag:=(zeit-1)DIV 12;std:=zeitMOD 12;IF tag=0THEN zeitaufber:= +"Mo "ELIF tag=1THEN zeitaufber:="Di "ELIF tag=2THEN zeitaufber:="Mi "ELIF tag +=3THEN zeitaufber:="Do "ELIF tag=4THEN zeitaufber:="Fr "ELIF tag=5THEN +zeitaufber:="Sa "FI ;zeitaufberCAT text(std,2);lvaufber:=subtext(lehrveranstg +,1,2)+blank;lvaufberCAT subtext(lehrveranstg,3,4)+blank;lvaufberCAT subtext( +lehrveranstg,5,8);setzesonderwert(swdatum,datum);setzesonderwert(swzeit, +zeitaufber);setzesonderwert(swart,artvertr);setzesonderwert(swlv,lvaufber); +END PROC swvertretungenfuellen;PROC +imrowgemerktedatenübervordruck2indruckdatei:BOOL VAR angabeda:=FALSE ;TEXT +VAR hilfsdatei:="hilfsdatei",kuerzel,langtext;INT VAR savedbstatus; +savedbstatus:=dbstatus;inittupel(dnrschluessel);putwert(fnrschlsachgebiet, +bestand);zaehler:=1;WHILE zaehler<=maxvertretungsartenREP kuerzel:=text( +vertretungen(zaehler),2);IF kuerzel<>" "THEN IF kuerzel=sonstigkuerzelTHEN +kuerzel:=" ";langtext:=sonstigesELSE putwert(fnrschlschluessel,compress( +kuerzel));search(dnrschluessel,TRUE );langtext:=wert(fnrschllangtext);FI ; +setzesonderwert(swstd,text(length(vertretungen(zaehler))DIV 2,2)); +setzesonderwert(swart,kuerzel);setzesonderwert(swlangtext,klammerauf+langtext ++klammerzu);briefalternative(dateimitvertretungsdaten,hilfsdatei);angabeda:= +TRUE ;FI ;zaehlerINCR 1;PER ;dbstatus(savedbstatus);IF angabedaTHEN +hilfsdateiindruckdatei(hilfsdatei)FI ;END PROC +imrowgemerktedatenübervordruck2indruckdatei;PROC hilfsdateiindruckdatei(TEXT +CONST hilfsdatei):FILE VAR f;INT VAR i;TEXT VAR zeile;f:=sequentialfile(input +,hilfsdatei);zeilenhilfszahl:=lines(f);IF zeilenzahl+zeilenhilfszahl+ +zusatzzeilen>=drucklaengeTHEN seitenwechsel;zeilenzahl:=0;FI ;FOR iFROM 1 +UPTO zeilenhilfszahlREP getline(f,zeile);druckzeileschreiben(zeile)PER ; +forget(hilfsdatei,quiet);zeilenzahlINCR zeilenhilfszahlEND PROC +hilfsdateiindruckdatei;END PACKET anschrvertretungen; + -- cgit v1.2.3