From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/schulis/2.2.1/src/1.schuelerjgst aendern | 161 +++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 app/schulis/2.2.1/src/1.schuelerjgst aendern (limited to 'app/schulis/2.2.1/src/1.schuelerjgst aendern') 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 + -- cgit v1.2.3