summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/insert schulis
blob: a28c82910ecce4d6c0b7a05d234f7ee94beaa556 (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
463
464
465
466
467
468
469
470
471
472
LET versionsnummer=" 2.2.1";INT VAR kanal:=0,meinestation:=0;ROW 2TEXT VAR 
ausbaustufe;ausbaustufe(1):="0,1,6,";ausbaustufe(2):="0,1,6,3,4,2,5,";INT 
VAR ausbaustufenr:=1;LET teilsystem4="4",teilsystem6="6",teilsystem2="2",
teilsystem5="5";LET praefixtrenner=".",teilsystemtrenner=",",allgemeinedatei=
"0";TEXT VAR gueltigepraefixe:=",";TEXT VAR installverzeichnis:="";TASK VAR 
tasksourcequelle,testtask;BOOL VAR fehlerbeiinsert:=FALSE ,
idanichtinstallierbar:=FALSE ;LET stundenplanpraefix="Stundenplan-*";LET 
kurswahlpraefix="Kurswahl-*";TEXT VAR qtt:="SCHULIS-Quellen";page;TEXT VAR 
procaufruf1:="setze schulis zeichensatz(""",procaufruf2:=
"setze ida zeichensatz(""",procaufrufende:=""")",gewzeichensatz:="";BOOL VAR 
exists:=TRUE ;disablestop;gewzeichensatz:=font(1);IF iserrorTHEN clearerror;
line;putline("Vor Installation bitte Fonttabelle in "+
"Task 'configurator' laden!");enablestop;ELSE enablestop;WHILE existsREP page
;cursor(10,10);put("Bitte gewünschten Schrifttyp für Listen und andere");
cursor(10,11);put("Druckausgaben angeben : ");editget(gewzeichensatz);exists
:=NOT fontexists(gewzeichensatz)PER ;procaufruf1CAT gewzeichensatz;
procaufruf1CAT procaufrufende;procaufruf2CAT gewzeichensatz;procaufruf2CAT 
procaufrufende;startinsertinggesamtsystem;commanddialogue(FALSE );forget(all)
;commanddialogue(TRUE );FI ;BOOL PROC einzurichten(TEXT CONST teilsystemnr):
pos(gueltigepraefixe,teilsystemtrenner+teilsystemnr+teilsystemtrenner)>0END 
PROC einzurichten;TEXT PROC inv(TEXT CONST txt):""+txt+"�"ENDPROC inv;PROC 
startinsertinggesamtsystem:TASK VAR t;INT VAR msgcode;DATASPACE VAR ds:=
nilspace;maske;maskentexteinitialisieren;maskentexte;IF NOT maskeeditiert
THEN LEAVE startinsertinggesamtsystemFI ;line;kanal:=channel;taskpassword(
taskpasswort);beginpassword(beginnpasswort);fetch((ALL sourcetaskbaisydb)
LIKE "*BAISY-0",sourcetaskbaisydb);INT VAR pospraefixende;THESAURUS VAR thes
:=allLIKE "*.BAISY-0";TEXT VAR datenraumname;INT VAR indexthes:=0;get(thes,
datenraumname,indexthes);WHILE indexthes>0REP pospraefixende:=pos(
datenraumname,praefixtrenner);ausbaustufenr:=int(subtext(datenraumname,1,
pospraefixende-1));forget(datenraumname,quiet);get(thes,datenraumname,
indexthes)PER ;gueltigepraefixeCAT ausbaustufe(ausbaustufenr);
tasksourcequelle:=sourcetaskbaisy;checkoff;fetchundinsert("BASIS.files");
break(quiet);disablestop;IF NOT fehlerbeiinsertTHEN begin("ACCESS",PROC 
startinsertingaccess,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert
:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("baisy server",PROC 
startinsertingbaisyserver,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("ida server",
PROC startinsertingidaserver,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin(
"anschreiben server",PROC startinsertinganschreibenserver,t);call(t,0,ds,
msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT 
fehlerbeiinsertTHEN begin("statistik server",PROC 
startinsertingstatistikserver,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin(
"kurswahl server",PROC startinsertingkurswahlserver,t);call(t,0,ds,msgcode);
IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN 
begin("stundenplan server",PROC startinsertingstundenplanserver,t);call(t,0,
ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT 
fehlerbeiinsertTHEN begin("DB.kom",PROC startinsertingdbkom,t);call(t,0,ds,
msgcode);IF msgcodeMOD 2=0THEN fehlerbeiinsert:=TRUE FI ;IF msgcode>=2THEN 
idanichtinstallierbar:=TRUE FI FI ;clearerror;enablestop;continue(kanal);
putline("Hier ist wieder "+name(myself));putline("SCHULIS ist "+fehler+
" eingerichtet !");IF idanichtinstallierbarTHEN putline(
"Das Modul ""Anwenderspezifische Druckausgaben"" wurde nicht eingerichtet,");
putline("da die EUMEL-Textverarbeitung fehlt !");lineFI ;IF NOT 
fehlerbeiinsertTHEN putline(
"Bitte Task ""isp.archive"" unter SYSUR einrichten!");putline(
"Bitte Task ""LOG"" unter SYSUR einrichten! <RETURN>")ELSE putline(
"Bitte beliebige Taste (außer STOP und SV) drücken !")FI ;pause;
freeglobalmanager.fehler:IF fehlerbeiinsertTHEN "FEHLERHAFT"ELSE 
"ordnungsgemäß"FI .END PROC startinsertinggesamtsystem;PROC 
startinsertingbaisyserver:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR 
dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name
(myself));tasksourcequelle:=sourcetaskbaisy;line;IF taskpasswort=""THEN 
taskpassword("-")ELSE taskpassword(taskpasswort)FI ;beginpassword(
beginnpasswort);disablestop;fetch((ALL sourcetaskbaisydb)LIKE "*BAISY-*",
sourcetaskbaisydb);INT VAR pospraefixende;THESAURUS VAR thes:=allLIKE (text(
ausbaustufenr)+".BAISY-*");TEXT VAR datenraumname,neuername;INT VAR indexthes
:=0;get(thes,datenraumname,indexthes);WHILE indexthes>0REP pospraefixende:=
pos(datenraumname,praefixtrenner);neuername:=subtext(datenraumname,
pospraefixende+1);rename(datenraumname,neuername);get(thes,datenraumname,
indexthes)PER ;fetchundinsert("BAISY SERVER.files");IF iserrorTHEN putline(
errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;putline(name(
myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0
ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("baisy server")END PROC 
startinsertingbaisyserver;PROC startinsertingidaserver:TASK VAR ruftask;INT 
VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));tasksourcequelle:=
sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line;IF taskpasswort=""THEN 
taskpassword("-")ELSE taskpassword(taskpasswort)FI ;beginpassword(
beginnpasswort);disablestop;fetchundinsert("0.IDA SERVER.files");IF iserror
THEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;
putline(name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN 
msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("ida server"
)END PROC startinsertingidaserver;PROC startinsertingstundenplanserver:TASK 
VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,
msgcodert,ruftask);continue(kanal);line;putline(name(myself));#
fehlerbeiinsert:=FALSE ;#line;taskpassword("-");beginpassword("-");fetch((
ALL sourcetaskschulisdb)LIKE stundenplanpraefix,sourcetaskschulisdb);putline(
name(myself)+" ist komplett.");break(quiet);msgcodert:=1;send(ruftask,
msgcodert,dsrt);freeglobalmanager;END PROC startinsertingstundenplanserver;
PROC startinsertingstatistikserver:TASK VAR ruftask;INT VAR msgcodert;
DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);
line;putline(name(myself));tasksourcequelle:=sourcetaskschulis;#
fehlerbeiinsert:=FALSE ;#line;IF taskpasswort=""THEN taskpassword("-")ELSE 
taskpassword(taskpasswort)FI ;beginpassword(beginnpasswort);disablestop;
fetchundinsert("5.STATISTIK SERVER.files");IF iserrorTHEN putline(
errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;putline(name(
myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0
ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("statistik manager")END 
PROC startinsertingstatistikserver;PROC startinsertingkurswahlserver:TASK 
VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,
msgcodert,ruftask);continue(kanal);line;putline(name(myself));#
fehlerbeiinsert:=FALSE ;#line;taskpassword("-");beginpassword("-");fetch((
ALL sourcetaskschulisdb)LIKE kurswahlpraefix,sourcetaskschulisdb);putline(
name(myself)+" ist komplett.");break(quiet);msgcodert:=1;send(ruftask,
msgcodert,dsrt);freeglobalmanager;END PROC startinsertingkurswahlserver;PROC 
startinsertinganschreibenserver:TASK VAR ruftask;INT VAR msgcodert;DATASPACE 
VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(
name(myself));#fehlerbeiinsert:=FALSE ;#line;taskpassword(taskpasswort);
beginpassword(beginnpasswort);disablestop;fetch("VORDRUCKE.files",
sourcetaskvordrucke);fetch(ALL "VORDRUCKE.files",sourcetaskvordrucke);
clearerror;enablestop;putline(name(myself)+" ist komplett.");break(quiet);
msgcodert:=1;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC 
startinsertinganschreibenserver;PROC startinsertingdbdd:TASK VAR t,ruftask;
INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt
,msgcodert,ruftask);continue(kanal);line;putline(name(myself));line;
taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop;
tasksourcequelle:=sourcetaskschulis;fetchundinsert("0.IDA SICHERUNG.files");
tasksourcequelle:=sourcetaskbaisy;fetchundinsert("SICHERUNG.files");do(
"postfix ("""")");do("ausgabe namen");do("kf (TRUE)");IF iserrorTHEN putline(
errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;IF NOT 
fehlerbeiinsertTHEN erzeugeeumelbasebaisy;erzeugeeumelbaseschulis;FI ;break(
quiet);IF NOT fehlerbeiinsertTHEN begin("statistik sicherung",PROC 
startinsertingstatistiksich,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin(
"schulis sicherung",PROC startinsertingschulissich,t);call(t,0,ds,msgcode);
IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN 
begin("baisy sicherung",PROC startinsertingbaisysich,t);call(t,0,ds,msgcode);
IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN 
begin("ida sicherung",PROC startinsertingidasich,t);call(t,0,ds,msgcode);IF 
msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF fehlerbeiinsertTHEN msgcodert
:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanagerEND 
PROC startinsertingdbdd;PROC startinsertingstatistiksich:TASK VAR ruftask;
INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort);
beginpassword(beginnpasswort);break(quiet);msgcodert:=1;send(ruftask,
msgcodert,dsrt);do("statistik(TRUE)");do(" postfix ("""") ");commanddialogue(
FALSE );do("isp monitor sicherungstask(""Statistik"")")END PROC 
startinsertingstatistiksich;PROC startinsertingidasich:TASK VAR ruftask;INT 
VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort);
beginpassword(beginnpasswort);break(quiet);msgcodert:=1;send(ruftask,
msgcodert,dsrt);do("ida(TRUE)");do("open mit loeschen (FALSE)");do(
" postfix ("""") ");do(" fetch dd (""EUMELbase.schulis"") ");do(
" BOOL VAR b:: db open (""EUMELbase.schulis"") ");commanddialogue(FALSE );do(
"isp monitor sicherungstask(""EUMELbase.schulis"")")ENDPROC 
startinsertingidasich;PROC startinsertingschulissich:TASK VAR ruftask;INT 
VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort);
beginpassword(beginnpasswort);tasksourcequelle:=sourcetaskschulisdb;fetch((
ALL tasksourcequelle)LIKE "EUMELbase.schulis*",tasksourcequelle);break(quiet)
;msgcodert:=1;send(ruftask,msgcodert,dsrt);do(
"isp monitor sicherungstask(""EUMELbase.schulis"")")ENDPROC 
startinsertingschulissich;PROC startinsertingbaisysich:TASK VAR ruftask;INT 
VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort);
beginpassword(beginnpasswort);tasksourcequelle:=sourcetaskbaisydb;fetch((ALL 
tasksourcequelle)LIKE "EUMELbase.baisy*",tasksourcequelle);fetch((ALL 
tasksourcequelle)LIKE "*BAISY-*",tasksourcequelle);rename(text(ausbaustufenr)
+".BAISY-0","BAISY-0");rename(text(ausbaustufenr)+".BAISY-1","BAISY-1");break
(quiet);msgcodert:=1;send(ruftask,msgcodert,dsrt);do(
"isp monitor sicherungstask(""EUMELbase.baisy"")")ENDPROC 
startinsertingbaisysich;PROC startinsertingdbkom:TASK VAR t,ruftask;INT VAR 
msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt,
msgcodert,ruftask);continue(kanal);line;putline(name(myself));
tasksourcequelle:=sourcetaskbaisy;#fehlerbeiinsert:=FALSE ;#
idanichtinstallierbar:=FALSE ;line;taskpassword(taskpasswort);beginpassword(
beginnpasswort);disablestop;fetch("EUMELbase.schulis",sourcetaskschulisdb);
fetchundinsert("DB.files");IF iserrorTHEN putline(errormessage);clearerror;
fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN 
begin("DB.dd",PROC startinsertingdbdd,t);call(t,0,ds,msgcode);IF msgcode=0
THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin(
"standard",PROC startinsertingstandard,t);call(t,0,ds,msgcode);IF msgcodeMOD 
2=0THEN fehlerbeiinsert:=TRUE FI ;IF msgcode>=2THEN idanichtinstallierbar:=
TRUE FI FI ;continue(kanal);putline(name(myself)+" ist komplett.");break(
quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;IF 
idanichtinstallierbarTHEN msgcodert:=msgcodert+2FI ;send(ruftask,msgcodert,
dsrt);freeglobalmanager;END PROC startinsertingdbkom;PROC 
startinsertingstandard:TASK VAR t,ruftask;INT VAR msgcodert,msgcode;
DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));tasksourcequelle:=sourcetaskbaisy;
#fehlerbeiinsert:=FALSE ;#idanichtinstallierbar:=FALSE ;line;taskpassword(
taskpasswort);beginpassword(beginnpasswort);disablestop;fetchundinsert(
"STANDARD.files");IF iserrorTHEN putline(errormessage);clearerror;
fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF einzurichten(teilsystem6
)THEN IF NOT fehlerbeiinsertTHEN IF procexists("autopageform")THEN begin(
"ida",PROC startinsertingida,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ELSE idanichtinstallierbar:=TRUE FI FI ;FI ;
fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN begin(
"anschrlist werkzeuge",PROC startinsertinganschrlistwerkzeuge,t);call(t,0,ds,
msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=
FALSE ;IF NOT fehlerbeiinsertTHEN begin("erfassungen",PROC 
startinsertingerfassungen,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert
THEN begin("anwendung",PROC startinsertinganwendung,t);call(t,0,ds,msgcode);
IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal);putline(name(
myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0
ELSE msgcodert:=1FI ;IF idanichtinstallierbarTHEN msgcodert:=msgcodert+2FI ;
send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC 
startinsertingstandard;PROC startinsertingaccess:TASK VAR t,ruftask;INT VAR 
msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt,
msgcodert,ruftask);continue(kanal);line;putline(name(myself));
tasksourcequelle:=sourcetaskeumelbase;#fehlerbeiinsert:=FALSE ;#line;
taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop;
fetchundinsert("ACCESS.files");IF iserrorTHEN putline(errormessage);
clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF NOT 
fehlerbeiinsertTHEN begin("LOCAL",PROC startinsertinglocal,t);call(t,0,ds,
msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT 
fehlerbeiinsertTHEN begin("DB REORG",PROC startinsertingdbreorg,t);call(t,0,
ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal);
putline(name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN 
msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);
freeglobalmanagerEND PROC startinsertingaccess;PROC startinsertinglocal:TASK 
VAR t,ruftask;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=
nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name(
myself));tasksourcequelle:=sourcetaskschulis;line;taskpassword(taskpasswort);
beginpassword(beginnpasswort);disablestop;fetchundinsert("0.LOCAL.files");IF 
iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;
enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin("MM",PROC 
startinsertingmm,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=
TRUE FI ;FI ;continue(kanal);putline(name(myself)+" ist komplett.");break(
quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,
msgcodert,dsrt);freeglobalmanagerEND PROC startinsertinglocal;PROC 
startinsertingdbreorg:TASK VAR t,ruftask;INT VAR msgcodert,msgcode;DATASPACE 
VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);
line;putline(name(myself));tasksourcequelle:=sourcetaskbaisy;line;
taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop;
fetchundinsert("DB REORG.files");IF iserrorTHEN putline(errormessage);
clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;putline(name(myself)+
" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE 
msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("db reorganisation manager")
END PROC startinsertingdbreorg;PROC startinsertingmm:TASK VAR ruftask;INT 
VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));tasksourcequelle:=
sourcetaskeumelbase;line;taskpassword(taskpasswort);beginpassword(
beginnpasswort);disablestop;fetchundinsert("MM BAISY.files");IF iserrorTHEN 
fehlerbeiinsert:=TRUE ;putline(errormessage);clearerrorFI ;enablestop;putline
(name(myself)+" ist komplett.");enablestop;break(quiet);IF fehlerbeiinsert
THEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do(
"generate db manager")END PROC startinsertingmm;PROC erzeugeeumelbasebaisy:
disablestop;testtask:=/"EUMELbase.baisy";IF iserrorTHEN clearerror;
tasksourcequelle:=sourcetaskbaisydb;fetch((ALL tasksourcequelle)LIKE 
"EUMELbase.baisy*",tasksourcequelle);do(
"BOOL VAR b:: create db (""EUMELbase.baisy"")");do(
"restore db (""EUMELbase.baisy"")");commanddialogue(FALSE );forget(all);
commanddialogue(TRUE );FI ;enablestopENDPROC erzeugeeumelbasebaisy;PROC 
erzeugeeumelbaseschulis:disablestop;testtask:=/"EUMELbase.schulis";IF iserror
THEN clearerror;tasksourcequelle:=sourcetaskschulisdb;fetch((ALL 
tasksourcequelle)LIKE "EUMELbase.schulis*",tasksourcequelle);do(
"BOOL VAR b:: create db (""EUMELbase.schulis"")");do(
"restore db (""EUMELbase.schulis"")");commanddialogue(FALSE );forget(all);
commanddialogue(TRUE );FI ;enablestopENDPROC erzeugeeumelbaseschulis;PROC 
startinsertinganwendung:TASK VAR ruftask,t;INT VAR msgcodert,i;DATASPACE VAR 
dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name
(myself));tasksourcequelle:=sourcetaskschulis;line;taskpassword(taskpasswort)
;beginpassword(beginnpasswort);disablestop;tasksourcequelle:=sourcetaskbaisy;
checkoff;fetchundinsert("ANWENDUNG.files");IF iserrorTHEN putline(
errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);
FOR iFROM 1UPTO anzahlschulistasksREP IF NOT fehlerbeiinsertTHEN begin(
"schulis"+text(i),PROC startschulis1,t);FI ;PER ;continue(kanal);putline(name
(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0
ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC 
startinsertinganwendung;PROC startinsertinganschrlistwerkzeuge:TASK VAR 
ruftask,t;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace
;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name(myself));
tasksourcequelle:=sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line;
taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop;
fetchundinsert("0.ANSCHRLISTWERKZEUGE.files");do(procaufruf1);fetchundinsert(
"0.ANSCHRLISTWERKZEUGE TEIL2.files");IF iserrorTHEN putline(errormessage);
clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF einzurichten(
teilsystem5)THEN fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN 
installverzeichnis:="5.STATISTIK.files";begin("statistik",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;FI ;IF einzurichten(teilsystem2)THEN 
fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:=
"2.AUSWERTUNGEN KURSWAHL.files";begin("auswertungen kurswahl",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;FI ;IF einzurichten(teilsystem4)THEN 
fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:=
"4.AUSWERTUNGEN STUNDENPLAN 3.files";begin("auswertungen stundenplan 3",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert
THEN installverzeichnis:="4.AUSWERTUNGEN STUNDENPLAN 2.files";begin(
"auswertungen stundenplan 2",PROC startinsertinganwendungstask,t);call(t,0,ds
,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=
FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:=
"4.AUSWERTUNGEN STUNDENPLAN.files";begin("auswertungen stundenplan",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT 
fehlerbeiinsertTHEN installverzeichnis:="0.ANSCHREIBEN.files";begin(
"anschreiben",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF 
msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT 
fehlerbeiinsertTHEN installverzeichnis:="0.LISTEN 2.files";begin("listen 2",
PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert
THEN installverzeichnis:="0.LISTEN.files";begin("listen",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal);putline(name(myself)+
" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE 
msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC 
startinsertinganschrlistwerkzeuge;PROC startinsertinganwendungstask:TASK VAR 
ruftask,t;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,
ruftask);continue(kanal);line;putline(name(myself));tasksourcequelle:=
sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line;taskpassword(taskpasswort);
beginpassword(beginnpasswort);disablestop;fetchundinsert(installverzeichnis);
IF iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;
enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin(name(myself)+
" manager",PROC starteaufrufmanager,t);FI ;continue(kanal);putline(name(
myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0
ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC 
startinsertinganwendungstask;PROC startinsertingerfassungen:TASK VAR ruftask,
t;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(
dsrt,msgcodert,ruftask);continue(kanal);line;putline(name(myself));
tasksourcequelle:=sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line;
taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop;
fetchundinsert("0.ERFASSUNGEN.files");IF iserrorTHEN putline(errormessage);
clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF einzurichten(
teilsystem2)THEN fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN 
installverzeichnis:="2.ERFASSUNGEN KURSWAHL 2.files";begin(
"erfassungen kurswahl 2",PROC startinsertinganwendungstask,t);call(t,0,ds,
msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=
FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:=
"2.ERFASSUNGEN KURSWAHL.files";begin("erfassungen kurswahl",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;FI ;IF einzurichten(teilsystem4)THEN IF NOT 
fehlerbeiinsertTHEN installverzeichnis:="4.ERFASSUNGEN STUNDENPLAN.files";
begin("erfassungen stundenplan",PROC startinsertingerfassungenstundenplan,t);
call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;FI ;
fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:=
"0.ERFASSUNGEN EINZELN 2.files";begin("erfassungen einzeln 2",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert
THEN installverzeichnis:="0.ERFASSUNGEN EINZELN.files";begin(
"erfassungen einzeln",PROC startinsertinganwendungstask,t);call(t,0,ds,
msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=
FALSE ;IF einzurichten(teilsystem4)THEN IF NOT fehlerbeiinsertTHEN 
installverzeichnis:="4.ERFASSUNGEN LISTENWEISE 3.files";begin(
"erfassungen listenweise 3",PROC startinsertinganwendungstask,t);call(t,0,ds,
msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=
FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:=
"4.ERFASSUNGEN LISTENWEISE 2.files";begin("erfassungen listenweise 2",PROC 
startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN 
fehlerbeiinsert:=TRUE FI ;FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT 
fehlerbeiinsertTHEN installverzeichnis:="0.ERFASSUNGEN LISTENWEISE.files";
begin("erfassungen listenweise",PROC startinsertinganwendungstask,t);call(t,0
,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal);
putline(name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN 
msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);
freeglobalmanager;END PROC startinsertingerfassungen;PROC 
startinsertingerfassungenstundenplan:TASK VAR ruftask,t;INT VAR msgcodert;
DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);
line;putline(name(myself));tasksourcequelle:=sourcetaskschulis;#
fehlerbeiinsert:=FALSE ;#line;taskpassword(taskpasswort);beginpassword(
beginnpasswort);disablestop;fetchundinsert("4.ERFASSUNGEN STUNDENPLAN.files")
;IF iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;
enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin(name(myself)+
" manager",PROC starteaufrufmanagersingletask,t);FI ;continue(kanal);putline(
name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert
:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END 
PROC startinsertingerfassungenstundenplan;PROC starteaufrufmanager:do(
"starte aufruf manager")ENDPROC starteaufrufmanager;PROC 
starteaufrufmanagersingletask:do("starte aufruf manager(1)")ENDPROC 
starteaufrufmanagersingletask;PROC startinsertingida:TASK VAR ruftask,t;INT 
VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);
continue(kanal);line;putline(name(myself));tasksourcequelle:=
sourcetaskschulis;line;taskpassword(taskpasswort);beginpassword(
beginnpasswort);disablestop;fetchundinsert("6.IDA.files");do(procaufruf2);IF 
iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;
enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin("ida manager",PROC 
starteaufrufmanager,t);FI ;continue(kanal);putline(name(myself)+
" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE 
msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC 
startinsertingida;PROC startbaisy1:do("monitor")END PROC startbaisy1;PROC 
startschulis1:disablestop;startschulisunterdisablestop;IF iserrorTHEN 
clearerrorFI ;enablestop;do("monitor")END PROC startschulis1;PROC 
startschulisunterdisablestop:enablestop;do(
"oeffne datenbank (""EUMELbase.schulis"")");do("starte schulis");END PROC 
startschulisunterdisablestop;PROC fetchundinsert(TEXT CONST datname):IF 
fehlerbeiinsertTHEN LEAVE fetchundinsertFI ;disablestop;fetch(datname,
tasksourcequelle);putline("Task "+name(myself)+" wird eingerichtet !");INT 
VAR indexnr:=0;TEXT VAR thesname;THESAURUS VAR thes:=ALL datname;get(thes,
thesname,indexnr);WHILE indexnr>0REP IF dateizuberuecksichtigen(thesname)
THEN fetch(thesname,tasksourcequelle);putline(thesname);INT VAR taskkanal:=
channel;break(quiet);insert(thesname);continue(taskkanal);IF iserrorTHEN 
fehlerbeiinsert:=TRUE ;put(errormessage);clearerrorFI ;forget(thesname,quiet)
FI ;get(thes,thesname,indexnr);PER ;commanddialogue(FALSE );forget(datname,
quiet);commanddialogue(TRUE );enablestop.END PROC fetchundinsert;BOOL PROC 
dateizuberuecksichtigen(TEXT CONST dateiname):INT VAR pospraefixende:=pos(
dateiname,praefixtrenner);TEXT VAR dateipraefix:=subtext(dateiname,1,
pospraefixende-1);IF dateipraefix=""THEN TRUE ELIF dateipraefix=
allgemeinedateiTHEN TRUE ELIF dateipraefix>"9"THEN TRUE ELSE pos(
gueltigepraefixe,teilsystemtrenner+dateipraefix+teilsystemtrenner)>0FI END 
PROC dateizuberuecksichtigen;LET invers="",inversoff="",cdown=10,cup=3,esc=
27,hop=1,zeilenlaenge=80,strichelement="=",maxiofelder=15;TYPE MASKENTEXTE =
STRUCT (INT x,y,l,TEXT t,BOOL lfest);ROW maxiofelderMASKENTEXTE VAR mt;TASK 
PROC sourcetask(INT CONST i):IF int(mt[i+1].t)<>meinestationTHEN int(mt[i+1].
t)/mt[i].tELSE /mt[i].tFI ENDPROC sourcetask;TASK PROC sourcetaskbaisy:
sourcetask(1)ENDPROC sourcetaskbaisy;TASK PROC sourcetaskschulis:sourcetask(3
)ENDPROC sourcetaskschulis;TASK PROC sourcetaskeumelbase:sourcetask(5)
ENDPROC sourcetaskeumelbase;TASK PROC sourcetaskvordrucke:sourcetask(7)
ENDPROC sourcetaskvordrucke;TASK PROC sourcetaskbaisydb:sourcetask(9)ENDPROC 
sourcetaskbaisydb;TASK PROC sourcetaskschulisdb:sourcetask(11)ENDPROC 
sourcetaskschulisdb;INT PROC anzahlschulistasks:int(mt[13].t)ENDPROC 
anzahlschulistasks;TEXT PROC taskpasswort:mt[14].tENDPROC taskpasswort;TEXT 
PROC beginnpasswort:mt[15].tENDPROC beginnpasswort;PROC writexytext(INT 
CONST x,y,TEXT CONST t):cursor(x,y);write(t)ENDPROC writexytext;PROC 
writexyinvers(INT CONST x,y,TEXT CONST t):cursor(x,y);write(invers+t+
inversoff)ENDPROC writexyinvers;PROC strich(INT CONST zeile):writexytext(1,
zeile,zeilenlaenge*strichelement)ENDPROC strich;PROC kosmetik:page;strich(1);
strich(4);strich(23);kopf.kopf:writexyinvers(27,2," S  C  H  U  L  I  S ");
writexytext(10,3,"Installationsprogramm für SCHULIS Version "+versionsnummer)
.ENDPROC kosmetik;PROC maske:kosmetik;fuss;rumpf.fuss:writexyinvers(2,24,
"ESC HOP = Start   CURSOR UP/DOWN = nächstes/voriges Feld   ESC ESC = Abbruch"
);.rumpf:writexytext(3,5,
"BAISY-Quelltexte in Task    :                             auf Station:");
writexytext(3,7,
"SCHULIS-Quelltexte in Task  :                             auf Station:");
writexytext(3,9,
"EUMELbase-Quelltexte in Task:                             auf Station:");
writexytext(3,11,
"Vordrucke in Task           :                             auf Station:");
writexytext(3,13,
"BAISY-Datenbank in Task     :                             auf Station:");
writexytext(3,15,
"SCHULIS-Datenbank in Task   :                             auf Station:");
writexytext(3,20,"Anzahl der Arbeitsplätze für  SCHULIS:");writexytext(3,22,
"Task-Password:                          Beginn-Password:").ENDPROC maske;
TEXT PROC mystation:text(station(myself))ENDPROC mystation;PROC 
maskentexteinitialisieren:setmt(1,33,5,27,"BAISY-Quellen");setmt(2,75,5,3,
mystation,TRUE );setmt(3,33,7,27,"SCHULIS-Quellen");setmt(4,75,7,3,mystation,
TRUE );setmt(5,33,9,27,"EUMELbase-Quellen");setmt(6,75,9,3,mystation,TRUE );
setmt(7,33,11,27,"VORDRUCKE");setmt(8,75,11,3,mystation,TRUE );setmt(9,33,13,
27,"BAISY-SCHULIS-DB");setmt(10,75,13,3,mystation,TRUE );setmt(11,33,15,27,
"BAISY-SCHULIS-DB");setmt(12,75,15,3,mystation,TRUE );setmt(13,45,20,3,"1",
TRUE );setmt(14,18,22,21,"");setmt(15,60,22,21,"");ENDPROC 
maskentexteinitialisieren;PROC setmt(INT CONST i,px,py,pl,TEXT CONST pt):
setmt(i,px,py,pl,pt,FALSE )ENDPROC setmt;PROC setmt(INT CONST i,px,py,pl,
TEXT CONST pt,BOOL CONST pf):mt[i].x:=px;mt[i].y:=py;mt[i].l:=pl;mt[i].t:=pt;
mt[i].lfest:=pfENDPROC setmt;PROC maskentexte:INT VAR i;FOR iFROM 1UPTO 
maxiofelderREP writexytext(mt[i].x,mt[i].y,text(mt[i].t,mt[i].l))PER ENDPROC 
maskentexte;BOOL PROC maskeeditiert:INT VAR fnr:=1,editl;TEXT VAR exitchar:=
"";REP cursor(mt[fnr].x,mt[fnr].y);bestimmeeditlaenge;editget(mt[fnr].t,editl
,mt[fnr].l,"�
","��?",exitchar);exitchar:=exitcharSUB length(exitchar);
SELECT code(exitchar)OF CASE cup:vorigesfeldCASE cdown:naechstesfeldCASE esc:
kosmetik;cursor(8,10);IF yes(
"Soll die Installation tatsächlich abgebrochen werden")THEN LEAVE 
maskeeditiertWITH FALSE ELSE restorescreenFI CASE hop:kosmetik;cursor(1,10);
IF yes("Soll mit der Installation von SCHULIS begonnen werden")THEN page;
LEAVE maskeeditiertWITH TRUE ELSE restorescreenFI OTHERWISE :naechstesfeld
ENDSELECT PER ;FALSE .restorescreen:maske;maskentexte.naechstesfeld:fnr:=(fnr
MOD maxiofelder)+1.vorigesfeld:IF fnr=1THEN fnr:=maxiofelderELSE fnrDECR 1FI 
.bestimmeeditlaenge:IF mt[fnr].lfestTHEN editl:=mt[fnr].lELSE editl:=maxint-1
FI .ENDPROC maskeeditiert;LET endofpermanenttable=32767;DATASPACE VAR 
bulletinds:=nilspace;FILE VAR bulletinfile;TEXT VAR buffer,objectname,pattern
;INT VAR packetlink,linenumber;BOOL VAR found:=TRUE ;BOOL PROC procexists(
TEXT CONST procname):prepbulletin;objectname:=compress(procname);scan(
objectname);nextsymbol(pattern);packetlink:=endofpermanenttable;standardhelp.
prepbulletin:forget(bulletinds);bulletinds:=nilspace;bulletinfile:=
sequentialfile(output,bulletinds);linenumber:=0;buffer:="".standardhelp:
toobject(pattern);found.END PROC procexists;PROC toobject(TEXT CONST 
searchedobject):LET endofhashtable=1023;INT VAR permanentpointer,index,ntlink
;ntlink:=0;FOR indexFROM 1UPTO LENGTH searchedobjectREP ntlinkINCR ntlink;IF 
ntlink>endofhashtableTHEN ntlinkDECR endofhashtableFI ;ntlink:=(ntlink+code(
searchedobjectSUB index))MOD 1024PER ;found:=FALSE ;WHILE yetanotherntentry
REP permanentpointer:=cdbint(ntlink+1);objectname:=cdbtext(ntlink+2);IF 
objectname=searchedobjectTHEN found:=TRUE ;LEAVE toobjectFI PER .
yetanotherntentry:ntlink:=cdbint(ntlink);ntlink<>0.END PROC toobject;INT 
PROC cdbint(INT CONST index):EXTERNAL 116END PROC cdbint;TEXT PROC cdbtext(
INT CONST index):EXTERNAL 117END PROC cdbtext;