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;