diff options
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 konf | 219 |
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 + |