summaryrefslogtreecommitdiff
path: root/warenhaus/ls-Warenhaus 1
diff options
context:
space:
mode:
Diffstat (limited to 'warenhaus/ls-Warenhaus 1')
-rw-r--r--warenhaus/ls-Warenhaus 1235
1 files changed, 0 insertions, 235 deletions
diff --git a/warenhaus/ls-Warenhaus 1 b/warenhaus/ls-Warenhaus 1
deleted file mode 100644
index c3976b4..0000000
--- a/warenhaus/ls-Warenhaus 1
+++ /dev/null
@@ -1,235 +0,0 @@
-(*
-
- **********************************************************
- **********************************************************
- ** **
- ** ls-Warenhaus 1 **
- ** **
- ** Version 1.01 **
- ** **
- ** **
- ** (Stand: 30.08.89) **
- ** **
- ** **
- ** **
- ** Autor: Bruno Pollok, Bielefeld **
- ** **
- ** Copyright (C) 1988 Eva Latta-Weber, Bielefeld **
- ** Copyright (C) 1990 ERGOS GmbH, Siegburg **
- ** **
- **********************************************************
- **********************************************************
-
- *)
-PACKET monitor alt DEFINES original monitor:
- PROC original monitor:
- monitor
- END PROC originalmonitor
-END PACKET monitor alt;
-PACKET ls warenhaus 1 DEFINES
- zentrale,
- monitor,
- warenhaus direktstart,
- warenhaus hauptstelle,
- hauptstellenname:
-LET max kundenzahl = 31,
- min kundennummer = 129,
- kundendatei holen code = 100,
- kundendatei ergaenzen code = 200;
-TYPE KUNDENDATEN = STRUCT (TEXT nachname, vorname, geschlecht),
- KUNDENDATEI = ROW max kundenzahl KUNDENDATEN;
-
-
-BOUND KUNDENDATEN VAR kundendaten;
-BOUND KUNDENDATEI VAR bound kundendatei;
-KUNDENDATEI VAR kundendatei;
-DATASPACE VAR ds;
-TASK VAR absender,
- zentraltask :: niltask,
- hauptstelle :: niltask,
- direktstartmanager :: niltask;
-BOOL VAR mit direktstart :: FALSE,
- mit loeschen :: FALSE;
-INT VAR codenummer;
-PROC zentrale:
- enable stop;
- IF pos (name (myself), ".Zentrale") = 0
- THEN errorstop ("Unzulaessiger Befehl!")
-
-
- FI;
- disable stop;
- REP wait (ds, codenummer, absender);
- bearbeite auftrag;
- send (absender, codenummer, ds);
- IF is error THEN clear error FI
- PER.
- bearbeite auftrag:
- IF codenummer = kundendatei holen code
- THEN hole kundendatei
- ELIF codenummer = kundendatei ergaenzen code
- THEN ergaenze kundendatei
- ELIF codenummer >= min kundennummer
- THEN lies kundendaten
- ELSE speichere kundendaten
- FI.
-END PROC zentrale;
-
-
-PROC hole kundendatei:
- bound kundendatei := ds;
- bound kundendatei := kundendatei
-END PROC hole kundendatei;
-PROC ergaenze kundendatei:
- INT VAR kundennummer;
- bound kundendatei := ds;
- FOR kundennummer FROM 1 UPTO max kundenzahl REP
- IF kundendatei [kundennummer].nachname = ""
- THEN kundendatei [kundennummer] := bound kundendatei [kundennummer]
- FI
- PER;
- init ds
-END PROC ergaenze kundendatei;
-PROC lies kundendaten:
- kundendaten := ds;
- kundendaten := kundendatei [platznummer].
-
-
- platznummer: codenummer - min kundennummer + 1.
-END PROC lies kundendaten;
-PROC speichere kundendaten:
- kundendaten := ds;
- kundendatei [codenummer] := kundendaten;
- init ds
-END PROC speichere kundendaten;
-PROC warenhaus hauptstelle (BOOL CONST task soll hauptstelle sein):
- enable stop;
- IF task soll hauptstelle sein
- THEN mache task zur hauptstelle
- ELSE mache hauptstellenstatus rueckgaengig
- FI.
- mache task zur hauptstelle:
- sei eine hauptstelle;
- line (2);
-
-
- IF NOT mit direktstart CAND yes ("Mit Direktstart")
- THEN warenhaus direktstart (TRUE)
- ELSE global manager
- FI
-END PROC warenhaus hauptstelle;
-PROC sei eine hauptstelle:
- IF NOT (hauptstelle = niltask OR hauptstelle = myself)
- THEN errorstop ("Hauptstelle ist bereits die Task '" +
- name (hauptstelle) + "'!")
- FI;
- disable stop;
- end (zentraltask);
- IF is error THEN clear error FI;
- enable stop;
- hauptstelle := niltask;
- begin (name (myself) + ".Zentrale", PROC zentrale, zentraltask);
-
-
- hauptstelle := myself
-END PROC sei eine hauptstelle;
-PROC mache hauptstellenstatus rueckgaengig:
- IF NOT (hauptstelle = niltask OR hauptstelle = myself)
- THEN errorstop ("Dieses Kommando darf nur in der Task '" +
- name (hauptstelle) + " gegeben werden!")
- FI;
- disable stop;
- end (zentraltask);
- IF is error THEN clear error FI;
- enable stop;
- hauptstelle := niltask;
- warenhaus direktstart (FALSE)
-END PROC mache hauptstellenstatus rueckgaengig;
-PROC warenhaus direktstart (BOOL CONST wahl):
-
-
- pruefe zulaessigkeit;
- mit direktstart := wahl;
- IF mit direktstart
- THEN direktstartmanager := myself;
- mit loeschen := yes ("Mit automatischem Löschen")
- ELSE direktstartmanager := niltask
- FI;
- global manager.
- pruefe zulaessigkeit:
- enable stop;
- IF NOT (direktstartmanager = niltask OR direktstartmanager = myself)
- THEN errorstop ("Der Direktstart kann nur aus der Task '" +
- name (direktstartmanager) + "'geaendert werden!")
-
-
- FI.
-END PROC warenhaus direktstart;
-TEXT PROC hauptstellenname:
- name (hauptstelle)
-END PROC hauptstellenname;
-PROC monitor:
- IF mit direktstart
- THEN warenhaus monitor
- ELSE original monitor
- FI
-END PROC monitor;
-PROC warenhausmonitor:
- disable stop;
- INT VAR previous heapsize := heap size;
- REP command dialogue (TRUE);
- sysin (""); sysout ("");
- cry if not enough storage;
- reset dialog; erase menunotice;
- do ("warenhaus");
- IF is error
-
-
- THEN clear error
- ELSE sitzungsende
- FI
- PER.
- sitzungsende:
- collect heap garbage if necessary;
- page;
- IF mit loeschen
- THEN break; end (myself)
- ELSE end; break
- FI.
- collect heap garbage if necessary:
- IF heap size > previous heapsize + 10
- THEN collect heap garbage;
- previous heapsize := heap size
- FI.
- cry if not enough storage:
- INT VAR size, used;
- storage (size, used);
- IF used > size
- THEN out (""7"Speicher Engpass! Dateien loeschen!"13""10"")
-
-
- FI.
-END PROC warenhausmonitor;
-OP := (KUNDENDATEN VAR ziel, KUNDENDATEN CONST quelle):
- CONCR (ziel) := CONCR (quelle)
-END OP :=;
-OP := (KUNDENDATEI VAR ziel, KUNDENDATEI CONST quelle):
- CONCR (ziel) := CONCR (quelle)
-END OP :=;
-PROC init ds:
- forget (ds); ds := nilspace
-END PROC init ds;
-PROC initialisiere kundendatei:
- KUNDENDATEN CONST leer :: KUNDENDATEN : ("", "", "");
- INT VAR nr;
- FOR nr FROM 1 UPTO max kundenzahl REP
- kundendatei [nr] := leer
- PER
-END PROC initialisiere kundendatei;
-
-
-initialisiere kundendatei
-END PACKET ls warenhaus 1
-
-
-