summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/2.kursdaten exportieren
blob: e93c54dad0323f642b850b54f8e7e3e4aa494205 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
PACKET kursdatenueberschnittstelleexportierenDEFINES 
kursdatenschnittstelleexportanfang,
kursdatenschnittstelleexportaufbereitenoderabfrage,
kursdatenschnittstelleexportaufbereiten,kursdatenschnittstelleexportzeigen,
kursdatenschnittstelleexportzeigenverlassen,
kursdatenschnittstelleexportloeschenabfrage,
kursdatenschnittstelleexportloeschen,kursdatenschnittstelleexportarchiv,
kursdatenschnittstelleexportabfrage,
kursdatenschnittstelleexportloescheundreturn,
kursdatenschnittstelleexportdrucken,kursdatenschnittstelleexportabbruch:LET 
eingangsmaske="ms kurswahldaten exportieren",schuljahr="Schuljahr",halbjahr=
"Schulhalbjahr",filemodus="file ibm",listenname=
"Liste der Dateien auf der Diskette:",trenner="�",dos="DOS",einganggewjgst=2,
einganggewhj=3,eingangaktjgst=4,eingangaktneue=5,eingangmitkursen=6,
eingangdateiname=7,anzeingangsfelder=7,kurslaenge=15,kznurneue="N",kzohneneue
="O",kzalle="A",kzname="N",kzkurse="K",suffixfa=".FA",suffixwk=".WK",suffixbr
=".BR",suffixzi=".ZI",suffixzieintrag="                   ",leerekennung="  "
,meldungkeineschueler=423,meldungbearbwird=352,meldungwarten=69,
meldungdrucken=58,meldungpraezisieren=129,meldungfeldfuellen=52,
meldungfalschejgst=404,meldungfalscheshj=405,meldungserverfehler=416,
meldungandereauswahl=318,meldungdatengeloescht=431,meldungnamefalsch=323,
meldungrausreichen=343,meldungdisksichern=347,meldungdiskinit=348,
meldungnameloeschen=349,meldungaufdiskschr=350,meldungnameunbek=351;ROW 
anzeingangsfelderTEXT VAR eingangrow:=ROW anzeingangsfelderTEXT :("","","",""
,"","","schulis");INT VAR i,j;TEXT VAR t,t1,t2;INT VAR pos1,pos2,letztepos,
fstat,ruecksprung,aktfeld;TEXT VAR aktdateiname:="schulis",gewjgst,gewhj,
aktjgst,aktneue,gewsj,aktsj:="0000",akthj,schuelergruppe,aktsuffix:=suffixfa,
fahj,fasj,kweintrag,kurseintrag,dateieintrag;THESAURUS VAR thes;BOOL VAR 
archivfehler;FILE VAR dsfa,dswk,dsbr,dszi,g;PROC 
kursdatenschnittstelleexportanfang:standardstartproc(eingangsmaske);
gibeingangaus;standardfelderausgeben;infeld(letztepos);standardnproc.
gibeingangaus:infeld(1);FOR iFROM 1UPTO anzeingangsfelderREP 
standardmaskenfeld(eingangrow(i),i);IF eingangrow(i)<>""THEN letztepos:=iFI 
PER .END PROC kursdatenschnittstelleexportanfang;PROC 
kursdatenschnittstelleexportaufbereitenoderabfrage:
pruefeingabeundbelegvariablen;IF fstat=0THEN abfrageloeschenFI .
abfrageloeschen:beginlist;REP getlistentry(t1,t2);IF pos(t1,suffixfa)>0THEN 
infeld(eingangdateiname);ruecksprung:=2;standardmeldung(meldungnameloeschen,
t1+" (-WK,-BR,-ZI)#"+text(t2,8)+"#");standardnproc;LEAVE 
kursdatenschnittstelleexportaufbereitenoderabfrageFI UNTIL t1=""PER ;
ruecksprung:=1;kursdatenschnittstelleexportaufbereiten.END PROC 
kursdatenschnittstelleexportaufbereitenoderabfrage;PROC 
kursdatenschnittstelleexportaufbereiten:kurswahlinitialisieren(aktjgst,
gewjgst,gewhj,schuelergruppe,gewsj);kurswahlbasisholen(fstat);IF fstat<>0
THEN meldungausgeben(meldungserverfehler,einganggewjgst,1);ELIF 
letzterschueler<ersterschuelerTHEN meldungausgeben(meldungkeineschueler,
einganggewjgst,1);ELSE bereitefadateiauf;bereitewkdateiauf;bereitebrdateiauf;
bereitezidateiauf;loeschemeldung;return(ruecksprung)FI .bereitefadateiauf:IF 
gewjgst=aktjgstCAND gewhj=akthjTHEN fahj:=akthj;fasj:=aktsjELSE 
geplanteshjundsjberechnen(fahj,fasj)FI ;standardmeldung(meldungbearbwird,
aktdateiname+suffixfa+"#");forget(aktdateiname+suffixfa,quiet);dsfa:=
sequentialfile(output,aktdateiname+suffixfa);inittupel(dnrfaecherangebot);
putwert(fnrfangjgst,gewjgst);statleseschleife(dnrfaecherangebot,fasj,fahj,
fnrfangsj,fnrfanghj,PROC faecherangebotindateischreiben).bereitewkdateiauf:
forget(aktdateiname+suffixwk,quiet);dswk:=sequentialfile(output,aktdateiname+
suffixwk);standardmeldung(meldungbearbwird,aktdateiname+suffixwk+"#");IF 
eingangrow(eingangmitkursen)<>""THEN erstelledateimitkennungELSE 
erstelledateiohnekennungFI .erstelledateimitkennung:FOR iFROM ersterschueler
UPTO letzterschuelerREP kweintrag:=wahldatenzumindex(i,kzname);pos1:=pos(
kweintrag,trenner)-1;pos2:=pos(kweintrag,trenner,pos1+2)-1;dateieintrag:=text
(kweintrag,pos1);dateieintrag:=text(dateieintrag,30);dateieintragCAT text(
subtext(kweintrag,pos1+2,pos2),15);dateieintragCAT subtext(kweintrag,pos2+2);
kweintrag:=wahldatenzumindex(i,kzkurse);pos1:=1;FOR jFROM 1UPTO length(
kweintrag)DIV kurslaengeREP kurseintrag:=subtext(kweintrag,pos1,pos1+
kurslaenge-1);dateieintragCAT subtext(kurseintrag,4,5);dateieintragCAT 
subtext(kurseintrag,2,3);dateieintragCAT (kurseintragSUB 1);dateieintragCAT 
subtext(kurseintrag,6,7);pos1INCR kurslaenge;PER ;put(dswk,dateieintrag);line
(dswk);PER .erstelledateiohnekennung:FOR iFROM ersterschuelerUPTO 
letzterschuelerREP kweintrag:=wahldatenzumindex(i,kzname);pos1:=pos(kweintrag
,trenner)-1;pos2:=pos(kweintrag,trenner,pos1+2)-1;dateieintrag:=text(
kweintrag,pos1);dateieintrag:=text(dateieintrag,30);dateieintragCAT text(
subtext(kweintrag,pos1+2,pos2),15);dateieintragCAT subtext(kweintrag,pos2+2);
kweintrag:=wahldatenzumindex(i,kzkurse);pos1:=1;FOR jFROM 1UPTO length(
kweintrag)DIV kurslaengeREP kurseintrag:=subtext(kweintrag,pos1,pos1+
kurslaenge-1);dateieintragCAT subtext(kurseintrag,4,5);dateieintragCAT 
subtext(kurseintrag,2,3);dateieintragCAT (kurseintragSUB 1);dateieintragCAT 
leerekennung;pos1INCR kurslaenge;PER ;put(dswk,dateieintrag);line(dswk);PER .
bereitebrdateiauf:forget(aktdateiname+suffixbr,quiet);dsbr:=sequentialfile(
output,aktdateiname+suffixbr).bereitezidateiauf:forget(aktdateiname+suffixzi,
quiet);standardmeldung(meldungbearbwird,aktdateiname+suffixzi+"#");dszi:=
sequentialfile(output,aktdateiname+suffixzi);dateieintrag:=gewsj;dateieintrag
CAT gewjgst;dateieintragCAT gewhj;dateieintragCAT date;dateieintragCAT 
"schulis   ";dateieintragCAT suffixzieintrag;put(dszi,dateieintrag).END PROC 
kursdatenschnittstelleexportaufbereiten;PROC faecherangebotindateischreiben(
BOOL VAR b):INT VAR wstd;IF wert(fnrfangsj)=fasjCAND wert(fnrfanghj)=fahj
CAND wert(fnrfangjgst)=gewjgstCAND dbstatus=okTHEN wstd:=intwert(
fnrfangwochenstd);IF wstd>9THEN wstd:=9FI ;put(dsfa,text(wert(fnrfangfach),2)
+text(wert(fnrfangart),2)+text(wert(fnrfanganzlv),2)+text(wstd));line(dsfa)
ELSE dbstatus(1);b:=FALSE FI .END PROC faecherangebotindateischreiben;PROC 
kursdatenschnittstelleexportzeigen:aktdateiname:=standardmaskenfeld(
eingangdateiname);IF aktdateiname=""THEN fehlermeldungfeldfuellenELIF exists(
aktdateiname+suffixfa)THEN zeigdateiELSE fehlermeldungdateifehltFI .END PROC 
kursdatenschnittstelleexportzeigen;PROC zeigdatei:zeigedatei(aktdateiname+
aktsuffix,"vr").END PROC zeigdatei;PROC 
kursdatenschnittstelleexportzeigenverlassen:IF aktsuffix=suffixziTHEN 
aktsuffix:=suffixfa;enter(2)ELSE IF aktsuffix=suffixfaTHEN aktsuffix:=
suffixwkELIF aktsuffix=suffixwkTHEN aktsuffix:=suffixziFI ;enter(1)FI .END 
PROC kursdatenschnittstelleexportzeigenverlassen;PROC 
kursdatenschnittstelleexportloeschenabfrage:aktdateiname:=standardmaskenfeld(
eingangdateiname);IF aktdateiname=""THEN fehlermeldungfeldfuellenELIF exists(
aktdateiname+suffixfa)THEN beginlist;t1:=" ";REP getlistentry(t1,t2);IF t1=
aktdateiname+suffixfaTHEN standardmeldung(meldungnameloeschen,t1+
" (-WK,-BR,-ZI)#"+text(t2,8)+"#");standardnproc;LEAVE 
kursdatenschnittstelleexportloeschenabfrageFI ;UNTIL t1=""PER ELSE 
fehlermeldungdateifehltFI .END PROC 
kursdatenschnittstelleexportloeschenabfrage;PROC 
kursdatenschnittstelleexportloeschen:forget(aktdateiname+suffixfa,quiet);
forget(aktdateiname+suffixwk,quiet);forget(aktdateiname+suffixbr,quiet);
forget(aktdateiname+suffixzi,quiet);standardmeldung(meldungdatengeloescht,"")
;return(2).END PROC kursdatenschnittstelleexportloeschen;PROC 
kursdatenschnittstelleexportdrucken:aktdateiname:=standardmaskenfeld(
eingangdateiname);IF aktdateiname=""THEN fehlermeldungfeldfuellenELIF exists(
aktdateiname+suffixfa)THEN druckalledateienELSE fehlermeldungdateifehltFI .
druckalledateien:standardmeldung(meldungdrucken,"");print(aktdateiname+
suffixfa);print(aktdateiname+suffixwk);print(aktdateiname+suffixzi);return(1)
.END PROC kursdatenschnittstelleexportdrucken;PROC 
pruefeingabeundbelegvariablen:fstat:=0;eingangrow(einganggewjgst):=
standardmaskenfeld(einganggewjgst);eingangrow(einganggewhj):=
standardmaskenfeld(einganggewhj);eingangrow(eingangaktjgst):=
standardmaskenfeld(eingangaktjgst);eingangrow(eingangaktneue):=
standardmaskenfeld(eingangaktneue);eingangrow(eingangmitkursen):=
standardmaskenfeld(eingangmitkursen);IF aktsj="0000"THEN aktsj:=
schulkenndatum(schuljahr);akthj:=schulkenndatum(halbjahr)FI ;gewjgst:=
eingangrow(einganggewjgst);gewhj:=eingangrow(einganggewhj);aktjgst:=
eingangrow(eingangaktjgst);aktneue:=eingangrow(eingangaktneue);prueffeld2;
prueffeld3;prueffeld4und5;prueffeld4;prueffeld5;IF fstat=0THEN pruefdateiname
FI .prueffeld2:i:=int(gewjgst);IF gewjgst=""THEN meldungausgeben(
meldungfeldfuellen,einganggewjgst,1);LEAVE pruefeingabeundbelegvariablenELIF 
i<11COR i>14THEN meldungausgeben(meldungfalschejgst,einganggewjgst,1);LEAVE 
pruefeingabeundbelegvariablenFI .prueffeld3:i:=int(gewhj);IF gewhj=""THEN 
meldungausgeben(meldungfeldfuellen,einganggewhj,1);LEAVE 
pruefeingabeundbelegvariablenELIF i<1COR i>2THEN meldungausgeben(
meldungfalscheshj,einganggewhj,1);LEAVE pruefeingabeundbelegvariablenFI .
prueffeld4und5:IF aktjgst=""CAND aktneue=""THEN meldungausgeben(
meldungpraezisieren,eingangaktjgst,1);LEAVE pruefeingabeundbelegvariablen
ELIF aktjgst=""CAND aktneue<>""THEN schuelergruppe:=kznurneueELIF aktjgst<>""
CAND aktneue=""THEN schuelergruppe:=kzohneneueELSE schuelergruppe:=kzalleFI .
prueffeld4:i:=int(aktjgst);IF i<10COR i>14THEN meldungausgeben(
meldungfalschejgst,einganggewjgst,1);LEAVE pruefeingabeundbelegvariablenELIF 
i>int(gewjgst)THEN meldungausgeben(meldungandereauswahl,einganggewjgst,1);
LEAVE pruefeingabeundbelegvariablenELIF i=int(gewjgst)THEN IF gewhj="1"CAND 
akthj="2"THEN meldungausgeben(meldungandereauswahl,einganggewhj,1);LEAVE 
pruefeingabeundbelegvariablenFI FI .prueffeld5:i:=int(aktneue);IF aktneue<>""
CAND aktjgst<>""THEN IF i-1<>int(aktjgst)THEN meldungausgeben(
meldungandereauswahl,eingangaktneue,1)FI ELIF aktneue<>""CAND aktjgst=""THEN 
IF i<11COR i>14THEN meldungausgeben(meldungfalschejgst,eingangaktneue,1)ELIF 
i+1>int(gewjgst)THEN meldungausgeben(meldungandereauswahl,eingangaktneue,1)
ELIF i-1=int(gewjgst)THEN IF gewhj="1"CAND akthj="2"THEN meldungausgeben(
meldungandereauswahl,einganggewhj,1)FI FI FI .pruefdateiname:aktdateiname:=
standardmaskenfeld(eingangdateiname);IF aktdateiname=""THEN 
fehlermeldungfeldfuellenELIF falschercode(aktdateiname)THEN 
fehlermeldungnamefalsch(TRUE )FI .END PROC pruefeingabeundbelegvariablen;
BOOL PROC falschercode(TEXT CONST t):INT VAR zeichencode;FOR iFROM 1UPTO 
LENGTH t-3REP zeichencode:=code(tSUB i);IF NOT ((zeichencode>=48AND 
zeichencode<=57)OR (zeichencode>=65AND zeichencode<=90)OR (zeichencode>=97
AND zeichencode<=122))THEN LEAVE falschercodeWITH TRUE FI PER ;FALSE END 
PROC falschercode;PROC meldungausgeben(INT CONST meldung,gewfeld,
gewruecksprung):fstat:=1;standardmeldung(meldung,"");infeld(gewfeld);return(
gewruecksprung)END PROC meldungausgeben;PROC archivanmelden:aktfeld:=infeld;
archivfehler:=FALSE ;commanddialogue(FALSE );aktdateiname:=standardmaskenfeld
(eingangdateiname);IF aktdateiname=""THEN fehlermeldungfeldfuellenELIF exists
(aktdateiname+suffixfa)THEN meldearchivanELSE fehlermeldungdateifehltFI .
meldearchivan:disablestop;reserve(filemodus,/dos);IF iserrorTHEN archivfehler
:=TRUE ;abbruchnachfehler(1);ELSE enablestopFI .END PROC archivanmelden;PROC 
kursdatenschnittstelleexportarchiv(INT CONST wahl):aktfeld:=infeld;SELECT 
wahlOF CASE 1:archivinitialisierenCASE 2:archivanmelden;IF archivfehlerTHEN 
LEAVE kursdatenschnittstelleexportarchivFI ;archivlistenCASE 3:
archivbeschreibenCASE 4:archivueberschreibenEND SELECT ;infeld(aktfeld).
archivinitialisieren:standardmeldung(meldungwarten,"");disablestop;clear(/dos
);IF iserrorTHEN abbruchnachfehler(2);ELSE enablestop;loeschemeldung;release(
/dos);return(2)FI .archivlisten:standardmeldung(meldungwarten,"");disablestop
;g:=sequentialfile(output,listenname);thes:=ALL /dos;IF iserrorTHEN 
abbruchnachfehler(1);ELSE thesaurusaufbereiten;enablestop;zeigedatei(
listenname,"vr");release(/dos)FI .thesaurusaufbereiten:t:=" ";i:=0;REP get(
thes,t,i);putline(g,t)UNTIL t=""PER .archivbeschreiben:standardmeldung(
meldungwarten,"");disablestop;IF exists(aktdateiname+suffixfa,/dos)THEN IF 
iserrorTHEN abbruchnachfehler(2);LEAVE kursdatenschnittstelleexportarchiv
ELSE abfragedateiueberschreibenFI ELSE save(aktdateiname+suffixfa,/dos);IF 
iserrorTHEN abbruchnachfehler(2);LEAVE kursdatenschnittstelleexportarchiv
ELSE save(aktdateiname+suffixwk,/dos);save(aktdateiname+suffixbr,/dos);save(
aktdateiname+suffixzi,/dos)FI ;enablestop;commanddialogue(TRUE );
loeschemeldung;release(/dos);return(2)FI .abfragedateiueberschreiben:
standardmeldung(meldungaufdiskschr,aktdateiname+".FA (-WK,-BR,-ZI)#");
standardnproc.archivueberschreiben:standardmeldung(meldungwarten,"");
disablestop;commanddialogue(FALSE );erase(aktdateiname+suffixfa,/dos);erase(
aktdateiname+suffixwk,/dos);erase(aktdateiname+suffixbr,/dos);erase(
aktdateiname+suffixzi,/dos);IF iserrorTHEN abbruchnachfehler(3);LEAVE 
kursdatenschnittstelleexportarchivFI ;save(aktdateiname+suffixfa,/dos);IF 
iserrorTHEN abbruchnachfehler(3);LEAVE kursdatenschnittstelleexportarchiv
ELSE save(aktdateiname+suffixwk,/dos);save(aktdateiname+suffixbr,/dos);save(
aktdateiname+suffixzi,/dos)FI ;enablestop;commanddialogue(TRUE );
loeschemeldung;release(/dos);return(3).END PROC 
kursdatenschnittstelleexportarchiv;PROC abbruchnachfehler(INT CONST schritte)
:standardmeldung(meldungrausreichen,"Fehler: "+errormessage+" !#");clearerror
;return(schritte);infeld(aktfeld);release(/dos);commanddialogue(TRUE );
enablestopEND PROC abbruchnachfehler;PROC kursdatenschnittstelleexportabbruch
(INT CONST schritte):return(schritte);infeld(aktfeld);release(/dos);
commanddialogue(TRUE );enablestopEND PROC kursdatenschnittstelleexportabbruch
;PROC kursdatenschnittstelleexportabfrage(INT CONST wahl):SELECT wahlOF CASE 
1:archivanmelden;IF archivfehlerTHEN LEAVE 
kursdatenschnittstelleexportabfrageFI ;standardmeldung(meldungdisksichern,
aktdateiname+".FA (-WK,-BR,-ZI)#")CASE 2:archivanmelden;IF archivfehlerTHEN 
LEAVE kursdatenschnittstelleexportabfrageFI ;standardmeldung(meldungdiskinit,
"")CASE 3:fragevorbereiten;standardmeldung(meldungnameloeschen,aktdateiname+
".FA (-WK,-BR,-ZI)#"+text(t2,8)+"#")END SELECT ;standardnproc.
fragevorbereiten:aktdateiname:=standardmaskenfeld(eingangdateiname);IF 
aktdateiname=""THEN fehlermeldungnamefalsch(FALSE )ELIF falschercode(
aktdateiname)THEN fehlermeldungnamefalsch(TRUE )FI ;IF exists(aktdateiname+
suffixfa)THEN beginlist;REP getlistentry(t1,t2);UNTIL t1=aktdateiname+
suffixfaCOR t1=""PER ;ELSE fehlermeldungdateifehlt;LEAVE 
kursdatenschnittstelleexportabfrageFI .END PROC 
kursdatenschnittstelleexportabfrage;PROC fehlermeldungdateifehlt:fstat:=1;
standardmeldung(meldungnameunbek,aktdateiname+".FA (-WK,-BR,-ZI)#");infeld(
eingangdateiname);return(1).END PROC fehlermeldungdateifehlt;PROC 
fehlermeldungfeldfuellen:meldungausgeben(meldungpraezisieren,eingangdateiname
,1).END PROC fehlermeldungfeldfuellen;PROC fehlermeldungnamefalsch(BOOL 
CONST mitfalschemzeichen):IF mitfalschemzeichenTHEN fstat:=1;standardmeldung(
meldungnamefalsch,subtext(aktdateiname,i,i)+"#"+aktdateiname+"#");infeld(
eingangdateiname);return(1)ELSE meldungausgeben(meldungnamefalsch,
eingangdateiname,1)FI END PROC fehlermeldungnamefalsch;PROC 
kursdatenschnittstelleexportloescheundreturn(BOOL CONST b):IF bTHEN forget(
listenname,quiet);FI ;loeschemeldung;return(2)END PROC 
kursdatenschnittstelleexportloescheundreturn;PROC loeschemeldung:aktfeld:=
infeld;infeld(1);standardfelderausgeben;infeld(aktfeld)END PROC 
loeschemeldung;END PACKET kursdatenueberschnittstelleexportieren