app/schulis/2.2.1/src/2.likw kurskombinationen sek2

Raw file
Back to index

PACKET likwkurskombinatilonensek2DEFINES kurskombinationmaskebearbeiten,
kurskombinationggferstellen,kurskombinationzeigen,kurskombinationendrucken:
LET maske="ms kurskombination auszaehlen sek2 eingang",fnr2fuerjgst=2,
fnr3fuerhj=3,fnr4jgstls=4,fnr5jgstneu=5,fnr6kurswahl=6,fnr7bestart=7,
fnr8klausur=8,fnr9bs=9,fnr10dr=10,mnrjgstfalsch=404,mnrjgstfehlt=172,
mnrhjfalsch=405,mnrkeinekwdatenda=406,mnrkeinedbdatenda=407,
mnrbearbeitetwerden=352,mnrlistewirdgedruckt=58,mnrbittewarten=69,
mnrlistewirdaufbereitet=190;INT VAR mnrallgemein;TEXT VAR mnrzusatz;TEXT 
CONST mark:="#";LET niltext="",punkt=".",querstrich="/",blank=" ",
blankklammer=" )",doppelpunkt=":",null=0,neuangemeldete="N",allederjgst="",
ohneneuang="O";BOOL VAR bildschirmausgabe,kurswahlen,lsundneue,nurneue,nurls,
bestimmtekursart;TEXT VAR dbsj,dbhj,dbjgst,fuerkwsj,fuerhj,fuerjgst,jgstls,
jgstneu,hilfsstring,kursart,klausur,kennung,fachart,lvart,fachkennung1,
fachkennung2,fachart1,fachart2,kursart1,kursart2;LET maxkurse=200,maxspalten=
13;TEXT CONST ueberschrift3:="-------:"+13*"----+";TEXT VAR ueberschrift1,
ueberschrift2,zeile;LET ausgfeldlaenge=1,AUSGFELD =ROW ausgfeldlaengeTEXT ,
AUSGKOPF =ROW ausgkopflaengeTEXT ,AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ;
AUSGKOPFDRUCK VAR ausgkopfdruck;LET ausgkopflaenge=2,ueberschriftenzeilen=2;
TEXT CONST kopfueb1teil1:="Wahlergebnis für Jgst. ",kopfueb1teil2:=
" im Schuljahr ",kopfueb1teil3:="    (Art/Klausur: ",kopfueb2teil1:=
"Schüler der jetzigen Jgst. ",kopfueb2teil2:=" und der ",kopfueb2teil3:=
"Neuangemeldeten zur Jgst. ";TEXT VAR textueb1:="",textueb2:="";INT VAR 
status,dbstatusmerker,zaehler,x,y,z,anzangebote,anztabellen,anzspaltenschluss
,anfang,ende,zeilenzaehler,druckzeilenzahl;LET datenraum="datenraum";LET 
ZEILE =STRUCT (TEXT angebot,ROW maxkurseINT anzahl);BOUND ROW maxkurseZEILE 
VAR zeilespalte;ROW maxspaltenINT VAR summen;PROC 
kurskombinationmaskebearbeiten:standardvproc(maske);END PROC 
kurskombinationmaskebearbeiten;PROC kurskombinationggferstellen:lsundneue:=
FALSE ;nurls:=FALSE ;nurneue:=FALSE ;standardmeldung(mnrbittewarten,niltext);
standardpruefe(5,fnr9bs,fnr10dr,null,niltext,status);IF status<>0THEN infeld(
status);return(1)ELSE fuerjgst:=standardmaskenfeld(fnr2fuerjgst);fuerhj:=
standardmaskenfeld(fnr3fuerhj);jgstls:=standardmaskenfeld(fnr4jgstls);jgstneu
:=standardmaskenfeld(fnr5jgstneu);IF NOT eingabenzujgstundhjkorrektTHEN 
standardmeldung(mnrallgemein,niltext);return(1);ELSE kursart:=
standardmaskenfeld(fnr7bestart);klausur:=standardmaskenfeld(fnr8klausur);
bestimmtekursart:=kursart<>niltext;kurswahlen:=standardmaskenfeld(
fnr6kurswahl)<>niltext;bildschirmausgabe:=standardmaskenfeld(fnr10dr)=niltext
;IF NOT datenraumfürgewaehltessjdaTHEN standardmeldung(mnrkeinekwdatenda,
niltext);return(1);ELSE IF angebotelvsoderfaecherimrowTHEN 
druckdateifuellenundausgebenELSE standardmeldung(mnrkeinedbdatenda,mnrzusatz+
mark);return(1)FI ;FI ;FI ;FI ;.eingabenzujgstundhjkorrekt:dbhj:=
schulkenndatum("Schulhalbjahr");dbsj:=schulkenndatum("Schuljahr");INT VAR 
jgst;standardpruefe(2,fnr2fuerjgst,null,null,niltext,status);IF status<>0
THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2fuerjgst);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;jgst:=int(fuerjgst);IF jgst<11COR 
jgst>13THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2fuerjgst);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;IF fuerhj<>"1"AND fuerhj<>"2"THEN 
mnrallgemein:=mnrhjfalsch;infeld(fnr3fuerhj);LEAVE eingabenzujgstundhjkorrekt
WITH FALSE FI ;IF jgstls=niltextAND jgstneu=niltextTHEN mnrallgemein:=
mnrjgstfehlt;infeld(fnr4jgstls);LEAVE eingabenzujgstundhjkorrektWITH FALSE 
FI ;jgst:=int(jgstls);IF jgstls<>niltextTHEN standardpruefe(2,fnr4jgstls,null
,null,niltext,status);IF status<>0COR (jgst<10COR jgst>13)THEN mnrallgemein:=
mnrjgstfalsch;infeld(fnr4jgstls);LEAVE eingabenzujgstundhjkorrektWITH FALSE 
FI ;FI ;jgst:=int(jgstneu);IF jgstneu<>niltextTHEN standardpruefe(2,
fnr5jgstneu,null,null,niltext,status);IF status<>0COR (jgst<11COR jgst>13)
THEN mnrallgemein:=mnrhjfalsch;infeld(fnr5jgstneu);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;FI ;IF jgstls<>niltextAND jgstneu<>
niltextTHEN IF int(jgstls)+1=int(jgstneu)AND jgstneu<=fuerjgstTHEN lsundneue
:=TRUE ELSE mnrallgemein:=mnrjgstfalsch;infeld(fnr4jgstls);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;ELIF jgstls=niltextTHEN IF jgstneu>
fuerjgstTHEN mnrallgemein:=mnrjgstfalsch;infeld(fnr4jgstls);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE ELSE nurneue:=TRUE FI ;ELSE IF jgstls>
fuerjgstTHEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2fuerjgst);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE ELIF (jgstls="10"AND dbhj="1")COR (
jgstls=fuerjgstAND fuerhj<dbhj)THEN mnrallgemein:=mnrhjfalsch;infeld(
fnr3fuerhj);LEAVE eingabenzujgstundhjkorrektWITH FALSE ELSE nurls:=TRUE ;FI ;
FI ;mnrallgemein:=1;TRUE .datenraumfürgewaehltessjda:BOOL VAR ok:=FALSE ;INT 
VAR fehler;IF nurneueTHEN jgstls:=text(int(jgstneu)-1);kurswahlinitialisieren
(jgstls,fuerjgst,fuerhj,neuangemeldete,fuerkwsj);kurswahlbasisholen(fehler);
ok:=fehler=0;ELIF lsundneueTHEN kurswahlinitialisieren(jgstls,fuerjgst,fuerhj
,allederjgst,fuerkwsj);kurswahlbasisholen(fehler);ok:=fehler=0;ELSE 
kurswahlinitialisieren(jgstls,fuerjgst,fuerhj,ohneneuang,fuerkwsj);
kurswahlbasisholen(fehler);ok:=fehler=0;FI ;okEND PROC 
kurskombinationggferstellen;PROC kurskombinationendrucken(BOOL CONST 
nachbsausgabe):IF nachbsausgabeTHEN rename("Kurskombinationen auszaehlen",
"liste.1");FILE VAR f:=sequentialfile(output,"liste.1");output(f);
drucknachbereiten;return(2);ELSE drucknachbereiten;return(1);FI ;
standardmeldung(mnrlistewirdgedruckt,niltext);forget(datenraum,quiet);forget(
"liste.1",quiet);END PROC kurskombinationendrucken;PROC kurskombinationzeigen
:IF exists("liste.1")THEN rename("liste.1","Kurskombinationen auszaehlen")FI 
;zeigedatei("Kurskombinationen auszaehlen","a");forget(datenraum,quiet);END 
PROC kurskombinationzeigen;BOOL PROC angebotelvsoderfaecherimrow:BOOL VAR 
angeboteda;forget("datenraum",quiet);forget("Kurskombinationen auszaehlen",
quiet);zeilespalte:=new(datenraum);IF (nurlsAND fuerhj=dbhjAND fuerkwsj=dbsj)
THEN dbjgst:=jgstlsELSE IF nurlsCOR lsundneueTHEN IF dbhj="2"THEN dbjgst:=
text(int(jgstls)+1)ELSE dbjgst:=jgstlsFI ;ELSE IF dbhj="2"THEN dbjgst:=
jgstneuELSE dbjgst:=text(int(jgstneu)-1)FI ;FI ;geplanteshjundsjberechnen(
dbhj,dbsj);FI ;anzangebote:=0;zeilespalte(1).angebot:=niltext;IF kurswahlen
THEN mnrzusatz:="Datei Lehrveranstaltungen";inittupel(dnrlehrveranstaltungen)
;putwert(fnrlvjgst,dbjgst);statleseschleife(dnrlehrveranstaltungen,dbsj,dbhj,
fnrlvsj,fnrlvhj,PROC angebotlvmerken);ELSE mnrzusatz:="Datei Fächerangebot";
inittupel(dnrfaecherangebot);putwert(fnrfangjgst,dbjgst);statleseschleife(
dnrfaecherangebot,dbsj,dbhj,fnrfangsj,fnrfanghj,PROC angebotfangmerken);FI ;
angeboteda:=anzangebote>0;angebotedaEND PROC angebotelvsoderfaecherimrow;
PROC angebotlvmerken(BOOL VAR ende):IF status<>0COR wert(fnrlvjgst)<>dbjgst
THEN ende:=TRUE ;ELSE lvart:=wert(fnrlvart);IF (NOT bestimmtekursart)COR 
lvart=kursartTHEN anzangeboteINCR 1;zeilespalte(anzangebote).angebot:=text(
wert(fnrlvfachkennung),6)+lvart;FI ;FI ;END PROC angebotlvmerken;PROC 
angebotfangmerken(BOOL VAR ende):IF status<>0COR wert(fnrfangjgst)<>dbjgst
THEN ende:=TRUE ;ELSE fachart:=wert(fnrfangart);IF (NOT bestimmtekursart)COR 
fachart=kursartTHEN anzangeboteINCR 1;zeilespalte(anzangebote).angebot:=text(
wert(fnrfangfach),2)+fachart;FI ;FI ;END PROC angebotfangmerken;PROC 
druckdateifuellenundausgeben:zeilenzaehler:=0;standardmeldung(
mnrlistewirdaufbereitet,niltext);wahldatenauskwdatenrauminrowablegen;
anztabellen:=anzangeboteDIV maxspalten;anzspaltenschluss:=anzangeboteMOD 
maxspalten;ueberschriftenimdruckkopfbauen;variablenfuerdrucksetzen;
druckvorbereiten;initdruckkopf(textueb1,textueb2);FOR zFROM 1UPTO anztabellen
REP ende:=z*maxspalten;anfang:=ende-(maxspalten-1);
tabellevonbisspalteausgeben(maxspalten);IF z<anztabellenTHEN seitenwechselFI 
;PER ;IF anzspaltenschluss<>0THEN IF anztabellen<>0THEN anfang:=ende+1;
seitenwechselELSE anfang:=1FI ;ende:=anzangebote;tabellevonbisspalteausgeben(
anzspaltenschluss);FI ;IF bildschirmausgabeTHEN kurskombinationzeigenELSE 
kurskombinationendrucken(FALSE )FI ;.variablenfuerdrucksetzen:druckzeilenzahl
:=drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.
ueberschriftenimdruckkopfbauen:textueb1:=kopfueb1teil1;textueb1CAT fuerjgst;
textueb1CAT punkt;textueb1CAT fuerhj;textueb1CAT kopfueb1teil2;textueb1CAT 
subtext(fuerkwsj,1,2)+querstrich;textueb1CAT subtext(fuerkwsj,3,4);IF 
bestimmtekursartOR klausur<>niltextTHEN textueb1CAT kopfueb1teil3;textueb1
CAT kursart+querstrich;textueb1CAT klausur+blankklammer;FI ;IF NOT (fuerhj=
dbhjAND fuerjgst=jgstls)THEN geplanteshjundsjberechnen(dbhj,dbsj);FI ;IF 
nurneueTHEN textueb2:=kopfueb2teil3;textueb2CAT jgstneu;ELSE textueb2:=
kopfueb2teil1;textueb2CAT jgstls;IF lsundneueTHEN textueb2CAT kopfueb2teil2;
textueb2CAT kopfueb2teil3;textueb2CAT jgstneu;FI ;FI ;END PROC 
druckdateifuellenundausgeben;PROC wahldatenauskwdatenrauminrowablegen:FOR x
FROM 1UPTO anzangeboteREP y:=1;IF kurswahlenTHEN WHILE y<=xREP 
kombiationenlvsmerken(x,y);yINCR 1;PER ;ELSE WHILE y<=xREP 
kombinationenfaechermerken(x,y);yINCR 1;PER ;FI ;PER ;END PROC 
wahldatenauskwdatenrauminrowablegen;PROC kombiationenlvsmerken(INT CONST zeil
,spal):fachkennung1:=zeilespalte(zeil).angebot;fachkennung2:=zeilespalte(spal
).angebot;IF NOT bestimmtekursartTHEN kursart1:=subtext(fachkennung1,7,7);
kursart2:=subtext(fachkennung2,7,7);ELSE kursart1:=kursart;kursart2:=kursart
FI ;dbstatusmerker:=dbstatus;zeilespalte(zeil).anzahl(spal):=
anzahlschuelermitwahl(subtext(fachkennung1,1,2),subtext(fachkennung1,3,6),
kursart1,klausur,subtext(fachkennung2,1,2),subtext(fachkennung2,3,6),kursart2
,klausur);dbstatus(dbstatusmerker);END PROC kombiationenlvsmerken;PROC 
kombinationenfaechermerken(INT CONST zeil,spal):fachart1:=zeilespalte(zeil).
angebot;fachart2:=zeilespalte(spal).angebot;IF bestimmtekursartTHEN kursart1
:=kursart;kursart2:=kursart;ELSE kursart1:=subtext(fachart1,3,3);kursart2:=
subtext(fachart2,3,3);FI ;kennung:=niltext;dbstatusmerker:=dbstatus;
zeilespalte(zeil).anzahl(spal):=anzahlschuelermitwahl(subtext(fachart1,1,2),
kennung,kursart1,klausur,subtext(fachart2,1,2),kennung,kursart2,klausur);
dbstatus(dbstatusmerker);END PROC kombinationenfaechermerken;PROC 
tabellevonbisspalteausgeben(INT CONST spaltenzahl):INT VAR s,kombinationen;
FOR sFROM 1UPTO maxspaltenREP summen(s):=0PER ;zeilenzaehler:=0;ueberschrift1
:="       :";ueberschrift2:="       :";FOR zaehlerFROM anfangUPTO endeREP 
ueberschrift1CAT text(zeilespalte(zaehler).angebot,2)+"  :";IF NOT kurswahlen
THEN ueberschrift2CAT subtext(zeilespalte(zaehler).angebot,3,3)+"   :";ELSE 
ueberschrift2CAT subtext(zeilespalte(zaehler).angebot,3,6)+":";FI ;PER ;
druckkopfschreiben;setzemitseitennummern(TRUE );druckzeileschreiben(
ueberschrift1);druckzeileschreiben(ueberschrift2);druckzeileschreiben(
ueberschrift3);zeilenzaehlerINCR 12;FOR zaehlerFROM 1UPTO anzangeboteREP s:=1
;hilfsstring:=zeilespalte(zaehler).angebot;zeile:=text(hilfsstring,2)+blank;
IF kurswahlenTHEN zeileCAT subtext(hilfsstring,3,6)+doppelpunkt;ELSE zeile
CAT subtext(hilfsstring,3,3)+3*blank+doppelpunktFI ;FOR xFROM anfangUPTO ende
REP IF x<zaehlerTHEN kombinationen:=zeilespalte(zaehler).anzahl(x);zeileCAT 
text(kombinationen,3)+blank+doppelpunkt;summen(s)INCR kombinationen;ELIF x=
zaehlerTHEN zeileCAT "  * :"ELSE kombinationen:=zeilespalte(x).anzahl(zaehler
);zeileCAT text(kombinationen,3)+" :";summen(s)INCR kombinationen;FI ;sINCR 1
;PER ;zeilenzaehlerINCR 1;IF drucklaenge-1=zeilenzaehlerTHEN seitenwechsel;
druckzeileschreiben(ueberschrift1);druckzeileschreiben(ueberschrift2);
druckzeileschreiben(ueberschrift3);zeilenzaehler:=4;FI ;druckzeileschreiben(
zeile);PER ;druckzeileschreiben(ueberschrift3);zeile:="Summe  :";FOR sFROM 1
UPTO spaltenzahlREP zeileCAT text(summen(s),3)+blank+doppelpunkt;PER ;
zeilenzaehlerINCR 2;druckzeileschreiben(zeile);END PROC 
tabellevonbisspalteausgeben;END PACKET likwkurskombinatilonensek2