summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.schuelerjgst aendern
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/1.schuelerjgst aendern')
-rw-r--r--app/schulis/2.2.1/src/1.schuelerjgst aendern161
1 files changed, 161 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/1.schuelerjgst aendern b/app/schulis/2.2.1/src/1.schuelerjgst aendern
new file mode 100644
index 0000000..1a80c4f
--- /dev/null
+++ b/app/schulis/2.2.1/src/1.schuelerjgst aendern
@@ -0,0 +1,161 @@
+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
+