summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/2.likw kurskombinationen sek2
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/2.likw kurskombinationen sek2')
-rw-r--r--app/schulis/2.2.1/src/2.likw kurskombinationen sek2166
1 files changed, 166 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/2.likw kurskombinationen sek2 b/app/schulis/2.2.1/src/2.likw kurskombinationen sek2
new file mode 100644
index 0000000..35caa9d
--- /dev/null
+++ b/app/schulis/2.2.1/src/2.likw kurskombinationen sek2
@@ -0,0 +1,166 @@
+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
+