summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listenweise erg vers konf
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/1.listenweise erg vers konf')
-rw-r--r--app/schulis/2.2.1/src/1.listenweise erg vers konf219
1 files changed, 219 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/1.listenweise erg vers konf b/app/schulis/2.2.1/src/1.listenweise erg vers konf
new file mode 100644
index 0000000..83ce515
--- /dev/null
+++ b/app/schulis/2.2.1/src/1.listenweise erg vers konf
@@ -0,0 +1,219 @@
+PACKET listenweiseergverskonfDEFINES bearbeitungergverskonf,
+ergverskonfnichtspeichern,ergverskonfspeichern:LET tofather=1,tograndfather=2
+,jgst5=5,jgst13=13,leerejgst=" ",maxfach=3,niltext="",blank=" ",
+namenstrenner=", ",unterstrich="_",null=0,leererzug=" ",meldtrenner="#";
+LET nachpruefling="n",versetzter="vs",wiederholer="wf";LET schuljahrkey=
+"Schuljahr",schulhalbjahrkey="Schulhalbjahr";LET maxschueler=15,erstesfeld=2,
+felderprozeile=4,schuelerproseite=16,laengefach=2;LET gwklasse=1;LET
+meldbestleer=59,meldnichtspeichern=63,meldplausi=57,meldwarten=69,
+meldspeicherung=132,meldspeicherfehler=131,meldfalscheauswahl=56,
+meldtransaktionsfehler=138,meldfalscheeingabe1=136,meldfalscheeingabe2=137,
+meldungueltigesfach=149;LET pruefartgrenzen=3;LET fnrjgst=2,fnrtutor=3,
+fnrklasse=2,fnrname=3,fnrvers=4,fnrnachprfaecher=5;LET einejgst=2,eineklasse=
+3;LET standardanfang=1,standardeinstieg=4;LET allespruefen=1,einejgstpruefen=
+2,eineklassepruefen=3;LET anzkenndaten=3,sek2min=11,laufbestand="ls";LET
+logtextbeginn="Anw. 1.4.4 Versetzungen für ",logtextalleklassen=
+"alle Klassen";BOOL VAR nochwelcheda,alleklassen;INT VAR waspruefen:=0;INT
+VAR laengeklasse,laengename,laengenachprfaecher,bestandindex,laengevers,
+schuelerzahl,aktuellesfeld;ROW schuelerproseiteROW anzkenndatenTEXT VAR
+kenndatum;ROW schuelerproseiteTEXT VAR altedaten;TEXT VAR schuelertid:="",
+hjdtid:="";TEXT VAR versetzungszeichen:="";TEXT VAR startkey1,startkey2,
+sicherungstupel,vergleichsjgst,zulaessigekuerzel,schuljahr,schulhalbjahr,
+gueltigejgst,gueltigerzug;TEXT VAR fachkatalog:="";LET trenner="�";PROC
+bearbeitungergverskonf:reinitparsing;eingangsbildschirmpruefen;IF
+eingangsbildschirmokTHEN initialisierungenvornehmen;naechsteportionlesen;IF
+keinemehrdaTHEN bestandleermelden;enter(tofather)ELSE standardnprocFI ELSE
+eingangsmaskenfehler;return(tofather)FI .eingangsbildschirmpruefen:INT VAR
+pruefstatus:=null;startkey1:=niltext;startkey2:=niltext;vergleichsjgst:=
+niltext;alleklassen:=FALSE ;IF standardmaskenfeld(fnrjgst)<>niltextTHEN
+standardpruefe(pruefartgrenzen,fnrjgst,jgst5,jgst13,niltext,pruefstatus);IF
+pruefstatus=nullTHEN startkey1:=jgstaufber(standardmaskenfeld(fnrjgst));
+vergleichsjgst:=startkey1;startkey2:=standardmaskenfeld(fnrtutor);IF
+standardmaskenfeld(fnrtutor)=niltextTHEN bestandindex:=einejgstELSE
+bestandindex:=eineklasseFI FI ELIF standardmaskenfeld(fnrtutor)<>niltextTHEN
+pruefstatus:=fnrtutorELSE alleklassen:=TRUE FI .eingangsbildschirmok:
+pruefstatus=null.initialisierungenvornehmen:plausipruefungvorbereiten;
+bestandsetzen;standardstartproc(maske(vergleichsknoten));laengenfestlegen;IF
+waspruefen=einejgstpruefenCAND sek2THEN startebildschirmblock(ixsustatjgst,
+maxschueler);ELSE startebildschirmblock(ixsustatjgstzug,maxschueler);FI .sek2
+:int(startkey1)>=sek2min.bestandsetzen:bestimmebestand;setzestartkeys;
+pruefebestand.bestimmebestand:schuljahr:=schulkenndatum(schuljahrkey);
+schulhalbjahr:=schulkenndatum(schulhalbjahrkey);IF alleklassenTHEN
+alleklassensetzenELSE SELECT bestandindexOF CASE einejgst:bestandjgstCASE
+eineklasse:bestandklasseEND SELECT FI ;.alleklassensetzen:waspruefen:=
+allespruefen;infeld(fnrjgst).bestandjgst:waspruefen:=einejgstpruefen;infeld(
+fnrjgst).bestandklasse:waspruefen:=eineklassepruefen;infeld(fnrtutor).
+setzestartkeys:inittupel(dnrschueler);putwert(fnrsustatuss,laufbestand);
+putwert(fnrsusgrpjgst,startkey1);putwert(fnrsusgrpzugtut,startkey2);.
+pruefebestand:IF waspruefen=einejgstpruefenCAND sek2THEN search(ixsustatjgst,
+FALSE )ELSE search(ixsustatjgstzug,FALSE )FI ;IF dbstatus<>nullCOR (NOT
+pruefungspeziell(waspruefen))THEN bestandleermelden;return(tofather);LEAVE
+bearbeitungergverskonfELSE nochwelcheda:=TRUE FI .laengenfestlegen:
+laengeklasse:=standardfeldlaenge(fnrklasse);laengename:=standardfeldlaenge(
+fnrname);laengevers:=standardfeldlaenge(fnrvers);laengenachprfaecher:=
+standardfeldlaenge(fnrnachprfaecher).plausipruefungvorbereiten:
+standardmeldung(meldwarten,niltext);zulaessigekuerzel:=nachpruefling+
+versetzter+wiederholer+blank.naechsteportionlesen:blocklesenundausgeben.
+keinemehrda:NOT nochwelcheda.bestandleermelden:infeld(fnrjgst);
+standardmeldung(meldbestleer,niltext).eingangsmaskenfehler:standardmeldung(
+meldfalscheauswahl,niltext);infeld(pruefstatus).END PROC
+bearbeitungergverskonf;PROC ergverskonfnichtspeichern:nichtspeichernmelden;
+startkeyssetzen;neuerblock.nichtspeichernmelden:standardmeldung(
+meldnichtspeichern,niltext);pause(10).startkeyssetzen:restoretupel(
+dnrschueler,sicherungstupel);#dr02.05.88#changeindex.END PROC
+ergverskonfnichtspeichern;PROC ergverskonfspeichern:BOOL VAR hjdgefunden:=
+FALSE ;pruefeplausibilitaet;IF dateninordnungTHEN speicherungdurchfuehren;
+startkeyssetzen;neuerblockELSE eingabefehler;return(tofather)FI .
+pruefeplausibilitaet:standardmeldung(meldplausi,niltext);BOOL VAR
+dateninordnung:=TRUE ,richtigesverskz,ungueltigefachangaben:=FALSE ,
+fachfehler:=FALSE ;INT VAR versfeld:=felderprozeile;FOR suindFROM 1UPTO
+schuelerzahlREP pruefezeile;IF NOT dateninordnungTHEN LEAVE
+pruefeplausibilitaetFI ;versfeldINCR felderprozeilePER .pruefezeile:TEXT VAR
+gefundenesverskz:=standardmaskenfeld(versfeld);richtigesverskz:=
+gefundenesverskz=niltextOR (pos(zulaessigekuerzel,gefundenesverskz)>null);IF
+richtigesverskzTHEN pruefefachangabenzuverskz;IF ungueltigefachangabenTHEN
+dateninordnung:=FALSE FI ELSE dateninordnung:=FALSE FI .
+pruefefachangabenzuverskz:IF gefundenesverskz<>nachprueflingTHEN IF NOT
+keineeingabenTHEN ungueltigefachangaben:=TRUE FI ELSE pruefefachangaben;IF
+fachfehlerTHEN ungueltigefachangaben:=TRUE FI FI .pruefefachangaben:IF
+fachkatalog=niltextTHEN holeaktuellenfachkatalogFI ;TEXT VAR fachangaben:=
+standardmaskenfeld(versfeld+1);INT VAR lenfachang:=length(fachangaben);INT
+VAR fachanzahl:=(lenfachang+1)DIV laengefach;INT VAR i;TEXT VAR fach;FOR i
+FROM 0UPTO fachanzahl-1REP fach:=subtext(fachangaben,i*laengefach+1,i*
+laengefach+laengefach);changeall(fach,unterstrich,niltext);fach:=compress(
+fach);IF fach<>niltextCAND fachungueltig(fach)THEN fachfehler:=TRUE FI UNTIL
+fachfehlerPER .keineeingaben:BOOL VAR b:=TRUE ;INT VAR lv;TEXT VAR t:=
+standardmaskenfeld(versfeld+1);FOR lvFROM 1UPTO length(t)REP b:=(tSUB lv)=
+unterstrichUNTIL NOT bPER ;b.speicherungdurchfuehren:vorbereiten;
+logeintragvornehmen;aendernschleife;kurzwarten.logeintragvornehmen:TEXT VAR
+eintrag:=logtextbeginn;IF alleklassenTHEN eintragCAT logtextalleklassenELSE
+eintragCAT startkey1;eintragCAT startkey2FI ;logeintrag(eintrag).kurzwarten:
+pause(10).vorbereiten:gueltigejgst:=vergleichsjgst;gueltigerzug:=startkey2;.
+aendernschleife:INT VAR suind;INT VAR zahlderaenderungen:=null;INT VAR
+satzindex:=felderprozeile-1;FOR suindFROM 1UPTO schuelerzahlREP
+behandleschuelersatz;satzindexINCR felderprozeilePER .behandleschuelersatz:
+IF vergleichsjgst=niltextTHEN gueltigejgstneubestimmenFI ;IF startkey2=
+niltextTHEN gueltigenzugneubestimmenFI ;IF datenveraendertTHEN
+fuehreaenderungaus;meldevollzugFI .gueltigejgstneubestimmen:TEXT VAR
+pruefjgst:=subtext(standardmaskenfeld(satzindex-1),1,2);IF pruefjgst<>
+leerejgstTHEN gueltigejgst:=pruefjgstFI ;.gueltigenzugneubestimmen:TEXT VAR
+pruefzug:=subtext(standardmaskenfeld(satzindex-1),3,6);IF pruefzug<>leererzug
+THEN gueltigerzug:=pruefzugFI .datenveraendert:altedaten(suind)<>(
+standardmaskenfeld(satzindex+1)+standardmaskenfeld(satzindex+2)).
+fuehreaenderungaus:lesenvorbereiten;lesen;hjdgefunden:=dbstatus=ok;IF
+dbstatus=okTHEN saveupdateposition(dnrhalbjahresdaten);hjdtid:=gettid;
+versetzungszeichen:=wert(fnrhjdversetzung);zurueckschreiben;ELSE
+versetzungszeichen:=niltext;neuensatzankoppelnFI .lesenvorbereiten:
+zahlderaenderungenINCR 1;schluesselfuerhjdsetzen(dnrhalbjahresdaten,kenndatum
+[suind],schuljahr,schulhalbjahr,gueltigejgst);.lesen:search(
+dnrhalbjahresdaten,TRUE );.zurueckschreiben:IF datenaenderungTHEN
+transaktionsfehlerELSE schreibtransaktionFI .datenaenderung:(
+versetzungsergebnis+nachpruefungsfaecher)<>altedaten(suind).
+versetzungsergebnis:wert(fnrhjdversetzung).transaktionsfehler:standardmeldung
+(meldtransaktionsfehler,niltext);return(tofather);infeld(suind*felderprozeile
+);LEAVE ergverskonfspeichern.schreibtransaktion:setzedaten;
+vorhandenensatzaendern.setzedaten:setzeverskz;setzefaecherdaten.setzeverskz:
+putwert(fnrhjdversetzung,standardmaskenfeld(satzindex+1)).setzefaecherdaten:
+INT VAR fachindanfang:=1,fachindende:=2;INT VAR fachind;TEXT VAR
+eingegebenenpfaecher:=standardmaskenfeld(satzindex+2);TEXT VAR einzelfach;
+FOR fachindFROM 0UPTO maxfach-1REP einzelfach:=subtext(eingegebenenpfaecher,
+fachindanfang,fachindende);IF einzelfach<>laengefach*unterstrichTHEN
+changeall(einzelfach,unterstrich,niltext);putwert(fnrhjdnachfach1+fachind,
+compress(einzelfach))ELSE putwert(fnrhjdnachfach1+fachind,niltext)FI ;
+fachindanfangINCR laengefach;fachindendeINCR laengefach;PER .
+vorhandenensatzaendern:IF standardmaskenfeld(satzindex+1)<>versetzungszeichen
+THEN restoreupdateposition(dnrhalbjahresdaten);#update(dnrhalbjahresdaten);
+dr10.05.88#selupdate(dnrhalbjahresdaten)ELSE replace(dnrhalbjahresdaten,
+hjdtid)FI .neuensatzankoppeln:setzedaten;putwert(fnrhjdkennung,compress(
+gueltigerzug));insert(dnrhalbjahresdaten);hjdtid:=gettid;.meldevollzug:TEXT
+VAR meldungstext;IF dbstatus=0THEN IF NOT hjdgefundenTHEN
+neueshjdtidinschuelerdateieintragen(satzindex+1);FI ;#dr04.05.88hjdtid:=
+gettid;neueshjdtidinschuelerdateieintragen(satzindex+1);##dr10.05.88
+eventuellinstatwuerfelaendern(satzindex+1);#meldungstext:=compress(
+standardmaskenfeld(satzindex))+meldtrenner;standardmeldung(meldspeicherung,
+meldungstext)ELSE meldungstext:=text(dbstatus)+meldtrenner;meldungstextCAT
+compress(standardmaskenfeld(satzindex));meldungstextCAT meldtrenner;
+standardmeldung(meldspeicherfehler,meldungstext);return(tofather);LEAVE
+ergverskonfspeichernFI ;infeld(satzindex+1).startkeyssetzen:restoretupel(
+dnrschueler,sicherungstupel);#dr02.05.88#changeindex.eingabefehler:IF NOT
+richtigesverskzTHEN standardmeldung(meldfalscheeingabe1,standardmaskenfeld(
+versfeld)+meldtrenner);infeld(versfeld)ELIF fachfehlerTHEN standardmeldung(
+meldungueltigesfach,fach+meldtrenner);infeld(versfeld+1)ELSE standardmeldung(
+meldfalscheeingabe2,niltext);infeld(versfeld+1)FI .END PROC
+ergverskonfspeichern;PROC neuerblock:blocklesenundausgeben;IF nochwelcheda
+THEN return(tofather)ELSE enter(tograndfather)FI .END PROC neuerblock;PROC
+blocklesenundausgeben:parsenooffields(fnrhjdnachfach3-dnrhalbjahresdaten);
+vorbereiten;initgruppenwechsel;gewuenschteszeigen;nachbereiten;reinitparsing.
+vorbereiten:IF NOT nochwelchedaTHEN reinitparsing;LEAVE blocklesenundausgeben
+FI ;standardmeldung(meldwarten,niltext);schuelerzahl:=null;aktuellesfeld:=
+erstesfeld.gewuenschteszeigen:parsenooffields(12);#dr04.05.88#bildschirmblock
+(PROC datenzeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen);
+reinitparsing#dr04.05.88#.nachbereiten:nochwelcheda:=(schuelerzahl>null);IF
+nochwelchedaTHEN savetupel(dnrschueler,sicherungstupel);#dr02.05.88#
+restlichezeilenloeschen;infeld(standardanfang);standardfelderausgebenELSE
+LEAVE blocklesenundausgebenFI ;infeld(standardeinstieg).
+restlichezeilenloeschen:INT VAR zeilenzaehler;INT VAR zeilenfeld:=(
+schuelerzahl*felderprozeile)+1;FOR zeilenzaehlerFROM schuelerzahlUPTO
+maxschuelerREP loeschezeilePER .loeschezeile:INT VAR zeilenincr;FOR
+zeilenincrFROM 1UPTO felderprozeileREP zeilenfeldINCR 1;standardmaskenfeld(
+standardfeldlaenge(zeilenfeld)*blank,zeilenfeld);feldschutz(zeilenfeld)PER .
+END PROC blocklesenundausgeben;PROC namezeigen:namenretten;standardmaskenfeld
+(text(schuelername+namenstrenner+schuelervorname,laengename),aktuellesfeld);
+aktuellesfeldINCR 1.namenretten:TEXT VAR schuelername,schuelervorname;
+schuelername:=wert(fnrsufamnames);schuelervorname:=wert(fnrsurufnames);
+kenndatum[schuelerzahl][1]:=schuelername;kenndatum[schuelerzahl][2]:=
+schuelervorname;kenndatum[schuelerzahl][3]:=datumrekonversion(wert(
+fnrsugebdatums));.END PROC namezeigen;PROC datenzeigen:BOOL VAR neuerstellen
+:=FALSE ;zeigen;merken.zeigen:vorbereiten;alteklassezeigen;namezeigen;
+halbjahresdatensuchen;versetzungsdatenzeigen.vorbereiten:schuelerzahlINCR 1;
+TEXT VAR merkdaten:=niltext.alteklassezeigen:TEXT CONST alteklasse:=
+jgstaufber(wert(fnrsusgrpjgst))+wert(fnrsusgrpzugtut);gruppenwechsel(
+alteklasse,gwklasse,laengeklasse,1,aktuellesfeld).halbjahresdatensuchen:
+inittupel(dnrhalbjahresdaten);#schluesselfuerhjdsetzen(dnrhalbjahresdaten,
+kenndatum[schuelerzahl],schuljahr,schulhalbjahr,startkey1);search(
+dnrhalbjahresdaten,TRUE );neuerstellen:=dbstatus<>ok##dr04.05.88#IF wert(
+fnrsutidakthjd)<>niltext#neudr04.05.88#THEN disablestop;readtid(
+dnrhalbjahresdaten,wert(fnrsutidakthjd));IF iserrorTHEN clearerror;
+neuerstellen:=TRUE ELSE neuerstellen:=FALSE FI ;enablestopELSE neuerstellen:=
+TRUE FI .versetzungsdatenzeigen:versetzunginmaske;feldfreigeben;
+nachprfaecherinmaske;feldfreigeben.versetzunginmaske:TEXT VAR versetzungskz:=
+niltext;IF NOT neuerstellenTHEN versetzungskz:=wert(fnrhjdversetzung);FI ;
+merkdatenCAT versetzungskz;standardmaskenfeld(versetzungskz,aktuellesfeld).
+nachprfaecherinmaske:TEXT VAR nachprfaecher:=niltext;IF NOT neuerstellenTHEN
+nachprfaecher:=nachpruefungsfaecher;FI ;merkdatenCAT nachprfaecher;
+standardmaskenfeld(nachprfaecher,aktuellesfeld).feldfreigeben:feldfrei(
+aktuellesfeld);aktuellesfeldINCR 1.merken:altedaten(schuelerzahl):=merkdaten.
+END PROC datenzeigen;TEXT PROC nachpruefungsfaecher:TEXT VAR nfaecher:=
+niltext;INT VAR fachind;FOR fachindFROM 0UPTO maxfach-1REP IF wert(
+fnrhjdnachfach1+fachind)=niltextTHEN nfaecherCAT (laengefach*unterstrich)
+ELSE nfaecherCAT text(wert(fnrhjdnachfach1+fachind),laengefach);FI PER ;
+nfaecherEND PROC nachpruefungsfaecher;PROC feldloeschen(INT CONST laenge):
+standardmaskenfeld(laenge*blank,aktuellesfeld)END PROC feldloeschen;BOOL
+PROC pruefungspeziell(INT CONST wasistzutun):BOOL VAR b:=FALSE ;SELECT
+wasistzutunOF CASE allespruefen:pruefungalleklassen(b)CASE einejgstpruefen:
+pruefungeinejgst(b)CASE eineklassepruefen:pruefungeineklasse(b)END SELECT ;b
+END PROC pruefungspeziell;PROC pruefungalleklassen(BOOL VAR bool):bool:=(wert
+(fnrsustatuss)=laufbestand)END PROC pruefungalleklassen;PROC pruefungeinejgst
+(BOOL VAR bool):bool:=(wert(fnrsustatuss)=laufbestandCAND jgstaufber(wert(
+fnrsusgrpjgst))=startkey1)END PROC pruefungeinejgst;PROC pruefungeineklasse(
+BOOL VAR bool):bool:=(wert(fnrsustatuss)=laufbestandCAND jgstaufber(wert(
+fnrsusgrpjgst))=startkey1CAND wert(fnrsusgrpzugtut)=startkey2)END PROC
+pruefungeineklasse;PROC neueshjdtidinschuelerdateieintragen(INT CONST nr):IF
+standardmaskenfeld(nr)<>versetzungszeichenTHEN inittupel(dnrschueler);putwert
+(fnrsufamnames,wert(fnrhjdfamnames));putwert(fnrsurufnames,wert(
+fnrhjdrufnames));putwert(fnrsugebdatums,wert(fnrhjdgebdats));search(
+dnrschueler,TRUE );IF dbstatus=okTHEN schuelertid:=gettid;putwert(
+fnrsutidakthjd,hjdtid);replace(dnrschueler,schuelertid)FI FI END PROC
+neueshjdtidinschuelerdateieintragen;BOOL PROC fachungueltig(TEXT CONST objekt
+):pos(fachkatalog,trenner+objekt+trenner)=0END PROC fachungueltig;PROC
+fachcat(BOOL VAR b):fachkatalogCAT wert(dnrfaecher+1)+trenner;END PROC
+fachcat;PROC holeaktuellenfachkatalog:fachkatalog:=trenner;statleseschleife(
+dnrfaecher,"","",dnrfaecher+1,dnrfaecher+1,PROC fachcat);END PROC
+holeaktuellenfachkatalog;#dr10.05.88PROC eventuellinstatwuerfelaendern(INT
+CONST nummer):IF standardmaskenfeld(nummer)<>versetzungszeichenTHEN
+kuerzelsummeeinsrunter(statnrversetzung,jgstaufber(gueltigejgst),compress(
+gueltigerzug),compress(laufbestand),compress(versetzungszeichen));
+kuerzelsummeeinsrauf(statnrversetzung,jgstaufber(gueltigejgst),compress(
+gueltigerzug),compress(laufbestand),compress(standardmaskenfeld(nummer)));FI
+END PROC eventuellinstatwuerfelaendern;#END PACKET listenweiseergverskonf
+