summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.daten für intega aufbereiten
blob: 008e89e1e6250dae0ac32934d50f0128222f841c (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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
PACKET datenfuerintegaaufbereitenDEFINES integastdvproc,integaarchiv,
integaabfrage,integaaufbereitenoderabfrage,integaentfernen,integaposhalt,
integaloescheundreturn,integadatenzeigen,integadatendrucken,
schulisintegatransfer:LET raumkenndaten="c02 raeume",schulkenndaten=
"c02 schulkenndaten",schulhj="Schulhalbjahr",schulj="Schuljahr",schulname=
"Schulname",schulort="Schulort",schulstr="Schulstraße",eingmaske=
"ms eing integaeingabedatei",fldakthj=2,fldfix1=3,fldfix2=4,fldinteganame=5,
meldg0=69,meldg1=340,meldg2=323,meldg3=324,meldg4=331,meldg5=332,meldg6=333,
meldg7=334,meldg8=335,meldg9=336,meldg10=337,meldg11=338,meldg13=343,meldg14=
345,meldg15=346,meldg16=347,meldg17=348,meldg18=349,meldg19=350,meldg20=351,
meldg21=381,meldg22=56,meldg23=58,meldungbearbwird=352,meldungserverfehler=
376,meldungkeinstdplan=366,meldungkeinesugruppen=334,meldungzuvielesugruppen=
356,meldungkeinelv=326,meldungzuvielelv=358,meldungbasisinkon=378,
meldungstdplauswvorber=384,zeilenende="",erstestde=1,maxstden=66,vormstden=6,
nachmstden=6,stdenprotag=12,vorm=6,nachm=5,unttage=6,eumelgrenzemaxzeilen=
4000,ausgparam="#",trenner="�";LET filemodus="file ibm",leererunbestwunsch=
"         ",dateikennung=".DP",dos="DOS",kennpar="P",kennsugrup="S",kennraum=
"R",kennkoppl="K",kennfach="F",listenname=
"Liste der Dateien auf der Diskette:";DATASPACE VAR dszeitw,dslverf,dskverf;
FILE VAR f,g,z,k,l;INT VAR p,i,j,h,fstat,zz:=0,ruecksprung:=1,maxvs:=0,maxns
:=0,vs:=vormstden,ns:=nachmstden,nulltestd:=0,vm:=vorm,objvm,nm:=nachm,objnm,
ut:=unttage,objut,jahrende;TEXT VAR sgrdaten:="",sgridaten:="",klgr:=trenner,
klgrdaten:="",rgrdaten:=trenner,letztepar:="",par:="",objektverf:="",
lehrerdaten,bearbkopplungen,kartenart,zeitwuensche:=trenner,
schulverfuegbarkeit:="",dateiname:="SCHULIS.DP",schuldaten:="",zeile:="",
aktschj:="0",aktschhj:="0",geplschj:="0",geplschhj:="0",schj,schhj,record:=""
,t1:="",t2:="",zeitdaten:="";BOOL VAR datenfehler,fehler,mindeinraum,
archivfehler,falschesugrupgefunden:=FALSE ,abbruchwegen4000zeilen:=FALSE ;
THESAURUS VAR thes;TEXT VAR t:="",leererbestwunsch:=
"                                                                      "+
"                                                              ",bestwunsch,
unbestwunsch;PROC integaposhalt(INT CONST rueck):infeld(fldakthj);return(
rueck)END PROC integaposhalt;PROC loeschemeldung:INT VAR ankreuzung:=1;FOR i
FROM fldakthjUPTO fldfix2REP IF standardmaskenfeld(i)<>""THEN ankreuzung:=
ankreuzung*(2*i-1)FI PER ;standardstartproc(eingmaske);infeld(fldakthj);FOR i
FROM fldakthjUPTO fldfix2REP IF ankreuzungMOD (2*i-1)=0THEN 
standardmaskenfeld("x",i)FI PER ;standardmaskenfeld(text(dateiname,pos(
dateiname,".")-1),fldinteganame);standardfelderausgeben;infeld(fldakthj);END 
PROC loeschemeldung;PROC archivanmelden:archivfehler:=FALSE ;commanddialogue(
FALSE );disablestop;dateiname:=standardmaskenfeld(fldinteganame)+".DP";IF 
standardmaskenfeld(fldinteganame)=""THEN fehlermeldungnamefalschELIF 
falschercode(dateiname)THEN fehlermeldungnamefalschFI ;reserve(filemodus,/dos
);IF iserrorTHEN archivfehler:=TRUE ;abbruchnachfehler(1);LEAVE 
archivanmeldenFI ;enablestop.fehlermeldungnamefalsch:archivfehler:=TRUE ;
return(ruecksprung);infeld(fldinteganame);standardmeldung(meldg2,subtext(
dateiname,i,i)+"#"+dateiname+"#");LEAVE archivanmelden.END PROC 
archivanmelden;PROC integaarchiv(INT CONST wahl):SELECT wahlOF CASE 1:
archivinitialisierenCASE 2:archivanmelden;IF archivfehlerTHEN LEAVE 
integaarchivFI ;archivlistenCASE 3:archivbeschreibenCASE 4:
archivueberschreibenEND SELECT .archivinitialisieren:standardmeldung(meldg0,
" ");disablestop;clear(/dos);IF iserrorTHEN abbruchnachfehler(2);LEAVE 
integaarchivFI ;enablestop;loeschemeldung;return(2).archivlisten:
standardmeldung(meldg0," ");disablestop;g:=sequentialfile(output,listenname);
thes:=ALL /dos;IF iserrorTHEN abbruchnachfehler(1);LEAVE integaarchivFI ;
thesaurusaufbereiten;enablestop;zeigedatei(listenname,"vr").
thesaurusaufbereiten:t:=" ";i:=0;REP get(thes,t,i);putline(g,t)UNTIL t=""PER 
.archivbeschreiben:standardmeldung(meldg0," ");disablestop;IF exists(
dateiname,/dos)THEN IF iserrorTHEN abbruchnachfehler(2);LEAVE integaarchiv
ELSE abfragedateiueberschreibenFI ELSE save(dateiname,/dos);IF iserrorTHEN 
abbruchnachfehler(2);LEAVE integaarchivFI ;enablestop;commanddialogue(TRUE );
loeschemeldung;return(2);FI .abfragedateiueberschreiben:infeld(1);
standardmeldung(meldg19,dateiname+"#");standardnproc.archivueberschreiben:
standardmeldung(meldg0," ");disablestop;commanddialogue(FALSE );erase(
dateiname,/dos);IF iserrorTHEN abbruchnachfehler(3);LEAVE integaarchivFI ;
save(dateiname,/dos);IF iserrorTHEN abbruchnachfehler(3);LEAVE integaarchiv
FI ;enablestop;commanddialogue(TRUE );loeschemeldung;return(3).END PROC 
integaarchiv;PROC integaloescheundreturn(BOOL CONST b):IF bTHEN forget(
listenname,quiet);FI ;loeschemeldung;return(2)END PROC integaloescheundreturn
;PROC abbruchnachfehler(INT CONST schritte):standardmeldung(meldg13,
"Fehler: "+errormessage+" !#");clearerror;infeld(fldakthj);return(schritte);
release(/dos);commanddialogue(TRUE );enablestopEND PROC abbruchnachfehler;
PROC integaabfrage(INT CONST wahl):SELECT wahlOF CASE 1:archivanmelden;IF 
archivfehlerTHEN LEAVE integaabfrageFI ;standardmeldung(meldg16,"")CASE 2:
archivanmelden;IF archivfehlerTHEN LEAVE integaabfrageFI ;standardmeldung(
meldg17,"")CASE 3:fragevorbereiten;standardmeldung(meldg18,dateiname+"#"+text
(t2,8)+"#")END SELECT ;infeld(1);standardnproc.fragevorbereiten:dateiname:=
standardmaskenfeld(fldinteganame)+".DP";IF standardmaskenfeld(fldinteganame)=
""THEN fehlermeldungnamefalschELIF falschercode(dateiname)THEN 
fehlermeldungnamefalschFI ;IF exists(dateiname)THEN beginlist;REP 
getlistentry(t1,t2);UNTIL t1=dateinameCOR t1=""PER ;ELSE return(1);infeld(
fldinteganame);standardmeldung(meldg20,dateiname+"#");LEAVE integaabfrageFI .
fehlermeldungnamefalsch:return(1);infeld(fldinteganame);standardmeldung(
meldg2,subtext(dateiname,i,i)+"#"+dateiname+"#");LEAVE integaabfrage.END 
PROC integaabfrage;PROC integadatenzeigen:standardmeldung(meldg0," ");
dateiname:=standardmaskenfeld(fldinteganame)+".DP";IF standardmaskenfeld(
fldinteganame)=""THEN fehlermeldungnamefalschELIF falschercode(dateiname)
THEN fehlermeldungnamefalschFI ;IF exists(dateiname)THEN zeigedatenELSE 
return(1);infeld(fldinteganame);standardmeldung(meldg20,dateiname+"#");LEAVE 
integadatenzeigenFI .fehlermeldungnamefalsch:return(1);infeld(fldinteganame);
standardmeldung(meldg2,subtext(dateiname,i,i)+"#"+dateiname+"#");LEAVE 
integadatenzeigen.zeigedaten:zeigedatei(dateiname,"vr").END PROC 
integadatenzeigen;PROC integadatendrucken:dateiname:=standardmaskenfeld(
fldinteganame)+".DP";IF exists(dateiname)THEN standardmeldung(meldg23,"");
print(dateiname)ELSE infeld(fldinteganame);standardmeldung(meldg20,dateiname+
"#");FI ;return(1).END PROC integadatendrucken;PROC integaentfernen:infeld(
fldinteganame);dateiname:=standardmaskenfeld(fldinteganame)+".DP";forget(
dateiname,quiet);infeld(fldakthj);return(2);END PROC integaentfernen;PROC 
integastdvproc:standardstartproc(eingmaske);standardmaskenfeld("SCHULIS",
fldinteganame);standardfelderausgeben;infeld(fldakthj);standardnprocEND PROC 
integastdvproc;PROC integaaufbereitenoderabfrage:beginlist;REP getlistentry(
t1,t2);IF pos(t1,dateikennung)>0THEN standardmeldung(meldg18,t1+"#"+text(t2,8
)+"#");infeld(fldinteganame);standardnproc;ruecksprung:=2;LEAVE 
integaaufbereitenoderabfrageFI ;UNTIL t1=""PER ;ruecksprung:=1;
schulisintegatransferEND PROC integaaufbereitenoderabfrage;PROC 
schulisintegatransfer:falschesugrupgefunden:=FALSE ;standardmeldung(meldg0,
" ");forget(t1,quiet);init;pruefeeingmaske;stelledateinamefest;
stellehalbjahrfest;pruefobintegabezda;holestundenplandaten;melde("A");
schreibeschulname;stellezeitvarfest;berechneschulverfuegbarkeit;melde("BA");
schreibefragenkatalog;melde("BB");schreibegewichtungen;melde("BC");
schreibezeitraster1;melde("BD");schreibezeitraster2;pruefdateigroesse;
holeallezeitwuensche;melde("C");schreibelehrerdaten;pruefdateigroesse;melde(
"D und F");schreibeklassen;pruefdateigroesse;melde("G");schreiberaumgruppen;
pruefdateigroesse;melde("H");schreibeuvdaten;pruefdateigroesse;melde("I");
schreibeschulverfgbkt;pruefdateigroesse;melde("J");schreibelehrerverfgbkt;
pruefdateigroesse;melde("K");schreiberaumverfgbkt;pruefdateigroesse;melde("L"
);schreibeklassenverfgbkt;pruefdateigroesse;melde("M");schreibefachverfgbkt;
pruefdateigroesse;melde("N");schreibevorbelegungen;pruefdateigroesse;
gibfertigmeldungaus.pruefdateigroesse:IF zz>eumelgrenzemaxzeilenTHEN 
standardmeldung(meldg14,"");return(ruecksprung);LEAVE schulisintegatransfer
FI .init:dszeitw:=nilspace;dslverf:=nilspace;dskverf:=nilspace;z:=
sequentialfile(modify,dszeitw);l:=sequentialfile(modify,dslverf);k:=
sequentialfile(modify,dskverf);insertrecord(z);insertrecord(l);insertrecord(k
);zz:=0.pruefeeingmaske:IF standardmaskenfeld(fldfix1)<>""CAND 
standardmaskenfeld(fldfix2)<>""THEN return(ruecksprung);standardmeldung(
meldg22,"");infeld(fldfix1);LEAVE schulisintegatransferFI ;dateiname:=
standardmaskenfeld(fldinteganame)+".DP";IF standardmaskenfeld(fldinteganame)=
""THEN i:=0;fehlermeldungnamefalschELIF falschercode(dateiname)THEN 
fehlermeldungnamefalschFI .fehlermeldungnamefalsch:return(ruecksprung);infeld
(fldinteganame);standardmeldung(meldg2,subtext(dateiname,i,i)+"#"+dateiname+
"#");LEAVE schulisintegatransfer.pruefobintegabezda:sgridaten:="";letztepar:=
"";inittupel(dnraktschuelergruppen);datenfehler:=FALSE ;dbleer(
dnraktschuelergruppen);IF fehlerTHEN fehlerkeineschuelergruppenFI ;
statleseschleife(dnraktschuelergruppen,schj,schhj,dnraktschuelergruppen+1,
dnraktschuelergruppen+2,PROC sgridatenholen);IF datenfehlerTHEN 
fehlermeldungintegaELSE sgridatenCAT trennerFI .fehlerkeineschuelergruppen:
return(ruecksprung);standardmeldung(meldg7,"");LEAVE schulisintegatransfer.
fehlermeldungintega:return(ruecksprung);standardmeldung(meldg4,"");LEAVE 
schulisintegatransfer.stelledateinamefest:f:=sequentialfile(output,dateiname)
.stellehalbjahrfest:holeschuldaten;aktschhj:=holedatum(schuldaten,trenner+
schulhj+trenner);aktschj:=holedatum(schuldaten,trenner+schulj+trenner);IF 
aktschhj="1"THEN geplschhj:="2";geplschj:=aktschjELSE geplschhj:="1";geplschj
:=subtext(aktschj,3);jahrende:=int(geplschj)+1;geplschjCAT subtext("0"+text(
jahrende),LENGTH ("0"+text(jahrende))-1)FI ;IF standardmaskenfeld(fldakthj)<>
""THEN schj:=aktschj;schhj:=aktschhjELSE schj:=geplschj;schhj:=geplschhjFI .
holeschuldaten:dbleer(dnrschluessel);IF fehlerTHEN fehlerkeineschuldatenFI ;
schuldaten:=trenner;inittupel(dnrschluessel);statleseschleife(dnrschluessel,
schulkenndaten,"",dnrschluessel+1,dnrschluessel+2,PROC schulkennung).
fehlerkeineschuldaten:return(ruecksprung);standardmeldung(meldg8,"");LEAVE 
schulisintegatransfer.holestundenplandaten:standardmeldung(
meldungstdplauswvorber,"");stundenplanhalbjahrsetzen(schhj,schj);
stundenplanbasisundstundenplanholen(fstat);IF fstat<>0CAND fstat<>8THEN 
meldungausgeben(fstat);return(ruecksprung);LEAVE schulisintegatransferFI .
stellezeitvarfest:holezeitdaten;IF zeitdaten=trennerTHEN LEAVE 
stellezeitvarfestELSE stelleunttagefestFI .holezeitdaten:zeitdaten:=trenner;
dbleer(dnrzeitraster);IF fehlerTHEN fehlerkeinezeitdatenFI ;inittupel(
dnrzeitraster);statleseschleife(dnrzeitraster,schj,schhj,dnrzeitraster+1,
dnrzeitraster+2,PROC zeitrasterdaten).fehlerkeinezeitdaten:return(ruecksprung
);standardmeldung(meldg9,"");LEAVE schulisintegatransfer.stelleunttagefest:
INT VAR akttagv:=0,akttagn:=0;vm:=0;nm:=0;ut:=0;FOR iFROM 1UPTO unttageREP vs
:=0;ns:=0;nulltestd:=(i-1)*stdenprotag;IF pos(zeitdaten,trenner+text(
nulltestd+1)+trenner)>0THEN utINCR 1;stellestdenfestELSE LEAVE 
stelleunttagefestFI PER .stellestdenfest:FOR jFROM 1UPTO stdenprotagREP IF 
pos(zeitdaten,trenner+text(nulltestd+j)+trenner)>0THEN holedrittesdatum(
zeitdaten,trenner+text(nulltestd+j)+trenner);zaehlevunstden;IF akttagv<>i
CAND t1="v"THEN vmINCR 1;akttagv:=iFI ;IF akttagn<>iCAND t1="n"THEN nmINCR 1;
akttagn:=iFI ;ELSE LEAVE stellestdenfestFI ;PER ;IF maxvs<vsTHEN maxvs:=vsFI 
;IF maxns<nsTHEN maxns:=nsFI .zaehlevunstden:IF t1="v"THEN vsINCR 1ELIF t1=
"n"THEN nsINCR 1FI .schreibeschulname:zeile:="";zeileCAT holedatum(schuldaten
,trenner+schulname+trenner);zeileCAT "  "+holedatum(schuldaten,trenner+
schulort+trenner);zeileCAT "  "+holedatum(schuldaten,trenner+schulstr+trenner
);zeile:=text(zeile,70);zeileCAT "A ";zeileCAT zeilenende;putlinezz(f,zeile);
zeile:=schhj+". Hj.";zeileCAT " "+text(schj,2)+"/"+subtext(schj,3);zeile:=
text(zeile,70);zeileCAT "A ";zeileCAT zeilenende;putlinezz(f,zeile).
berechneschulverfuegbarkeit:schulverfuegbarkeit:="";FOR iFROM 1UPTO unttage
REP FOR jFROM 1UPTO stdenprotagREP IF pos(zeitdaten,trenner+text((i-1)*
stdenprotag+j)+trenner)>0THEN holedrittesdatum(zeitdaten,trenner+text((i-1)*
stdenprotag+j)+trenner);IF t1="x"THEN schulverfuegbarkeitCAT "1"ELSE 
schulverfuegbarkeitCAT " "FI ELSE schulverfuegbarkeitCAT " "FI PER PER ;
schulverfuegbarkeit:=text(schulverfuegbarkeit,maxstden).schreibeschulverfgbkt
:putlinezz(f,"    "+schulverfuegbarkeit+"I"+zeilenende).schreibefragenkatalog
:vs:=maxvs;ns:=maxns;zeile:="";zeileCAT "FRAGEN   ";zeileCAT " N N N 0";IF vs
<10THEN zeileCAT " "+text(vs)ELSE zeileCAT text(vs)FI ;zeileCAT 
" 0 312 3100 0  ";zeileCAT text(ut);zeileCAT 
"253146                             BA";zeileCAT zeilenende;putlinezz(f,zeile
).schreibegewichtungen:zeile:="";zeileCAT "GEWICHT  ";zeileCAT 
" 2 2 2 2 2 2 2 2 2 2 2 0";zeileCAT "                                     ";
zeileCAT "BB";zeileCAT zeilenende;putlinezz(f,zeile).schreibezeitraster1:IF 
zeitdaten=""THEN LEAVE schreibezeitraster1FI ;zeile:="";zeileCAT "RASTERR";
zeileCAT " 1 1";IF vs<10THEN zeileCAT " "+text(vs)ELSE zeileCAT text(vs)FI ;
zeileCAT "                                                         ";zeile
CAT "BC";zeileCAT zeilenende;putlinezz(f,zeile);zeile:="";zeileCAT "RASTERR";
zeileCAT " 2 1";IF vs<11THEN zeileCAT " "+text(vs-1)ELSE zeileCAT text(vs-1)
FI ;zeileCAT "                                                         ";
zeileCAT "BC";zeileCAT zeilenende;putlinezz(f,zeile);zeile:="";zeileCAT 
"RASTERB";IF vs<6THEN zeileCAT " 2 1 3                  ";ELIF vs<8THEN zeile
CAT " 2 1 3 5                ";ELIF vs<10THEN zeileCAT 
" 2 1 3 5 7              ";ELIF vs<12THEN zeileCAT " 2 1 3 5 7 9            "
;ELSE zeileCAT " 2 1 3 5 7 911          ";FI ;zeileCAT 
"                                       ";zeileCAT "BC";zeileCAT zeilenende;
putlinezz(f,zeile).schreibezeitraster2:IF zeitdaten=""THEN LEAVE 
schreibezeitraster2FI ;FOR iFROM 1UPTO 12REP hole2daten(zeitdaten,trenner+
text(i)+trenner);IF t1<>""COR t1<>" "THEN IF i<10THEN 
zeitrasterzeilenerstellen(" "+text(i),t1,t2);ELSE zeitrasterzeilenerstellen(
text(i),t1,t2);FI ;FI ;PER .holeallezeitwuensche:dbleer(dnrzeitwuensche);IF 
NOT fehlerTHEN inittupel(dnrzeitwuensche);statleseschleife(dnrzeitwuensche,
schj,schhj,dnrzeitwuensche+1,dnrzeitwuensche+2,PROC zeitw)FI .
schreibelehrerdaten:inittupel(dnrlehrer);fehler:=FALSE ;dbleer(dnrlehrer);IF 
fehlerTHEN fehlerkeinelehrerFI ;fehler:=FALSE ;statleseschleife(dnrlehrer,"",
"",dnrlehrer+1,dnrlehrer+2,PROC lehrer);IF fehlerTHEN return(ruecksprung);
standardmeldung(meldg3,"");LEAVE schulisintegatransferFI .fehlerkeinelehrer:
return(ruecksprung);standardmeldung(meldg10,"");LEAVE schulisintegatransfer.
schreibeklassen:sgrdaten:="";klgrdaten:="";inittupel(dnraktschuelergruppen);
statleseschleife(dnraktschuelergruppen,schj,schhj,dnraktschuelergruppen+1,
dnraktschuelergruppen+2,PROC sgrdatenholen);dbleer(dnrklassengruppen);IF NOT 
fehlerTHEN inittupel(dnrklassengruppen);statleseschleife(dnrklassengruppen,""
,"",dnrklassengruppen+1,dnrklassengruppen+2,PROC klgrdatenholen);FI ;IF 
sgrdaten<>""THEN schreibeklstELSE fehlermeldungaktschgrfehlenFI ;IF klgrdaten
<>""THEN schreibeklgrFI .fehlermeldungaktschgrfehlen:return(ruecksprung);
standardmeldung(meldg5,"");LEAVE schulisintegatransfer.schreibeklst:p:=1;
WHILE pos(sgrdaten,trenner,p+1)>0REP spput(subtext(sgrdaten,p+1,pos(sgrdaten,
trenner,p+1)-1));p:=pos(sgrdaten,trenner,p+1)PER ;spput(subtext(sgrdaten,p+1)
).schreibeklgr:p:=1;WHILE pos(klgrdaten,trenner,p+1)>0REP spiput(subtext(
klgrdaten,p+1,pos(klgrdaten,trenner,p+1)-1));IF falschesugrupgefundenTHEN 
fehlerunbekanntesugrupgefundenFI ;putlinezz(f,text(t1,64)+"  "+text(ut)+text(
vm)+text(nm)+" F"+zeilenende);p:=pos(klgrdaten,trenner,p+1)PER ;spiput(
subtext(klgrdaten,p+1));IF falschesugrupgefundenTHEN 
fehlerunbekanntesugrupgefundenFI ;putlinezz(f,text(t1,64)+"  "+text(ut)+text(
vm)+text(nm)+" F"+zeilenende).schreiberaumgruppen:schreibergrkarten;
schreiberkarten.schreibergrkarten:dbleer(dnrraumgruppen);IF NOT fehlerTHEN 
zeile:="";inittupel(dnrraumgruppen);statleseschleife(dnrraumgruppen,"","",
dnrraumgruppen+1,dnrraumgruppen+2,PROC raumgr)FI .schreiberkarten:mindeinraum
:=FALSE ;fehler:=FALSE ;zeile:="";inittupel(dnrschluessel);statleseschleife(
dnrschluessel,raumkenndaten,"",dnrschluessel+1,dnrschluessel+2,PROC raum);IF 
NOT mindeinraumTHEN return(ruecksprung);standardmeldung(meldg6,"");LEAVE 
schulisintegatransferELIF zeile<>""THEN erstellrestraeumeFI .
erstellrestraeume:putlinezz(f,"REST"+text(zeile,64)+"  G"+zeilenende);IF 
length(zeile)>64THEN zeile:=subtext(zeile,65);h:=length(zeile)DIV 64;FOR i
FROM 1UPTO hREP schreibekartePER ;IF length(zeile)MOD 64>0THEN 
schreibrestkarteFI FI .schreibekarte:putlinezz(f,"    "+subtext(zeile,(i-1)*
64+1,i*64)+"  G"+zeilenende).schreibrestkarte:putlinezz(f,"    "+text(subtext
(zeile,h*64+1),64)+"  G"+zeilenende).schreibeuvdaten:dbleer(
dnrlehrveranstaltungen);IF fehlerTHEN fehlerkeineuvFI ;inittupel(
dnrlehrveranstaltungen);statleseschleife(dnrlehrveranstaltungen,schj,schhj,
dnrlehrveranstaltungen+1,dnrlehrveranstaltungen+2,PROC lvschreiben);IF 
falschesugrupgefundenTHEN fehlerunbekanntesugrupgefundenFI .fehlerkeineuv:
return(ruecksprung);standardmeldung(meldg11,"");LEAVE schulisintegatransfer.
fehlerunbekanntesugrupgefunden:return(ruecksprung);standardmeldung(meldg21,
par+ausgparam+letztepar+ausgparam);LEAVE schulisintegatransfer.
schreibelehrerverfgbkt:toline(l,1);col(l,1);WHILE NOT eof(l)REP readrecord(l,
record);putlinezz(f,record);down(l)PER .schreiberaumverfgbkt:dbleer(
dnrzeitwuensche);IF NOT fehlerTHEN schreibverfkarten(trenner+kennraum+trenner
)FI .schreibeklassenverfgbkt:toline(k,1);col(k,1);WHILE NOT eof(k)REP 
readrecord(k,record);putlinezz(f,record);down(k)PER .schreibefachverfgbkt:
dbleer(dnrzeitwuensche);IF NOT fehlerTHEN schreibverfkarten(trenner+kennfach+
trenner)FI .schreibevorbelegungen:IF standardmaskenfeld(fldfix2)<>""THEN 
dbleer(dnrzeitwuensche);IF NOT fehlerTHEN schreibverfkarten(trenner+kennkoppl
+trenner)FI ELIF standardmaskenfeld(fldfix1)<>""THEN kartenart:="N";
uebertragdatendesstundenplansFI .gibfertigmeldungaus:forget(dszeitw);forget(
dslverf);forget(dskverf);standardmeldung(meldg15,dateiname+"#"+text(zz)+"#");
return(ruecksprung).END PROC schulisintegatransfer;PROC 
uebertragdatendesstundenplans:TEXT VAR kopplungenderzeit:="",aktkopplung;INT 
VAR aktpos;bearbkopplungen:="";FOR iFROM erstestdeUPTO maxstdenREP 
standardmeldung(meldungbearbwird,integatagstd(i)+ausgparam);kopplungenderzeit
:=datenderzeit(i,kennkoppl);aktpos:=1;WHILE aktpos<length(kopplungenderzeit)
REP aktkopplung:=subtext(kopplungenderzeit,aktpos,aktpos+7);IF 
nichtbearbeitet(aktkopplung)THEN schreibvorbelegung(aktkopplung,allezeitenvon
(kennkoppl,aktkopplung))FI ;aktposINCR 8PER ;pruefdateigroessePER .
pruefdateigroesse:IF zz>eumelgrenzemaxzeilenTHEN standardmeldung(meldg14,"");
return(ruecksprung);LEAVE uebertragdatendesstundenplansFI .END PROC 
uebertragdatendesstundenplans;PROC schreibvorbelegung(TEXT CONST kopplung,
allezeiten):INT VAR suchpos:=1,aktpos:=0;TEXT VAR kartenanfang:=text(kopplung
,8),karte:="";kartenanfangCAT " ";WHILE pos(allezeiten,"1",suchpos)<>0REP 
aktpos:=pos(allezeiten,"1",suchpos);IF aktpos>0THEN karteCAT integatagstd(
aktpos);suchpos:=aktpos+1FI ;IF length(karte)=40THEN schreibkarte;
kartenanfang:="         ";karte:=""FI PER ;IF length(karte)<>40THEN 
schreibkarteFI .schreibkarte:objektverf:=kartenanfang+text(karte,61)+
kartenart+zeilenende;putlinezz(f,objektverf).END PROC schreibvorbelegung;
BOOL PROC nichtbearbeitet(TEXT CONST kopplung):INT VAR aktpos,suchab:=1;
WHILE pos(bearbkopplungen,kopplung,suchab)<>0REP aktpos:=pos(bearbkopplungen,
kopplung,suchab);IF aktposMOD 8=1THEN LEAVE nichtbearbeitetWITH FALSE ELSE 
suchab:=aktpos+1FI ;PER ;bearbkopplungenCAT kopplung;TRUE END PROC 
nichtbearbeitet;PROC meldungausgeben(INT VAR fstat):IF fstat=2THEN 
standardmeldung(meldungserverfehler,"");ELIF fstat=3THEN standardmeldung(
meldungkeinstdplan,"");ELIF fstat=4THEN standardmeldung(meldungkeinesugruppen
,"");ELIF fstat=5THEN standardmeldung(meldungzuvielesugruppen,"")ELIF fstat=6
THEN standardmeldung(meldungkeinelv,"")ELIF fstat=7THEN standardmeldung(
meldungzuvielelv,"")ELIF fstat=9THEN standardmeldung(meldungbasisinkon,"");
FI END PROC meldungausgeben;PROC schreibverfkarten(TEXT CONST kennung):TEXT 
VAR objekt:="";toline(z,1);col(z,1);REP col(z,col(z)+1);downety(z,kennung)
UNTIL eof(z)COR (col(z)=142)PER ;IF kennung=trenner+kennraum+trennerTHEN 
kartenart:="K"ELIF kennung=trenner+kennfach+trennerTHEN kartenart:="M"ELSE 
kartenart:="N"FI ;IF NOT eof(z)CAND (kartenart<>"N")THEN REP readrecord(z,
record);IF pos(record,kennung)<>142THEN LEAVE schreibverfkartenFI ;bestwunsch
:=subtext(record,10,141);objekt:=holedatum(record,kennung);
uebertragbestwunschinverfkarte(objektverf);objektverf:=text(objekt,4)+
objektverf+kartenart+zeilenende;putlinezz(f,objektverf);down(z)PER ELIF NOT 
eof(z)THEN REP readrecord(z,record);IF pos(record,kennung)<>142THEN LEAVE 
schreibverfkartenFI ;bestwunsch:=subtext(record,10,141);IF bestwunsch<>
leererbestwunschTHEN objekt:=holedatum(record,kennung);
uebertragbestwunschinvorbelegung(objekt)FI ;down(z)PER FI .END PROC 
schreibverfkarten;PROC uebertragbestwunschinvorbelegung(TEXT CONST kopplung):
INT VAR suchpos:=1,aktpos:=0;TEXT VAR kartenanfang:=text(kopplung,8),karte:=
"";kartenanfangCAT " ";WHILE pos(bestwunsch,"+3",suchpos)<>0REP aktpos:=pos(
bestwunsch,"+3",suchpos);IF aktpos>0THEN karteCAT integatagstd((aktpos+1)DIV 
2);suchpos:=aktpos+1FI ;IF length(karte)=40THEN schreibkarte;kartenanfang:=
"         ";karte:=""FI PER ;IF karte<>""THEN schreibkarteFI .schreibkarte:
objektverf:=kartenanfang+text(karte,61)+kartenart+zeilenende;putlinezz(f,
objektverf).END PROC uebertragbestwunschinvorbelegung;TEXT PROC integatagstd(
INT CONST intzeit):TEXT VAR std:="";INT VAR stdnr:=intzeit;std:=text((stdnr-1
)MOD 12+1,2);SELECT (stdnr-1)DIV 12OF CASE 0:"MO"+stdCASE 1:"DI"+stdCASE 2:
"MI"+stdCASE 3:"DO"+stdCASE 4:"FR"+stdCASE 5:"SA"+stdOTHERWISE "    "END 
SELECT END PROC integatagstd;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>=97AND zeichencode<=122))THEN LEAVE falschercodeWITH TRUE FI 
PER ;FALSE END PROC falschercode;PROC zeitrasterzeilenerstellen(TEXT CONST 
std,zeitanfang,zeitende):zeile:="";zeileCAT "ZEIT   ";zeileCAT std;zeileCAT 
subtext(zeitanfang,LENGTH zeitanfang-3)+subtext(zeitende,LENGTH zeitende-3);
zeileCAT "                                                     ";zeile:=text(
zeile,70);zeileCAT "BB";zeileCAT zeilenende;putlinezz(f,zeile)END PROC 
zeitrasterzeilenerstellen;PROC schulkennung(BOOL VAR b):IF wert(dnrschluessel
+1)>schulkenndatenCOR dbstatus<>0THEN b:=TRUE ELSE schuldatenCAT wert(
dnrschluessel+2)+trenner;schuldatenCAT wert(dnrschluessel+3)+trenner;FI END 
PROC schulkennung;PROC zeitrasterdaten(BOOL VAR b):IF wert(dnrzeitraster+1)<>
schjCOR wert(dnrzeitraster+2)<>schhjCOR dbstatus<>0THEN b:=TRUE ELSE 
zeitdatenCAT wert(dnrzeitraster+3)+trenner;zeitdatenCAT " "+wert(
dnrzeitraster+5)+trenner;zeitdatenCAT " "+wert(dnrzeitraster+6)+trenner;
zeitdatenCAT wert(dnrzeitraster+4)+trenner;FI END PROC zeitrasterdaten;PROC 
raumgr(BOOL VAR b):IF dbstatus<>0THEN b:=TRUE ELSE schreibkarte;schreibraeume
FI .schreibkarte:t2:=wert(dnrraumgruppen+2);putlinezz(f,text(wert(
dnrraumgruppen+1),4)+text(t2,maxstden)+"G"+zeilenende).schreibraeume:FOR i
FROM 1UPTO (LENGTH t2)DIV 4REP rgrdatenCAT compress(subtext(t2,i*4-3,i*4))+
trennerPER .END PROC raumgr;PROC raum(BOOL VAR b):IF wert(dnrschluessel+1)>
raumkenndatenCOR dbstatus<>0THEN b:=TRUE ELSE mindeinraum:=TRUE ;IF pos(
rgrdaten,trenner+wert(dnrschluessel+2)+trenner)<1THEN schreibrestraeumeFI ;
FI .schreibrestraeume:zeileCAT text(wert(dnrschluessel+2),4).END PROC raum;
PROC lvschreiben(BOOL VAR b):IF wert(dnrlehrveranstaltungen+1)<>schjCOR wert(
dnrlehrveranstaltungen+2)<>schhjCOR dbstatus<>0THEN b:=TRUE ELSE schreibkarte
FI .schreibkarte:zeile:="";zeileCAT text(wert(dnrlehrveranstaltungen+5),8)+
text(wert(dnrlehrveranstaltungen+4),2)+"  "+text(wert(dnrlehrveranstaltungen+
6),4)+subtext(" "+wert(dnrlehrveranstaltungen+7),length(" "+wert(
dnrlehrveranstaltungen+7))-1)+"         ";FOR iFROM 8UPTO 11REP IF wert(
dnrlehrveranstaltungen+i)=""CAND i=8THEN pruefrestlklgrELIF wert(
dnrlehrveranstaltungen+i)=""CAND i<>8THEN zeileCAT "    "ELIF 
istschuelergruppeTHEN zeileCAT text(substituiere,4)ELIF istklassengruppeTHEN 
zeileCAT text(wert(dnrlehrveranstaltungen+i),4)ELIF istklassenstufeTHEN zeile
CAT text(formatjgst(wert(dnrlehrveranstaltungen+i)),4)ELSE 
falschesugrupgefunden:=TRUE ;par:=formatjgst(wert(dnrlehrveranstaltungen+3))+
wert(dnrlehrveranstaltungen+4);letztepar:=wert(dnrlehrveranstaltungen+i);b:=
TRUE ;LEAVE lvschreibenFI PER ;zeileCAT "         "+text(wert(
dnrlehrveranstaltungen+12),4)+text(wert(dnrlehrveranstaltungen+13),4)+
"          "+"H"+zeilenende;putlinezz(f,zeile).pruefrestlklgr:IF wert(
dnrlehrveranstaltungen+9)=""CAND wert(dnrlehrveranstaltungen+10)=""CAND wert(
dnrlehrveranstaltungen+11)=""THEN zeileCAT text(formatjgst(wert(
dnrlehrveranstaltungen+3)),4)ELSE zeileCAT "    "FI .istschuelergruppe:pos(
sgridaten,trenner+formatjgst(wert(dnrlehrveranstaltungen+3))+text(wert(
dnrlehrveranstaltungen+i),4)+trenner)>0.istklassengruppe:pos(klgr,trenner+
wert(dnrlehrveranstaltungen+i)+trenner)>0.istklassenstufe:intwert(
dnrlehrveranstaltungen+i)>4CAND intwert(dnrlehrveranstaltungen+i)<14.
substituiere:subst(text(jgst+wert(dnrlehrveranstaltungen+i),6)).jgst:
formatjgst(wert(dnrlehrveranstaltungen+3)).END PROC lvschreiben;TEXT PROC 
holedatum(TEXT VAR variable,TEXT CONST suchwort):IF pos(variable,suchwort)>0
THEN subtext(variable,nachsuchwort,endezeichen)ELSE ""FI .nachsuchwort:pos(
variable,suchwort)+LENGTH suchwort.endezeichen:pos(variable,trenner,
nachsuchwort)-1.END PROC holedatum;PROC hole2daten(TEXT VAR variable,TEXT 
CONST suchwort):IF pos(variable,suchwort)>0THEN t1:=subtext(variable,
nachsuchwort,endezeichen);t2:=subtext(variable,endezeichen+2,
naechstesendezeichen-1);ELSE t1:="";t2:=""FI .nachsuchwort:pos(variable,
suchwort)+LENGTH suchwort.endezeichen:pos(variable,trenner,nachsuchwort)-1.
naechstesendezeichen:pos(variable,trenner,endezeichen+2).END PROC hole2daten;
PROC holedrittesdatum(TEXT VAR variable,TEXT CONST suchwort):INT VAR p:=pos(
variable,suchwort),i;FOR iFROM 1UPTO 3REP p:=pos(variable,trenner,p+1);PER ;
t1:=subtext(variable,p+1,pos(variable,trenner,p+1)-1)END PROC 
holedrittesdatum;PROC spput(TEXT CONST t):TEXT VAR hohlstd:="0 ",
weiterekarten:="",zeile:="",alleschgr,aktschgr;BOOL VAR jgstausgabe:=TRUE ;
INT VAR anzschgrprozeile:=0;zeile:=text(t,4);alleschgr:=subtext(t,5);
weiterekarten:="";FOR iFROM 1UPTO (length(t)-4)DIV 4REP objut:=ut;objvm:=vm;
objnm:=nm;aktschgr:=subtext(alleschgr,(i-1)*4+1,i*4);suchezeitwunsch;
schreibeintragPER ;IF anzschgrprozeileMOD 15<>0THEN eintragausgebenFI ;
schreibschgrmitunbestwunsch.suchezeitwunsch:suchezeitw(trenner+kennsugrup+
trenner+aktschgr+trenner);IF unbestwunsch<>""CAND unbestwunsch<>
leererunbestwunschTHEN uebertragunbestwunschinkarte;IF objut<>utCOR objvm<>vm
COR objnm<>nmTHEN weiterekartenCAT "    ";weiterekartenCAT aktschgr;
weiterekartenCAT hohlstd;weiterekartenCAT text(objut);weiterekartenCAT text(
objvm);weiterekartenCAT text(objnm)FI FI ;IF bestwunsch<>""CAND bestwunsch<>
leererbestwunschTHEN uebertragbestwunschinverfkarte(objektverf);objektverf:=
aktschgr+objektverf+"L"+zeilenende;putds(k,objektverf)FI .schreibeintrag:IF 
keinwunschgefundenTHEN zeileCAT aktschgr;anzschgrprozeileINCR 1;IF 
anzschgrprozeile=15THEN putlinezz(f,zeile+hohlstd+text(ut)+text(vm)+text(nm)+
" D"+zeilenende);anzschgrprozeile:=0;jgstausgabe:=FALSE ;zeile:="    "FI FI .
keinwunschgefunden:bestwunsch=""COR (objut=utCAND objvm=vmCAND objnm=nm).
eintragausgeben:putlinezz(f,text(zeile,64)+hohlstd+text(ut)+text(vm)+text(nm)
+" D"+zeilenende);jgstausgabe:=FALSE .schreibschgrmitunbestwunsch:IF 
weiterekarten<>""THEN FOR jFROM 1UPTO length(weiterekarten)DIV 13REP aktschgr
:=subtext(weiterekarten,(j-1)*13+1,j*13);IF jgstausgabeTHEN putlinezz(f,zeile
+subtext(aktschgr,5,8)+
"                                                        "+subtext(aktschgr,9
)+" D"+zeilenende);jgstausgabe:=FALSE ELSE putlinezz(f,text(aktschgr,8)+
"                                                        "+subtext(aktschgr,9
)+" D"+zeilenende)FI ;PER ;FI .END PROC spput;PROC spiput(TEXT CONST t):t1:=
text(t,4);FOR iFROM 1UPTO ((LENGTH t)-4)DIV 6REP IF subtext(t,i*6+1,i*6+4)=
"    "THEN t1CAT subtext(t,i*6-1,i*6+2)ELSE t1CAT subst(subtext(t,i*6-1,i*6+4
));IF falschesugrupgefundenTHEN par:=text(t,4);LEAVE spiputFI ;FI ;PER .END 
PROC spiput;TEXT PROC subst(TEXT CONST t):IF pos(sgridaten,trenner+t+trenner)
>0THEN subtext(sgridaten,pos(sgridaten,trenner+t+trenner)+8,pos(sgridaten,
trenner+t+trenner)+11)ELSE letztepar:=t;falschesugrupgefunden:=TRUE ;""FI 
END PROC subst;PROC lehrer(BOOL VAR b):lehrerdaten:="";objut:=ut;objvm:=vm;
objnm:=nm;IF dbstatus<>0THEN b:=TRUE ELSE lehrerdatenCAT text(wert(dnrlehrer+
2),20);par:=wert(dnrlehrer+1);lehrerdatenCAT text(wert(dnrlehrer+1),4)+
"         ";lehrerdatenCAT subtext(" "+wert(dnrlehrer+7),length(" "+wert(
dnrlehrer+7))-1);suchezeitw(trenner+kennpar+trenner+par+trenner);IF 
bestwunsch<>""CAND bestwunsch<>leererbestwunschTHEN schreibverfuegkarteFI ;
schreiblehrerkarteFI .schreibverfuegkarte:uebertragbestwunschinverfkarte(
objektverf);objektverf:=text(par,4)+objektverf+"J"+zeilenende;putds(l,
objektverf).schreiblehrerkarte:IF unbestwunsch<>""CAND unbestwunsch<>
leererunbestwunschTHEN uebertragunbestwunschinkarteFI ;putlinezz(f,
lehrerdaten+"   "+text(objut)+text(objvm)+text(objnm)+
"                             C"+zeilenende).END PROC lehrer;PROC suchezeitw(
TEXT CONST kennung):toline(z,1);col(z,1);downety(z,kennung);IF eof(z)THEN 
bestwunsch:="";unbestwunsch:=""ELSE readrecord(z,record);unbestwunsch:=text(
record,9);bestwunsch:=subtext(record,10,141)FI ;END PROC suchezeitw;PROC 
zeitw(BOOL VAR b):IF wert(dnrzeitwuensche+1)<>schjCOR wert(dnrzeitwuensche+2)
<>schhjCOR dbstatus<>0THEN b:=TRUE ELSE zeitwuensche:="";zeitwuenscheCAT wert
(dnrzeitwuensche+6);zeitwuenscheCAT wert(dnrzeitwuensche+5);zeitwuenscheCAT 
trenner;zeitwuenscheCAT wert(dnrzeitwuensche+3);zeitwuenscheCAT trenner;IF 
wert(dnrzeitwuensche+3)=kennsugrupTHEN zeitwuenscheCAT holedatum(sgridaten,
trenner+text(wert(dnrzeitwuensche+4),6)+trenner);ELSE zeitwuenscheCAT wert(
dnrzeitwuensche+4);FI ;zeitwuenscheCAT trenner;putds(z,zeitwuensche)FI END 
PROC zeitw;PROC uebertragbestwunschinverfkarte(TEXT VAR verf):INT VAR suchpos
:=1,aktpos:=0;verf:=schulverfuegbarkeit;WHILE pos(bestwunsch,"-3",suchpos)<>0
REP aktpos:=pos(bestwunsch,"-3",suchpos);IF aktpos>0THEN replace(verf,(aktpos
+1)DIV 2,"1");suchpos:=aktpos+1FI PER END PROC uebertragbestwunschinverfkarte
;PROC uebertragunbestwunschinkarte:INT VAR tageswunsch:=0;IF (unbestwunsch
SUB 3)="3"THEN tageswunsch:=int(unbestwunschSUB 1);objutDECR tageswunsch;
objvmDECR tageswunsch;objnmDECR tageswunsch-1FI ;IF (unbestwunschSUB 6)="3"
THEN objvmDECR int(unbestwunschSUB 4)FI ;IF (unbestwunschSUB 9)="3"THEN objnm
DECR int(unbestwunschSUB 7)FI ;END PROC uebertragunbestwunschinkarte;PROC 
sgrdatenholen(BOOL VAR b):IF wert(dnraktschuelergruppen+1)<>schjCOR wert(
dnraktschuelergruppen+2)<>schhjCOR dbstatus<>0THEN b:=TRUE ELSE IF wert(
dnraktschuelergruppen+3)<>letzteparTHEN zeile:=formatjgst(wert(
dnraktschuelergruppen+3));sgrdatenCAT trenner+text(zeile,4);letztepar:=wert(
dnraktschuelergruppen+3)FI ;sgrdatenCAT text(wert(dnraktschuelergruppen+7),4)
FI ;END PROC sgrdatenholen;PROC klgrdatenholen(BOOL VAR b):IF dbstatus<>0
THEN b:=TRUE ELSE klgrdatenCAT trenner+text(wert(dnrklassengruppen+1),4);klgr
CAT wert(dnrklassengruppen+1)+trenner;klgrdatenCAT wert(dnrklassengruppen+2)
FI END PROC klgrdatenholen;PROC sgridatenholen(BOOL VAR b):IF wert(
dnraktschuelergruppen+1)<>schjCOR wert(dnraktschuelergruppen+2)<>schhjCOR 
dbstatus<>0THEN b:=TRUE ELSE sgridatenCAT trenner+jgstaufber(wert(
dnraktschuelergruppen+3));sgridatenCAT text(wert(dnraktschuelergruppen+4),4)+
trenner;sgridatenCAT text(wert(dnraktschuelergruppen+7),4);IF wert(
dnraktschuelergruppen+7)=""THEN datenfehler:=TRUE FI FI ;END PROC 
sgridatenholen;PROC putds(FILE VAR file,TEXT CONST t):writerecord(file,t);
down(file);insertrecord(file)END PROC putds;PROC dbleer(INT CONST dateinr):
fehler:=FALSE ;IF records(dateinr)<1.0THEN fehler:=TRUE FI END PROC dbleer;
PROC melde(TEXT CONST meldungsergaenzung):standardmeldung(meldg1,
meldungsergaenzung+"#")END PROC melde;PROC putlinezz(FILE VAR f,TEXT CONST t)
:putline(f,t);IF zz>2999THEN abbruchwegen4000zeilen:=TRUE ELSE zzINCR 1FI 
END PROC putlinezz;TEXT PROC formatjgst(TEXT CONST jgst):IF int(jgst)=0THEN 
LEAVE formatjgstWITH "00"ELIF int(jgst)<10THEN LEAVE formatjgstWITH 
jgstaufber(jgst)FI ;jgstEND PROC formatjgst;END PACKET 
datenfuerintegaaufbereiten;