app/schulis/2.2.1/src/1.schuelerjgst aendern

Raw file
Back to index

PACKET schuelerjgstaendernDEFINES schuelerjgstbearbeiten,
schuelerjgstaenderungschuelerzeigen,
schuelerjgstaenderungfuerausgesuchteschuelerbearbeiten,
schuelerjgstaenderungspeichern,pruefungschuelerjgst:LET maskenname=
"ms schuelerjgst aendern",maskennameeingang="ms schuelerjgst aendern eingang"
,fnrname=2,fnrrufname=3,fnrgebdatum=4,fnrjgst=5,fnrhalbjahr=6,fnrzug=7,
fnrzugang=8,fnraktuellehjd=9,fnrneueshj1=10,fnrneuehjd1=11,fnrneueshj2=12,
fnrneuehjd2=13;LET schulhalbjahr="Schulhalbjahr";LET aktbestand="ls",
aktschuljahr="Schuljahr";LET meldunggibtsnicht=71,meldunglistenerstellung=7,
meldungkeineliste=68,meldungletzter=67,meldungspeicherung=50,
meldungkeinespeicherung=63,pruefemeldung=57;LET dateiname="Schülerliste";
FILE VAR f;TEXT VAR schuelertupel:="",zugangsicherung:="",schuelertid:="",
hjdtid:="";TEXT VAR akthalbjahr,jgstalt,zugalt,jgst,zug,jgsttext;LET 
gesamtanzahlhalbjahre=12,laengehalbjahreseintrag=4;LET jgst05="05",jgst13=
"13";LET jgstufe10=10;LET oblitrenner="$",leer="",punkt=".";LET 
anzschlfeldersu=3;BOOL VAR falschesdatum:=FALSE ;INT CONST gesamtzeilenlaenge
:=gesamtanzahlhalbjahre*laengehalbjahreseintrag;ROW anzschlfeldersuTEXT VAR 
schluessel;TAG VAR maske;TEXT VAR ausgabezeile:="",halbjahrkuerzel:="";LET 
logtextbeginn="Anw. 1.2.4 Änderung";PROC schuelerjgstbearbeiten:BOOL VAR 
suexistiert:=FALSE ;falschesdatum:=FALSE ;systemdboff;reinitparsing;
schluesselbereitstellen;pruefeobnameexistiert(suexistiert);IF NOT 
falschesdatumTHEN IF suexistiertTHEN schluessel(1):=wert(fnrsufamnames);
schluessel(2):=wert(fnrsurufnames);schluessel(3):=datumrekonversion(wert(
fnrsugebdatums));loeschedieerstellteobjektliste;standardstartproc(maskenname)
;bereiteaenderungvor;infeld(fnrjgst);standardnprocELSE standardmeldung(
meldunggibtsnicht,"");return(1)FI ELSE return(1)FI .END PROC 
schuelerjgstbearbeiten;PROC schluesselbereitstellen:schluessel(1):=
standardmaskenfeld(fnrname);schluessel(2):=standardmaskenfeld(fnrrufname);
schluessel(3):=datumrekonversion(standardmaskenfeld(fnrgebdatum));END PROC 
schluesselbereitstellen;PROC pruefeobnameexistiert(BOOL VAR suexist):TEXT 
VAR datenbankwerte,schluesselwerte;inittupel(dnrschueler);
maskenwerteindatenbank;IF NOT falschesdatumTHEN search(ixsustatfamrufgeb,
FALSE );IF dbstatus=okTHEN saveupdateposition(dnrschueler);datenbankwerte:=
wert(fnrsurufnames)+datumrekonversion(wert(fnrsugebdatums));schluesselwerte:=
schluessel(2)+schluessel(3);suexist:=(wert(fnrsufamnames)=schluessel(1)CAND (
(schluessel(2)=leerAND schluessel(3)=leer)OR (pos(datenbankwerte,
schluesselwerte)=1)))ELSE suexist:=FALSE FI FI .END PROC 
pruefeobnameexistiert;PROC bereiteaenderungvor:saveupdateposition(dnrschueler
);savetupel(dnrschueler,schuelertupel);schuelertid:=gettid;hjdtid:=wert(
fnrsutidakthjd);zugangsicherung:=wert(fnrsuartzugang);wertelesen;
fuelledbdateninfelder;fuellehjddateninfelder;infeld(1);standardfelderausgeben
;infeld(fnrjgst).wertelesen:akthalbjahr:=schulkenndatum(schulhalbjahr);.
fuelledbdateninfelder:jgstalt:=jgstaufber(wert(fnrsusgrpjgst));zugalt:=
compress(wert(fnrsusgrpzugtut));standardmaskenfeld(schluessel(1),fnrname);
standardmaskenfeld(schluessel(2),fnrrufname);standardmaskenfeld(schluessel(3)
,fnrgebdatum);standardmaskenfeld(akthalbjahr,fnrhalbjahr);standardmaskenfeld(
jgstalt,fnrjgst);standardmaskenfeld(zugalt,fnrzug);standardmaskenfeld(wert(
fnrsuartzugang),fnrzugang);.fuellehjddateninfelder:jgsttext:=jgstalt;
halbjahrkuerzel:=jgsttext+punkt+akthalbjahr;lieferehalbjahreszeile(
ausgabezeile,halbjahrkuerzel);standardmaskenfeld(ausgabezeile,fnraktuellehjd)
;IF jgstalt=jgst05THEN erhoehejgsttext(TRUE );halbjahrkuerzel:=jgsttext+punkt
+akthalbjahr;standardmaskenfeld(halbjahrkuerzel,fnrneueshj1);
lieferehalbjahreszeile(ausgabezeile,halbjahrkuerzel);standardmaskenfeld(
ausgabezeile,fnrneuehjd1);liefereleerzeileELIF jgstalt=jgst13THEN 
erhoehejgsttext(FALSE );halbjahrkuerzel:=jgsttext+punkt+akthalbjahr;
standardmaskenfeld(halbjahrkuerzel,fnrneueshj1);lieferehalbjahreszeile(
ausgabezeile,halbjahrkuerzel);standardmaskenfeld(ausgabezeile,fnrneuehjd1);
liefereleerzeileELSE erhoehejgsttext(FALSE );halbjahrkuerzel:=jgsttext+punkt+
akthalbjahr;standardmaskenfeld(halbjahrkuerzel,fnrneueshj1);
lieferehalbjahreszeile(ausgabezeile,halbjahrkuerzel);standardmaskenfeld(
ausgabezeile,fnrneuehjd1);jgsttext:=jgstalt;erhoehejgsttext(TRUE );
halbjahrkuerzel:=jgsttext+punkt+akthalbjahr;standardmaskenfeld(
halbjahrkuerzel,fnrneueshj2);lieferehalbjahreszeile(ausgabezeile,
halbjahrkuerzel);standardmaskenfeld(ausgabezeile,fnrneuehjd2)FI .
liefereleerzeile:standardmaskenfeld(leereshj,fnrneueshj2);standardmaskenfeld(
leerezeile,fnrneuehjd2).leereshj:text(" ",laengehalbjahreseintrag).leerezeile
:text(" ",gesamtzeilenlaenge).END PROC bereiteaenderungvor;PROC 
erhoehejgsttext(BOOL CONST erhoehen):INT VAR jgstint:=int(jgsttext);IF 
erhoehenTHEN jgstintINCR 1ELSE jgstintDECR 1FI ;jgsttext:=jgstaufber(text(
jgstint))END PROC erhoehejgsttext;PROC loeschedieerstellteobjektliste:forget(
dateiname,quiet);END PROC loeschedieerstellteobjektliste;PROC 
schuelerjgstaenderungschuelerzeigen:BOOL VAR listeexistiertnicht;
falschesdatum:=FALSE ;systemdboff;schluesselbereitstellen;
maskenwerteindatenbank;IF NOT falschesdatumTHEN standardmeldung(
meldunglistenerstellung,"");parsenooffields(5);objektlistestarten(
ixsustatfamrufgeb,schluessel(1),fnrsufamnames,TRUE ,listeexistiertnicht);IF 
listeexistiertnichtTHEN reinitparsing;standardmeldung(meldungkeineliste,"");
return(1)ELSE datensatzlistenausgabe(PROC (INT CONST )suerfassungschueler,
TRUE ,BOOL PROC pruefungschuelerjgst)FI ELSE return(1)FI .END PROC 
schuelerjgstaenderungschuelerzeigen;PROC maskenwerteindatenbank:putwert(
fnrsufamnames,schluessel(1));putwert(fnrsurufnames,schluessel(2));disablestop
;initmaske(maske,maskennameeingang);putwert(fnrsugebdatums,datumskonversion(
schluessel(3)));IF iserrorTHEN clearerror;meldeauffaellig(maske,157);infeld(
fnrgebdatum);falschesdatum:=TRUE ;enablestopELSE enablestop;putwert(
fnrsustatuss,aktbestand);FI END PROC maskenwerteindatenbank;BOOL PROC 
pruefungschuelerjgst:wert(fnrsustatuss)=aktbestandEND PROC 
pruefungschuelerjgst;PROC 
schuelerjgstaenderungfuerausgesuchteschuelerbearbeiten:BOOL VAR ok,
kannbearbeitetwerden:=FALSE ;loeschedieerstellteobjektliste;
objektlistebeenden(dateiname,TRUE );reinitparsing;
holeerstenschluesselausdatei(ok);WHILE okREP pruefeobnameexistiert(ok);IF ok
THEN kannbearbeitetwerden:=TRUE ;ok:=FALSE ELSE 
holenaechstenschluesselausdatei(ok)FI PER ;IF kannbearbeitetwerdenTHEN 
standardstartproc(maskenname);bereiteaenderungvor;infeld(fnrjgst);
standardnprocELSE enter(2)FI .END PROC 
schuelerjgstaenderungfuerausgesuchteschuelerbearbeiten;PROC 
holeerstenschluesselausdatei(BOOL VAR ok):IF NOT exists(dateiname)THEN ok:=
FALSE ;LEAVE holeerstenschluesselausdateiFI ;f:=sequentialfile(input,
dateiname);holenaechstenschluesselausdatei(ok);END PROC 
holeerstenschluesselausdatei;PROC holenaechstenschluesselausdatei(BOOL VAR ok
):TEXT VAR thesaurustext:="";INT VAR schluesselbeginn,schluesseltrennung,i;
IF eof(f)THEN ok:=FALSE ;loeschedieerstellteobjektlisteELSE getline(f,
thesaurustext);bestimmeschluesselausthesaurustext;ok:=TRUE FI .
bestimmeschluesselausthesaurustext:schluesselbeginn:=pos(thesaurustext,
oblitrenner);schluesseltrennung:=pos(thesaurustext,oblitrenner,
schluesselbeginn+1);FOR iFROM 1UPTO anzschlfeldersuREP IF schluesseltrennung>
0THEN schluessel(i):=subtext(thesaurustext,schluesselbeginn+1,
schluesseltrennung-1);schluesselbeginn:=schluesseltrennung;schluesseltrennung
:=pos(thesaurustext,oblitrenner,schluesselbeginn+1);ELSE schluessel(i):=
subtext(thesaurustext,schluesselbeginn+1);FI ;schluessel(3):=
datumrekonversion(schluessel(3));PER ;.END PROC 
holenaechstenschluesselausdatei;PROC schuelerjgstaenderungspeichern(BOOL 
CONST speichern):IF speichernTHEN INT VAR fehlerstatus:=0;
pruefeplausibilitaet(fehlerstatus);IF datenfehlerfreiTHEN standardmeldung(
meldungspeicherung,"");datenspeichern;
vorbereitendernaechstenschluesselbehandlungELSE fehlerbehandeln;return(1)FI 
ELSE standardmeldung(meldungkeinespeicherung,"");
vorbereitendernaechstenschluesselbehandlungFI .datenfehlerfrei:fehlerstatus=0
.fehlerbehandeln:infeld(fehlerstatus).datenspeichern:logeintragvornehmen;
aenderungschreiben;halbjahresdatenloeschen(schluessel,jgstalt,jgst,
akthalbjahr).logeintragvornehmen:TEXT VAR eintrag:=logtextbeginn;eintragCAT 
" """;eintragCAT schluessel(1);eintragCAT ", ";eintragCAT schluessel(2);
eintragCAT ", ";eintragCAT datumskonversion(schluessel(3));eintragCAT """";
logeintrag(eintrag).aenderungschreiben:IF jgstoderzuggeaendertTHEN 
dbfelderfuellen;aenderunginhjdeintragen;restoreupdateposition(dnrschueler);
selupdate(dnrschueler);IF dbstatus<>0THEN restoretupel(dnrschueler,
schuelertupel)ELSE IF jgst<>jgstaltTHEN IF int(jgst)>=jgstufe10THEN 
kurswahlserveraktualisieren(jgst,"","")FI ;IF int(jgstalt)>=jgstufe10THEN 
kurswahlserveraktualisieren(jgstalt,"","")FI ;FI ;FI ;ELSE dbfelderfuellen;
replace(dnrschueler,schuelertid);FI .dbfelderfuellen:putwert(fnrsusgrpjgst,
jgst);putwert(fnrsusgrpzugtut,zug);putwert(fnrsuartzugang,standardmaskenfeld(
fnrzugang));.jgstoderzuggeaendert:jgst<>jgstaltCOR zug<>zugalt.
aenderunginhjdeintragen:IF hjdtid<>leerTHEN putwert(fnrhjdjgst,jgst);putwert(
fnrhjdkennung,zug);selupdate(dnrhalbjahresdaten);IF dbstatus=okTHEN putwert(
fnrsutidakthjd,gettid)FI FI .END PROC schuelerjgstaenderungspeichern;PROC 
vorbereitendernaechstenschluesselbehandlung:IF exists(dateiname)THEN 
holenaechstenschluesselauslisteELSE enter(2)FI .
holenaechstenschluesselausliste:BOOL VAR ok,kannbearbeitetwerden:=FALSE ;
holenaechstenschluesselausdatei(ok);WHILE okREP pruefeobnameexistiert(ok);IF 
okTHEN kannbearbeitetwerden:=TRUE ;ok:=FALSE ELSE 
holenaechstenschluesselausdatei(ok)FI PER ;IF kannbearbeitetwerdenTHEN 
bereiteaenderungvor;return(1)ELSE behandleendederlistenabarbeitungFI .
behandleendederlistenabarbeitung:standardmeldung(meldungletzter,"");enter(3).
END PROC vorbereitendernaechstenschluesselbehandlung;PROC 
pruefeplausibilitaet(INT VAR fstatus):INT VAR fmeld;LET fmeldbittefuellen=52,
fmeldnichtimbestand=55,bestandzugang="c02 zugang";fstatus:=0;standardmeldung(
pruefemeldung,"");IF NOT imschlbestand(standardmaskenfeld(fnrzugang),
bestandzugang)THEN fstatus:=fnrzugang;fmeld:=fmeldnichtimbestand;
behandledenplausifehlerFI ;jgst:=jgstaufber(standardmaskenfeld(fnrjgst));zug
:=compress(standardmaskenfeld(fnrzug));IF jgst=leerTHEN fstatus:=fnrjgst;
fmeld:=fmeldbittefuellen;behandledenplausifehlerFI ;IF zug=leerTHEN fstatus:=
fnrzug;fmeld:=fmeldbittefuellen;behandledenplausifehlerFI ;IF NOT 
imbestandschuelergruppenTHEN fstatus:=fnrjgst;fmeld:=fmeldnichtimbestand;
behandledenplausifehlerFI .imbestandschuelergruppen:TEXT VAR schuljahr:=
schulkenndatum(aktschuljahr),halbjahr:=schulkenndatum(schulhalbjahr);INT VAR 
dateinummer:=dnraktschuelergruppen;putwert(dateinummer+1,schuljahr);putwert(
dateinummer+2,halbjahr);putwert(dateinummer+3,jgst);putwert(dateinummer+4,zug
);search(dateinummer,TRUE );dbstatus=0.behandledenplausifehler:
standardmeldung(fmeld,"");LEAVE pruefeplausibilitaet.END PROC 
pruefeplausibilitaet;END PACKET schuelerjgstaendern