PACKET lehrveranstaltungenbenennenDEFINES lehrveranstaltungenbenennenstart,
lehrveranstaltungenuebernehmenstart,lehrveranstaltungenuebernehmen,
bearbeitunglehrveranstaltungen,lehrveranstaltungenzeileeinfuegen,
lehrveranstaltungenspeichern:LET maskeeingang=
"ms lehrveranstalt benennen eingang";LET maskebearb=
"ms lehrveranstalt benennen";LET fnrbearbeiten=2,fnrbearbaktsj=3,
fnrbearbgeplsj=4,fnrbearbjgst=5,fnrbearbfach=6,fnrfachanguebernehmen=7,
fnrfachangaktsj=8,fnrfachanggeplsj=9,fnrfachangjgst=10,fnrlehrveruebernehmen=
11,fnrlehrverjgst=12;LET feldanzmaskeeingang=12;ROW feldanzmaskeeingangTEXT
VAR feldbs1;LET felderprozeile=9;LET ersteseingabefeld=3;LET
erstestabellenfeld=2;LET incrfuerkennung=1,incrfuerlvart=2,
incrfuerklassengranfang=3,incrfuerklassengrende=6,incrfuerwstd=7;LET
meldnrdatenspeichern=50,meldnrungueltigeauswahl=56,meldnrkennungzulang=60,
meldnrdatennichtspeichern=63,meldnrbittewarten=69,meldnrbitteangabegenauer=
129,meldnrungueltigeuebernahmejgst=146,meldnrfragedatenuebernehmen=300,
meldnrdatenwerdenuebernommen=301,meldnrdatenwurdenuebernommen=302,
meldnrdatenwurdennichtuebernommen=303,meldnrkeinfachzuanderenangaben=307,
meldnrungueltigesfach=310,meldnrungueltigeart=311,
meldnrletztezeilenichteinfuegen=314,meldnrkeinfaecherangebot=315,
meldnruebernehmenderjgst=316,meldnrlehrveranstaltungloeschen=317,
meldnrfalschetastezuankreuz=318,meldnrfalscheausfuellung=319,
meldnrungueltigeklassengruppe=320,meldnrkeinelehrveranstaltungen=321,
meldnrlehrveranstaltunggibtsschon=322,meldnrfehlerhaftejgst=305;LET kennzhell
="#";LET textschulj="Schuljahr",texthalbj="Schulhalbjahr",ersteshalbjahr="1",
zweiteshalbjahr="2";LET wertaktuell="aktuell",wertgeplant="geplant";LET
artbestand="c02 art lehrveranstaltung";BOOL VAR aktuelleshalbjahrzubearbeiten
;TEXT VAR gewschulj,gewhalbj,aktschulj:="",akthalbj:="";INT VAR gewjgst,
startjgst,endejgst;TEXT VAR vgljgst:="",vglfach:="";INT VAR
jgstdesletztensatzes:=0;LET fachlaenge=2;LET kennunglaenge=4;INT VAR zugriff;
BOOL VAR eingangsmaskenfehler:=FALSE ;INT VAR pruefstatus:=0,letztecursorfnr
:=fnrbearbeiten;INT VAR aktzeile;INT VAR ifnr,ijgst;LET trenner="�";TEXT VAR
geprueftefaecher,gueltigeschuelergruppen:="",gueltigeklassengruppen:="",
gueltigelvart:="";TEXT VAR pruefklasse;INT VAR pruefjgst,pruefbez;TEXT VAR
sugruppen,sugruppejgst;INT VAR possugruppe,laengesugruppen;LET
laengeeinersugruppe=6;LET blankzeichen=" ",trennstrich="/",
textueberschriftanfang="Lehrveranstaltungen benennen für Halbjahr ";TEXT VAR
ueberschrift;LET jgst0=0,jgst5=5,jgst10=10,jgst13=13;BOOL VAR gueltigejgst;
BOOL VAR bearbeitungallerjgst;BOOL VAR leerenbszeigen;LET lvdateiname=
"LV-Datei";FILE VAR lvdatei;TEXT VAR lvdateizeile;TEXT VAR nfschulj,nfhalbj,
nfjgst,nffachkennung;INT VAR izeile,anzahlgezeigtezeilen,
anzahleingegebenezeilen;LET zeilenanzahl=18;ROW zeilenanzahlSTRUCT (TEXT jgst
,TEXT fach,TEXT kennung,TEXT kopplung,TEXT art,TEXT klasse1,TEXT klasse2,
TEXT klasse3,TEXT klasse4,TEXT wstd)VAR bszeile;
initfelderdeseingangsbildschirms;initbszeilepuffer;PROC
lehrveranstaltungenbenennenstart:standardstartproc(maskeeingang);
wertedeseingangsbildschirmsholen;infeld(fnrbearbeiten);standardfelderausgeben
;infeld(letztecursorfnr);standardnprocEND PROC
lehrveranstaltungenbenennenstart;PROC lehrveranstaltungenuebernehmenstart:
BOOL VAR ausgangsdatenfehlen:=FALSE ;eingangsbehandlung(1);IF
eingangsmaskenfehlerTHEN infeld(pruefstatus);return(1)ELSE
wertedeseingangsbildschirmsmerken;schulhalbjahrbestimmen;IF jgstangabeleer
THEN startjgst:=jgst0;endejgst:=jgst13ELSE startjgst:=int(vgljgst);endejgst:=
startjgstFI ;IF standardmaskenfeld(fnrfachanguebernehmen)<>""THEN
pruefendesfaecherangebots;IF ausgangsdatenfehlenTHEN standardmeldung(
meldnrkeinfaecherangebot,"");return(1)ELSE standardmeldung(
meldnrfragedatenuebernehmen,"");eingabefeldersperren(fnrfachanguebernehmen);
standardnprocFI ELSE pruefenderlehrveranstaltungen;IF ausgangsdatenfehlen
THEN standardmeldung(meldnrkeinelehrveranstaltungen,"");return(1)ELIF
gewhalbj=ersteshalbjahrAND startjgst=jgst13THEN standardmeldung(
meldnrungueltigeuebernahmejgst,"");infeld(fnrlehrverjgst);return(1)ELSE
standardmeldung(meldnrfragedatenuebernehmen,"");eingabefeldersperren(
fnrlehrveruebernehmen);standardnprocFI FI FI .pruefendesfaecherangebots:
ausgangsdatenfehlen:=FALSE ;putwert(fnrfangsj,gewschulj);putwert(fnrfanghj,
gewhalbj);putintwert(fnrfangjgst,startjgst);putintwert(fnrfanglfdnr,0);search
(dnrfaecherangebot,FALSE );IF dbstatus<>okTHEN ausgangsdatenfehlen:=TRUE
ELIF wert(fnrfanghj)<>gewhalbjCOR wert(fnrfangsj)<>gewschuljCOR intwert(
fnrfangjgst)>endejgstTHEN ausgangsdatenfehlen:=TRUE FI .
pruefenderlehrveranstaltungen:ausgangsdatenfehlen:=FALSE ;putwert(fnrlvsj,
aktschulj);putwert(fnrlvhj,akthalbj);putintwert(fnrlvjgst,startjgst);putwert(
fnrlvfachkennung,"");search(dnrlehrveranstaltungen,FALSE );IF dbstatus<>ok
THEN ausgangsdatenfehlen:=TRUE ELIF wert(fnrlvhj)<>akthalbjCOR wert(fnrlvsj)
<>aktschuljCOR intwert(fnrlvjgst)>endejgstTHEN ausgangsdatenfehlen:=TRUE FI .
END PROC lehrveranstaltungenuebernehmenstart;PROC eingabefeldersperren(INT
CONST fnrfreiesfeld):FOR ifnrFROM fnrbearbeitenUPTO feldanzmaskeeingangREP
IF ifnr<>fnrfreiesfeldTHEN feldschutz(ifnr)FI PER ;infeld(fnrfreiesfeld)END
PROC eingabefeldersperren;PROC eingabefelderfreigeben:FOR ifnrFROM
fnrbearbeitenUPTO feldanzmaskeeingangREP feldfrei(ifnr)PER END PROC
eingabefelderfreigeben;PROC lehrveranstaltungenuebernehmen(BOOL CONST
uebernehmen):INT VAR letztejgst:=-1;IF uebernehmenTHEN standardmeldung(
meldnrdatenwerdenuebernommen,"");IF standardmaskenfeld(fnrfachanguebernehmen)
<>""THEN evtlvorhandenelehrveranstaltungenloeschen;
neuelvausfaecherangebotschreibenELSE neuelvauslehrveranstaltungenschreibenFI
;evtlkurswahldatenbeimuebernehmenaktualisieren;IF
aktuelleshalbjahrzubearbeitenTHEN aenderungsvermerksetzen(wertaktuell)ELSE
aenderungsvermerksetzen(wertgeplant)FI ;standardmeldung(
meldnrdatenwurdenuebernommen,"")ELSE standardmeldung(
meldnrdatenwurdennichtuebernommen,"")FI ;eingabefelderfreigeben;return(2).
evtlkurswahldatenbeimuebernehmenaktualisieren:IF
aktuelleshalbjahrzubearbeitenOR gewhalbj=zweiteshalbjahrTHEN FOR gewjgstFROM
startjgstUPTO endejgstREP IF gewjgst>jgst10THEN kurswahlserverlvaktualisieren
(text(gewjgst),text(gewjgst),gewhalbj)FI ;PER ;ELSE FOR gewjgstFROM startjgst
UPTO endejgstREP IF gewjgst>=jgst10THEN kurswahlserverlvaktualisieren(text(
gewjgst),text(gewjgst+1),gewhalbj)FI ;PER ;FI .
evtlvorhandenelehrveranstaltungenloeschen:
sucheerstelehrveranstaltungzugewhalbj;WHILE lehrveranstaltungzuloeschenREP
meldungzumloeschenbeijgstwechsel;loeschevorhandenelehrveranstaltung;
suchenaechstelehrveranstaltungzugewhalbjPER .
sucheerstelehrveranstaltungzugewhalbj:putwert(fnrlvsj,gewschulj);putwert(
fnrlvhj,gewhalbj);putintwert(fnrlvjgst,startjgst);putwert(fnrlvfachkennung,""
);search(dnrlehrveranstaltungen,FALSE );letztejgst:=-1;.
lehrveranstaltungzuloeschen:dbstatus=okCAND wert(fnrlvsj)=gewschuljCAND wert(
fnrlvhj)=gewhalbjCAND intwert(fnrlvjgst)<=endejgst.
loeschevorhandenelehrveranstaltung:delete(dnrlehrveranstaltungen).
meldungzumloeschenbeijgstwechsel:IF intwert(fnrlvjgst)<>letztejgstTHEN
letztejgst:=intwert(fnrlvjgst);standardmeldung(
meldnrlehrveranstaltungloeschen,text(letztejgst)+kennzhell)FI .
suchenaechstelehrveranstaltungzugewhalbj:succ(dnrlehrveranstaltungen).
neuelvausfaecherangebotschreiben:letztejgst:=-1;REP
lehrveranstaltungenzufaecherangebotschreiben;
suchenaechstesfaecherangebotzugewhalbjUNTIL faecherangebotabgehandeltPER .
lehrveranstaltungenzufaecherangebotschreiben:INT VAR satzanzahl:=intwert(
fnrfanganzlv);INT VAR isatz;
setzefestewerteausfaecherangebotfuerlehrveranstaltung;
meldungzuruebernahmebeijgstwechsel;FOR isatzFROM 1UPTO satzanzahlREP
setzevarwerteausfaecherangebotfuerlehrveranstaltung;insert(
dnrlehrveranstaltungen)PER .meldungzuruebernahmebeijgstwechsel:IF intwert(
fnrlvjgst)<>letztejgstTHEN letztejgst:=intwert(fnrlvjgst);standardmeldung(
meldnruebernehmenderjgst,text(letztejgst)+kennzhell)FI .
setzefestewerteausfaecherangebotfuerlehrveranstaltung:putwert(fnrlvsj,
gewschulj);putwert(fnrlvhj,gewhalbj);putintwert(fnrlvjgst,intwert(fnrfangjgst
));putwert(fnrlvparaphe,"");putwert(fnrlvart,wert(fnrfangart));putintwert(
fnrlvwochenstd,intwert(fnrfangwochenstd));putwert(fnrlvklgrp1,"");putwert(
fnrlvklgrp2,"");putwert(fnrlvklgrp3,"");putwert(fnrlvklgrp4,"");putwert(
fnrlvraumgrp1,"");putwert(fnrlvraumgrp2,"");.
setzevarwerteausfaecherangebotfuerlehrveranstaltung:TEXT VAR lvkennung:=text(
wert(fnrfangart),2)+textzweistellig(isatz);putwert(fnrlvfachkennung,text(wert
(fnrfangfach),fachlaenge)+lvkennung);putwert(fnrlvkopplung,textzweistellig(
intwert(fnrfangjgst))+textzweistellig(intwert(fnrfanglfdnr))+lvkennung);.
suchenaechstesfaecherangebotzugewhalbj:succ(dnrfaecherangebot).
faecherangebotabgehandelt:NOT (dbstatus=okCAND intwert(fnrfangjgst)<=endejgst
CAND wert(fnrfangsj)=gewschuljCAND wert(fnrfanghj)=gewhalbj).
neuelvauslehrveranstaltungenschreiben:lvsaetzezuaktuellenjgstindateischreiben
;evtlvorhandenelehrveranstaltungenloeschenvorbereiten;
evtlvorhandenelehrveranstaltungenloeschen;
lvsaetzeausdateizugeplantenjgstschreiben.
lvsaetzezuaktuellenjgstindateischreiben:forget(lvdateiname,quiet);lvdatei:=
sequentialfile(output,lvdateiname);standardmeldung(meldnrbittewarten,"");
holegueltigelehrveranstaltungen.
evtlvorhandenelehrveranstaltungenloeschenvorbereiten:IF gewhalbj=
ersteshalbjahrAND NOT jgstangabeleerTHEN IF startjgst>=jgst5THEN startjgst
INCR 1;endejgstINCR 1FI FI .lvsaetzeausdateizugeplantenjgstschreiben:
letztejgst:=-1;lvdatei:=sequentialfile(input,lvdateiname);WHILE NOT eof(
lvdatei)REP getline(lvdatei,lvdateizeile);restoretupel(dnrlehrveranstaltungen
,lvdateizeile);putwert(fnrlvhj,gewhalbj);IF gewhalbj=ersteshalbjahrTHEN
putwert(fnrlvsj,gewschulj);ijgst:=intwert(fnrlvjgst);IF ijgst>0THEN
putintwert(fnrlvjgst,ijgst+1);TEXT VAR bearbkopplung:=wert(fnrlvkopplung);IF
int(subtext(bearbkopplung,1,2))=ijgstTHEN putwert(fnrlvkopplung,
textzweistellig(ijgst+1)+subtext(bearbkopplung,3))FI ;FI ;FI ;IF intwert(
fnrlvjgst)>jgst13THEN LEAVE lvsaetzeausdateizugeplantenjgstschreibenELSE
meldungzuruebernahmebeijgstwechsel;insert(dnrlehrveranstaltungen)FI PER END
PROC lehrveranstaltungenuebernehmen;PROC holegueltigelehrveranstaltungen:
inittupel(dnrlehrveranstaltungen);putwert(fnrlvsj,aktschulj);putwert(fnrlvhj,
akthalbj);putintwert(fnrlvjgst,startjgst);search(dnrlehrveranstaltungen,
FALSE );statleseschleife(dnrlehrveranstaltungen,aktschulj,akthalbj,fnrlvsj,
fnrlvhj,PROC lehrveranstaltungindateieinlesen)END PROC
holegueltigelehrveranstaltungen;PROC lehrveranstaltungindateieinlesen(BOOL
VAR b):IF dbstatus<>0OR wert(fnrlvsj)<>aktschuljOR wert(fnrlvhj)<>akthalbjOR
intwert(fnrlvjgst)>endejgstTHEN b:=TRUE ELSE savetupel(dnrlehrveranstaltungen
,lvdateizeile);putline(lvdatei,lvdateizeile)FI END PROC
lehrveranstaltungindateieinlesen;PROC bearbeitunglehrveranstaltungen:
eingangsbehandlung(2);IF eingangsmaskenfehlerTHEN infeld(pruefstatus);return(
1)ELSE wertedeseingangsbildschirmsmerken;schulhalbjahrbestimmen;
zugriffauflehrveranstaltungenbestimmen;erstensatzlesen;IF
keinelehrveranstaltungengespeichertCAND bearbeitungallerjgstTHEN
standardmeldung(meldnrkeinelehrveranstaltungen,"");return(1)ELSE
standardstartproc(maskebearb);ueberschriftzeilezusammensetzen;
standardkopfmaskeaktualisieren(ueberschrift);bsfuellen;infeld(
ersteseingabefeld);standardnprocFI ;FI .
zugriffauflehrveranstaltungenbestimmen:IF fachangabeleerTHEN zugriff:=
ixlvsjhjkoppELIF jgstangabeleerTHEN zugriff:=ixlvsjhjkennELSE zugriff:=
dnrlehrveranstaltungenFI .erstensatzlesen:putwert(fnrlvsj,gewschulj);putwert(
fnrlvhj,gewhalbj);putintwert(fnrlvjgst,int(vgljgst));IF zugriff=ixlvsjhjkopp
THEN putwert(fnrlvkopplung,textzweistellig(int(vgljgst)))ELSE putwert(
fnrlvfachkennung,vglfach)FI ;jgstdesletztensatzes:=int(vgljgst);search(
zugriff,FALSE );leerenbszeigen:=NOT (dbstatus=okCAND wert(fnrlvhj)=gewhalbj
CAND wert(fnrlvsj)=gewschuljCAND (jgstangabeleerCOR intwert(fnrlvjgst)=int(
vgljgst))CAND (fachangabeleerCOR compress(subtext(wert(fnrlvfachkennung),1,
fachlaenge))=vglfach)).keinelehrveranstaltungengespeichert:dbstatus<>0.
ueberschriftzeilezusammensetzen:ueberschrift:=textueberschriftanfang;
ueberschriftCAT gewhalbj;ueberschriftCAT blankzeichen;ueberschriftCAT subtext
(gewschulj,1,2);ueberschriftCAT trennstrich;ueberschriftCAT subtext(gewschulj
,3,4).END PROC bearbeitunglehrveranstaltungen;BOOL PROC fachangabeleer:
vglfach=""END PROC fachangabeleer;BOOL PROC jgstangabeleer:vgljgst=""END
PROC jgstangabeleer;PROC bsfuellen:izeile:=0;IF NOT leerenbszeigenTHEN
startebildschirmblock(zugriff,zeilenanzahl-1);bildschirmblock(PROC satzmerken
,BOOL PROC (INT CONST )satzzubehandeln,0);IF dbstatus=0THEN succ(zugriff);IF
dbstatus<>0THEN inittupel(dnrlehrveranstaltungen)FI ELSE inittupel(
dnrlehrveranstaltungen)FI ;merkesatzalsnachfolgerELSE nffachkennung:=""FI ;
evtlleerzeilenhinzufuegen;werteausbszeileinstandardfeldersetzen;infeld(
erstestabellenfeld);standardfelderausgeben;.evtlleerzeilenhinzufuegen:
anzahlgezeigtezeilen:=izeile;WHILE izeile<zeilenanzahlREP izeileINCR 1;
bszeile(izeile).jgst:=text(jgstdesletztensatzes);bszeile(izeile).fach:="";
bszeile(izeile).kennung:="";bszeile(izeile).kopplung:="";bszeile(izeile).art
:="";bszeile(izeile).klasse1:="";bszeile(izeile).klasse2:="";bszeile(izeile).
klasse3:="";bszeile(izeile).klasse4:="";bszeile(izeile).wstd:=""PER .
werteausbszeileinstandardfeldersetzen:ifnr:=erstestabellenfeld;TEXT VAR
letztejgst:="-1";FOR izeileFROM 1UPTO zeilenanzahlREP IF bszeile(izeile).jgst
=letztejgstTHEN standardmaskenfeld(" ",ifnr);ELSE letztejgst:=bszeile(izeile
).jgst;standardmaskenfeld(textzweistellig(int(letztejgst)),ifnr);FI ;
standardmaskenfeld(bszeile(izeile).fach,ifnr+1);standardmaskenfeld(bszeile(
izeile).kennung,ifnr+2);standardmaskenfeld(bszeile(izeile).art,ifnr+3);
standardmaskenfeld(bszeile(izeile).klasse1,ifnr+4);standardmaskenfeld(bszeile
(izeile).klasse2,ifnr+5);standardmaskenfeld(bszeile(izeile).klasse3,ifnr+6);
standardmaskenfeld(bszeile(izeile).klasse4,ifnr+7);standardmaskenfeld(bszeile
(izeile).wstd,ifnr+8);ifnrINCR felderprozeilePER .merkesatzalsnachfolger:
nfschulj:=wert(fnrlvsj);nfhalbj:=wert(fnrlvhj);nfjgst:=wert(fnrlvjgst);
nffachkennung:=wert(fnrlvfachkennung).END PROC bsfuellen;BOOL PROC
satzzubehandeln(INT CONST dummynr):IF NOT (izeile<zeilenanzahlCAND dbstatus=
okCAND wert(fnrlvsj)=gewschuljCAND wert(fnrlvhj)=gewhalbj)THEN LEAVE
satzzubehandelnWITH FALSE FI ;IF NOT jgstangabeleerCAND intwert(fnrlvjgst)<>
int(vgljgst)THEN LEAVE satzzubehandelnWITH FALSE FI ;IF NOT fachangabeleer
CAND compress(subtext(wert(fnrlvfachkennung),1,fachlaenge))<>vglfachTHEN
LEAVE satzzubehandelnWITH FALSE FI ;TRUE .END PROC satzzubehandeln;PROC
satzmerken:izeileINCR 1;bszeile(izeile).jgst:=wert(fnrlvjgst);
jgstdesletztensatzes:=intwert(fnrlvjgst);bszeile(izeile).fach:=compress(
subtext(wert(fnrlvfachkennung),1,2));bszeile(izeile).kennung:=subtext(wert(
fnrlvfachkennung),3);bszeile(izeile).kopplung:=wert(fnrlvkopplung);bszeile(
izeile).art:=wert(fnrlvart);bszeile(izeile).klasse1:=wert(fnrlvklgrp1);
bszeile(izeile).klasse2:=wert(fnrlvklgrp2);bszeile(izeile).klasse3:=wert(
fnrlvklgrp3);bszeile(izeile).klasse4:=wert(fnrlvklgrp4);bszeile(izeile).wstd
:=wert(fnrlvwochenstd);.END PROC satzmerken;PROC lehrveranstaltungenspeichern
(BOOL CONST speichern):IF speichernTHEN plausipruefung;ELSE pruefstatus:=0FI
;IF pruefstatus<>0THEN infeld(pruefstatus);return(1)ELSE datenspeichern(
speichern);IF nachfolgesatzvorhandenTHEN holewertedesnachfolgersatzes;search(
dnrlehrveranstaltungen,TRUE );IF dbstatus<>0THEN search(
dnrlehrveranstaltungen,FALSE )FI ;izeile:=0;IF satzzubehandeln(izeile)THEN
changeindex;leerenbszeigen:=FALSE ;setzejgstfuerneuenbildschirm;
naechstenbildschirmzeigenELSE enter(2)FI ELIF letzteeingabezeilegefuelltTHEN
leerenbszeigen:=TRUE ;naechstenbildschirmzeigenELSE enter(2)FI ;FI .
nachfolgesatzvorhanden:nffachkennung<>"".letzteeingabezeilegefuellt:
standardmaskenfeld((zeilenanzahl-1)*felderprozeile+ersteseingabefeld)<>"".
holewertedesnachfolgersatzes:putwert(fnrlvsj,nfschulj);putwert(fnrlvhj,
nfhalbj);putwert(fnrlvjgst,nfjgst);putwert(fnrlvfachkennung,nffachkennung).
naechstenbildschirmzeigen:bsfuellen;infeld(ersteseingabefeld);return(1).
setzejgstfuerneuenbildschirm:izeile:=zeilenanzahl;WHILE
keinbezugaufletztensatzREP izeileDECR 1PER ;jgstdesletztensatzes:=int(bszeile
(izeile).jgst);.keinbezugaufletztensatz:bszeile(izeile).fach="".END PROC
lehrveranstaltungenspeichern;PROC datenspeichern(BOOL CONST speichern):IF
speichernTHEN standardmeldung(meldnrdatenspeichern,"");
datenspeicherungdurchfuehren;ELSE standardmeldung(meldnrdatennichtspeichern,
"");FI ;END PROC datenspeichern;PROC datenspeicherungdurchfuehren:BOOL VAR
aenderungsvermerkzusetzen:=FALSE ;FOR izeileFROM 1UPTO zeilenanzahlREP
holevergleichswerte;IF lvzeileloeschenTHEN aenderungszeileanzeigen;
aenderungsvermerkzusetzen:=TRUE ;altelvloeschenELIF lvzeileeinfuegenTHEN
aenderungszeileanzeigen;aenderungsvermerkzusetzen:=TRUE ;neuelveinfuegenELIF
lvzeileueberschreibenTHEN aenderungszeileanzeigen;aenderungsvermerkzusetzen:=
TRUE ;altelvupdateFI PER ;IF aenderungsvermerkzusetzenTHEN IF
aktuelleshalbjahrzubearbeitenTHEN aenderungsvermerksetzen(wertaktuell)ELSE
aenderungsvermerksetzen(wertgeplant)FI FI .holevergleichswerte:INT VAR
prueffnr:=fachfnrin(izeile);TEXT VAR prueffach:=standardmaskenfeld(prueffnr);
TEXT VAR altesfach:=bszeile(izeile).fach.lvzeileloeschen:prueffach=""CAND
altesfach<>"".altelvloeschen:setzealtesuchwerteindbpuffer;search(
dnrlehrveranstaltungen,TRUE );IF dbstatus=0THEN delete(dnrlehrveranstaltungen
);evtlkurswahldatenbeimbearbeitenaktualisierenFI .lvzeileeinfuegen:prueffach
<>""CAND altesfach="".neuelveinfuegen:setzeneuewerteindbpuffer;
setzenichtsichtbarewerteindbpuffer;insert(dnrlehrveranstaltungen);
evtlkurswahldatenbeimbearbeitenaktualisieren.lvzeileueberschreiben:NOT (
standardmaskenfeld(prueffnr)=bszeile(izeile).fachCAND standardmaskenfeld(
prueffnr+1)=bszeile(izeile).kennungCAND standardmaskenfeld(prueffnr+2)=
bszeile(izeile).artCAND standardmaskenfeld(prueffnr+3)=bszeile(izeile).
klasse1CAND standardmaskenfeld(prueffnr+4)=bszeile(izeile).klasse2CAND
standardmaskenfeld(prueffnr+5)=bszeile(izeile).klasse3CAND standardmaskenfeld
(prueffnr+6)=bszeile(izeile).klasse4CAND standardmaskenfeld(prueffnr+7)=
bszeile(izeile).wstd).altelvupdate:setzealtesuchwerteindbpuffer;search(
dnrlehrveranstaltungen,TRUE );setzeneuewerteindbpuffer;IF standardmaskenfeld(
prueffnr)<>bszeile(izeile).fachCOR compress(standardmaskenfeld(prueffnr+1))<>
bszeile(izeile).kennungTHEN setzenichtsichtbarewerteindbpufferFI ;update(
dnrlehrveranstaltungen);evtlkurswahldatenbeimbearbeitenaktualisieren.
setzealtesuchwerteindbpuffer:putwert(fnrlvsj,gewschulj);putwert(fnrlvhj,
gewhalbj);putwert(fnrlvjgst,bszeile(izeile).jgst);putwert(fnrlvfachkennung,
text(altesfach,fachlaenge)+bszeile(izeile).kennung).setzeneuewerteindbpuffer:
putwert(fnrlvsj,gewschulj);putwert(fnrlvhj,gewhalbj);putwert(fnrlvjgst,
bszeile(izeile).jgst);putwert(fnrlvfachkennung,neuekennung);putwert(fnrlvart,
standardmaskenfeld(prueffnr+2));putwert(fnrlvklgrp1,standardmaskenfeld(
prueffnr+3));putwert(fnrlvklgrp2,standardmaskenfeld(prueffnr+4));putwert(
fnrlvklgrp3,standardmaskenfeld(prueffnr+5));putwert(fnrlvklgrp4,
standardmaskenfeld(prueffnr+6));putwert(fnrlvwochenstd,standardmaskenfeld(
prueffnr+7)).setzenichtsichtbarewerteindbpuffer:putwert(fnrlvkopplung,
neuekopplung);putwert(fnrlvparaphe,"");putwert(fnrlvraumgrp1,"");putwert(
fnrlvraumgrp2,"").neuekennung:text(prueffach,fachlaenge)+compress(
standardmaskenfeld(prueffnr+1)).neuekopplung:textzweistellig(int(bszeile(
izeile).jgst))+neuekennung.END PROC datenspeicherungdurchfuehren;PROC
evtlkurswahldatenbeimbearbeitenaktualisieren:IF intwert(fnrlvjgst)>jgst10
THEN IF aktuelleshalbjahrzubearbeitenOR gewhalbj=zweiteshalbjahrTHEN
kurswahlserverlvaktualisieren(wert(fnrlvjgst),wert(fnrlvjgst),gewhalbj)ELSE
kurswahlserverlvaktualisieren(text(intwert(fnrlvjgst)-1),wert(fnrlvjgst),
gewhalbj)FI FI END PROC evtlkurswahldatenbeimbearbeitenaktualisieren;PROC
aenderungszeileanzeigen:infeld((izeile-1)*felderprozeile+ersteseingabefeld)
END PROC aenderungszeileanzeigen;PROC lehrveranstaltungenzeileeinfuegen(BOOL
CONST zeilerein):INT VAR erstefnr;IF zeilereinTHEN zeileeinfuegenELSE
zeileloeschenFI ;return(1).zeileeinfuegen:aktzeile:=bearbeitungszeilezufeld(
infeld);IF aktzeile=zeilenanzahlTHEN standardmeldung(
meldnrletztezeilenichteinfuegen,"");LEAVE zeileeinfuegenFI ;IF bszeile(
zeilenanzahl).fach<>""THEN merkeverdraengtensatzalsnachfolgesatz;
anzahlgezeigtezeilen:=zeilenanzahlFI ;FOR izeileFROM zeilenanzahl-1DOWNTO
aktzeile+1REP zeileiminternenpufferverschieben;
wertederzeileaufdembildschirmverschiebenPER ;izeile:=aktzeile+1;
leerzeileschreiben;jgstineingefuegterzeilevermerken;neuezeilenausgeben.
merkeverdraengtensatzalsnachfolgesatz:nfschulj:=gewschulj;nfhalbj:=gewhalbj;
nfjgst:=bszeile(zeilenanzahl).jgst;nffachkennung:=text(bszeile(zeilenanzahl).
fach,fachlaenge)+bszeile(zeilenanzahl).kennung.
zeileiminternenpufferverschieben:bszeile(izeile+1).jgst:=bszeile(izeile).jgst
;bszeile(izeile+1).fach:=bszeile(izeile).fach;bszeile(izeile+1).kennung:=
bszeile(izeile).kennung;bszeile(izeile+1).kopplung:=bszeile(izeile).kopplung;
bszeile(izeile+1).art:=bszeile(izeile).art;bszeile(izeile+1).klasse1:=bszeile
(izeile).klasse1;bszeile(izeile+1).klasse2:=bszeile(izeile).klasse2;bszeile(
izeile+1).klasse3:=bszeile(izeile).klasse3;bszeile(izeile+1).klasse4:=bszeile
(izeile).klasse4;bszeile(izeile+1).wstd:=bszeile(izeile).wstd;.
wertederzeileaufdembildschirmverschieben:FOR ifnrFROM erstesfeldderzeileUPTO
letztesfeldderzeileREP standardmaskenfeld(standardmaskenfeld(ifnr),ifnr+
felderprozeile)PER .erstesfeldderzeile:(izeile-1)*felderprozeile+
erstestabellenfeld.letztesfeldderzeile:erstesfeldderzeile+felderprozeile-1.
jgstineingefuegterzeilevermerken:bszeile(izeile).jgst:=bszeile(aktzeile).jgst
;bszeile(izeile).fach:="";bszeile(izeile).kennung:="";bszeile(izeile).
kopplung:="";bszeile(izeile).art:="";bszeile(izeile).klasse1:="";bszeile(
izeile).klasse2:="";bszeile(izeile).klasse3:="";bszeile(izeile).klasse4:="";
bszeile(izeile).wstd:="";standardmaskenfeld(textzweistellig(int(bszeile(
izeile).jgst)),erstefnr);.zeileloeschen:izeile:=bearbeitungszeilezufeld(
infeld);leerzeileschreiben;neuezeilenausgeben.leerzeileschreiben:erstefnr:=
erstesfeldderzeile;standardmaskenfeld(" ",erstefnr);FOR ifnrFROM erstefnr+1
UPTO letztesfeldderzeileREP standardmaskenfeld("",ifnr)PER .
neuezeilenausgeben:infeld(erstefnr);standardfelderausgeben;infeld(erstefnr+1)
.END PROC lehrveranstaltungenzeileeinfuegen;INT PROC bearbeitungszeilezufeld(
INT CONST feldnr):((feldnr-erstestabellenfeld)DIV felderprozeile)+1END PROC
bearbeitungszeilezufeld;PROC eingangsbehandlung(INT CONST plausiart):LET
uebernehmen=1,bearbeiten=2;BOOL VAR ok;reinitparsing;eingangsmaskenfehler:=
FALSE ;ankreuzfelderpruefen;IF mehralseineauswahlangekreuztTHEN
standardmeldung(meldnrungueltigeauswahl,"");pruefstatus:=fnrbearbeiten;
eingangsmaskenfehler:=TRUE ;LEAVE eingangsbehandlungFI ;IF
uebernehmenpruefungTHEN IF ankreuz1THEN ankreuzfehler(fnrbearbeiten);LEAVE
eingangsbehandlungFI ELIF bearbeitenpruefungTHEN IF ankreuz2THEN
ankreuzfehler(fnrfachanguebernehmen);LEAVE eingangsbehandlungELIF ankreuz3
THEN ankreuzfehler(fnrlehrveruebernehmen);LEAVE eingangsbehandlungFI FI ;IF
bearbeitenpruefungTHEN standardpruefe(5,fnrbearbaktsj,fnrbearbgeplsj,0,"",
pruefstatus);IF pruefstatus<>0THEN eingangsmaskenfehler:=TRUE ;LEAVE
eingangsbehandlungELSE jgstpruefung(fnrbearbjgst,ok);IF NOT okTHEN jgstfehler
(fnrbearbjgst);LEAVE eingangsbehandlungFI ;vgljgst:=standardmaskenfeld(
fnrbearbjgst);vglfach:=compress(standardmaskenfeld(fnrbearbfach))FI ELIF
ankreuz2THEN standardpruefe(5,fnrfachangaktsj,fnrfachanggeplsj,0,"",
pruefstatus);IF pruefstatus<>0THEN eingangsmaskenfehler:=TRUE ;LEAVE
eingangsbehandlungELSE jgstpruefung(fnrfachangjgst,ok);IF NOT okTHEN
jgstfehler(fnrfachangjgst);LEAVE eingangsbehandlungELSE vgljgst:=
standardmaskenfeld(fnrfachangjgst)FI ;FI ELSE jgstpruefung(fnrlehrverjgst,ok)
;IF NOT okTHEN jgstfehler(fnrlehrverjgst);LEAVE eingangsbehandlungELSE
vgljgst:=standardmaskenfeld(fnrlehrverjgst)FI ;FI ;IF ankreuz1THEN FOR ifnr
FROM fnrfachanguebernehmenUPTO fnrlehrverjgstREP IF standardmaskenfeld(ifnr)
<>""THEN eintragfehler(ifnr);LEAVE eingangsbehandlungFI PER ELIF ankreuz2
THEN FOR ifnrFROM fnrbearbeitenUPTO fnrbearbfachREP IF standardmaskenfeld(
ifnr)<>""THEN eintragfehler(ifnr);LEAVE eingangsbehandlungFI PER ;IF
standardmaskenfeld(fnrlehrverjgst)<>""THEN eintragfehler(fnrlehrverjgst);
LEAVE eingangsbehandlungFI ELSE FOR ifnrFROM fnrbearbeitenUPTO fnrfachangjgst
REP IF standardmaskenfeld(ifnr)<>""THEN eintragfehler(ifnr);LEAVE
eingangsbehandlungFI PER FI .ankreuzfelderpruefen:INT VAR summe:=0;IF
ankreuz1THEN summeINCR 1FI ;IF ankreuz2THEN summeINCR 1FI ;IF ankreuz3THEN
summeINCR 1FI .mehralseineauswahlangekreuzt:summe<>1.ankreuz1:
standardmaskenfeld(fnrbearbeiten)<>"".ankreuz2:standardmaskenfeld(
fnrfachanguebernehmen)<>"".ankreuz3:standardmaskenfeld(fnrlehrveruebernehmen)
<>"".uebernehmenpruefung:plausiart=uebernehmen.bearbeitenpruefung:plausiart=
bearbeiten.END PROC eingangsbehandlung;PROC ankreuzfehler(INT CONST
fehlerfeld):pruefstatus:=fehlerfeld;eingangsmaskenfehler:=TRUE ;
standardmeldung(meldnrfalschetastezuankreuz,"").END PROC ankreuzfehler;PROC
jgstpruefung(INT CONST fnrpruefjgst,BOOL VAR ok):IF standardmaskenfeld(
fnrpruefjgst)=""THEN bearbeitungallerjgst:=TRUE ;ok:=TRUE ;ELSE
bearbeitungallerjgst:=FALSE ;gewjgst:=int(standardmaskenfeld(fnrpruefjgst));
ok:=lastconversionokCAND (gewjgst=jgst0OR (gewjgst>=jgst5AND gewjgst<=jgst13)
)FI END PROC jgstpruefung;PROC jgstfehler(INT CONST fehlerfeld):pruefstatus:=
fehlerfeld;eingangsmaskenfehler:=TRUE ;standardmeldung(meldnrfehlerhaftejgst,
"").END PROC jgstfehler;PROC eintragfehler(INT CONST fehlerfeld):pruefstatus
:=fehlerfeld;eingangsmaskenfehler:=TRUE ;standardmeldung(
meldnrfalscheausfuellung,"").END PROC eintragfehler;PROC plausipruefung:
pruefstatus:=0;facheintraegepruefen;IF eingabefehlerTHEN LEAVE plausipruefung
FI ;datenkonsistenzpruefen;IF eingabefehlerTHEN LEAVE plausipruefungFI .
eingabefehler:pruefstatus<>0.END PROC plausipruefung;PROC
facheintraegepruefen:anzahleingegebenezeilen:=0;geprueftefaecher:=trenner;IF
gueltigeschuelergruppen=""THEN holegueltigeschuelergruppenFI ;IF
gueltigeklassengruppen=""THEN holegueltigeklassengruppenFI ;IF gueltigelvart=
""THEN holegueltigelvartenFI ;FOR izeileFROM 1UPTO zeilenanzahlREP IF
fachfehlerTHEN LEAVE facheintraegepruefenFI PER .fachfehler:INT VAR prueffnr
:=fachfnrin(izeile);TEXT VAR prueffach:=standardmaskenfeld(prueffnr);IF
prueffachleerTHEN IF eintraginfolgefelderderzeileTHEN pruefstatus:=prueffnr;
standardmeldung(meldnrkeinfachzuanderenangaben,"");TRUE ELSE FALSE FI ELIF
prueffachungueltigTHEN pruefstatus:=prueffnr;standardmeldung(
meldnrungueltigesfach,"");TRUE ELIF length(standardmaskenfeld(prueffnr+
incrfuerkennung))>kennunglaengeTHEN pruefstatus:=prueffnr+incrfuerkennung;
standardmeldung(meldnrkennungzulang,"");TRUE ELIF compress(standardmaskenfeld
(prueffnr+incrfuerkennung))=""THEN pruefstatus:=prueffnr+incrfuerkennung;
standardmeldung(meldnrbitteangabegenauer,"");TRUE ELIF lvartungueltigTHEN
TRUE ELIF klassengruppenungueltigTHEN TRUE ELIF wochenstundenungueltigTHEN
pruefstatus:=prueffnr+incrfuerwstd;TRUE ELSE anzahleingegebenezeilenINCR 1;
FALSE FI .prueffachleer:prueffach="".eintraginfolgefelderderzeile:
standardmaskenfeld(prueffnr+1)<>""COR standardmaskenfeld(prueffnr+2)<>""COR
standardmaskenfeld(prueffnr+3)<>""COR standardmaskenfeld(prueffnr+4)<>""COR
standardmaskenfeld(prueffnr+5)<>""COR standardmaskenfeld(prueffnr+6)<>""COR
standardmaskenfeld(prueffnr+7)<>"".prueffachungueltig:IF
fachkuerzelschongeprueftTHEN FALSE ELIF fachimfachbestandTHEN
geprueftefaecherCAT prueffach;geprueftefaecherCAT trenner;FALSE ELSE TRUE FI
.fachkuerzelschongeprueft:pos(geprueftefaecher,trenner+prueffach+trenner)>0.
fachimfachbestand:putwert(fnrffach,prueffach);search(dnrfaecher,TRUE );
dbstatus=0.lvartungueltig:IF pos(gueltigelvart,trenner+standardmaskenfeld(
prueffnr+incrfuerlvart)+trenner)=0THEN standardmeldung(meldnrungueltigeart,""
);pruefstatus:=prueffnr+incrfuerlvart;TRUE ELSE FALSE FI .
klassengruppenungueltig:pruefjgst:=int(bszeile(izeile).jgst);FOR ifnrFROM
prueffnr+incrfuerklassengranfangUPTO prueffnr+incrfuerklassengrendeREP
pruefklasse:=standardmaskenfeld(ifnr);IF klassengruppeungueltigTHEN
standardmeldung(meldnrungueltigeklassengruppe,"");pruefstatus:=ifnr;LEAVE
klassengruppenungueltigWITH TRUE FI PER ;FALSE .klassengruppeungueltig:IF
pruefklasse=""THEN FALSE ELIF pruefklasseistschuelergruppeTHEN FALSE ELIF
pruefklasseistklassengruppeTHEN FALSE ELIF pruefklasseistgueltigejgstTHEN
FALSE ELSE TRUE FI .pruefklasseistschuelergruppe:pos(gueltigeschuelergruppen,
trenner+bszeile(izeile).jgst+pruefklasse+trenner)>0.
pruefklasseistklassengruppe:IF pos(gueltigeklassengruppen,trenner+pruefklasse
+trenner)=0THEN FALSE ELIF pruefjgst=jgst0THEN TRUE ELSE putwert(
fnrkgklassengrp,pruefklasse);search(dnrklassengruppen,TRUE );IF dbstatus<>0
THEN FALSE ELSE sugruppen:=wert(fnrkgschuelergrp);laengesugruppen:=length(
sugruppen);possugruppe:=1;WHILE possugruppe<laengesugruppenREP sugruppejgst:=
subtext(sugruppen,possugruppe,possugruppe+1);IF int(sugruppejgst)<>pruefjgst
THEN LEAVE pruefklasseistklassengruppeWITH FALSE FI ;possugruppeINCR
laengeeinersugruppePER ;TRUE FI FI .pruefklasseistgueltigejgst:gueltigejgst:=
FALSE ;pruefbez:=int(pruefklasse);IF lastconversionokTHEN IF pruefbez>=jgst5
CAND pruefbez<=jgst13THEN IF pruefjgst=jgst0OR pruefjgst=pruefbezTHEN
gueltigejgst:=TRUE FI FI FI ;gueltigejgst.wochenstundenungueltig:
standardpruefe(1,prueffnr+incrfuerwstd,0,0,"",pruefstatus);IF pruefstatus=0
THEN standardpruefe(2,prueffnr+incrfuerwstd,0,0,"",pruefstatus);pruefstatus<>
0ELSE TRUE FI .END PROC facheintraegepruefen;INT PROC fachfnrin(INT CONST
zeilennr):(zeilennr-1)*felderprozeile+ersteseingabefeldEND PROC fachfnrin;
PROC datenkonsistenzpruefen:FOR izeileFROM 1UPTO zeilenanzahlREP IF
zeileungueltigTHEN pruefstatus:=prueffnr;standardmeldung(
meldnrlehrveranstaltunggibtsschon,"");LEAVE datenkonsistenzpruefenFI PER .
zeileungueltig:IF leerzeileTHEN FALSE ELIF
zeileistimschluesselunveraendertgebliebenTHEN FALSE ELSE
ergebnisderpruefungzeileschongespeichertFI .leerzeile:INT VAR prueffnr:=
fachfnrin(izeile);TEXT VAR prueffach:=standardmaskenfeld(prueffnr);prueffach=
"".zeileistimschluesselunveraendertgeblieben:standardmaskenfeld(prueffnr)=
bszeile(izeile).fachCAND compress(standardmaskenfeld(prueffnr+1))=bszeile(
izeile).kennung.ergebnisderpruefungzeileschongespeichert:
neuewerteindbpuffersetzen;search(dnrlehrveranstaltungen,TRUE );dbstatus=0.
neuewerteindbpuffersetzen:putwert(fnrlvsj,gewschulj);putwert(fnrlvhj,gewhalbj
);putwert(fnrlvjgst,bszeile(izeile).jgst);putwert(fnrlvfachkennung,text(
prueffach,fachlaenge)+compress(standardmaskenfeld(prueffnr+1))).END PROC
datenkonsistenzpruefen;PROC schulhalbjahrbestimmen:IF akthalbj=""THEN
akthalbj:=schulkenndatum(texthalbj);aktschulj:=schulkenndatum(textschulj)FI ;
IF standardmaskenfeld(fnrlehrveruebernehmen)<>""THEN
aktuelleshalbjahrzubearbeiten:=FALSE ELSE aktuelleshalbjahrzubearbeiten:=
standardmaskenfeld(fnrbearbaktsj)<>""OR standardmaskenfeld(fnrfachangaktsj)<>
""FI ;gewhalbj:=akthalbj;gewschulj:=aktschulj;IF NOT
aktuelleshalbjahrzubearbeitenTHEN geplanteshjundsjberechnen(gewhalbj,
gewschulj)FI END PROC schulhalbjahrbestimmen;PROC holegueltigeschuelergruppen
:gueltigeschuelergruppen:=trenner;inittupel(dnraktschuelergruppen);
statleseschleife(dnraktschuelergruppen,gewschulj,gewhalbj,fnrsgrpsj,fnrsgrphj
,PROC schuelergruppelesen)END PROC holegueltigeschuelergruppen;PROC
schuelergruppelesen(BOOL VAR b):IF dbstatus<>0OR wert(fnrsgrpsj)<>gewschulj
OR wert(fnrsgrphj)<>gewhalbjTHEN b:=TRUE ELSE gueltigeschuelergruppenCAT wert
(fnrsgrpjgst);gueltigeschuelergruppenCAT wert(fnrsgrpkennung);
gueltigeschuelergruppenCAT trennerFI END PROC schuelergruppelesen;PROC
holegueltigeklassengruppen:gueltigeklassengruppen:=trenner;inittupel(
dnrklassengruppen);statleseschleife(dnrklassengruppen,"","",fnrkgklassengrp,
fnrkgklassengrp,PROC klassengruppelesen)END PROC holegueltigeklassengruppen;
PROC klassengruppelesen(BOOL VAR b):IF dbstatus<>0THEN b:=TRUE ELSE
gueltigeklassengruppenCAT wert(fnrkgklassengrp);gueltigeklassengruppenCAT
trennerFI END PROC klassengruppelesen;PROC holegueltigelvarten:gueltigelvart
:=trenner;inittupel(dnrschluessel);statleseschleife(dnrschluessel,artbestand,
"",fnrschlsachgebiet,fnrschlschluessel,PROC holelvart)END PROC
holegueltigelvarten;PROC holelvart(BOOL VAR b):IF wert(fnrschlsachgebiet)>
artbestandCOR dbstatus<>0THEN b:=TRUE ELSE gueltigelvartCAT wert(
fnrschlschluessel);gueltigelvartCAT trennerFI END PROC holelvart;TEXT PROC
textzweistellig(INT CONST i):IF i<10THEN "0"+text(i)ELSE text(i)FI END PROC
textzweistellig;PROC initfelderdeseingangsbildschirms:INT VAR i;FOR iFROM 1
UPTO feldanzmaskeeingangREP feldbs1(i):=""PER END PROC
initfelderdeseingangsbildschirms;PROC wertedeseingangsbildschirmsmerken:INT
VAR i;letztecursorfnr:=infeld;FOR iFROM 1UPTO feldanzmaskeeingangREP feldbs1(
i):=standardmaskenfeld(i)PER END PROC wertedeseingangsbildschirmsmerken;PROC
wertedeseingangsbildschirmsholen:INT VAR i;FOR iFROM 1UPTO
feldanzmaskeeingangREP standardmaskenfeld(feldbs1(i),i)PER END PROC
wertedeseingangsbildschirmsholen;PROC initbszeilepuffer:FOR izeileFROM 1UPTO
zeilenanzahlREP bszeile(izeile).jgst:="";bszeile(izeile).fach:="";bszeile(
izeile).kennung:="";bszeile(izeile).art:="";bszeile(izeile).klasse1:="";
bszeile(izeile).klasse2:="";bszeile(izeile).klasse3:="";bszeile(izeile).
klasse4:="";bszeile(izeile).wstd:="";PER END PROC initbszeilepuffer;END
PACKET lehrveranstaltungenbenennen