summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/0.listenweise klassen erf
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/0.listenweise klassen erf')
-rw-r--r--app/schulis/2.2.1/src/0.listenweise klassen erf215
1 files changed, 215 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/0.listenweise klassen erf b/app/schulis/2.2.1/src/0.listenweise klassen erf
new file mode 100644
index 0000000..9b3c02e
--- /dev/null
+++ b/app/schulis/2.2.1/src/0.listenweise klassen erf
@@ -0,0 +1,215 @@
+PACKET listenweiseklassenerfDEFINES neueinfuegenklassen,entfernenklassen,
+bearbeitungklassen,klassennichtspeichern,klassenspeichern:LET tofather=1,
+tograndfather=2,niltext="",blank=" ",null=0,trenner="/",meldtrenner="#";LET
+standardanfang=1,standardeinstieg=4;LET jgst5=5,jgst13=13,erstejgst="05";LET
+erstesfeld=3,felderprozeile=4,klassenproseite=18;LET meldbestleer=59,
+meldnichtspeichern=63,meldplausi=57,meldwertzulang=60,meldwarten=69,
+meldspeicherung=132,meldspeicherfehler=131,meldfalscheauswahl=56,
+meldfortschreibung=140,meldkeinelehrer=141,meldfalscherlehrer=142,meldschonda
+=143,meldnichtleer=144,meldnichtda=134,meldloeschung=145;LET maxlaengekennung
+=4,maxlaengeintegabez=4;LET pruefartalternative=5,pruefartgrenzen=3;LET
+fnrjgst=4,fnrakt=3,fnrgepl=2,fnrfort2=5,fnrfortneu=6;LET keysj="Schuljahr",
+keyshj="Schulhalbjahr";LET wertaktuell="aktuell",wertgeplant="geplant";LET
+paraphentrenner=" ";LET vaaendern=1,vaneu=2,valoeschen=3;LET hj1="1",hj2="2";
+BOOL VAR nochwelcheda,akthalbjahr,fortschreibungzweiteshalbjahr,
+fortschreibungneuesschuljahr,fortschreibung;INT VAR klassenzahl,aktuellesfeld
+,pruefstatus,verarbeitungsart;ROW klassenproseiteTEXT VAR kennung;ROW
+klassenproseiteTEXT VAR altedaten;TEXT VAR neuesschuljahr,neueshalbjahr,
+vergleichsjgst,lehrerparaphen:=niltext,schuljahr:=niltext,halbjahr:=niltext;
+PROC eingangsbildschirmpruefen(BOOL CONST neu):reinitparsing;
+ankreuzfelderpruefen;IF eingangsbildschirmokTHEN jgstpruefen;IF
+eingangsbildschirmokTHEN fortschreibungpruefenFI FI .ankreuzfelderpruefen:
+standardpruefe(pruefartalternative,fnrgepl,fnrakt,null,niltext,pruefstatus).
+jgstpruefen:akthalbjahr:=standardmaskenfeld(fnrakt)<>niltext;standardpruefe(
+pruefartgrenzen,fnrjgst,jgst5,jgst13,niltext,pruefstatus);.
+fortschreibungpruefen:vergleichsjgst:=jgstaufber(standardmaskenfeld(fnrjgst))
+;fortschreibungzweiteshalbjahr:=standardmaskenfeld(fnrfort2)<>niltext;
+fortschreibungneuesschuljahr:=standardmaskenfeld(fnrfortneu)<>niltext;
+fortschreibung:=(fortschreibungzweiteshalbjahrCOR
+fortschreibungneuesschuljahr);IF (fortschreibungzweiteshalbjahrCAND
+fortschreibungneuesschuljahr)THEN pruefstatus:=fnrfort2ELIF (fortschreibung
+CAND akthalbjahr)THEN pruefstatus:=fnraktELIF (fortschreibungCAND (NOT neu))
+THEN pruefstatus:=meldfortschreibungELIF ((NOT akthalbjahr)CAND (
+vergleichsjgst=erstejgst))CAND fortschreibungneuesschuljahrTHEN pruefstatus:=
+fnrjgstFI ;IF pruefstatus=meldfortschreibungTHEN standardmeldung(pruefstatus,
+niltext);pruefstatus:=fnrjgstELIF pruefstatus<>nullTHEN standardmeldung(
+meldfalscheauswahl,niltext)FI .eingangsbildschirmok:pruefstatus=0.END PROC
+eingangsbildschirmpruefen;PROC neueinfuegenklassen:verarbeitungsart:=vaneu;
+eingangsbehandlungEND PROC neueinfuegenklassen;PROC entfernenklassen:
+verarbeitungsart:=valoeschen;eingangsbehandlungEND PROC entfernenklassen;
+PROC bearbeitungklassen:verarbeitungsart:=vaaendern;eingangsbehandlungEND
+PROC bearbeitungklassen;PROC eingangsbehandlung:BOOL CONST neueklassen:=(
+verarbeitungsart=vaneu);eingangsbildschirmpruefen(neueklassen);IF
+eingangsbildschirmokTHEN neuesschuljahrhalbjahrerrechnen;
+initialisierungenvornehmen;blocklesenundausgeben;IF keinemehrdaTHEN
+bestandleermelden;enter(tofather)ELSE standardnprocFI ELSE
+eingangsmaskenfehler;return(tofather)FI .eingangsbildschirmok:pruefstatus=0.
+initialisierungenvornehmen:bestandsetzen;plausipruefungvorbereiten;
+standardstartproc(maske(vergleichsknoten)).bestandsetzen:infeld(fnrjgst);IF
+verarbeitungsart=vaaendernTHEN pruefebestandELSE nochwelcheda:=trueFI .
+pruefebestand:inittupel(dnraktschuelergruppen);klassengrunddateninpuffer;
+search(dnraktschuelergruppen,FALSE );IF keineklassezudieserjgstTHEN
+bestandleermelden;return(tofather);LEAVE eingangsbehandlungELSE nochwelcheda
+:=trueFI .keineklassezudieserjgst:(dbstatus<>null)COR ((jgstaufber(wert(
+fnrsgrpjgst))<>vergleichsjgst)COR (wert(fnrsgrpsj)<>neuesschuljahr)COR (wert(
+fnrsgrphj)<>neueshalbjahr)).plausipruefungvorbereiten:standardmeldung(
+meldwarten,niltext);.keinemehrda:NOT nochwelcheda.bestandleermelden:
+standardmeldung(meldbestleer,niltext).eingangsmaskenfehler:infeld(pruefstatus
+).END PROC eingangsbehandlung;PROC klassennichtspeichern:nichtspeichernmelden
+;neuerblock.nichtspeichernmelden:standardmeldung(meldnichtspeichern,niltext);
+pause(10).END PROC klassennichtspeichern;PROC klassenspeichern:SELECT
+verarbeitungsartOF CASE vaaendern:aenderungenspeichernCASE vaneu:
+neueklassenspeichernCASE valoeschen:klassenloeschenEND SELECT .
+aenderungenspeichern:speicherungdurchfuehren(PROC (BOOL VAR )
+pruefeaenderungsplausi,false,true,false).neueklassenspeichern:
+speicherungdurchfuehren(PROC (BOOL VAR )pruefeneuplausi,true,false,false).
+klassenloeschen:speicherungdurchfuehren(PROC (BOOL VAR )pruefeloeschplausi,
+false,false,true).END PROC klassenspeichern;PROC pruefeloeschplausi(BOOL VAR
+dateninordnung):INT VAR satzindex:=erstesfeld,plausind;FOR plausindFROM 1
+UPTO klassenzahlREP pruefezeile;IF NOT dateninordnungTHEN fehlermeldung;
+LEAVE pruefeloeschplausiFI ;satzindexINCR felderprozeilePER .pruefezeile:IF
+standardmaskenfeld(satzindex)<>niltextTHEN dateninordnung:=
+schuelergruppevorhandenFI .schuelergruppevorhanden:klassengrunddateninpuffer;
+putwert(fnrsgrpkennung,standardmaskenfeld(satzindex));search(
+dnraktschuelergruppen,TRUE );aktuellesfeld:=satzindex;(dbstatus=null).
+fehlermeldung:IF (akthalbjahr)CAND (dbstatus=null)THEN TEXT VAR pruefsg:=
+vergleichsjgst+standardmaskenfeld(satzindex);standardmeldung(meldnichtleer,
+pruefsg+meldtrenner)ELSE standardmeldung(meldnichtda,standardmaskenfeld(
+satzindex)+meldtrenner)FI .END PROC pruefeloeschplausi;PROC pruefeneuplausi(
+BOOL VAR dateninordnung):BOOL VAR parapheninordnung;INT VAR satzindex:=
+erstesfeld,plausind;IF lehrerparaphen=niltextTHEN holeallelehrerparaphenFI ;
+FOR plausindFROM 1UPTO klassenzahlREP IF standardmaskenfeld(satzindex)<>
+niltextTHEN IF length(standardmaskenfeld(satzindex))>maxlaengekennungTHEN
+dateninordnung:=FALSE ;standardmeldung(meldwertzulang,meldtrenner);
+aktuellesfeld:=satzindex;LEAVE pruefeneuplausiELIF length(standardmaskenfeld(
+satzindex+3))>maxlaengeintegabezTHEN dateninordnung:=FALSE ;standardmeldung(
+meldwertzulang,meldtrenner);aktuellesfeld:=satzindex+3;LEAVE pruefeneuplausi
+ELSE parapheninordnung:=korrekteparaphe(satzindex+1)CAND korrekteparaphe(
+satzindex+2);dateninordnung:=parapheninordnungCAND schuelergruppenochnichtda;
+IF NOT dateninordnungTHEN fehlermeldung;LEAVE pruefeneuplausiFI FI FI ;
+satzindexINCR felderprozeilePER .schuelergruppenochnichtda:TEXT VAR pruefsg:=
+vergleichsjgst+standardmaskenfeld(satzindex);klassengrunddateninpuffer;
+putwert(fnrsgrpkennung,standardmaskenfeld(satzindex));search(
+dnraktschuelergruppen,TRUE );aktuellesfeld:=satzindex;(dbstatus<>null).
+fehlermeldung:IF NOT parapheninordnungTHEN IF lehrerparaphen=paraphentrenner
+THEN standardmeldung(meldkeinelehrer,niltext)ELSE standardmeldung(
+meldfalscherlehrer,standardmaskenfeld(aktuellesfeld)+meldtrenner)FI ELSE
+standardmeldung(meldschonda,pruefsg+meldtrenner)FI .END PROC pruefeneuplausi;
+PROC pruefeaenderungsplausi(BOOL VAR dateninordnung):INT VAR satzindex:=
+erstesfeld,plausind;IF lehrerparaphen=niltextTHEN holeallelehrerparaphenFI ;
+FOR plausindFROM 1UPTO klassenzahlREP IF length(standardmaskenfeld(satzindex)
+)>maxlaengekennungTHEN dateninordnung:=FALSE ;standardmeldung(meldwertzulang,
+meldtrenner);aktuellesfeld:=satzindex;LEAVE pruefeaenderungsplausiELIF length
+(standardmaskenfeld(satzindex+3))>maxlaengeintegabezTHEN dateninordnung:=
+FALSE ;standardmeldung(meldwertzulang,meldtrenner);aktuellesfeld:=satzindex+3
+;LEAVE pruefeaenderungsplausiELSE dateninordnung:=korrekteparaphe(satzindex+1
+)CAND korrekteparaphe(satzindex+2);IF NOT dateninordnungTHEN fehlermeldung;
+LEAVE pruefeaenderungsplausiFI ;FI ;satzindexINCR felderprozeilePER .
+fehlermeldung:IF lehrerparaphen=paraphentrennerTHEN standardmeldung(
+meldkeinelehrer,niltext)ELSE standardmeldung(meldfalscherlehrer,
+standardmaskenfeld(aktuellesfeld)+meldtrenner)FI .END PROC
+pruefeaenderungsplausi;PROC speicherungdurchfuehren(PROC (BOOL VAR )plausi,
+BOOL CONST neu,aendern,loeschen):pruefeplausibilitaet;IF dateninordnungTHEN
+speicherntransaktion;neuerblockELSE eingabefehler;return(tofather)FI ;.
+pruefeplausibilitaet:BOOL VAR dateninordnung:=true;standardmeldung(meldplausi
+,niltext);plausi(dateninordnung).speicherntransaktion:BOOL VAR
+transaktionsfehler:=false;BOOL VAR aenderungsvermerkzusetzen:=FALSE ;
+aendernschleife;IF aenderungsvermerkzusetzenTHEN IF akthalbjahrTHEN
+aenderungsvermerksetzen(wertaktuell)ELSE aenderungsvermerksetzen(wertgeplant)
+FI ELSE pause(10)FI .aendernschleife:INT VAR suind;INT VAR zahlderaenderungen
+:=null;INT VAR satzindex:=erstesfeld;FOR suindFROM 1UPTO klassenzahlREP
+behandleklassensatz;satzindexINCR felderprozeilePER .behandleklassensatz:IF
+datenveraendertTHEN fuehreaenderungaus;aenderungsvermerkzusetzen:=TRUE ;
+meldevollzugFI .datenveraendert:((NOT aendern)CAND (standardmaskenfeld(
+satzindex)<>niltext))COR (aendernCAND (altedaten(suind)<>(standardmaskenfeld(
+satzindex+1)+trenner+standardmaskenfeld(satzindex+2)+trenner+
+standardmaskenfeld(satzindex+3)))).fuehreaenderungaus:lesenvorbereiten;lesen;
+zurueckschreiben.lesenvorbereiten:zahlderaenderungenINCR 1;
+klassengrunddateninpuffer;putwert(fnrsgrpkennung,standardmaskenfeld(satzindex
+)).lesen:IF NOT neuTHEN search(dnraktschuelergruppen,TRUE );
+transaktionsfehler:=(dbstatus<>null)FI .zurueckschreiben:IF NOT
+transaktionsfehlerTHEN saveupdateposition(dnraktschuelergruppen);IF NOT
+loeschenTHEN putwert(fnrsgrplehrer,standardmaskenfeld(satzindex+1));putwert(
+fnrsgrpstellvlehrer,standardmaskenfeld(satzindex+2));bereiteintegabezauf;
+putwert(fnrsgrpintegabez,standardmaskenfeld(satzindex+3));IF aendernTHEN
+selupdate(dnraktschuelergruppen)ELSE insert(dnraktschuelergruppen);#
+wuerfelwarten(vergleichsjgst,dr10.05.88standardmaskenfeld(satzindex))#FI
+ELSE delete(dnraktschuelergruppen);#wuerfelwarten(vergleichsjgst,dr10.05.88
+standardmaskenfeld(satzindex))#FI FI .bereiteintegabezauf:IF
+standardmaskenfeld(satzindex+3)=niltextCAND length(standardmaskenfeld(
+satzindex))<=2THEN standardmaskenfeld(standardmaskenfeld(erstesfeld-1)+
+standardmaskenfeld(satzindex),satzindex+3)FI .meldevollzug:TEXT VAR
+meldungstext;IF dbstatus=nullTHEN meldungstext:=vergleichsjgst+
+standardmaskenfeld(satzindex)+meldtrenner;IF NOT loeschenTHEN standardmeldung
+(meldspeicherung,meldungstext)ELSE standardmeldung(meldloeschung,meldungstext
+)FI ELSE meldungstext:=text(dbstatus)+meldtrenner;meldungstextCAT (
+vergleichsjgst+standardmaskenfeld(satzindex));meldungstextCAT meldtrenner;
+standardmeldung(meldspeicherfehler,meldungstext);return(tofather);LEAVE
+speicherungdurchfuehrenFI ;infeld(satzindex).eingabefehler:infeld(
+aktuellesfeld).END PROC speicherungdurchfuehren;PROC neuerblock:enter(
+tograndfather)END PROC neuerblock;PROC blocklesenundausgeben:SELECT
+verarbeitungsartOF CASE vaaendern:aenderungsblocklesenCASE vaneu:
+blocklesenneuCASE valoeschen:blocklesenloeschenEND SELECT .blocklesenneu:
+neuerbildschirm.blocklesenloeschen:neuerbildschirm;
+paraphenfelderundintegabezsperren.paraphenfelderundintegabezsperren:INT VAR
+sperrfeld:=erstesfeld+1;INT VAR i;FOR iFROM 1UPTO klassenproseiteREP
+feldschutz(sperrfeld);feldschutz(sperrfeld+1);feldschutz(sperrfeld+2);
+sperrfeldINCR felderprozeilePER .END PROC blocklesenundausgeben;PROC
+neuerbildschirm:vorbereiten;gewuenschteszeigen;nachbereiten.vorbereiten:
+standardmaskenfeld(vergleichsjgst,erstesfeld-1);aktuellesfeld:=erstesfeld.
+gewuenschteszeigen:IF fortschreibungTHEN TEXT VAR altejgst:=vergleichsjgst;
+TEXT VAR altesschuljahr:=neuesschuljahr,alteshalbjahr:=neueshalbjahr;
+klassenzahl:=null;IF fortschreibungneuesschuljahrTHEN vergleichsjgst:=
+jgstaufber(text(int(altejgst)-1));FI ;neuesschuljahr:=schulkenndatum(keysj);
+neueshalbjahr:=schulkenndatum(keyshj);klassengrunddateninpuffer;
+statleseschleife(dnraktschuelergruppen,vergleichsjgst,niltext,fnrsgrpjgst,
+fnrsgrpkennung,PROC zeigeklassendaten);vergleichsjgst:=altejgst;
+neuesschuljahr:=altesschuljahr;neueshalbjahr:=alteshalbjahrFI .nachbereiten:
+klassenzahl:=klassenproseite;infeld(standardanfang);standardfelderausgeben;
+infeld(erstesfeld).END PROC neuerbildschirm;PROC aenderungsblocklesen:
+vorbereiten;gewuenschteszeigen;nachbereiten.vorbereiten:standardmeldung(
+meldwarten,niltext);klassenzahl:=null;standardmaskenfeld(vergleichsjgst,
+erstesfeld-1);aktuellesfeld:=erstesfeld.gewuenschteszeigen:
+klassengrunddateninpuffer;statleseschleife(dnraktschuelergruppen,
+vergleichsjgst,niltext,fnrsgrpjgst,fnrsgrpkennung,PROC zeigeklassendaten).
+nachbereiten:restlichezeilenloeschen;infeld(standardanfang);
+standardfelderausgeben;infeld(standardeinstieg).restlichezeilenloeschen:INT
+VAR zeilenzaehler;INT VAR zeilenfeld:=(klassenzahl*felderprozeile)+erstesfeld
+;FOR zeilenzaehlerFROM klassenzahl+1UPTO klassenproseiteREP loeschezeilePER .
+loeschezeile:INT VAR zeilenincr;FOR zeilenincrFROM 1UPTO felderprozeileREP
+standardmaskenfeld(standardfeldlaenge(zeilenfeld)*blank,zeilenfeld);
+feldschutz(zeilenfeld);zeilenfeldINCR 1PER ;.END PROC aenderungsblocklesen;
+PROC zeigeklassendaten(BOOL VAR schluss):IF gehoertdazuTHEN klassenzahlINCR 1
+;kennungzeigen;paraphenzeigen;integabezzeigenFI .gehoertdazu:schluss:=(
+jgstaufber(wert(fnrsgrpjgst))<>vergleichsjgst)COR klassenzahl=klassenproseite
+;NOT schluss.kennungzeigen:TEXT CONST zug:=wert(fnrsgrpkennung);kennung(
+klassenzahl):=zug;standardmaskenfeld(zug,aktuellesfeld);IF NOT fortschreibung
+THEN feldschutz(aktuellesfeld);FI ;aktuellesfeldINCR 1.paraphenzeigen:TEXT
+VAR paraphen:=wert(fnrsgrplehrer);TEXT CONST par:=wert(fnrsgrpstellvlehrer);
+standardmaskenfeld(paraphen,aktuellesfeld);feldfrei(aktuellesfeld);
+aktuellesfeldINCR 1;standardmaskenfeld(par,aktuellesfeld);feldfrei(
+aktuellesfeld);aktuellesfeldINCR 1;paraphenCAT (trenner+par);altedaten(
+klassenzahl):=paraphen+trenner+wert(fnrsgrpintegabez).integabezzeigen:
+standardmaskenfeld(wert(fnrsgrpintegabez),aktuellesfeld);feldfrei(
+aktuellesfeld);aktuellesfeldINCR 1.END PROC zeigeklassendaten;PROC
+feldloeschen(INT CONST laenge):standardmaskenfeld(laenge*blank,aktuellesfeld)
+END PROC feldloeschen;PROC holeallelehrerparaphen:lehrerparaphen:=
+paraphentrenner;statleseschleife(dnrlehrer,niltext,niltext,fnrlparaphe,
+fnrlfamname,PROC setzelehrparaphe)END PROC holeallelehrerparaphen;PROC
+neuesschuljahrhalbjahrerrechnen:IF schuljahr=niltextTHEN schuljahr:=
+schulkenndatum(keysj);halbjahr:=schulkenndatum(keyshj)FI ;IF akthalbjahrTHEN
+neuesschuljahr:=schuljahr;neueshalbjahr:=halbjahrELIF halbjahr=hj1THEN
+neuesschuljahr:=schuljahr;neueshalbjahr:=hj2ELSE ersteshalbjahrneuesschuljahr
+FI .ersteshalbjahrneuesschuljahr:neuesschuljahr:=subtext(schuljahr,3,4);
+neuesschuljahrCAT text(int(neuesschuljahr)+1,2);neueshalbjahr:=hj1.END PROC
+neuesschuljahrhalbjahrerrechnen;PROC setzelehrparaphe(BOOL VAR b):
+lehrerparaphenCAT paraphe(wert(fnrlparaphe))END PROC setzelehrparaphe;TEXT
+PROC paraphe(TEXT CONST p):p+paraphentrennerEND PROC paraphe;BOOL PROC
+korrekteparaphe(INT CONST ind):TEXT CONST par:=standardmaskenfeld(ind);INT
+VAR paraphenpos:=pos(lehrerparaphen,paraphentrenner+paraphe(par));
+aktuellesfeld:=ind;(par=niltext)COR (paraphenpos>null)END PROC
+korrekteparaphe;PROC klassengrunddateninpuffer:putwert(fnrsgrpsj,
+neuesschuljahr);putwert(fnrsgrphj,neueshalbjahr);putwert(fnrsgrpjgst,
+vergleichsjgst);END PROC klassengrunddateninpuffer;END PACKET
+listenweiseklassenerf;
+