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.halbjahresdaten bearbeiten | 679 +++++++++++++++++++++ 1 file changed, 679 insertions(+) create mode 100644 app/schulis/2.2.1/src/1.halbjahresdaten bearbeiten (limited to 'app/schulis/2.2.1/src/1.halbjahresdaten bearbeiten') diff --git a/app/schulis/2.2.1/src/1.halbjahresdaten bearbeiten b/app/schulis/2.2.1/src/1.halbjahresdaten bearbeiten new file mode 100644 index 0000000..3427981 --- /dev/null +++ b/app/schulis/2.2.1/src/1.halbjahresdaten bearbeiten @@ -0,0 +1,679 @@ +PACKET halbjahresdatenbearbeitenDEFINES halbjahresdatenbearbeiten, +halbjahresdatenblaettern,halbjahresdatenspeichern, +listezuhalbjahresdatenzeigen, +halbjahresdatenausgewaehlterschuelerbearbeitenvorbereiten, +halbjahresdatendesschuelersnichtbearbeiten, +halbjahresdatendesschuelersbearbeiten,halbjahresdatenentfernenvorbereiten, +halbjahresdatenentfernen,halbjahresdatennichtentfernen,pruefunghjd, +hjderfassungswert:LET maskennamebearb1="ms bearb halbjahresdaten 1", +maskennamebearb2="ms bearb halbjahresdaten 2",maskennameeingang= +"ms bearb halbjahresdaten 0",fnrname=2,fnrrufname=3,fnrgebdatum=4, +fnrgewschuljahr=5,fnrgewhalbjahr=6,fnrgewjgst=7,fnrabgangbestand=8, +fnrausgabename=2,fnrausgaberufname=3,fnrausgabegebdatum=4,fnrausgabeaktjgst=5 +,fnrausgabeaktzug=6,fnrausgabeabgegangen=7,fnrausgabegewschj=8, +fnrausgabegewhj=9,fnrausgabegewjgst=10,fnrausgabegewzug=11,fnrblbriefwarn=12, +fnrblbriefbem=13,fnrblbriefnwarn=14,fnrblbriefnbem=15,fnrversetzung=16, +fnrnachpr1=17,fnrnachpr2=18,fnrnachpr3=19,fnrnachprbem=20,fnrnachprabgelegt= +21,fnrnachprnote=22,fnrzeugbem1=23,fnrzeugbem2=24,fnrzeugbem3=25, +fnrversaeumtmit=26,fnrversaeumtohne=27,fnrverspaetet=28,fnrfachanf=12, +fnrfachende=24,fnrkursartanf=25,fnrkursartende=37,fnrklausuranf=38, +fnrklausurende=50,fnrkursanf=51,fnrkursende=63,fnrnoteanf=64,fnrnoteende=76, +fnrbemanf=77,fnrbemende=89,fnrwarnunganf=90,fnrwarnungende=102, +schueleraktuell="ls",schuelerabgegangen="abg",schulhalbjahr="Schulhalbjahr", +schuljahr="Schuljahr",bestandblauerbrief="c02 blauer brief", +bestandbemerkungen="c02 bemerkungen",bestandzeugnisnoten="c02 zeugnisnoten", +bestandartlv="c02 art lehrveranstaltung",trenner="�",stdplausileiste= +"0000000000000",paramausgabe="#",anzschluesselsu=3,fmeldnichtimbestand=55, +meldungnureinesderfaechererl=147,meldungfachangabeunzulaessig=310, +meldungversetzungskzunzulaessig=136,meldungwirklichloeschen=65, +meldunggibtsnicht=71,meldunghjdgibtsnicht=168,meldungunerlaubterwert=34, +meldunglistenerstellung=7,meldungkeineliste=68,meldungletzter=67, +meldungspeicherung=50,meldungkeinespeicherung=63,meldungfalschesdatum=157,# +meldungkeinewiederholungsdaten=160,#meldunghalbjahrnichtrelevant=161, +meldungungueltigekursart=164,meldungfeldfuellen=170,meldungschuljahrangeben= +171,meldungjgstangeben=172,meldungfalschejgst=173,meldungfalschefunktion=72, +meldungnichtentfernt=62,meldungentfernt=61,meldungspeicherfehler=73, +meldungvornamepraez=129,meldunginakthjkeineaenderung=379,pruefemeldung=57, +dateiname="Schülerliste",oblitrenner="$",leer="",niltext="",punkt=".", +textabgegangen="abgegangen",schrittefuerobjektliste=2,anzmasken=3,eingang=1, +bearb1=2,bearb2=3,maxfeldbearb0=8,maxfeldbearb1=28,maxfeldbearb2=102, +saetzederliste=17,pruefartdatum=6;BOOL VAR maskebearb1nochnichtda:=TRUE , +maskebearb2nochnichtda:=TRUE ,maskeeingangnochnichtda:=TRUE ,falschesdatum:= +FALSE ;BOOL VAR schuljahrgefuellt,halbjahrgefuellt,jgstgefuellt, +halbjahresdatenschonvorhanden;FILE VAR f;INT VAR fehlerfeld:=0,ind,bs, +posgewhalbjahr,fnrfehler,fehlerstatus,fmeld:=0,lv:=0,feldnummer:=0;ROW +anzschluesselsuTEXT VAR schluessel;ROW anzmaskenROW maxfeldbearb2TEXT VAR +erfassungsfeld;ROW anzmaskenTAG VAR maske;TEXT VAR sicherunghjd:="", +schuelertid:="",hjdtid:="",vergleichszeile:="",hjdfachleiste:="",hjdartleiste +:="",hjdklausurleiste:="",hjdkennungenleiste:="",verglfachleiste:="", +verglartleiste:="",verglklausurleiste:="",verglkennungenleiste:="",leiste, +plausivar:="",plausileiste:="",pruefbestand:="",plausitxt,akthalbjahr:="", +aktschuljahr:="",gewhalbjahr:="",gewschuljahr:="",jgst,zug,vglgewhalbjahr:="" +,vglakthalbjahr:="",gewjgst:="",gewzug:="",aktbestand,spalteninhalte,versetzg +:=trenner+trenner+"v"+trenner+"n"+trenner+"s"+trenner+"f"+trenner+"w"+trenner +,faecher:=trenner+trenner,blbrief:=trenner+trenner,bemerk:=trenner+trenner, +noten:=trenner+trenner,artlv:=trenner+trenner;LET logtextbeginn="Anw. 1.2.3 " +;PROC halbjahresdatenentfernen:standardmeldung(meldungentfernt,niltext); +infeld(fnrname);inittupel(dnrhalbjahresdaten);schluesselfuerhjdsetzen( +dnrhalbjahresdaten,schluessel,gewschuljahr,gewhalbjahr,gewjgst); +logeintragvornehmen("Entfernen");delete(dnrhalbjahresdaten);IF +aktuellesschulhalbjahrinbearbeitungTHEN loeschehjdtidinsu;FI ;enter(2). +loeschehjdtidinsu:inittupel(dnrschueler);putwert(fnrsufamnames,schluessel(1)) +;putwert(fnrsurufnames,schluessel(2));putwert(fnrsugebdatums,schluessel(3)); +search(dnrschueler,TRUE );putwert(fnrsutidakthjd,"");update(dnrschueler).END +PROC halbjahresdatenentfernen;PROC halbjahresdatennichtentfernen: +standardmeldung(meldungnichtentfernt,niltext);infeld(fnrname);return(2)END +PROC halbjahresdatennichtentfernen;PROC halbjahresdatenentfernenvorbereiten: +BOOL VAR suexistiert:=FALSE ;IF maskeeingangnochnichtdaTHEN bs:=1;initmaske( +maske(bs),maskennameeingang);init(bs,maxfeldbearb0);maskeeingangnochnichtda:= +FALSE FI ;IF erfassungsfeld(bs)(fnrname)<>""CAND erfassungsfeld(bs)( +fnrgebdatum)<>""CAND erfassungsfeld(bs)(fnrrufname)=""THEN meldungausgeben( +meldungvornamepraez,fnrrufname);LEAVE halbjahresdatenentfernenvorbereitenFI ; +schluesselbereitstellen;IF NOT falschesdatumTHEN pruefeobnameexistiert( +suexistiert);IF suexistiertTHEN bs:=1;holedbwerte(bs);schluessel(1):= +erfassungsfeld(bs)(fnrname);schluessel(2):=erfassungsfeld(bs)(fnrrufname); +schluessel(3):=datumskonversion(erfassungsfeld(eingang)(fnrgebdatum)); +weiterepruefungELSE meldungausgeben(meldunggibtsnicht,fnrname)FI ELSE +meldungausgeben(meldungfalschesdatum,fnrgebdatum)FI .weiterepruefung:jgst:= +jgstaufber(wert(fnrsusgrpjgst));zug:=wert(fnrsusgrpzugtut);akthalbjahr:= +schulkenndatum(schulhalbjahr);erfassungsfeld(bs)(fnrgewschuljahr):= +standardmaskenfeld(fnrgewschuljahr);erfassungsfeld(bs)(fnrgewhalbjahr):= +standardmaskenfeld(fnrgewhalbjahr);IF int(standardmaskenfeld(fnrgewjgst))=0 +THEN erfassungsfeld(bs)(fnrgewjgst):=niltext;gewjgst:=standardmaskenfeld( +fnrgewjgst);ELSE erfassungsfeld(bs)(fnrgewjgst):=jgstaufber( +standardmaskenfeld(fnrgewjgst));gewjgst:=jgstaufber(standardmaskenfeld( +fnrgewjgst));FI ;gewschuljahr:=standardmaskenfeld(fnrgewschuljahr); +gewhalbjahr:=standardmaskenfeld(fnrgewhalbjahr);fnrfehler:=0; +pruefenobeintraegefuerhjdausreichend;IF fnrfehler=0THEN IF eingabenummerisch( +gewschuljahr)CAND korrekteschuljahreseingabe(gewschuljahr)THEN +weiterevorbereitungnachfehlerpruefungELSE meldungausgeben( +meldungunerlaubterwert,fnrgewschuljahr)FI ELSE meldungausgeben( +meldungfeldfuellen,fnrfehler)FI .pruefenobeintraegefuerhjdausreichend: +schuljahrgefuellt:=standardmaskenfeld(fnrgewschuljahr)<>leer;halbjahrgefuellt +:=standardmaskenfeld(fnrgewhalbjahr)<>leer;jgstgefuellt:=standardmaskenfeld( +fnrgewjgst)<>leer;IF allefelderleerOR nurhalbjahrgefuelltTHEN fnrfehler:= +fnrgewschuljahrELIF nurschuljahrgefuelltOR nurjgstgefuelltOR +nurschuljahrundjgstgefuelltTHEN fnrfehler:=fnrgewhalbjahrFI .allefelderleer:( +NOT schuljahrgefuellt)CAND (NOT halbjahrgefuellt)CAND (NOT jgstgefuellt). +nurhalbjahrgefuellt:(NOT schuljahrgefuellt)CAND (halbjahrgefuellt)CAND (NOT +jgstgefuellt).nurschuljahrgefuellt:(schuljahrgefuellt)CAND (NOT +halbjahrgefuellt)CAND (NOT jgstgefuellt).nurjgstgefuellt:(NOT +schuljahrgefuellt)CAND (NOT halbjahrgefuellt)CAND (jgstgefuellt). +nurschuljahrundjgstgefuellt:(schuljahrgefuellt)CAND (NOT halbjahrgefuellt) +CAND (jgstgefuellt).weiterevorbereitungnachfehlerpruefung: +halbjahresdatenschonvorhanden:=FALSE ;IF allefeldergefuelltTHEN +angabevonsjhjjgstELIF nurschuljahrundhalbjahrgefuelltTHEN angabevonsjhjELIF +nurhalbjahrundjgstgefuelltTHEN angabevonhjjgstFI ;gibmaskemitrowaus(eingang, +fnrname,fnrabgangbestand).allefeldergefuellt:(schuljahrgefuellt)CAND ( +halbjahrgefuellt)CAND (jgstgefuellt).nurschuljahrundhalbjahrgefuellt:( +schuljahrgefuellt)CAND (halbjahrgefuellt)CAND (NOT jgstgefuellt). +nurhalbjahrundjgstgefuellt:(NOT schuljahrgefuellt)CAND (halbjahrgefuellt) +CAND (jgstgefuellt).angabevonsjhjjgst:jgst:=jgstaufber(wert(fnrsusgrpjgst)); +vglgewhalbjahr:=gewjgst+punkt+gewhalbjahr;vglakthalbjahr:=jgst+punkt+ +akthalbjahr;schuelerhjdlesen(dnrhalbjahresdaten,TRUE );IF +halbjahresdatenschonvorhandenTHEN loeschedatensatzELSE meldunghjdgibtesnicht +FI .angabevonsjhj:schuelerhjdlesen(dnrhalbjahresdaten,FALSE );IF +halbjahresdatenschonvorhandenTHEN savetupel(dnrhalbjahresdaten,sicherunghjd); +saveupdateposition(dnrhalbjahresdaten);gewjgst:=jgstaufber(wert(fnrhjdjgst)); +erfassungsfeld(eingang)(fnrgewjgst):=gewjgst;erfassungsfeld(bearb1)( +fnrausgabegewjgst):=gewjgst;loeschedatensatzELSE meldungausgeben( +meldungjgstangeben,fnrgewjgst)FI .angabevonhjjgst:schuelerhjdlesen( +ixhjdfamrufgebjgsthj,TRUE );IF halbjahresdatenschonvorhandenTHEN savetupel( +dnrhalbjahresdaten,sicherunghjd);saveupdateposition(dnrhalbjahresdaten); +gewschuljahr:=wert(fnrhjdsj);erfassungsfeld(eingang)(fnrgewschuljahr):=gew +schuljahr;erfassungsfeld(bearb1)(fnrausgabegewschj):=gewschuljahr;IF +wiederholungvorhanden(dnrhalbjahresdaten,ixhjdfamrufgebjgsthj)THEN +meldungbitteschuljahrangebenELSE restoreupdateposition(dnrhalbjahresdaten); +loeschedatensatzFI ELSE meldungbitteschuljahrangebenFI . +meldungbitteschuljahrangeben:meldungausgeben(meldungschuljahrangeben, +fnrgewschuljahr).meldunghjdgibtesnicht:meldungausgeben(meldunghjdgibtsnicht, +fnrgewschuljahr).loeschedatensatz:standardmaskenfeld(wert(fnrsufamnames), +fnrname);standardmaskenfeld(wert(fnrsurufnames),fnrrufname); +standardmaskenfeld(datumrekonversion(wert(fnrsugebdatums)),fnrgebdatum); +standardmaskenfeld(gewschuljahr,fnrgewschuljahr);standardmaskenfeld( +gewhalbjahr,fnrgewhalbjahr);standardmaskenfeld(gewjgst,fnrgewjgst);IF +aktbestand=schueleraktuellTHEN standardmaskenfeld("",fnrabgangbestand);ELSE +standardmaskenfeld("x",fnrabgangbestand);FI ;infeld(fnrname); +standardfelderausgeben;meldungausgebeneinfach(meldungwirklichloeschen,fnrname +).END PROC halbjahresdatenentfernenvorbereiten;PROC halbjahresdatenblaettern( +BOOL CONST b):IF bTHEN IF bs=2THEN blaetteraufbearb2ELSE fehlermeldungFI +ELSE IF bs=3THEN blaetteraufbearb1ELSE fehlermeldungFI FI .fehlermeldung: +standardmeldung(meldungfalschefunktion,"");return(1).blaetteraufbearb2: +merkeinhaltbearb1;gibbearb2maskeaus;gibinhaltebearb2aus;.merkeinhaltbearb1: +merkemaskeninhalt(bearb1,fnrausgabegewjgst,fnrverspaetet).gibbearb2maskeaus: +IF maskebearb2nochnichtdaTHEN initmaske(maske(bearb2),maskennamebearb2);init( +bearb2,maxfeldbearb2);FI ;standardstartproc(maskennamebearb2). +gibinhaltebearb2aus:bs:=3;fuellehjddateninfelder;maskebearb2nochnichtda:= +FALSE ;infeld(fnrausgabename);standardfelderausgeben;infeld(fnrfachanf); +return(1).blaetteraufbearb1:merkeinhaltbearb2;gibbearb1maskeaus; +gibinhaltebearb1aus.merkeinhaltbearb2:merkemaskeninhalt(bearb2,fnrfachanf, +fnrwarnungende).gibbearb1maskeaus:standardstartproc(maskennamebearb1). +gibinhaltebearb1aus:bs:=2;fuellehjddateninfelder;infeld(fnrausgabename); +standardfelderausgeben;IF akthalbjahr=gewhalbjahrCAND aktschuljahr= +gewschuljahrTHEN infeld(fnrblbriefwarn)ELSE infeld(fnrausgabegewjgst);FI ; +return(1).END PROC halbjahresdatenblaettern;PROC gibmaskemitrowaus(INT CONST +maske,vonfeld,bisfeld):INT VAR lv;FOR lvFROM vonfeldUPTO bisfeldREP +standardmaskenfeld(erfassungsfeld(maske)(lv),lv);PER END PROC +gibmaskemitrowaus;PROC merkemaskeninhalt(INT CONST maske,vonfeld,bisfeld): +INT VAR lv;FOR lvFROM vonfeldUPTO bisfeldREP erfassungsfeld(maske)(lv):= +standardmaskenfeld(lv);PER END PROC merkemaskeninhalt;PROC +halbjahresdatenbearbeiten:BOOL VAR suexistiert:=FALSE ;reinitparsing;bs:= +eingang;IF maskeeingangnochnichtdaTHEN initmaske(maske(bs),maskennameeingang) +;init(bs,maxfeldbearb0);maskeeingangnochnichtda:=FALSE FI ;erfassungsfeld(bs) +(fnrname):=standardmaskenfeld(fnrname);erfassungsfeld(bs)(fnrrufname):= +standardmaskenfeld(fnrrufname);erfassungsfeld(bs)(fnrgebdatum):= +standardmaskenfeld(fnrgebdatum);IF erfassungsfeld(bs)(fnrname)<>""CAND +erfassungsfeld(bs)(fnrgebdatum)<>""CAND erfassungsfeld(bs)(fnrrufname)="" +THEN meldungausgeben(meldungvornamepraez,fnrrufname);LEAVE +halbjahresdatenbearbeitenFI ;schluesselbereitstellen;IF NOT falschesdatum +THEN pruefeobnameexistiert(suexistiert);IF suexistiertTHEN +loeschedieerstellteobjektliste;holedbwerte(bs);schluessel(1):=erfassungsfeld( +bs)(fnrname);schluessel(2):=erfassungsfeld(bs)(fnrrufname);schluessel(3):= +datumskonversion(erfassungsfeld(bs)(fnrgebdatum));jgst:=jgstaufber(wert( +fnrsusgrpjgst));zug:=wert(fnrsusgrpzugtut);akthalbjahr:=schulkenndatum( +schulhalbjahr);aktschuljahr:=schulkenndatum(schuljahr); +halbjahresdatendesschuelersbearbeiten;ELSE meldungausgeben(meldunggibtsnicht, +fnrname)FI ELSE return(1)FI .END PROC halbjahresdatenbearbeiten;PROC +halbjahresdatendesschuelersbearbeiten:maskebearb1nochnichtda:=TRUE ; +maskebearb2nochnichtda:=TRUE ;erfassungsfeld(bs)(fnrgewschuljahr):= +standardmaskenfeld(fnrgewschuljahr);erfassungsfeld(bs)(fnrgewhalbjahr):= +standardmaskenfeld(fnrgewhalbjahr);IF int(standardmaskenfeld(fnrgewjgst))=0 +THEN erfassungsfeld(bs)(fnrgewjgst):=niltext;gewjgst:=standardmaskenfeld( +fnrgewjgst);ELSE erfassungsfeld(bs)(fnrgewjgst):=jgstaufber( +standardmaskenfeld(fnrgewjgst));gewjgst:=erfassungsfeld(bs)(fnrgewjgst)FI ; +gewschuljahr:=standardmaskenfeld(fnrgewschuljahr);gewhalbjahr:= +standardmaskenfeld(fnrgewhalbjahr);infeld(fnrname);gibmaskemitrowaus(eingang, +fnrname,fnrgewjgst);standardfelderausgeben;IF akthalbjahr=gewhalbjahrCAND +aktschuljahr=gewschuljahrTHEN IF erfassungsfeld(bs)(fnrgewjgst)<>niltextCAND +jgst<>gewjgstTHEN meldungausgeben(meldungfalschejgst,fnrgewjgst);LEAVE +halbjahresdatendesschuelersbearbeitenFI ;FI ; +pruefenobeintraegefuerhjdausreichend;#dr16.07.87#IF fnrfehler=0THEN IF +eingabenummerisch(gewschuljahr)CAND korrekteschuljahreseingabe(gewschuljahr) +THEN initmaske(maske(bs),maskennamebearb1);init(bearb1,maxfeldbearb1); +erfassungsfeld(bearb1)(fnrausgabename):=schluessel(1);erfassungsfeld(bearb1)( +fnrausgaberufname):=schluessel(2);erfassungsfeld(bearb1)(fnrausgabegebdatum) +:=erfassungsfeld(eingang)(fnrgebdatum);erfassungsfeld(bearb1)( +fnrausgabeaktjgst):=jgst;erfassungsfeld(bearb1)(fnrausgabeaktzug):=zug;IF +aktbestand="ls"THEN erfassungsfeld(bearb1)(fnrausgabeabgegangen):= +" "ELSE erfassungsfeld(bearb1)(fnrausgabeabgegangen):="abgegangen" +FI ;erfassungsfeld(bearb1)(fnrausgabegewschj):=gewschuljahr;erfassungsfeld( +bearb1)(fnrausgabegewhj):=gewhalbjahr;erfassungsfeld(bearb1)( +fnrausgabegewjgst):=gewjgst;weiterevorbereitungnachfehlerpruefungELSE +meldungausgeben(meldungunerlaubterwert,fnrgewschuljahr)FI ELSE +meldungausgeben(meldungfeldfuellen,fnrfehler)FI . +pruefenobeintraegefuerhjdausreichend:fnrfehler:=0;schuljahrgefuellt:= +standardmaskenfeld(fnrgewschuljahr)<>leer;halbjahrgefuellt:= +standardmaskenfeld(fnrgewhalbjahr)<>leer;jgstgefuellt:=standardmaskenfeld( +fnrgewjgst)<>leer;IF allefelderleerOR nurhalbjahrgefuelltTHEN fnrfehler:= +fnrgewschuljahrELIF nurschuljahrgefuelltOR nurjgstgefuelltOR +nurschuljahrundjgstgefuelltTHEN fnrfehler:=fnrgewhalbjahrFI .allefelderleer:( +NOT schuljahrgefuellt)CAND (NOT halbjahrgefuellt)CAND (NOT jgstgefuellt). +nurhalbjahrgefuellt:(NOT schuljahrgefuellt)CAND (halbjahrgefuellt)CAND (NOT +jgstgefuellt).nurschuljahrgefuellt:(schuljahrgefuellt)CAND (NOT +halbjahrgefuellt)CAND (NOT jgstgefuellt).nurjgstgefuellt:(NOT +schuljahrgefuellt)CAND (NOT halbjahrgefuellt)CAND (jgstgefuellt). +nurschuljahrundjgstgefuellt:(schuljahrgefuellt)CAND (NOT halbjahrgefuellt) +CAND (jgstgefuellt).weiterevorbereitungnachfehlerpruefung: +halbjahresdatenschonvorhanden:=FALSE ;IF allefeldergefuelltTHEN +angabevonsjhjjgstELIF nurschuljahrundhalbjahrgefuelltTHEN angabevonsjhjELIF +nurhalbjahrundjgstgefuelltTHEN angabevonhjjgstFI ;gibmaskemitrowaus(bearb1, +fnrname,fnrabgangbestand).allefeldergefuellt:(schuljahrgefuellt)CAND ( +halbjahrgefuellt)CAND (jgstgefuellt).nurschuljahrundhalbjahrgefuellt:( +schuljahrgefuellt)CAND (halbjahrgefuellt)CAND (NOT jgstgefuellt). +nurhalbjahrundjgstgefuellt:(NOT schuljahrgefuellt)CAND (halbjahrgefuellt) +CAND (jgstgefuellt).angabevonsjhjjgst:IF halbjahrrelevantTHEN +schuelerhjdlesen(dnrhalbjahresdaten,TRUE );IF halbjahresdatenschonvorhanden +THEN savetupel(dnrhalbjahresdaten,sicherunghjd);saveupdateposition( +dnrhalbjahresdaten);IF passendejgstTHEN aenderungsvorbereitungELSE +meldungausgeben(meldungfalschejgst,fnrgewjgst);LEAVE +halbjahresdatendesschuelersbearbeitenFI ;ELSE aenderungsvorbereitungFI ;ELSE +meldungausgeben(meldunghalbjahrnichtrelevant,fnrgewjgst);LEAVE +halbjahresdatendesschuelersbearbeitenFI .passendejgst:int(gewjgst)=intwert( +fnrhjdjgst).angabevonsjhj:schuelerhjdlesen(dnrhalbjahresdaten,FALSE );IF +halbjahresdatenschonvorhandenTHEN savetupel(dnrhalbjahresdaten,sicherunghjd); +saveupdateposition(dnrhalbjahresdaten);gewjgst:=jgstaufber(wert(fnrhjdjgst)); +erfassungsfeld(eingang)(fnrgewjgst):=gewjgst;erfassungsfeld(bearb1)( +fnrausgabegewjgst):=gewjgst;infeld(fnrgewjgst);standardmaskenfeld(gewjgst, +fnrgewjgst);standardfelderausgeben;vglgewhalbjahr:=gewjgst+punkt+gewhalbjahr; +vglakthalbjahr:=jgst+punkt+akthalbjahr;aenderungsvorbereitungELIF akthalbjahr +=gewhalbjahrCAND aktschuljahr=gewschuljahrTHEN infeld(fnrgewjgst); +standardmaskenfeld(jgst,fnrgewjgst);standardfelderausgeben;erfassungsfeld( +bearb1)(fnrausgabegewjgst):=jgst;vglgewhalbjahr:=gewjgst+punkt+gewhalbjahr; +vglakthalbjahr:=jgst+punkt+akthalbjahr;aenderungsvorbereitungELSE +meldungausgeben(meldungjgstangeben,fnrgewjgst);LEAVE +halbjahresdatendesschuelersbearbeitenFI .angabevonhjjgst:IF halbjahrrelevant +THEN schuelerhjdlesen(ixhjdfamrufgebjgsthj,TRUE );IF +halbjahresdatenschonvorhandenTHEN savetupel(dnrhalbjahresdaten,sicherunghjd); +saveupdateposition(dnrhalbjahresdaten);gewschuljahr:=wert(fnrhjdsj); +erfassungsfeld(eingang)(fnrgewschuljahr):=gewschuljahr;erfassungsfeld(bearb1) +(fnrausgabegewschj):=gewschuljahr;IF wiederholungvorhanden(dnrhalbjahresdaten +,ixhjdfamrufgebjgsthj)THEN meldungbitteschuljahrangeben;LEAVE +halbjahresdatendesschuelersbearbeitenELSE infeld(fnrgewschuljahr); +standardmaskenfeld(gewschuljahr,fnrgewschuljahr);standardfelderausgeben; +aenderungsvorbereitungFI ELSE meldungbitteschuljahrangeben;LEAVE +halbjahresdatendesschuelersbearbeitenFI ELSE meldungausgeben( +meldunghalbjahrnichtrelevant,fnrgewjgst);LEAVE +halbjahresdatendesschuelersbearbeitenFI .meldungbitteschuljahrangeben: +meldungausgeben(meldungschuljahrangeben,fnrgewschuljahr). +aenderungsvorbereitung:standardstartproc(maskennamebearb1);bs:=bearb1;IF +maskebearb1nochnichtdaTHEN maskebearb1nochnichtda:=FALSE FI ; +bereiteaenderungvor.halbjahrrelevant:vglgewhalbjahr:=gewjgst+punkt+ +gewhalbjahr;vglakthalbjahr:=jgst+punkt+akthalbjahr;lieferehalbjahreszeile( +vergleichszeile,vglakthalbjahr);posgewhalbjahr:=pos(vergleichszeile, +vglgewhalbjahr);posgewhalbjahr>0.END PROC +halbjahresdatendesschuelersbearbeiten;PROC meldungausgeben(INT CONST welche, +fehlerfeld):standardmeldung(welche,niltext);infeld(fehlerfeld);return(1)END +PROC meldungausgeben;PROC meldungausgebeneinfach(INT CONST welche,fehlerfeld) +:standardmeldung(welche,niltext);infeld(fehlerfeld);standardnprocEND PROC +meldungausgebeneinfach;PROC schluesselbereitstellen:falschesdatum:=FALSE ; +fehlerfeld:=0;schluessel(1):=standardmaskenfeld(fnrname);schluessel(2):= +standardmaskenfeld(fnrrufname);schluessel(3):=datumrekonversion( +standardmaskenfeld(fnrgebdatum));IF standardmaskenfeld(fnrgebdatum)<>niltext +THEN pruefe(pruefartdatum,maske(bs),TEXT PROC (INT CONST )hjderfassungswert, +fnrgebdatum,0,0,niltext,fehlerfeld);IF fehlerfeld<>0THEN infeld(fehlerfeld); +falschesdatum:=TRUE ;FI FI ;IF NOT falschesdatumTHEN legeaktuellenbestandfest +FI .END PROC schluesselbereitstellen;PROC legeaktuellenbestandfest: +erfassungsfeld(bs)(fnrabgangbestand):=standardmaskenfeld(fnrabgangbestand); +IF standardmaskenfeld(fnrabgangbestand)=""THEN aktbestand:=schueleraktuell +ELSE aktbestand:=schuelerabgegangenFI END PROC legeaktuellenbestandfest;PROC +pruefeobnameexistiert(BOOL VAR suexist):TEXT VAR datenbankwerte, +schluesselwerte;inittupel(dnrschueler);maskenwerteindatenbank;IF NOT +falschesdatumTHEN search(ixsustatfamrufgeb,FALSE );IF dbstatus=okCAND wert( +fnrsustatuss)=aktbestandTHEN schuelertid:=gettid;hjdtid:=wert(fnrsutidakthjd) +;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 maskenwerteindatenbank:putwert(fnrsufamnames, +schluessel(1));putwert(fnrsurufnames,schluessel(2));disablestop;putwert( +fnrsugebdatums,datumskonversion(schluessel(3)));IF iserrorTHEN clearerror; +standardmeldung(meldungfalschesdatum,"");infeld(fnrgebdatum);falschesdatum:= +TRUE ;ELSE putwert(fnrsustatuss,aktbestand);FI ;enablestopEND PROC +maskenwerteindatenbank;PROC bereiteaenderungvor:IF +halbjahresdatenschonvorhandenTHEN restoretupel(dnrhalbjahresdaten, +sicherunghjd);holedbwerte(bearb1);FI ;IF aktuelleshalbjahrTHEN IF NOT +halbjahresdatenschonvorhandenTHEN erfassungsfeld(bearb1)(fnrausgabegewzug):= +zug;FI ;fuellehjddateninfelder;infeld(fnrausgabename);standardfelderausgeben; +infeld(fnrblbriefwarn)ELSE IF NOT halbjahresdatenschonvorhandenTHEN +erfassungsfeld(bearb1)(fnrausgabegewzug):=gewzug;FI ;fuellehjddateninfelder; +infeld(fnrausgabename);standardfelderausgeben;infeld(fnrausgabegewjgst)FI ; +standardnproc.aktuelleshalbjahr:akthalbjahr=gewhalbjahrCAND aktschuljahr= +gewschuljahr.END PROC bereiteaenderungvor;BOOL PROC wiederholungvorhanden( +INT CONST dnr,index):ROW 5TEXT VAR feld;feld(1):=wert(dnr+1);feld(2):=wert( +dnr+2);feld(3):=wert(dnr+3);feld(4):=wert(dnr+5);feld(5):=wert(dnr+6);succ( +index);dbstatus=okCAND feld(1)=wert(dnr+1)CAND feld(2)=wert(dnr+2)CAND feld(3 +)=wert(dnr+3)CAND feld(4)=wert(dnr+5)CAND feld(5)=wert(dnr+6).END PROC +wiederholungvorhanden;PROC fuellehjddateninfelder:IF bs=2THEN +gibmaskemitrowaus(bearb1,fnrname,fnrverspaetet);ELSE gibmaskemitrowaus(bearb1 +,fnrname,fnrausgabegewzug);IF maskebearb2nochnichtdaTHEN fachfuellen; +artfuellen;klausurfuellen;kursfuellen;notefuellen;bemfuellen;warnungfuellen; +ELSE gibmaskemitrowaus(bearb2,fnrfachanf,fnrwarnungende)FI FI .fachfuellen: +hjdfachleiste:=wert(fnrhjdfach);FOR indFROM 0UPTO (fnrfachende-fnrfachanf) +REP standardmaskenfeld(wert(fnrhjdfach,(ind*2+1),2),(fnrfachanf+ind))PER . +artfuellen:hjdartleiste:=wert(fnrhjdkursart);FOR indFROM 0UPTO ( +fnrkursartende-fnrkursartanf)REP standardmaskenfeld(wert(fnrhjdkursart,(ind*2 ++1),2),(fnrkursartanf+ind))PER .klausurfuellen:hjdklausurleiste:=wert( +fnrhjdklausurteiln);FOR indFROM 0UPTO (fnrklausurende-fnrklausuranf)REP +standardmaskenfeld(wert(fnrhjdklausurteiln,(ind+1),1),(fnrklausuranf+ind)) +PER .kursfuellen:TEXT VAR klzeichen;hjdkennungenleiste:=wert( +fnrhjdlerngrpkenn);FOR indFROM 0UPTO (fnrkursende-fnrkursanf)REP +standardmaskenfeld(wert(fnrhjdlerngrpkenn,(4*ind+1),4),(fnrkursanf+ind))PER . +notefuellen:FOR indFROM 0UPTO (fnrnoteende-fnrnoteanf)REP standardmaskenfeld( +wert(fnrhjdnotepunkte,(2*ind+1),2),(fnrnoteanf+ind))PER .bemfuellen:FOR ind +FROM 0UPTO (fnrbemende-fnrbemanf)REP standardmaskenfeld(wert(fnrhjdbemerk,(3* +ind+1),3),(fnrbemanf+ind))PER .warnungfuellen:FOR indFROM 0UPTO ( +fnrwarnungende-fnrwarnunganf)REP standardmaskenfeld(wert(fnrhjdvermwarnung,( +ind+1),1),(fnrwarnunganf+ind))PER .END PROC fuellehjddateninfelder;PROC +loeschedieerstellteobjektliste:forget(dateiname,quiet);END PROC +loeschedieerstellteobjektliste;PROC schuelerhjdlesen(INT CONST index,BOOL +CONST jgstgesetzt):IF jgstgesetztTHEN IF aktuellesschulhalbjahrinbearbeitung +THEN IF hjdtid<>leerTHEN readtid(dnrhalbjahresdaten,hjdtid); +halbjahresdatenschonvorhanden:=dbstatus=0ELSE inittupel(dnrhalbjahresdaten); +halbjahresdatenschonvorhanden:=FALSE FI ELSE richtigsuchenundlesenFI ELSE +richtigsuchenundlesenFI ;IF halbjahresdatenschonvorhandenAND wert( +fnrhjdkennung)<>""THEN gewzug:=wert(fnrhjdkennung)ELSE gewzug:=""FI . +richtigsuchenundlesen:inittupel(dnrhalbjahresdaten);schluesselfuerhjdsetzen( +dnrhalbjahresdaten,schluessel,gewschuljahr,gewhalbjahr,gewjgst);search(index, +TRUE );halbjahresdatenschonvorhanden:=dbstatus=0.END PROC schuelerhjdlesen; +PROC halbjahresdatenspeichern(BOOL CONST speichern):INT VAR aktjg:=int(jgst); +IF speichernTHEN IF faecher=trenner+trennerTHEN holeaktdatenFI ;fehlerstatus +:=0;merkeinhaltdesaktuellenschirms;pruefeplausibilitaet(fehlerstatus);IF +datenfehlerfreiTHEN standardmeldung(meldungspeicherung,"");datenspeichern;# +eventuellinstatwuerfeleintragen;dr11.05.88# +ueberpruefobkurswahlbasisnochaktuell; +vorbereitendernaechstenschluesselbehandlung(2)ELSE return(1)FI ELSE +standardmeldung(meldungkeinespeicherung,""); +vorbereitendernaechstenschluesselbehandlung(2)FI . +ueberpruefobkurswahlbasisnochaktuell:IF NOT maskebearb2nochnichtdaTHEN IF +sek2jgstTHEN IF aktoderzukhjTHEN IF aenderunginkurswahldatenTHEN +loeschspezkurswahlbasisFI FI FI FI .sek2jgst:aktjg>9.aktoderzukhj:(int( +gewjgst)=aktjgCAND int(gewhalbjahr)>=int(akthalbjahr))COR int(gewjgst)>aktjg. +aenderunginkurswahldaten:hjdfachleiste<>verglfachleisteCOR hjdartleiste<> +verglartleisteCOR hjdklausurleiste<>verglklausurleisteCOR hjdkennungenleiste +<>verglkennungenleiste.loeschspezkurswahlbasis:kurswahlserveraktualisieren( +jgst,gewjgst,gewhalbjahr).holeaktdaten:holeblbrief;holebemerk;holenoten; +holefaecher;holeartlv.holeblbrief:inittupel(dnrschluessel);statleseschleife( +dnrschluessel,bestandblauerbrief,"",fnrschlsachgebiet,fnrschlschluessel,PROC +briefcat).holebemerk:inittupel(dnrschluessel);statleseschleife(dnrschluessel, +bestandbemerkungen,"",fnrschlsachgebiet,fnrschlschluessel,PROC bemerkcat). +holenoten:inittupel(dnrschluessel);statleseschleife(dnrschluessel, +bestandzeugnisnoten,"",fnrschlsachgebiet,fnrschlschluessel,PROC notencat). +holefaecher:inittupel(dnrfaecher);statleseschleife(dnrfaecher,"","",fnrffach, +fnrffachbez,PROC fachcat).holeartlv:inittupel(dnrschluessel);statleseschleife +(dnrschluessel,bestandartlv,"",fnrschlsachgebiet,fnrschlschluessel,PROC +artcat).merkeinhaltdesaktuellenschirms:IF bs=2THEN merkemaskeninhalt(bearb1, +fnrausgabegewjgst,fnrverspaetet)ELSE merkemaskeninhalt(bearb2,fnrfachanf, +fnrwarnungende);FI .datenfehlerfrei:fehlerstatus=0.datenspeichern:IF +halbjahresdatenschonvorhandenTHEN logeintragvornehmen("Änderung"); +datenaendernELSE logeintragvornehmen("Neueinfügen");schluesselsetzen( +dnrhalbjahresdaten);dateneinfuegenFI .datenaendern:dbwertesetzen; +restoreupdateposition(dnrhalbjahresdaten);selupdate(dnrhalbjahresdaten); +statusabfrage.dateneinfuegen:dbwertesetzen;insert(dnrhalbjahresdaten); +statusabfrage;IF dbstatus=ok#dr11.05.88#THEN hjdtid:=gettid; +eventuellneueshjdtideintragenFI .END PROC halbjahresdatenspeichern;PROC +logeintragvornehmen(TEXT CONST logergaenzung):TEXT VAR eintrag:=logtextbeginn +;eintragCAT logergaenzung;eintragCAT " """;eintragCAT schluessel(1);eintrag +CAT ", ";eintragCAT schluessel(2);eintragCAT ", ";eintragCAT schluessel(3); +eintragCAT """";logeintrag(eintrag)END PROC logeintragvornehmen;PROC fachcat( +BOOL VAR b):IF dbstatus<>0THEN b:=TRUE ELSE faecherCAT wert(fnrffach);faecher +CAT trennerFI END PROC fachcat;PROC artcat(BOOL VAR b):IF wert( +fnrschlsachgebiet)>bestandartlvCOR dbstatus<>0THEN b:=TRUE ELSE artlvCAT wert +(fnrschlschluessel);artlvCAT trennerFI END PROC artcat;PROC briefcat(BOOL +VAR b):IF wert(fnrschlsachgebiet)>bestandblauerbriefCOR dbstatus<>0THEN b:= +TRUE ELSE blbriefCAT wert(fnrschlschluessel);blbriefCAT trennerFI END PROC +briefcat;PROC bemerkcat(BOOL VAR b):IF wert(fnrschlsachgebiet)> +bestandbemerkungenCOR dbstatus<>0THEN b:=TRUE ELSE bemerkCAT wert( +fnrschlschluessel);bemerkCAT trennerFI END PROC bemerkcat;PROC notencat(BOOL +VAR b):IF wert(fnrschlsachgebiet)>bestandzeugnisnotenCOR dbstatus<>0THEN b:= +TRUE ELSE notenCAT wert(fnrschlschluessel);notenCAT trennerFI END PROC +notencat;PROC statusabfrage:IF dbstatus<>0THEN standardmeldung( +meldungspeicherfehler,text(dbstatus)+paramausgabe);pauseFI .END PROC +statusabfrage;PROC schluesselsetzen(INT CONST dateinummer): +schluesselfuerhjdsetzen(dateinummer,schluessel,gewschuljahr,gewhalbjahr, +gewjgst)END PROC schluesselsetzen;PROC dbwertesetzen:INT VAR lv;IF bs=2THEN +datenbearb1vombsholen;datenbearb2setzenELSE datenbearb1setzen; +datenbearb2vombsholenFI .datenbearb1vombsholen:FOR lvFROM fnrausgabegewjgst +UPTO fnrverspaetetREP erfassungsfeld(bearb1)(lv):=standardmaskenfeld(lv)PER ; +setzedbwerte(bearb1);setzekennung;.setzekennung:IF +aktuellesschulhalbjahrinbearbeitungTHEN putwert(fnrhjdkennung,compress(zug)) +FI .datenbearb2setzen:IF NOT maskebearb2nochnichtdaTHEN setzedbwerte(bearb2) +FI .datenbearb1setzen:setzedbwerte(bearb1).datenbearb2vombsholen:fachsetzen; +artsetzen;klausursetzen;kurssetzen;notesetzen;bemerksetzen;kurswarnungsetzen. +fachsetzen:spalteninhalte:="";FOR indFROM fnrfachanfUPTO fnrfachendeREP +plausivar:=standardmaskenfeld(ind);IF compress(plausivar)<>""THEN +spalteninhalteCAT text(plausivar,2)FI ;PER ;putwert(fnrhjdfach,spalteninhalte +).artsetzen:spalteninhalte:="";FOR indFROM fnrkursartanfUPTO fnrkursartende +REP IF (plausileisteSUB ((ind+1)MOD 13+1))="1"THEN spalteninhalteCAT text( +standardmaskenfeld(ind),2)FI ;PER ;putwert(fnrhjdkursart,spalteninhalte). +klausursetzen:spalteninhalte:="";FOR indFROM fnrklausuranfUPTO fnrklausurende +REP IF (plausileisteSUB ((ind+1)MOD 13+1))="1"THEN spalteninhalteCAT text( +standardmaskenfeld(ind),1)FI ;PER ;putwert(fnrhjdklausurteiln,spalteninhalte) +.kurssetzen:spalteninhalte:="";FOR indFROM fnrkursanfUPTO fnrkursendeREP IF ( +plausileisteSUB ((ind+1)MOD 13+1))="1"THEN spalteninhalteCAT text( +standardmaskenfeld(ind),4)FI ;PER ;putwert(fnrhjdlerngrpkenn,spalteninhalte). +notesetzen:spalteninhalte:="";FOR indFROM fnrnoteanfUPTO fnrnoteendeREP IF ( +plausileisteSUB ((ind+1)MOD 13+1))="1"THEN spalteninhalteCAT text( +standardmaskenfeld(ind),2)FI ;PER ;putwert(fnrhjdnotepunkte,spalteninhalte). +bemerksetzen:spalteninhalte:="";FOR indFROM fnrbemanfUPTO fnrbemendeREP IF ( +plausileisteSUB ((ind+1)MOD 13+1))="1"THEN spalteninhalteCAT text( +standardmaskenfeld(ind),3)FI ;PER ;putwert(fnrhjdbemerk,spalteninhalte). +kurswarnungsetzen:spalteninhalte:="";FOR indFROM fnrwarnunganfUPTO +fnrwarnungendeREP IF (plausileisteSUB ((ind+1)MOD 13+1))="1"THEN +spalteninhalteCAT text(standardmaskenfeld(ind),1)FI ;PER ;putwert( +fnrhjdvermwarnung,spalteninhalte).END PROC dbwertesetzen;PROC +vorbereitendernaechstenschluesselbehandlung(INT CONST rueckschritte):IF +exists(dateiname)THEN holenaechstenschluesselauslisteELSE enter(2)FI . +holenaechstenschluesselausliste:BOOL VAR ok,kannbearbeitetwerden:=FALSE ; +holenaechstenmehrtlgschluesselausdatei(ok);WHILE okREP pruefeobnameexistiert( +ok);IF okTHEN kannbearbeitetwerden:=TRUE ;ok:=FALSE ELSE +holenaechstenmehrtlgschluesselausdatei(ok)FI PER ;IF kannbearbeitetwerden +THEN bereiteeingangsmaskefuerausgewaehltenvor;return(rueckschritte)ELSE +behandleendederlistenabarbeitungFI .behandleendederlistenabarbeitung: +standardmeldung(meldungletzter,"");enter(rueckschritte+ +schrittefuerobjektliste).END PROC vorbereitendernaechstenschluesselbehandlung +;PROC bereiteeingangsmaskefuerausgewaehltenvor:standardstartproc( +maskennameeingang);bs:=eingang;IF maskeeingangnochnichtdaTHEN initmaske(maske +(bs),maskennameeingang);init(bs,maxfeldbearb0);maskeeingangnochnichtda:= +FALSE FI ;jgst:=wert(fnrsusgrpjgst);zug:=wert(fnrsusgrpzugtut);akthalbjahr:= +schulkenndatum(schulhalbjahr);fuellemaskenfeldereingang;gibmaskemitrowaus( +eingang,fnrname,fnrabgangbestand);infeld(fnrname);standardfelderausgeben; +setzefeldschutz;infeld(fnrgewschuljahr)END PROC +bereiteeingangsmaskefuerausgewaehltenvor;PROC pruefeplausibilitaet(INT VAR +fstatus):fmeld:=0;feldnummer:=0;pruefbestand:="";fstatus:=0;standardmeldung( +pruefemeldung,"");pruefeplausibilitaetbearb1;IF NOT maskebearb2nochnichtda +THEN pruefeplausibilitaetbearb2FI .fehlerbehandlungbearb1:IF bs=3THEN +standardstartproc(maskennamebearb1);bs:=2;fuellehjddateninfelder;infeld( +fnrausgabename);standardfelderausgeben;FI ;fehlerausgabespeziell;infeld( +fstatus);LEAVE pruefeplausibilitaet.fehlerausgabespeziell:IF fmeld= +meldungversetzungskzunzulaessigTHEN standardmeldung(fmeld,erfassungsfeld( +bearb1)(fnrversetzung)+paramausgabe);ELIF fmeld=meldungnureinesderfaechererl +THEN standardmeldung(fmeld,plausitxt+paramausgabe);ELIF fmeld= +meldunginakthjkeineaenderungTHEN standardmeldung(fmeld,erfassungsfeld(bearb1) +(fnrrufname)+" "+erfassungsfeld(bearb1)(fnrname)+paramausgabe+jgst+zug+ +paramausgabe)ELSE standardmeldung(fmeld,"")FI .fehlerbehandlungbearb2:IF bs=2 +THEN standardstartproc(maskennamebearb2);bs:=3;fuellehjddateninfelder;infeld( +fnrausgabename);standardfelderausgeben;FI ;fehlerausgabe;LEAVE +pruefeplausibilitaet.fehlerausgabe:infeld(fstatus);standardmeldung(fmeld,""). +pruefeplausibilitaetbearb1:IF erfassungsfeld(bearb1)(fnrausgabegewjgst)="" +THEN fstatus:=fnrausgabegewjgst;fmeld:=meldungjgstangeben; +fehlerbehandlungbearb1ELIF erfassungsfeld(bearb1)(fnrausgabegewzug)=""THEN +fstatus:=fnrausgabegewzug;fmeld:=meldungfeldfuellen;fehlerbehandlungbearb1 +ELIF erfassungsfeld(bearb1)(fnrausgabegewjgst)<>jgstCAND aktuellessjhjTHEN +fstatus:=fnrausgabegewjgst;fmeld:=meldunginakthjkeineaenderung; +fehlerbehandlungbearb1ELIF erfassungsfeld(bearb1)(fnrausgabegewzug)<>zugCAND +aktuellessjhjTHEN fstatus:=fnrausgabegewzug;fmeld:= +meldunginakthjkeineaenderung;fehlerbehandlungbearb1ELSE gewjgst:=jgstaufber( +erfassungsfeld(bearb1)(fnrausgabegewjgst));vglgewhalbjahr:=gewjgst+punkt+ +gewhalbjahr;vglakthalbjahr:=jgst+punkt+akthalbjahr;lieferehalbjahreszeile( +vergleichszeile,vglakthalbjahr);posgewhalbjahr:=pos(vergleichszeile, +vglgewhalbjahr);IF posgewhalbjahr<1THEN fstatus:=fnrausgabegewjgst;fmeld:= +meldunghalbjahrnichtrelevant;fehlerbehandlungbearb1FI ;FI ;IF pos(blbrief, +trenner+erfassungsfeld(bearb1)(fnrblbriefwarn)+trenner)<1THEN fstatus:= +fnrblbriefwarn;fmeld:=fmeldnichtimbestand;fehlerbehandlungbearb1FI ;IF pos( +blbrief,trenner+erfassungsfeld(bearb1)(fnrblbriefnwarn)+trenner)<1THEN +fstatus:=fnrblbriefnwarn;fmeld:=fmeldnichtimbestand;fehlerbehandlungbearb1FI +;IF pos(bemerk,trenner+erfassungsfeld(bearb1)(fnrblbriefbem)+trenner)<1THEN +fstatus:=fnrblbriefbem;fmeld:=fmeldnichtimbestand;fehlerbehandlungbearb1FI ; +IF pos(bemerk,trenner+erfassungsfeld(bearb1)(fnrblbriefnbem)+trenner)<1THEN +fstatus:=fnrblbriefnbem;fmeld:=fmeldnichtimbestand;fehlerbehandlungbearb1FI ; +IF pos(versetzg,trenner+erfassungsfeld(bearb1)(fnrversetzung)+trenner)<1THEN +fstatus:=fnrversetzung;fmeld:=meldungversetzungskzunzulaessig; +fehlerbehandlungbearb1FI ;IF pos(faecher,trenner+erfassungsfeld(bearb1)( +fnrnachpr1)+trenner)<1THEN fstatus:=fnrnachpr1;fmeld:= +meldungfachangabeunzulaessig;fehlerbehandlungbearb1FI ;IF pos(faecher,trenner ++erfassungsfeld(bearb1)(fnrnachpr2)+trenner)<1THEN fstatus:=fnrnachpr2;fmeld +:=meldungfachangabeunzulaessig;fehlerbehandlungbearb1FI ;IF pos(faecher, +trenner+erfassungsfeld(bearb1)(fnrnachpr3)+trenner)<1THEN fstatus:=fnrnachpr3 +;fmeld:=meldungfachangabeunzulaessig;fehlerbehandlungbearb1FI ;IF pos(bemerk, +trenner+erfassungsfeld(bearb1)(fnrnachprbem)+trenner)<1THEN fstatus:= +fnrnachprbem;fmeld:=fmeldnichtimbestand;fehlerbehandlungbearb1FI ;plausitxt:= +"";plausitxtCAT trenner;plausitxtCAT erfassungsfeld(bearb1)(fnrnachpr1); +plausitxtCAT trenner;plausitxtCAT erfassungsfeld(bearb1)(fnrnachpr2); +plausitxtCAT trenner;plausitxtCAT erfassungsfeld(bearb1)(fnrnachpr3); +plausitxtCAT trenner;IF pos(plausitxt,trenner+erfassungsfeld(bearb1)( +fnrnachprabgelegt)+trenner)<1THEN plausitxt:="";IF erfassungsfeld(bearb1)( +fnrnachpr1)<>""THEN plausitxtCAT erfassungsfeld(bearb1)(fnrnachpr1);FI ;IF +erfassungsfeld(bearb1)(fnrnachpr2)<>""THEN plausitxtCAT ",";plausitxtCAT +erfassungsfeld(bearb1)(fnrnachpr2);FI ;IF erfassungsfeld(bearb1)(fnrnachpr3) +<>""THEN plausitxtCAT ",";plausitxtCAT erfassungsfeld(bearb1)(fnrnachpr3);FI +;fstatus:=fnrnachprabgelegt;fmeld:=meldungnureinesderfaechererl; +fehlerbehandlungbearb1FI ;IF pos(noten,trenner+erfassungsfeld(bearb1)( +fnrnachprnote)+trenner)<1THEN fstatus:=fnrnachprnote;fmeld:= +fmeldnichtimbestand;fehlerbehandlungbearb1FI ;IF pos(bemerk,trenner+ +erfassungsfeld(bearb1)(fnrzeugbem1)+trenner)<1THEN fstatus:=fnrzeugbem1;fmeld +:=fmeldnichtimbestand;fehlerbehandlungbearb1FI ;IF pos(bemerk,trenner+ +erfassungsfeld(bearb1)(fnrzeugbem2)+trenner)<1THEN fstatus:=fnrzeugbem2;fmeld +:=fmeldnichtimbestand;fehlerbehandlungbearb1FI ;IF pos(bemerk,trenner+ +erfassungsfeld(bearb1)(fnrzeugbem3)+trenner)<1THEN fstatus:=fnrzeugbem3;fmeld +:=fmeldnichtimbestand;fehlerbehandlungbearb1FI ;plausitxt:=erfassungsfeld( +bearb1)(fnrversaeumtmit);IF plausitxt<>""CAND plausitxt<>"0"THEN IF int( +plausitxt)=0THEN fstatus:=fnrversaeumtmit;fmeld:=meldungunerlaubterwert; +fehlerbehandlungbearb1FI FI ;plausitxt:=erfassungsfeld(bearb1)( +fnrversaeumtohne);IF plausitxt<>""CAND plausitxt<>"0"THEN IF int(plausitxt)=0 +THEN fstatus:=fnrversaeumtohne;fmeld:=meldungunerlaubterwert; +fehlerbehandlungbearb1FI FI ;plausitxt:=erfassungsfeld(bearb1)(fnrverspaetet) +;IF plausitxt<>""CAND plausitxt<>"0"THEN IF int(plausitxt)=0THEN fstatus:= +fnrverspaetet;fmeld:=meldungunerlaubterwert;fehlerbehandlungbearb1FI FI . +aktuellessjhj:akthalbjahr=gewhalbjahrCAND aktschuljahr=gewschuljahr. +pruefeplausibilitaetbearb2:verglfachleiste:="";verglartleiste:=""; +verglklausurleiste:="";verglkennungenleiste:="";plausileiste:=stdplausileiste +;FOR lvFROM 0UPTO fnrfachende-fnrfachanfREP plausitxt:=erfassungsfeld(bearb2) +(fnrfachanf+lv);IF plausitxt<>""THEN replace(plausileiste,lv+1,"1"); +verglfachleisteCAT text(plausitxt,2);IF pos(faecher,trenner+plausitxt+trenner +)<1THEN fstatus:=fnrfachanf+lv;fmeld:=meldungfachangabeunzulaessig; +fehlerbehandlungbearb2FI FI PER ;FOR lvFROM 0UPTO fnrkursartende- +fnrkursartanfREP plausitxt:=erfassungsfeld(bearb2)(fnrkursartanf+lv);IF ( +plausileisteSUB (lv+1))="1"THEN verglartleisteCAT text(plausitxt,2)FI ;IF +plausitxt<>""THEN IF pos(artlv,trenner+plausitxt+trenner)<1THEN fstatus:= +fnrkursartanf+lv;fmeld:=meldungungueltigekursart;fehlerbehandlungbearb2FI ; +FI PER ;FOR lvFROM 0UPTO fnrkursende-fnrkursanfREP plausitxt:=erfassungsfeld( +bearb2)(fnrkursanf+lv);IF (plausileisteSUB (lv+1))="1"THEN +verglkennungenleisteCAT text(plausitxt,4)FI PER ;FOR lvFROM 0UPTO +fnrklausurende-fnrklausuranfREP plausitxt:=erfassungsfeld(bearb2)( +fnrklausuranf+lv);IF (plausileisteSUB (lv+1))="1"THEN verglklausurleisteCAT +text(plausitxt,1)FI PER ;FOR lvFROM 0UPTO fnrnoteende-fnrnoteanfREP plausitxt +:=erfassungsfeld(bearb2)(fnrnoteanf+lv);IF plausitxt<>""THEN IF pos(noten, +trenner+plausitxt+trenner)<1THEN fstatus:=fnrnoteanf+lv;fmeld:= +fmeldnichtimbestand;fehlerbehandlungbearb2FI FI ;PER ;FOR lvFROM 0UPTO +fnrbemende-fnrbemanfREP plausitxt:=erfassungsfeld(bearb2)(fnrbemanf+lv);IF +plausitxt<>""THEN IF pos(bemerk,trenner+plausitxt+trenner)<1THEN fstatus:= +fnrbemanf+lv;fmeld:=fmeldnichtimbestand;fehlerbehandlungbearb2FI FI ;PER ; +FOR lvFROM 0UPTO fnrwarnungende-fnrwarnunganfREP plausitxt:=erfassungsfeld( +bearb2)(fnrwarnunganf+lv);IF plausitxt<>""THEN IF pos(blbrief,trenner+ +plausitxt+trenner)<1THEN fstatus:=fnrwarnunganf+lv;fmeld:=fmeldnichtimbestand +;fehlerbehandlungbearb2FI FI ;PER .END PROC pruefeplausibilitaet;PROC +listezuhalbjahresdatenzeigen:BOOL VAR listeexistiertnicht;falschesdatum:= +FALSE ;bs:=eingang;IF maskeeingangnochnichtdaTHEN initmaske(maske(bs), +maskennameeingang);init(bs,maxfeldbearb0);maskeeingangnochnichtda:=FALSE FI ; +gewschuljahr:=standardmaskenfeld(fnrgewschuljahr);gewhalbjahr:= +standardmaskenfeld(fnrgewhalbjahr);IF int(standardmaskenfeld(fnrgewjgst))=0 +THEN gewjgst:=standardmaskenfeld(fnrgewjgst);ELSE gewjgst:=jgstaufber( +standardmaskenfeld(fnrgewjgst));FI ;schluesselbereitstellen;IF NOT +falschesdatumTHEN putwert(fnrsustatuss,aktbestand);standardmeldung( +meldunglistenerstellung,"");initobli(saetzederliste);parsenooffields(5); +objektlistestarten(ixsustatfamrufgeb,standardmaskenfeld(fnrname), +fnrsufamnames,TRUE ,listeexistiertnicht);IF listeexistiertnichtTHEN +reinitparsing;standardmeldung(meldungkeineliste,"");return(1)ELSE +datensatzlistenausgabe(PROC (INT CONST )suerfassungschueler,TRUE ,BOOL PROC +pruefunghjd);FI ELSE return(1)FI .END PROC listezuhalbjahresdatenzeigen;BOOL +PROC pruefunghjd:wert(fnrsustatuss)=aktbestandEND PROC pruefunghjd;PROC +halbjahresdatenausgewaehlterschuelerbearbeitenvorbereiten:BOOL VAR ok, +kannbearbeitetwerden:=FALSE ;loeschedieerstellteobjektliste; +objektlistebeenden(dateiname,TRUE );reinitparsing; +holeerstenmehrtlgschluesselausdatei(ok);WHILE okREP pruefeobnameexistiert(ok) +;IF okTHEN kannbearbeitetwerden:=TRUE ;ok:=FALSE ELSE +holenaechstenmehrtlgschluesselausdatei(ok)FI PER ;IF kannbearbeitetwerden +THEN bereiteeingangsmaskefuerausgewaehltenvor;standardnprocELSE +standardmeldung(meldungletzter,"");enter(2)FI .END PROC +halbjahresdatenausgewaehlterschuelerbearbeitenvorbereiten;PROC +fuellemaskenfeldereingang:INT VAR lv;holedbwerte(bs);erfassungsfeld(bs)( +fnrgewschuljahr):=gewschuljahr;erfassungsfeld(bs)(fnrgewhalbjahr):= +gewhalbjahr;erfassungsfeld(bs)(fnrgewjgst):=gewjgst;IF aktbestand= +schueleraktuellTHEN erfassungsfeld(bs)(fnrabgangbestand):=""ELSE +erfassungsfeld(bs)(fnrabgangbestand):="x"FI ;FOR lvFROM fnrnameUPTO +fnrabgangbestandREP standardmaskenfeld(erfassungsfeld(bs)(lv),lv)PER .END +PROC fuellemaskenfeldereingang;PROC setzefeldschutz:INT VAR i;FOR iFROM +fnrnameUPTO fnrabgangbestandREP feldschutz(i)PER ;feldfrei(fnrgewschuljahr); +feldfrei(fnrgewhalbjahr);feldfrei(fnrgewjgst);.END PROC setzefeldschutz;PROC +holeerstenmehrtlgschluesselausdatei(BOOL VAR ok):IF NOT exists(dateiname) +THEN ok:=FALSE ;LEAVE holeerstenmehrtlgschluesselausdateiFI ;f:= +sequentialfile(input,dateiname);holenaechstenmehrtlgschluesselausdatei(ok). +END PROC holeerstenmehrtlgschluesselausdatei;PROC +holenaechstenmehrtlgschluesselausdatei(BOOL VAR ok):TEXT VAR thesaurustext:= +"";INT VAR schluesselbeginn:=0;INT VAR schluesseltrennung:=0;INT VAR i:=1;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 anzschluesselsuREP 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 +holenaechstenmehrtlgschluesselausdatei;PROC +halbjahresdatendesschuelersnichtbearbeiten: +vorbereitendernaechstenschluesselbehandlung(1)END PROC +halbjahresdatendesschuelersnichtbearbeiten;TEXT PROC hjderfassungswert(INT +CONST feldnr):IF (feldnr>maxfeldbearb2)OR (feldnr<1)THEN ""ELSE +erfassungsfeld(bs)(feldnr)FI .END PROC hjderfassungswert;PROC setzedbwerte( +INT CONST mnr):SELECT mnrOF CASE eingang:setzedbwerteeingangCASE bearb1: +setzedbwertebearb1CASE bearb2:setzedbwertebearb2END SELECT . +setzedbwerteeingang:putwert(fnrsufamnames,erfassungsfeld[mnr][fnrname]); +putwert(fnrsurufnames,erfassungsfeld[mnr][fnrrufname]);putwert(fnrsugebdatums +,datumskonversion(erfassungsfeld[mnr][fnrgebdatum]));.setzedbwertebearb1: +putwert(fnrhjdjgst,erfassungsfeld[mnr][fnrausgabegewjgst]);putwert( +fnrhjdkennung,erfassungsfeld[mnr][fnrausgabegewzug]);putwert(fnrhjdvermblau, +erfassungsfeld[mnr][fnrblbriefwarn]);putwert(fnrhjdbemblau,erfassungsfeld[mnr +][fnrblbriefbem]);putwert(fnrhjdvermnachwarn,erfassungsfeld[mnr][ +fnrblbriefnwarn]);putwert(fnrhjdbemnachwarn,erfassungsfeld[mnr][ +fnrblbriefnbem]);putwert(fnrhjdversetzung,erfassungsfeld[mnr][fnrversetzung]) +;putwert(fnrhjdnachfach1,erfassungsfeld[mnr][fnrnachpr1]);putwert( +fnrhjdnachfach2,erfassungsfeld[mnr][fnrnachpr2]);putwert(fnrhjdnachfach3, +erfassungsfeld[mnr][fnrnachpr3]);putwert(fnrhjdbemnach,erfassungsfeld[mnr][ +fnrnachprbem]);putwert(fnrhjdnachfach,erfassungsfeld[mnr][fnrnachprabgelegt]) +;putwert(fnrhjdnacherg,erfassungsfeld[mnr][fnrnachprnote]);putwert( +fnrhjdbemzeug1,erfassungsfeld[mnr][fnrzeugbem1]);putwert(fnrhjdbemzeug2, +erfassungsfeld[mnr][fnrzeugbem2]);putwert(fnrhjdbemzeug3,erfassungsfeld[mnr][ +fnrzeugbem3]);putwert(fnrhjdversstdm,erfassungsfeld[mnr][fnrversaeumtmit]); +putwert(fnrhjdversstdo,erfassungsfeld[mnr][fnrversaeumtohne]);putwert( +fnrhjdverspaet,erfassungsfeld[mnr][fnrverspaetet]);.setzedbwertebearb2: +setzedbwertfach;setzedbwertart;setzedbwertklausur;setzedbwertkurs; +setzedbwertnote;setzedbwertbem;setzedbwertwarnung.setzedbwertfach: +spalteninhalte:="";FOR indFROM fnrfachanfUPTO fnrfachendeREP spalteninhalte +CAT text(erfassungsfeld[mnr][ind],2)PER ;putwert(fnrhjdfach,spalteninhalte). +setzedbwertart:spalteninhalte:="";FOR indFROM fnrkursartanfUPTO +fnrkursartendeREP spalteninhalteCAT text(erfassungsfeld[mnr][ind],2)PER ; +putwert(fnrhjdkursart,spalteninhalte).setzedbwertklausur:spalteninhalte:=""; +FOR indFROM fnrklausuranfUPTO fnrklausurendeREP spalteninhalteCAT text( +erfassungsfeld[mnr][ind],1)PER ;putwert(fnrhjdklausurteiln,spalteninhalte). +setzedbwertkurs:spalteninhalte:="";FOR indFROM fnrkursanfUPTO fnrkursendeREP +spalteninhalteCAT text(erfassungsfeld[mnr][ind],4)PER ;putwert( +fnrhjdlerngrpkenn,spalteninhalte).setzedbwertnote:spalteninhalte:="";FOR ind +FROM fnrnoteanfUPTO fnrnoteendeREP spalteninhalteCAT text(erfassungsfeld[mnr] +[ind],2)PER ;putwert(fnrhjdnotepunkte,spalteninhalte).setzedbwertbem: +spalteninhalte:="";FOR indFROM fnrbemanfUPTO fnrbemendeREP spalteninhalteCAT +text(erfassungsfeld[mnr][ind],3)PER ;putwert(fnrhjdbemerk,spalteninhalte). +setzedbwertwarnung:spalteninhalte:="";FOR indFROM fnrwarnunganfUPTO +fnrwarnungendeREP spalteninhalteCAT text(erfassungsfeld[mnr][ind],1)PER ; +putwert(fnrhjdvermwarnung,spalteninhalte).END PROC setzedbwerte;PROC +holedbwerte(INT CONST mnr):SELECT mnrOF CASE eingang:holedbwerteeingangCASE +bearb1:holedbwertebearb1CASE bearb2:holedbwertebearb2END SELECT . +holedbwerteeingang:erfassungsfeld[mnr][fnrname]:=wert(fnrsufamnames); +erfassungsfeld[mnr][fnrrufname]:=wert(fnrsurufnames);erfassungsfeld[mnr][ +fnrgebdatum]:=datumrekonversion(wert(fnrsugebdatums));.holedbwertebearb1: +erfassungsfeld[mnr][fnrausgabegewjgst]:=jgstaufber(wert(fnrhjdjgst)); +erfassungsfeld[mnr][fnrausgabegewzug]:=wert(fnrhjdkennung);erfassungsfeld[mnr +][fnrblbriefwarn]:=wert(fnrhjdvermblau);erfassungsfeld[mnr][fnrblbriefbem]:= +wert(fnrhjdbemblau);erfassungsfeld[mnr][fnrblbriefnwarn]:=wert( +fnrhjdvermnachwarn);erfassungsfeld[mnr][fnrblbriefnbem]:=wert( +fnrhjdbemnachwarn);erfassungsfeld[mnr][fnrversetzung]:=wert(fnrhjdversetzung) +;erfassungsfeld[mnr][fnrnachpr1]:=wert(fnrhjdnachfach1);erfassungsfeld[mnr][ +fnrnachpr2]:=wert(fnrhjdnachfach2);erfassungsfeld[mnr][fnrnachpr3]:=wert( +fnrhjdnachfach3);erfassungsfeld[mnr][fnrnachprbem]:=wert(fnrhjdbemnach); +erfassungsfeld[mnr][fnrnachprabgelegt]:=wert(fnrhjdnachfach);erfassungsfeld[ +mnr][fnrnachprnote]:=wert(fnrhjdnacherg);erfassungsfeld[mnr][fnrzeugbem1]:= +wert(fnrhjdbemzeug1);erfassungsfeld[mnr][fnrzeugbem2]:=wert(fnrhjdbemzeug2); +erfassungsfeld[mnr][fnrzeugbem3]:=wert(fnrhjdbemzeug3);erfassungsfeld[mnr][ +fnrversaeumtmit]:=wert(fnrhjdversstdm);erfassungsfeld[mnr][fnrversaeumtohne] +:=wert(fnrhjdversstdo);erfassungsfeld[mnr][fnrverspaetet]:=wert( +fnrhjdverspaet).holedbwertebearb2:.END PROC holedbwerte;BOOL PROC +korrekteschuljahreseingabe(TEXT CONST eingabe):eingabe=niltextOR eingabe= +"9900"OR int(subtext(eingabe,1,2))=int(subtext(eingabe,3,4))-1END PROC +korrekteschuljahreseingabe;PROC eventuellneueshjdtideintragen:IF +aktuellesschulhalbjahrinbearbeitungTHEN neueshjdtideintragenFI . +neueshjdtideintragen:readtid(dnrschueler,schuelertid);putwert(fnrsutidakthjd, +hjdtid);replace(dnrschueler,schuelertid).END PROC +eventuellneueshjdtideintragen;#dr11.05.88PROC eventuellinstatwuerfeleintragen +:IF aktuellesschulhalbjahrinbearbeitungCAND versetzungseintrag<>wert( +fnrhjdversetzung)THEN kuerzelsummeeinsrunter(statnrversetzung,jgst,zug, +aktbestand,versetzungseintrag);kuerzelsummeeinsrauf(statnrversetzung,jgst,zug +,aktbestand,wert(fnrhjdversetzung));FI END PROC +eventuellinstatwuerfeleintragen;#BOOL PROC +aktuellesschulhalbjahrinbearbeitung:vglgewhalbjahr=vglakthalbjahrCAND +gewschuljahr=schulkenndatum(schuljahr)END PROC +aktuellesschulhalbjahrinbearbeitung;TEXT PROC ohnestrich(TEXT CONST txt): +TEXT VAR t:=txt;changeall(t,"_",niltext);tEND PROC ohnestrich;PROC init(INT +CONST bsnr,maxfeld):FOR lvFROM 1UPTO maxfeldREP erfassungsfeld(bsnr)(lv):="" +PER END PROC init;END PACKET halbjahresdatenbearbeiten; + -- cgit v1.2.3