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
|