summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.lehrveranstaltungen benennen
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
committerLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
commit04e68443040c7abad84d66477e98f93bed701760 (patch)
tree2b6202afae659e773bf6916157d23e83edfa44e3 /app/schulis/2.2.1/src/4.lehrveranstaltungen benennen
downloadeumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.gz
eumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.bz2
eumel-src-04e68443040c7abad84d66477e98f93bed701760.zip
Initial import
Diffstat (limited to 'app/schulis/2.2.1/src/4.lehrveranstaltungen benennen')
-rw-r--r--app/schulis/2.2.1/src/4.lehrveranstaltungen benennen480
1 files changed, 480 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/4.lehrveranstaltungen benennen b/app/schulis/2.2.1/src/4.lehrveranstaltungen benennen
new file mode 100644
index 0000000..7965000
--- /dev/null
+++ b/app/schulis/2.2.1/src/4.lehrveranstaltungen benennen
@@ -0,0 +1,480 @@
+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
+