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 --- .../2.2.1/src/2.likw wahl und kursdaten sek2 | 246 +++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 app/schulis/2.2.1/src/2.likw wahl und kursdaten sek2 (limited to 'app/schulis/2.2.1/src/2.likw wahl und kursdaten sek2') diff --git a/app/schulis/2.2.1/src/2.likw wahl und kursdaten sek2 b/app/schulis/2.2.1/src/2.likw wahl und kursdaten sek2 new file mode 100644 index 0000000..992c52b --- /dev/null +++ b/app/schulis/2.2.1/src/2.likw wahl und kursdaten sek2 @@ -0,0 +1,246 @@ +PACKET likwwahlundkursdatensek2DEFINES wahlundkursdatenmaskebearbeiten, +wahlundkursdatenggfstarten,wahlundkursdatennaechsteliste, +wahlundkursdatenabschluss,wahlundkursdatenggfbestandueberankreuzliste, +wahlundkursdatenblaettern,wahldatenlistenseiteaktualisieren:LET objektmaske= +"mu objektliste",eingangsmaske="ms wahl und kursdaten sek2 eingang", +fnr2jgstls=2,fnr3jgstneu=3,fnr4famname=4,fnr5rufname=5,fnr6gebdat=6,fnr7bs=7, +fnr8dr=8,mnrauswahlnichtsinnvoll=56,mnrlistewirdgedruckt=58, +mnrdatenexistierennicht=59,mnrbittewarten=69,mnrdruckausgabefuerwirdgedruckt= +125,mnrschuelernichtimentsprbestand=126,mnralledruckausgabenerstellt=128, +mnrangabenpraezisieren=129,mnrungueltigesdatum=157,mnrjgstfehlt=172, +mnrjgstoderschueler=318,mnrjgstfalsch=404,mnrkeinekwdatenda=406, +mnrkeinedatendain=407,mnrjgstoderbestschueler=422,trenner="�",neuang="N", +mitneuang="",ohneneuang="O";INT VAR mnrallgemein,egmaskefeldnr,status,erster, +letzter,aktschueler,zaehler,pos1,pos2;TEXT VAR fach,mnrzusatz,ueb2,hilfstext; +LET null=0,platzhalter="mehr- fach ",niltext="",punkt=".",blank=" ",dopp=":" +,doppblank=": ",blanksdopp=" :";LET maxanzfaecher=100,maxanzschulhj=10;ROW +maxanzfaecherROW maxanzschulhjTEXT VAR faecherschulhj;INT VAR ixfaecher, +ixschulhj,anzfaecher;TEXT VAR uebsj,uebjgst,faecherstring,faecher,kennungen, +klausuren,punkte,kursarten,zeile1,zeile2;BOOL VAR ankreuzliste, +bildschirmausgabe,lsundneue,nurneue,nurls,bestschueler,faecherstringok;TEXT +VAR sj,hj,kwsj,jgstls,jgstneu,famname,rufname,gebdat;FILE VAR ausgabedatei; +TEXT CONST ueb1:="Wahl- und Kursdaten von";LET fnrerstesankreuzfeld=2, +felderprolisteneintrag=2,listeneintraegeproseite=18;LET +meldungblaetternnichtmöglich=72;LET dummyschueler="",sunamenstrenner=", ", +sulaengeohnedatum=60,maxankreuzungen=1000,ankreuzung="x",keineankreuzung="", +kennungnursuname="N",boolvektordatei="Boolvektor";BOOL VAR bearbeitungingang +:=FALSE ;BOUND ROW maxankreuzungenBOOL VAR boolvektor;INT VAR aktuellezeile; +PROC wahlundkursdatenmaskebearbeiten:standardvproc(eingangsmaske); +ankreuzliste:=FALSE ;END PROC wahlundkursdatenmaskebearbeiten;PROC +wahlundkursdatenggfbestandueberankreuzliste:IF plausisallgemokAND +plausisspezankreuzokAND kurswahldatenraumdaTHEN ankreuzliste:=TRUE ; +aktuellezeile:=erster;initboolvektor;standardstartproc(objektmaske); +listezeigenabzeile(aktuellezeile);wahldatenlistenseiteaktualisieren;ELSE +standardmeldung(mnrallgemein,niltext);return(1);FI ;.plausisspezankreuzok: +BOOL VAR ok:=FALSE ;IF bestschuelerTHEN mnrallgemein:=mnrjgstoderbestschueler +;infeld(fnr4famname);ELSE ok:=TRUE FI ;ok.initboolvektor:boolvektor:=new( +boolvektordatei);FOR zaehlerFROM ersterUPTO letzterREP boolvektor(zaehler):= +FALSE PER ;END PROC wahlundkursdatenggfbestandueberankreuzliste;PROC +wahlundkursdatenggfstarten:bearbeitungingang:=FALSE ;IF ankreuzlisteTHEN +ersterDECR 1;naechsterindex(erster);startenELSE IF NOT plausisallgemokCOR +NOT plausisspezokTHEN standardmeldung(mnrallgemein,niltext);return(1);ELSE +startenFI ;FI ;.plausisspezok:IF bestschuelerTHEN IF NOT bestschuelerkorrekt +THEN standardmeldung(mnrangabenpraezisieren,niltext);infeld(egmaskefeldnr); +LEAVE plausisspezokWITH FALSE ELSE erster:=1;letzter:=1;FI ;ELSE IF lsundneue +THEN IF int(jgstls)<>int(jgstneu)-1THEN mnrallgemein:=mnrjgstfalsch;infeld( +fnr2jgstls);LEAVE plausisspezokWITH FALSE FI ;FI ;IF NOT kurswahldatenraumda +THEN infeld(fnr2jgstls);LEAVE plausisspezokWITH FALSE FI ;FI ;TRUE . +bestschuelerkorrekt:IF rufname=niltextTHEN IF gebdat=niltextTHEN IF +famnameeindeutigTHEN rufname:=wert(fnrsurufnames);gebdat:=wert(fnrsugebdatums +);LEAVE bestschuelerkorrektWITH TRUE ELSE LEAVE bestschuelerkorrektWITH +FALSE ;FI ;ELSE egmaskefeldnr:=fnr5rufname;mnrallgemein:= +mnrangabenpraezisieren;LEAVE bestschuelerkorrektWITH FALSE ;FI ;ELSE IF +gebdat<>niltextTHEN hilfstext:=subtext(gebdat,1,2);hilfstextCAT punkt; +hilfstextCAT subtext(gebdat,3,4);hilfstextCAT punkt;hilfstextCAT subtext( +gebdat,5,6);gebdat:=hilfstext;IF kompletterschluesselokTHEN LEAVE +bestschuelerkorrektWITH TRUE ELSE LEAVE bestschuelerkorrektWITH FALSE FI ; +ELSE IF famnameundrufnameeindeutigTHEN gebdat:=wert(fnrsugebdatums);LEAVE +bestschuelerkorrektWITH TRUE ELSE LEAVE bestschuelerkorrektWITH FALSE ;FI ; +FI ;FI ;TRUE END PROC wahlundkursdatenggfstarten;BOOL PROC famnameeindeutig: +inittupel(dnrschueler);putwert(fnrsufamnames,famname);putwert(fnrsurufnames, +rufname);putwert(fnrsugebdatums,gebdat);putwert(fnrsustatuss,"ls");search( +dnrschueler,FALSE );IF wert(fnrsufamnames)<>famnameTHEN egmaskefeldnr:= +fnr4famname;mnrallgemein:=mnrdatenexistierennicht;LEAVE famnameeindeutigWITH +FALSE ;ELSE succ(dnrschueler);IF wert(fnrsufamnames)=famnameTHEN +egmaskefeldnr:=fnr5rufname;mnrallgemein:=mnrangabenpraezisieren;LEAVE +famnameeindeutigWITH FALSE ;ELSE pred(dnrschueler)FI ;FI ;TRUE END PROC +famnameeindeutig;BOOL PROC famnameundrufnameeindeutig:inittupel(dnrschueler); +putwert(fnrsufamnames,famname);putwert(fnrsurufnames,rufname);putwert( +fnrsugebdatums,gebdat);putwert(fnrsustatuss,"ls");search(dnrschueler,FALSE ); +IF wert(fnrsufamnames)<>famnameCOR wert(fnrsurufnames)<>rufnameTHEN +egmaskefeldnr:=fnr4famname;mnrallgemein:=mnrdatenexistierennicht;LEAVE +famnameundrufnameeindeutigWITH FALSE ELSE succ(dnrschueler);IF wert( +fnrsufamnames)=famnameAND wert(fnrsurufnames)=rufnameTHEN egmaskefeldnr:= +fnr6gebdat;mnrallgemein:=mnrangabenpraezisieren;LEAVE +famnameundrufnameeindeutigWITH FALSE ELSE pred(dnrschueler)FI ;FI ;TRUE END +PROC famnameundrufnameeindeutig;BOOL PROC kompletterschluesselok:BOOL VAR +insek2:=TRUE ;standardpruefe(6,fnr6gebdat,null,null,niltext,status);IF status +<>0THEN egmaskefeldnr:=fnr6gebdat;mnrallgemein:=mnrungueltigesdatum;LEAVE +kompletterschluesselokWITH FALSE ;FI ;hilfstext:=subtext(gebdat,1,2); +hilfstextCAT punkt;hilfstextCAT subtext(gebdat,3,4);hilfstextCAT punkt; +hilfstextCAT subtext(gebdat,5,6);gebdat:=hilfstext;inittupel(dnrschueler); +putwert(fnrsufamnames,famname);putwert(fnrsurufnames,rufname);putwert( +fnrsugebdatums,gebdat);putwert(fnrsustatuss,"ls");search(dnrschueler,TRUE ); +IF dbstatus<>0COR intwert(fnrsusgrpjgst)<11THEN egmaskefeldnr:=fnr4famname; +mnrallgemein:=mnrschuelernichtimentsprbestand;insek2:=FALSE FI ;insek2END +PROC kompletterschluesselok;PROC starten:aktschueler:=erster;IF +bildschirmausgabeTHEN listeaufbereiten;bearbeitungingang:=TRUE ;rename( +"liste.1","Wahl- und Kursdaten");zeigedatei("Wahl- und Kursdaten","vr");ELSE +IF ankreuzlisteTHEN WHILE aktschueler<>0REP +listeaufbereitendruckenundloeschenodermeldung;naechsterindex(aktschueler); +PER ;ankreuzliste:=FALSE ;bearbeitungingang:=FALSE ;forget(boolvektordatei, +quiet);standardstartproc(eingangsmaske);egmaskenfelderleerenzurueckundmeldung +(2);ELSE FOR aktschuelerFROM ersterUPTO letzterREP +listeaufbereitendruckenundloeschenodermeldung;PER ; +egmaskenfelderleerenzurueckundmeldung(1);FI ;FI ;END PROC starten;PROC +listeaufbereitendruckenundloeschenodermeldung:IF NOT schuelervorhandenTHEN +meldungELSE listemitdatenzumschueleraufbereiten;standardmeldung( +mnrdruckausgabefuerwirdgedruckt,famname+"#");listedrucken;listeloeschen;FI ; +END PROC listeaufbereitendruckenundloeschenodermeldung;PROC +wahlundkursdatennaechsteliste(BOOL CONST drucken):IF druckenTHEN listedrucken +FI ;listeloeschen;IF ankreuzlisteTHEN naechsterindex(aktschueler);IF +aktschueler=0THEN forget(boolvektordatei,quiet);ankreuzliste:=FALSE ; +standardstartproc(eingangsmaske);egmaskenfelderleerenzurueckundmeldung(3); +ELSE listeaufbereiten;rename("liste.1","Wahl- und Kursdaten");return(1)FI ; +ELSE IF aktschueler=letzterTHEN egmaskenfelderleerenzurueckundmeldung(2); +ELSE aktschuelerINCR 1;listeaufbereiten;rename("liste.1", +"Wahl- und Kursdaten");return(1);FI ;FI ;END PROC +wahlundkursdatennaechsteliste;PROC listeaufbereiten:IF NOT schuelervorhanden +THEN listeleeraufbereitenELSE listemitdatenzumschueleraufbereiten;FI ;END +PROC listeaufbereiten;PROC meldung:mnrzusatz:="Halbjahresdaten"; +standardmeldung(mnrkeinedatendain,mnrzusatz+"#");END PROC meldung;PROC +schuelerdatenauskwdatenraumholen(INT CONST index):hilfstext:= +wahldatenzumindex(index,kennungnursuname);pos1:=pos(hilfstext,trenner);pos2:= +pos(hilfstext,trenner,pos1+1);famname:=subtext(hilfstext,1,pos1-1);rufname:= +subtext(hilfstext,pos1+1,pos2-1);gebdat:=subtext(hilfstext,pos2+1,length( +hilfstext));END PROC schuelerdatenauskwdatenraumholen;PROC +listeleeraufbereiten:dateioeffnenunddruckkopfschreiben;putline(ausgabedatei, +"Keine Halbjahres-Daten vorhanden für: "+rufname+blank+famname)END PROC +listeleeraufbereiten;PROC dateioeffnenunddruckkopfschreiben:ausgabedatei:= +sequentialfile(output,"liste.1");druckvorbereiten;ueb2:=famname;ueb2CAT blank +;ueb2CAT rufname;ueb2CAT ", geboren am ";ueb2CAT gebdat;initdruckkopf(ueb1, +ueb2);druckkopfschreiben;END PROC dateioeffnenunddruckkopfschreiben;PROC +rowinitialisieren:FOR ixfaecherFROM 1UPTO maxanzfaecherREP FOR ixschulhjFROM +1UPTO maxanzschulhjREP faecherschulhj(ixfaecher)(ixschulhj):=niltextPER ;PER +;END PROC rowinitialisieren;PROC listemitdatenzumschueleraufbereiten: +faecherstringok:=FALSE ;rowinitialisieren;dateioeffnenunddruckkopfschreiben; +uebsj:=5*blank+doppblank;uebjgst:="Fach "+doppblank;ixfaecher:=1;ixschulhj:=0 +;faecherstring:=wert(fnrhjdfach);WHILE dbstatus=0AND wert(fnrhjdfamnames)= +famnameAND wert(fnrhjdrufnames)=rufnameAND wert(fnrhjdgebdats)=gebdatREP +shjueberschriftenmerken;IF compress(faecherstring)=niltextTHEN succ( +dnrhalbjahresdaten);faecherstring:=wert(fnrhjdfach);ELSE +faecherstringaufbereitenundweiterewertelesen;IF faecherstring=faecherTHEN +FOR zaehlerFROM 1UPTO anzfaecherREP datenproshjprofachmerken(zaehler);PER ; +ELSE pos1:=1;zaehler:=1;WHILE pos10AND pos2MOD 2=0REP +pos2:=pos(faecherstring,fach,pos2+1);PER ;IF pos2=0THEN anzfaecherINCR 1; +ixfaecher:=anzfaecher;faecherstringCAT fach;ELSE ixfaecher:=(pos2+1)DIV 2FI ; +datenproshjprofachmerken(ixfaecher);pos1INCR 2;PER ;FI ;succ( +dnrhalbjahresdaten);FI ;PER ;ausgabederrowmatrixindatei;. +shjueberschriftenmerken:ixschulhjINCR 1;hilfstext:=wert(fnrhjdsj);uebsjCAT +subtext(hilfstext,1,2);uebsjCAT "/";uebsjCAT subtext(hilfstext,3,4);uebsjCAT +doppblank;hilfstext:=text(wert(fnrhjdjgst),2);hilfstextCAT punkt;hilfstext +CAT wert(fnrhjdhj);uebjgstCAT hilfstext;uebjgstCAT blank+doppblank;. +faecherstringaufbereitenundweiterewertelesen:IF NOT faecherstringokTHEN +zaehler:=1;pos1:=1;WHILE zaehler0AND pos1MOD 2=0REP pos1:=pos(faecherstring,subtext(faecherstring,zaehler, +zaehler+1),pos1+1)PER ;IF pos1=0THEN zaehlerINCR 2;ELSE IF pos1MOD 2=1THEN +change(faecherstring,pos1,pos1+1,niltext);FI ;FI ;PER ;anzfaecher:=length( +faecherstring)DIV 2;faecherstringok:=TRUE ;FI ;faecher:=wert(fnrhjdfach); +kennungen:=wert(fnrhjdlerngrpkenn);klausuren:=wert(fnrhjdklausurteiln); +kursarten:=wert(fnrhjdkursart);punkte:=wert(fnrhjdnotepunkte);IF punkte= +niltextTHEN punkte:=length(faecher)*blankFI ;.ausgabederrowmatrixindatei: +zeile1:=uebsj;druckzeileschreiben(zeile1);zeile1:=uebjgst;druckzeileschreiben +(zeile1);zeile1:="-----+"+(10*"------+");druckzeileschreiben(zeile1);INT VAR +i;i:=1;FOR pos1FROM 1UPTO anzfaecherREP zeile1:=subtext(faecherstring,i,i+1); +zeile1CAT blanksdopp;zeile2:=2*blank+blanksdopp;FOR zaehlerFROM 1UPTO +ixschulhjREP IF faecherschulhj(pos1)(zaehler)=niltextTHEN zeile1CAT 3*blank+ +blanksdopp;zeile2CAT 3*blank+blanksdopp;ELSE zeile1CAT subtext(faecherschulhj +(pos1)(zaehler),1,6);zeile1CAT dopp;zeile2CAT subtext(faecherschulhj(pos1)( +zaehler),7,12);zeile2CAT dopp;FI ;PER ;iINCR 2;druckzeileschreiben(zeile1); +druckzeileschreiben(zeile2);PER ;END PROC listemitdatenzumschueleraufbereiten +;PROC datenproshjprofachmerken(INT CONST rowindex):IF faecherschulhj(rowindex +)(ixschulhj)<>niltextTHEN faecherschulhj(rowindex)(ixschulhj):=platzhalter +ELSE faecherschulhj(rowindex)(ixschulhj):=subtext(kennungen,1,4)+blank+ +subtext(klausuren,1,1)+subtext(punkte,1,2)+blank+blank+subtext(kursarten,1,2) +;FI ;kennungen:=subtext(kennungen,5,length(kennungen));klausuren:=subtext( +klausuren,2,length(klausuren));punkte:=subtext(punkte,3,length(punkte)); +kursarten:=subtext(kursarten,3,length(kursarten));END PROC +datenproshjprofachmerken;PROC egmaskenfelderleerenzurueckundmeldung(INT +CONST stufe):FOR zaehlerFROM 2UPTO 8REP standardmaskenfeld(niltext,zaehler); +PER ;return(stufe);standardmeldung(mnralledruckausgabenerstellt,niltext);END +PROC egmaskenfelderleerenzurueckundmeldung;PROC listedrucken:IF exists( +"Wahl- und Kursdaten")THEN print("Wahl- und Kursdaten")ELSE print("liste.1"); +FI ;END PROC listedrucken;PROC listeloeschen:forget("Wahl- und Kursdaten", +quiet);forget("liste.1",quiet)END PROC listeloeschen;PROC +wahlundkursdatenblaettern(INT CONST richtung):SELECT richtungOF CASE 1: +andenanfangCASE 2:eineseitevorCASE 3:eineseitezurueckCASE 4:andasende +ENDSELECT ;return(1).andenanfang:aktuellezeile:=erster;listezeigenabzeile( +aktuellezeile);.andasende:aktuellezeile:=max(1,letzter- +listeneintraegeproseite+1);listezeigenabzeile(aktuellezeile);.eineseitevor: +IF aktuellezeile+listeneintraegeproseite>letzterTHEN standardmeldung( +meldungblaetternnichtmöglich,"")ELSE aktuellezeileINCR +listeneintraegeproseite;listezeigenabzeile(aktuellezeile)FI ;. +eineseitezurueck:IF aktuellezeile=ersterTHEN standardmeldung( +meldungblaetternnichtmöglich,"")ELSE aktuellezeileDECR +listeneintraegeproseite;aktuellezeile:=max(aktuellezeile,erster); +listezeigenabzeile(aktuellezeile)FI ;END PROC wahlundkursdatenblaettern;PROC +wahldatenlistenseiteaktualisieren:INT VAR i,fnr;standardnproc;fnr:= +fnrerstesankreuzfeld;FOR iFROM aktuellezeileUPTO min(aktuellezeile+ +listeneintraegeproseite,letzter)REP boolvektor(i):=standardmaskenfeld(fnr)<> +niltext;fnrINCR felderprolisteneintragPER END PROC +wahldatenlistenseiteaktualisieren;PROC listezeigenabzeile(INT CONST zeile): +INT VAR i,j1,j2,fnr;TEXT VAR t,t1;fnr:=fnrerstesankreuzfeld;FOR iFROM zeile +UPTO zeile+listeneintraegeproseiteREP IF i<=letzterTHEN t:=wahldatenzumindex( +i,kennungnursuname);feldfrei(fnr);IF boolvektor(i)THEN standardmaskenfeld( +ankreuzung,fnr);ELSE standardmaskenfeld(keineankreuzung,fnr);FI ; +bereiteschuelerzeileauf;standardmaskenfeld(t1,fnr+1);ELSE standardmaskenfeld( +niltext,fnr);feldschutz(fnr);standardmaskenfeld(dummyschueler,fnr+1)FI ;fnr +INCR felderprolisteneintrag;PER ;infeld(fnrerstesankreuzfeld); +standardfelderausgeben;.bereiteschuelerzeileauf:j1:=pos(t,trenner);j2:=pos(t, +trenner,j1+1);t1:=text(t,j1-1);t1CAT sunamenstrenner;t1CAT subtext(t,j1+1,j2- +1);t1:=text(t1,sulaengeohnedatum);t1CAT " ";t1CAT subtext(t,j2+1).END PROC +listezeigenabzeile;PROC naechsterindex(INT VAR index):indexINCR 1;WHILE index +<=letzterCAND NOT boolvektor(index)REP indexINCR 1PER ;IF index>letzterTHEN +index:=0FI END PROC naechsterindex;PROC wahlundkursdatenabschluss:INT VAR +ruecksprungweite:=1;IF ankreuzlisteTHEN forget(boolvektordatei,quiet); +ankreuzliste:=FALSE ;ruecksprungweiteINCR 1FI ;IF bearbeitungingangTHEN +bearbeitungingang:=FALSE ;ruecksprungweiteINCR 1FI ;listeloeschen;enter( +ruecksprungweite);END PROC wahlundkursdatenabschluss;BOOL PROC +plausisallgemok:standardmeldung(mnrbittewarten,niltext);ankreuzliste:=FALSE ; +bestschueler:=FALSE ;lsundneue:=FALSE ;nurneue:=FALSE ;nurls:=FALSE ; +standardpruefe(5,fnr7bs,fnr8dr,null,niltext,status);IF status<>0THEN infeld( +fnr7bs);mnrallgemein:=mnrauswahlnichtsinnvoll;LEAVE plausisallgemokWITH +FALSE FI ;bildschirmausgabe:=standardmaskenfeld(fnr8dr)=niltext;jgstls:= +standardmaskenfeld(fnr2jgstls);jgstneu:=standardmaskenfeld(fnr3jgstneu); +famname:=standardmaskenfeld(fnr4famname);rufname:=standardmaskenfeld( +fnr5rufname);gebdat:=standardmaskenfeld(fnr6gebdat);IF famname<>niltextCOR +rufname<>niltextCOR gebdat<>niltextTHEN bestschueler:=TRUE ;IF jgstls<> +niltextCOR jgstneu<>niltextTHEN infeld(fnr4famname);mnrallgemein:= +mnrjgstoderbestschueler;LEAVE plausisallgemokWITH FALSE FI ;ELSE IF jgstls= +niltextAND jgstneu=niltextTHEN infeld(fnr2jgstls);mnrallgemein:=mnrjgstfehlt; +LEAVE plausisallgemokWITH FALSE ;FI ;IF jgstls<>niltextTHEN standardpruefe(2, +fnr2jgstls,null,null,niltext,status);IF status<>0COR (int(jgstls)<10COR int( +jgstls)>13)THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2jgstls);LEAVE +plausisallgemokWITH FALSE ;FI ;FI ;IF jgstneu<>niltextTHEN standardpruefe(2, +fnr3jgstneu,null,null,niltext,status);IF status<>0COR (int(jgstneu)<11COR int +(jgstneu)>13)THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr3jgstneu);LEAVE +plausisallgemokWITH FALSE ;FI ;FI ;IF jgstls=niltextTHEN nurneue:=TRUE ELIF +jgstneu=niltextTHEN nurls:=TRUE ELSE lsundneue:=TRUE FI ;FI ;TRUE END PROC +plausisallgemok;BOOL PROC schuelervorhanden:IF NOT bestschuelerTHEN +schuelerdatenauskwdatenraumholen(aktschueler);FI ;inittupel( +dnrhalbjahresdaten);putwert(fnrhjdfamnames,famname);putwert(fnrhjdrufnames, +rufname);putwert(fnrhjdgebdats,gebdat);putwert(fnrhjdsj,niltext);putwert( +fnrhjdhj,niltext);search(dnrhalbjahresdaten,FALSE );dbstatus=0AND wert( +fnrhjdfamnames)=famnameAND wert(fnrhjdrufnames)=rufnameAND wert(fnrhjdgebdats +)=gebdatEND PROC schuelervorhanden;BOOL PROC kurswahldatenraumda:INT VAR +fehler;sj:=schulkenndatum("Schuljahr");hj:=schulkenndatum("Schulhalbjahr"); +IF nurlsTHEN kurswahlinitialisieren(jgstls,jgstls,hj,ohneneuang,kwsj);ELIF +nurneueTHEN jgstls:=text(int(jgstneu)-1);kurswahlinitialisieren(jgstls,jgstls +,hj,neuang,kwsj);ELSE kurswahlinitialisieren(jgstls,jgstls,hj,mitneuang,kwsj) +FI ;kurswahlbasisholen(fehler);IF fehler<>0THEN mnrallgemein:= +mnrkeinekwdatenda;infeld(fnr2jgstls);ELSE erster:=ersterschueler;letzter:= +letzterschuelerFI ;fehler=0END PROC kurswahldatenraumda;END PACKET +likwwahlundkursdatensek2 + -- cgit v1.2.3