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 --- .../2.2.1/src/4.lehrveranstaltungen benennen | 480 +++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 app/schulis/2.2.1/src/4.lehrveranstaltungen benennen (limited to 'app/schulis/2.2.1/src/4.lehrveranstaltungen benennen') 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 +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 possugruppepruefjgst +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 + -- cgit v1.2.3