summaryrefslogtreecommitdiff
path: root/dialog/ls-DIALOG 7
blob: bc43410c1c33e1c201eb5dc1bc8bbf63d5202500 (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
(* 
        
          ********************************************************* 
          ********************************************************* 
          **                                                     ** 
          **                     ls-DIALOG 7                     ** 
          **                    Dateihandling                    ** 
          **                     Version 1.2                     ** 
          **                                                     ** 
          **                  (Stand: 04.11.88)                  ** 
          **                                                     ** 
          **                                                     ** 
          **         Autor: Wolfgang Weber, Bielefeld            ** 
          **                                                     ** 
          **                                                     ** 
          ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld ** 
          **                                                     ** 
          ** Copyright (C) 1988 ERGOS GmbH, Siegburg             ** 
          **                                                     ** 
          ********************************************************* 
          ********************************************************* 
 
                                                                           *) 
 
PACKET  ls dialog 7  DEFINES
        menu dateien verzeichnis,
        menu dateien loeschen,
        menu dateien drucken,
        menu dateien kopieren,
        menu dateien umbenennen,
        menu dateien speicherplatz,
        menu dateien aufraeumen:
LET filetype  = 1003,
    maxlaenge =   60,
    breite    =   40,
    niltext   =   "";
TEXT CONST dateibez :: "Dateiliste bei internen Operationen";
PROC menu dateien verzeichnis:
  forget (dateibez, quiet);
  liste dateien auf;

  regenerate menuscreen.
  liste dateien auf:
    erstelle liste;
    gib liste aus;
    forget (dateibez, quiet).
  erstelle liste:
    menufootnote (menubasistext (21) + menubasistext (28));
    FILE VAR f :: sequential file (output, dateibez);
    list (f); modify (f);
    headline (f, menubasistext (43));
    to line (f, 1); insert record (f);
    write record (f, menubasistext (161));
    entferne eigenen namen aus der liste.
  entferne eigenen namen aus der liste:
    TEXT VAR zeile :: ""; INT VAR i;

    FOR i FROM lines (f) DOWNTO 1 REP
      to line (f, i); read record (f, zeile);
      IF pos (zeile, dateibez) > 0
         THEN delete record (f);
              LEAVE entferne eigenen namen aus der liste
      FI
    PER.
  gib liste aus:
    to line (f, 1); cursor on; menuwindowshow (f); cursor off
END PROC menu dateien verzeichnis;
PROC menu dateien loeschen:
  lasse dateien auswaehlen;
  loesche ausgewaehlte dateien;
  regenerate menuscreen.
  lasse dateien auswaehlen:
    IF NOT not empty (ALL myself)

       THEN noch keine datei;
            LEAVE menu dateien loeschen
       ELSE biete auswahl an
    FI.
  biete auswahl an:
    THESAURUS VAR angekreuzte :=
    menuanswersome ( center (breite, invers (menubasistext(162))) +
                     menubasistext (163), "", ALL myself,
                     menubasistext (162), menubasistext (91) +
                     menubasistext (104) + menubasistext (92), FALSE).
  loesche ausgewaehlte dateien:
    show menuwindow;
    steige ggf bei leerem thesaurus aus;

    menuwindowout (menuwindowcenter (invers (menubasistext (162))));
    menuwindowline (2);
    command dialogue (FALSE);
    fuehre einzelne operation aus;
    command dialogue (TRUE);
    schlage ggf neue seite auf;
    menuwindowout (menubasistext (93) + menubasistext (104));
    menuwindowstop.
  fuehre einzelne operation aus:
    INT VAR k;
    FOR k FROM 1 UPTO highest entry (angekreuzte) REP
      IF   name (angekreuzte, k) = niltext
           THEN LEAVE fuehre einzelne operation aus

      ELIF NOT exists (name (angekreuzte, k))
           THEN menuwindowout (" """ + name (angekreuzte, k) + """");
                menuwindowline;
                menuwindowout (menubasistext (188)); menuwindowline;
                LEAVE fuehre einzelne operation aus
      ELSE disable stop;
           IF menuwindowyes (" """ + name (angekreuzte, k) + """ "
                                   + menubasistext (111))
              THEN forget (name (angekreuzte, k), quiet)
           FI;

           fehlerbehandlung
      FI
    PER.
  steige ggf bei leerem thesaurus aus:
    IF NOT not empty (angekreuzte)
       THEN menuwindowline (2);
            menuwindowout (menubasistext (94));
            menuwindowstop;
            regenerate menuscreen;
            LEAVE menu dateien loeschen
    FI.
  schlage ggf neue seite auf:
    IF remaining menuwindowlines < 7
       THEN menuwindowpage; menuwindowline
       ELSE menuwindowline (2)
    FI.
  fehlerbehandlung:
    IF is error

       THEN regenerate menuscreen;
            menuinfo  (invers (errormessage));
            clear error; enable stop;
            LEAVE menu dateien loeschen
    FI
END PROC menu dateien loeschen;
PROC menu dateien drucken:
  lasse programme auswaehlen;
  drucke programme;
  regenerate menuscreen.
  lasse programme auswaehlen:
    IF NOT not empty (ALL myself)
       THEN noch keine datei;
            LEAVE menu dateien drucken
       ELSE biete auswahl an
    FI.
  biete auswahl an:

    THESAURUS VAR angekreuzte :=
    menuanswersome ( center (breite, invers (menubasistext(164))) +
                     menubasistext (163), "", ALL myself,
                     menubasistext (164), menubasistext (91) +
                     menubasistext (165) + menubasistext (92), FALSE).
  drucke programme:
    show menuwindow;
    steige ggf bei leerem thesaurus aus;
    menuwindowout (menuwindowcenter (invers (menubasistext (164))));
    menuwindowline (2);
    command dialogue (FALSE);

    fuehre einzelne operation aus;
    command dialogue (TRUE);
    schlage ggf neue seite auf;
    menuwindowout (menubasistext (93) + menubasistext (165));
    menuwindowstop.
  fuehre einzelne operation aus:
    INT VAR k;
    FOR k FROM 1 UPTO highest entry (angekreuzte) REP
      IF   name (angekreuzte, k) = niltext
           THEN LEAVE fuehre einzelne operation aus
      ELIF NOT exists (name (angekreuzte, k))
           THEN menuwindowout (" """ + name (angekreuzte, k) + """");

                menuwindowline;
                menuwindowout (menubasistext (188)); menuwindowline;
                LEAVE fuehre einzelne operation aus
      ELSE disable stop;
           menuwindowout ( " """ + name (angekreuzte, k) + """ "
                                 + menubasistext (166));
           menuwindowline;
           print (name (angekreuzte, k));
           fehlerbehandlung
      FI
    PER.
  steige ggf bei leerem thesaurus aus:
    IF NOT not empty (angekreuzte)

       THEN menuwindowline (2);
            menuwindowout (menubasistext (94));
            menuwindowstop;
            regenerate menuscreen;
            LEAVE menu dateien drucken
    FI.
  schlage ggf neue seite auf:
    IF remaining menuwindowlines < 7
       THEN menuwindowpage; menuwindowline
       ELSE menuwindowline (2)
    FI.
  fehlerbehandlung:
    IF is error
       THEN regenerate menuscreen;
            menuinfo  (invers (errormessage));
            clear error; enable stop;

            LEAVE menu dateien drucken
    FI.
END PROC menu dateien drucken;
PROC menu dateien kopieren:
  ermittle alten dateinamen;
  erfrage neuen dateinamen;
  kopiere ggf die datei.
  ermittle alten dateinamen:
    IF NOT not empty (ALL myself)
       THEN noch keine datei;
            LEAVE menu dateien kopieren
       ELSE hole den namen
    FI.
  hole den namen:
    TEXT VAR alter name :=
    menuanswerone ( center (breite, invers (menubasistext(167))) +
                    menubasistext (163), "", ALL myself,

                    menubasistext (167), menubasistext (168) +
                    menubasistext (169) + menubasistext (170), TRUE);
    IF   alter name = niltext
         THEN LEAVE menu dateien kopieren
    ELIF NOT exists (alter name)
         THEN menuinfo (menubasistext (188));
              LEAVE menu dateien kopieren
    FI.
  erfrage neuen dateinamen:
    TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).
  ausgabe:
     ueberschrift + menubasistext (171) + bisheriger name

                  + menubasistext (172).
  ueberschrift:
    center (maxlaenge, invers (menubasistext (167))) + ""13""13"".
  bisheriger name:
    ""13""13" " + invers (alter name) + ""13""13"".
  kopiere ggf die datei:
    IF   neuer name = niltext
         THEN menuinfo (invers (menubasistext (173)));
              LEAVE menu dateien kopieren
    ELIF exists (neuer name)
         THEN mache vorwurf;
              LEAVE menu dateien kopieren
       ELSE copy (alter name, neuer name)

    FI.
  mache vorwurf:
    menuinfo (menubasistext (174)).
END PROC menu dateien kopieren;
PROC menu dateien umbenennen:
  ermittle alten dateinamen;
  erfrage neuen dateinamen;
  benenne ggf die datei um.
  ermittle alten dateinamen:
    IF NOT not empty (ALL myself)
       THEN noch keine datei;
            LEAVE menu dateien umbenennen
       ELSE hole den namen
    FI.
  hole den namen:
    TEXT VAR alter name :=
    menuanswerone ( center (breite, invers (menubasistext(175))) +

                    menubasistext (163), "", ALL myself,
                    menubasistext (175), menubasistext (168) +
                    menubasistext (176) + menubasistext (170), TRUE);
    IF   alter name = niltext
         THEN LEAVE menu dateien umbenennen
    ELIF NOT exists (alter name)
         THEN menuinfo (menubasistext (188));
              LEAVE menu dateien umbenennen
    FI.
  erfrage neuen dateinamen:
    TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).
  ausgabe:

     ueberschrift + menubasistext (171) + bisheriger name
                  + menubasistext (177).
  ueberschrift:
    center (maxlaenge, invers (menubasistext (175))) + ""13""13"".
  bisheriger name:
    ""13""13" " + invers (alter name) + ""13""13"".
  benenne ggf die datei um:
    IF   neuer name = niltext
         THEN menuinfo (invers (menubasistext (173)));
              LEAVE menu dateien umbenennen
    ELIF exists (neuer name)
         THEN mache vorwurf;
              LEAVE menu dateien umbenennen

       ELSE rename (alter name, neuer name)
    FI.
  mache vorwurf:
    menuinfo (menubasistext (174)).
END PROC menu dateien umbenennen;
PROC menu dateien speicherplatz:
  lasse dateinamen auswaehlen;
  ermittle den speicherplatz;
  regenerate menuscreen.
  lasse dateinamen auswaehlen:
    IF NOT not empty (ALL myself)
       THEN noch keine datei;
            LEAVE menu dateien speicherplatz
       ELSE biete auswahl an
    FI.
  biete auswahl an:
    THESAURUS VAR angekreuzte :=

    menuanswersome ( center (breite, invers (menubasistext(178))) +
                     menubasistext (163), "", ALL myself,
                     menubasistext (178), menubasistext (179), FALSE).
  ermittle den speicherplatz:
    show menuwindow;
    steige ggf bei leerem thesaurus aus;
    menuwindowout (menuwindowcenter (invers (menubasistext (178))));
    menuwindowline (2);
    command dialogue (FALSE);
    fuehre einzelne operation aus;
    command dialogue (TRUE);
    schlage ggf neue seite auf;

    menuwindowout (menubasistext (180));
    menuwindowstop.
  fuehre einzelne operation aus:
    INT VAR k;
    FOR k FROM 1 UPTO highest entry (angekreuzte) REP
      IF   name (angekreuzte, k) = niltext
           THEN LEAVE fuehre einzelne operation aus
      ELIF NOT exists (name (angekreuzte, k))
           THEN menuwindowout (" """ + name (angekreuzte, k) + """");
                menuwindowline;
                menuwindowout (menubasistext (188)); menuwindowline;
                LEAVE fuehre einzelne operation aus

      ELSE disable stop;
           menuwindowout ( " """ + name (angekreuzte, k) + """ "
                                 + menubasistext (181)
                                 + speicherplatz (name (angekreuzte, k)));
           menuwindowline;
           fehlerbehandlung
      FI
    PER.
  steige ggf bei leerem thesaurus aus:
    IF NOT not empty (angekreuzte)
       THEN menuwindowline (2);
            menuwindowout (menubasistext (94));
            menuwindowstop;
            regenerate menuscreen;

            LEAVE menu dateien speicherplatz
    FI.
  schlage ggf neue seite auf:
    IF remaining menuwindowlines < 7
       THEN menuwindowpage; menuwindowline
       ELSE menuwindowline (2)
    FI.
  fehlerbehandlung:
    IF is error
       THEN regenerate menuscreen;
            menuinfo  (invers (errormessage));
            clear error; enable stop;
            LEAVE menu dateien speicherplatz
    FI.
END PROC menu dateien speicherplatz;
TEXT PROC speicherplatz (TEXT CONST dateiname):

  DATASPACE VAR ds :: old (dateiname);
  INT CONST platz    :: storage (ds);
  forget (ds);
  " " + text (platz) + menubasistext (182)
END PROC speicherplatz;
PROC menu dateien aufraeumen:
  lasse dateinamen auswaehlen;
  raeume die dateien auf;
  regenerate menuscreen.
  lasse dateinamen auswaehlen:
    IF NOT not empty (ALL myself)
       THEN noch keine datei;
            LEAVE menu dateien aufraeumen
       ELSE biete auswahl an
    FI.
  biete auswahl an:
    THESAURUS VAR angekreuzte :=

    menuanswersome ( center (breite, invers (menubasistext(183))) +
                     menubasistext (163), "", ALL myself,
                     menubasistext (183), menubasistext (91) +
                     menubasistext (184) + menubasistext (92), FALSE).
  raeume die dateien auf:
    show menuwindow;
    steige ggf bei leerem thesaurus aus;
    menuwindowout (menuwindowcenter (invers (menubasistext (183))));
    menuwindowline (2);
    command dialogue (FALSE);
    fuehre einzelne operation aus;

    command dialogue (TRUE);
    schlage ggf neue seite auf;
    menuwindowout (menubasistext (93) + menubasistext (184));
    menuwindowstop.
  fuehre einzelne operation aus:
    INT VAR k;
    FOR k FROM 1 UPTO highest entry (angekreuzte) REP
      IF   name (angekreuzte, k) = niltext
           THEN LEAVE fuehre einzelne operation aus
      ELIF NOT exists (name (angekreuzte, k))
           THEN menuwindowout (" """ + name (angekreuzte, k) + """");
                menuwindowline;
                menuwindowout (menubasistext (188)); menuwindowline;

                LEAVE fuehre einzelne operation aus
      ELIF dateityp ist ok
           THEN disable stop;
                menuwindowline;
                menuwindowout ( " """ + name (angekreuzte, k) + """ "
                                      + menubasistext (185) );
                menuwindowline; menuwindowout ("   ");
                reorganize (name (angekreuzte, k));
                fehlerbehandlung
      ELSE menuwindowout ( " """ + name (angekreuzte, k) + """ "
                                 + menubasistext (186))

      FI
    PER.
  dateityp ist ok:
   type (old (name (angekreuzte, k))) = filetype.
  steige ggf bei leerem thesaurus aus:
    IF NOT not empty (angekreuzte)
       THEN menuwindowline (2);
            menuwindowout (menubasistext (94));
            menuwindowstop;
            regenerate menuscreen;
            LEAVE menu dateien aufraeumen
    FI.
  schlage ggf neue seite auf:
    IF remaining menuwindowlines < 7
       THEN menuwindowpage; menuwindowline
       ELSE menuwindowline (2)

    FI.
  fehlerbehandlung:
    IF is error
       THEN regenerate menuscreen;
            menuinfo  (invers (errormessage));
            clear error; enable stop;
            LEAVE menu dateien aufraeumen
    FI.
END PROC menu dateien aufraeumen;
PROC noch keine datei:
  menuinfo (menubasistext ( 187))
END PROC noch keine datei;
END PACKET ls dialog 7;