summaryrefslogtreecommitdiff
path: root/warenhaus/ls-Warenhaus 2
diff options
context:
space:
mode:
Diffstat (limited to 'warenhaus/ls-Warenhaus 2')
-rw-r--r--warenhaus/ls-Warenhaus 21257
1 files changed, 0 insertions, 1257 deletions
diff --git a/warenhaus/ls-Warenhaus 2 b/warenhaus/ls-Warenhaus 2
deleted file mode 100644
index f7a9945..0000000
--- a/warenhaus/ls-Warenhaus 2
+++ /dev/null
@@ -1,1257 +0,0 @@
-(*
-
- **********************************************************
- **********************************************************
- ** **
- ** ls-Warenhaus 2 **
- ** **
- ** 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 ls warenhaus 2 DEFINES
- max artikelzahl,
- max kundenzahl,
- min kundennummer,
- max kundennummer,
- min artikelnummer,
- max artikelnummer,
- filialverwaltung,
- initialisiere verwaltung,
- hole artikeldaten,
- speichere artikeldaten,
- registriere verkauf,
- hole kundendaten,
- speichere kundendaten,
- sichere filialdaten,
- lade filialdaten,
- hole bestelliste,
- hole auskunft ein:
-LET max filialen = 10,
- max artikel = 15,
-
- max kunden = 31,
- min kundennr = 129,
- max kundennr = 159,
- min artikelnr = 1,
- max artikelnr = 15;
-LET zentrale kundendatei holen code = 100,
- zentrale kundendatei ergaenzen code = 200,
- filialdaten holen code = 201,
- filialdaten ergaenzen code = 202;
-INT CONST max artikelzahl :: max artikel,
- max kundenzahl :: max kunden,
- min kundennummer :: min kundennr,
- max kundennummer :: max kundennr,
-
- min artikelnummer :: min artikelnr,
- max artikelnummer :: max artikelnr;
-TYPE ARTIKELDATEN = STRUCT (TEXT artikelname, REAL preis,
- INT mindestbestand, bestand),
- KUNDENDATEN = STRUCT (TEXT nachname, vorname, geschlecht),
- WARENDATEI = ROW max artikel ARTIKELDATEN,
- KUNDENDATEI = ROW max kunden KUNDENDATEN,
- EINKAUFSDATEI = ROW max kunden ROW max artikel INT,
- VERKAUFSDATEI = ROW max artikel INT,
- FILIALDATEN = STRUCT (WARENDATEI waren, KUNDENDATEI kunden,
-
- EINKAUFSDATEI einkaeufe,
- VERKAUFSDATEI hitliste);
-KUNDENDATEI VAR kunde;
-WARENDATEI VAR artikel;
-EINKAUFSDATEI VAR einkaufsdatei;
-VERKAUFSDATEI VAR verkaufszahl;
-DATASPACE VAR ds;
-INT VAR codenummer, reply code;
-TASK VAR zentrale, verwaltung, absender;
-TEXT VAR hauptstelle :: "",
- filialnummer :: "0",
- filialverwaltungsname :: "";
-PROC filialverwaltung:
- enable stop;
-
- IF pos (name (myself), ".Filialverwaltung") = 0
- THEN errorstop ("Unzulaessiger Befehl!")
- FI;
- disable stop;
- REP wait (ds, codenummer, absender);
- bearbeite auftrag;
- send (absender, 0, ds);
- IF is error THEN clear error FI
- PER.
- bearbeite auftrag:
- IF codenummer <= max artikel
- THEN artikeldaten speichern
- ELIF codenummer <= max kundennr
- THEN kauf registrieren
- ELIF codenummer <= max kundennr + max kunden
- THEN kundendaten speichern
-
- ELIF codenummer = filialdaten holen code
- THEN filialdaten holen
- ELIF codenummer = filialdaten ergaenzen code
- THEN filialdaten ergaenzen; init ds
- ELIF codenummer = 256
- THEN sperre task
- FI.
- sperre task:
- call (absender, 256, ds, codenummer).
-END PROC filialverwaltung;
-PROC artikeldaten speichern:
- BOUND ARTIKELDATEN VAR artikeldaten :: ds;
- artikel [codenummer] := artikeldaten;
- init ds
-END PROC artikeldaten speichern;
-PROC kauf registrieren:
-
- artikelnummer aus ds lesen;
- artikel [artikelnummer].bestand DECR 1;
- verkaufszahl [artikelnummer] INCR 1;
- IF kundennummer > 0
- THEN einkaufsdatei [kundennummer][artikelnummer] INCR 1
- FI.
- artikelnummer aus ds lesen:
- BOUND INT VAR nummer :: ds;
- INT CONST artikelnummer :: nummer,
- kundennummer :: codenummer - min kundennr + 1;
- init ds
-END PROC kauf registrieren;
-PROC kundendaten speichern:
- BOUND KUNDENDATEN VAR kundendaten :: ds;
- kunde [codenummer - min kundennr - max kunden + 1] := kundendaten
-
-END PROC kundendaten speichern;
-PROC filialdaten holen:
- init ds;
- BOUND FILIALDATEN VAR filialdaten :: ds;
- CONCR (filialdaten.waren) := CONCR (artikel);
- CONCR (filialdaten.kunden) := CONCR (kunde);
- CONCR (filialdaten.einkaeufe) := CONCR (einkaufsdatei);
- CONCR (filialdaten.hitliste) := CONCR (verkaufszahl)
-END PROC filialdaten holen;
-PROC filialdaten ergaenzen:
- BOUND FILIALDATEN VAR neue daten :: ds;
- INT VAR kundennummer, artikelnummer;
- ergaenze artikeldatei und verkaufszahlen;
-
- ergaenze kundendatei;
- ergaenze einkaufsdatei.
- ergaenze artikeldatei und verkaufszahlen:
- FOR artikelnummer FROM 1 UPTO max artikel REP
- verkaufszahl [artikelnummer] INCR neue daten.hitliste [artikelnummer];
- IF artikel [artikelnummer].artikelname = ""
- THEN artikel [artikelnummer] := neue daten.waren [artikelnummer]
- FI
- PER.
- ergaenze kundendatei:
- FOR kundennummer FROM 1 UPTO max kunden REP
- IF kunde [kundennummer].nachname = ""
- THEN kunde [kundennummer] := neue daten.kunden [kundennummer]
-
- FI
- PER.
- ergaenze einkaufsdatei:
- FOR kundennummer FROM 1 UPTO max kunden REP
- FOR artikelnummer FROM 1 UPTO max artikel REP
- einkaufsdatei [kundennummer][artikelnummer]
- INCR neue daten.einkaeufe [kundennummer][artikelnummer]
- PER
- PER.
-END PROC filialdaten ergaenzen;
-OP := (ARTIKELDATEN VAR ziel, ARTIKELDATEN CONST quelle):
- CONCR (ziel) := CONCR (quelle)
-END OP :=;
-OP := (KUNDENDATEN VAR ziel, KUNDENDATEN CONST quelle):
- CONCR (ziel) := CONCR (quelle)
-
-END OP :=;
-PROC init ds:
- forget (ds); ds := nilspace
-END PROC init ds;
-(************************************************************************)
-PROC initialisiere verwaltung:
- hauptstelle := hauptstellenname;
- zentrale := task (hauptstelle + ".Zentrale");
- filialnummer := text (channel (myself));
- filialverwaltungsname := hauptstellenname + ".Filialverwaltung ";
- begin (filialverwaltungsname + filialnummer,
- PROC filialverwaltung, verwaltung)
-END PROC initialisiere verwaltung;
-
-PROC hole artikeldaten (INT CONST artikelnummer,
- TEXT VAR name, REAL VAR preis,
- INT VAR mindestbestand, bestand):
- enable stop;
- pruefe artikelnummer;
- hole daten.
- pruefe artikelnummer:
- INT CONST artikelindex :: artikelnummer - min artikelnr + 1;
- IF artikelindex < 1 OR artikelindex > max artikel
- THEN errorstop ("Unzulässige Artikelnummer!")
- FI.
- hole daten:
- name := artikel [artikelindex].artikelname;
-
- preis := artikel [artikelindex].preis;
- mindestbestand := artikel [artikelindex].mindestbestand;
- bestand := artikel [artikelindex].bestand.
-END PROC hole artikeldaten;
-PROC speichere artikeldaten (INT CONST artikelnummer,
- TEXT CONST name, REAL CONST preis,
- INT CONST mindestbestand, bestand):
- enable stop;
- pruefe artikelnummer;
- speichere daten;
- schicke kopie an verwaltung.
- pruefe artikelnummer:
-
- INT CONST artikelindex :: artikelnummer - min artikelnr + 1;
- IF artikelindex < 1 OR artikelindex > max artikel
- THEN errorstop ("Unzulässige Artikelnummer!")
- FI.
- speichere daten:
- artikel [artikelindex].artikelname := name;
- artikel [artikelindex].preis := preis;
- artikel [artikelindex].mindestbestand:= mindestbestand;
- artikel [artikelindex].bestand := bestand.
- schicke kopie an verwaltung:
- init ds;
- BOUND ARTIKELDATEN VAR artikeldaten :: ds;
-
- artikeldaten := artikel [artikelindex];
- call (verwaltung, artikelindex, ds, reply code).
-END PROC speichere artikeldaten;
-PROC registriere verkauf (INT CONST kundennummer, artikelnummer):
- enable stop;
- pruefe daten;
- speichere daten;
- schicke kopie zur verwaltung.
- pruefe daten:
- INT VAR kundenindex :: kundennummer - min kundennr + 1,
- artikelindex :: artikelnummer - min artikelnr + 1;
- IF kundenindex < 0 OR kundenindex > max kunden
- THEN errorstop ("Unzulässige Kundennummer!")
-
- ELIF artikelindex < 1 OR artikelindex > max artikel
- THEN errorstop ("Unzulässige Artikelnummer!")
- FI.
- speichere daten:
- IF artikel [artikelindex].bestand > 0
- THEN artikel [artikelindex].bestand DECR 1;
- verkaufszahl [artikelindex] INCR 1;
- IF kundenindex > 0
- THEN trage evtl in einkaufsdatei ein
- FI FI.
- trage evtl in einkaufsdatei ein:
- IF kunde [kundenindex].nachname = ""
- THEN kundenindex := 0
- ELSE einkaufsdatei [kundenindex][artikelindex] INCR 1
-
- FI.
- schicke kopie zur verwaltung:
- init ds;
- BOUND INT VAR nummer :: ds;
- nummer := artikelindex;
- call (verwaltung, kundenindex + min kundennr - 1, ds, reply code).
-END PROC registriere verkauf;
-PROC hole kundendaten (INT CONST kundennummer,
- TEXT VAR nachname, vorname, geschlecht):
- enable stop;
- pruefe kundennummer;
- rufe zentrale an;
- uebergib die zentraldaten;
- IF aenderungen vorhanden
- THEN aktualisiere filialdaten
- FI;
- forget (ds).
-
- pruefe kundennummer:
- INT CONST index :: kundennummer - min kundennr + 1;
- IF index < 1 OR index > max kunden
- THEN errorstop ("Unzulässige Kundennummer!")
- FI.
- rufe zentrale an:
- init ds;
- call (zentrale, kundennummer, ds, reply code).
- aenderungen vorhanden:
- (kunde [index].nachname <> nachname ) OR
- (kunde [index].vorname <> vorname ) OR
- (kunde [index].geschlecht <> geschlecht).
- aktualisiere filialdaten:
- kunde [index] := daten von zentrale;
-
- call (verwaltung, kundennummer + max kunden, ds, reply code).
- uebergib die zentraldaten:
- BOUND KUNDENDATEN VAR daten von zentrale :: ds;
- nachname := daten von zentrale.nachname;
- vorname := daten von zentrale.vorname;
- geschlecht := daten von zentrale.geschlecht.
-END PROC hole kundendaten;
-PROC speichere kundendaten(INT CONST kundennummer,
- TEXT CONST nachname, vorname, geschlecht):
- enable stop;
- pruefe kundennummer;
- IF kundendaten geaendert
-
- THEN speichere daten;
- schicke kopie an verwaltung und zentrale
- FI.
- pruefe kundennummer:
- IF kundennummer < min kundennr OR kundennummer > max kundennr
- THEN errorstop ("Unzulässige Kundennummer!")
- FI.
- kundendaten geaendert:
- INT CONST index :: kundennummer - min kundennr + 1;
- nachname <> kunde [index].nachname OR
- vorname <> kunde [index].vorname OR
- geschlecht <> kunde [index].geschlecht.
- speichere daten:
- kunde [index].nachname := nachname;
-
- kunde [index].vorname := vorname;
- kunde [index].geschlecht := geschlecht.
- schicke kopie an verwaltung und zentrale:
- init ds;
- BOUND KUNDENDATEN VAR kundendaten :: ds;
- kundendaten := kunde [index];
- call (verwaltung, kundennummer + max kunden, ds, reply code);
- call (zentrale, kundennummer - min kundennr + 1, ds, reply code);
- forget (ds).
-END PROC speichere kundendaten;
-PROC sichere filialdaten (TEXT CONST name):
- enable stop;
- filialdaten holen;
-
- type (ds, 1951);
- forget (name, quiet);
- copy (ds, name);
- forget (ds)
-END PROC sichere filialdaten;
-PROC lade filialdaten (TEXT CONST name):
- enable stop;
- forget (ds);
- ds := old (name);
- IF type (ds) = 1951
- THEN filialdaten ergaenzen;
- kopie an verwaltung schicken;
- kopie der kundendatei an zentrale schicken
- ELSE errorstop ("'" + name + "' enthält keine Filialdaten!")
- FI.
- kopie an verwaltung schicken:
- call (verwaltung, filialdaten ergaenzen code, ds, reply code).
-
- kopie der kundendatei an zentrale schicken:
- BOUND KUNDENDATEI VAR kundendatei :: ds;
- CONCR (CONCR (kundendatei)) := CONCR (kunde);
- call (zentrale, zentrale kundendatei ergaenzen code, ds, reply code).
-END PROC lade filialdaten;
-PROC hole bestelliste (FILE VAR f):
- bereite datei vor;
- schreibe daten in datei.
- bereite datei vor:
- forget("Nachbestellung",quiet);
- f := sequential file (output, "Nachbestellung");
- line (f);
- write (f, " Nachbestellungen für " +
-
- invers ("Filiale " + filialnummer)+":");
- line;
- write (f, " ==================================================");
- line (f, 2);
- write (f, " | Art.Nr. | Artikelname | Anzahl |");
- line (f);
- write (f, " +----------+-------------------------+-----------+");
- line (f).
- schreibe daten in datei:
- INT VAR artikelnummer;
- FOR artikelnummer FROM 1 UPTO max artikel REP
- IF artikel[artikelnummer].bestand
-
- < artikel[artikelnummer].mindestbestand
- THEN bestelle artikel nach
- FI
- PER;
- write (f, " +----------+-------------------------+-----------+");
- line (f).
- bestelle artikel nach:
- write (f, " | " + wirkliche artikelnummer + " | "
- + text (artikel [artikelnummer].artikelname, 23) + " | "
- + text (nachzubestellende anzahl, 6) + " |");
- line (f);
- artikel [artikelnummer].bestand
- := 2 * artikel [artikelnummer].mindestbestand.
-
- wirkliche artikelnummer:
- text (artikelnummer + min artikelnr - 1, 5).
- nachzubestellende anzahl:
- 2 * artikel [artikelnummer].mindestbestand
- - artikel [artikelnummer].bestand.
-END PROC hole bestelliste;
-PROC hole auskunft ein (INT CONST codenummer, artikel oder kundennummer,
- FILE VAR f):
- enable stop;
- hauptstelle := hauptstellenname;
- SELECT codenummer OF CASE 66 : hitliste von zentrale (f)
- CASE 67 : hitliste von filiale (f)
-
- CASE 68 : hitlisten aller filialen (f)
- (* --------------------------------------------- *)
- CASE 73 : artikelkaeuferliste von zentrale
- (artikel oder kundennummer, f)
- CASE 74 : artikelkaeuferliste von filiale
- (artikel oder kundennummer, f)
- CASE 75 : artikelkaeuferlisten aller filialen
- (artikel oder kundennummer, f)
-
- (* --------------------------------------------- *)
- CASE 77 : kundenliste von zentrale (f)
- CASE 78 : kundenliste von filiale (f)
- CASE 79 : kundenlisten aller filialen (f)
- (* --------------------------------------------- *)
- CASE 84 : kundeneinkaufsliste von zentrale
- (artikel oder kundennummer, f)
- CASE 85 : kundeneinkaufsliste von filiale
-
- (artikel oder kundennummer, f)
- CASE 86 : kundeneinkaufslisten aller filialen
- (artikel oder kundennummer, f)
- (* --------------------------------------------- *)
- CASE 89 : lageruebersicht von zentrale (f)
- CASE 90 : lageruebersicht von filiale (f)
- CASE 91 : lageruebersichten aller filialen (f)
- (* --------------------------------------------- *)
-
- OTHERWISE errorstop ("Unzulässige Code - Nummer bei Auskunft!")
- END SELECT
-END PROC hole auskunft ein;
-PROC hitliste von zentrale (FILE VAR f):
- INT VAR filialnr;
- beginne mit eigener filiale;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
- IF filialnr <> int (filialnummer) CAND
- exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- schreibe daten in zentralliste
-
- FI
- PER;
- werte zentralliste aus.
- beginne mit eigener filiale:
- WARENDATEI VAR zentrale warendatei;
- CONCR (zentrale warendatei) := CONCR (artikel);
- VERKAUFSDATEI VAR zentrale verkaufsdatei;
- CONCR (zentrale verkaufsdatei) := CONCR (verkaufszahl).
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code);
- BOUND FILIALDATEN VAR aktuelle daten :: ds.
- schreibe daten in zentralliste:
- INT VAR i;
-
- FOR i FROM 1 UPTO max artikel REP
- IF zentrale warendatei [i].artikelname = ""
- THEN zentrale warendatei [i] := aktuelle daten.waren [i]
- FI;
- zentrale verkaufsdatei [i] INCR aktuelle daten.hitliste [i]
- PER.
- werte zentralliste aus:
- forget (ds);
- forget ("Auskunft: Zentrale", quiet);
- f := sequential file (output, "Auskunft: Zentrale");
- line (f);
- write (f, " Zentrale Warenliste, geordnet nach Verkaufszahlen:");
- sortiere (zentrale warendatei, zentrale verkaufsdatei);
-
- fuelle (f, zentrale warendatei, zentrale verkaufsdatei).
-END PROC hitliste von zentrale;
-PROC hitliste von filiale (FILE VAR f):
- bereite auskunftsdatei vor;
- kopiere artikeldatei und verkaufsdatei;
- sortiere (hilfsdatei artikel, hilfsdatei verkaufszahlen);
- fuelle (f,hilfsdatei artikel, hilfsdatei verkaufszahlen).
- kopiere artikeldatei und verkaufsdatei:
- WARENDATEI VAR hilfsdatei artikel;
- CONCR (hilfsdatei artikel) := CONCR (artikel);
- VERKAUFSDATEI VAR hilfsdatei verkaufszahlen;
-
- CONCR (hilfsdatei verkaufszahlen) := CONCR (verkaufszahl).
- bereite auskunftsdatei vor:
- forget ("Auskunft: Filiale " + filialnummer, quiet);
- f := sequential file (output, "Auskunft: Filiale " + filialnummer);
- line (f);
- write (f, " Warenliste, geordnet nach Verkaufszahlen:").
-END PROC hitliste von filiale;
-PROC hitlisten aller filialen (FILE VAR f):
- WARENDATEI VAR aktuelle warendatei;
- VERKAUFSDATEI VAR aktuelle verkaufsdatei;
- INT VAR filialnr;
-
- bereite auskunftsdatei vor;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
- IF filialnr = int (filialnummer)
- THEN nimm eigene daten
- ELIF exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- arbeite mit diesen daten
- FI
- PER;
- forget (ds).
- bereite auskunftsdatei vor:
- forget ("Auskunft: Alle Filialen", quiet);
- f := sequential file (output, "Auskunft: Alle Filialen");
-
- line (f).
- nimm eigene daten:
- CONCR (aktuelle warendatei) := CONCR (artikel);
- CONCR (aktuelle verkaufsdatei) := CONCR (verkaufszahl);
- sortiere und fuelle.
- sortiere und fuelle:
- write (f, " Warenliste von " + invers ("Filiale " + text (filialnr))
- + ", geordnet nach Verkaufszahlen:");
- sortiere (aktuelle warendatei, aktuelle verkaufsdatei);
- fuelle (f,aktuelle warendatei, aktuelle verkaufsdatei).
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code);
-
- BOUND FILIALDATEN VAR aktuelle daten :: ds.
- arbeite mit diesen daten:
- CONCR (aktuelle warendatei) := CONCR (aktuelle daten.waren);
- CONCR (aktuelle verkaufsdatei) := CONCR (aktuelle daten.hitliste);
- sortiere und fuelle.
-END PROC hitlisten aller filialen;
-PROC sortiere (WARENDATEI VAR warendatei, VERKAUFSDATEI VAR stueckzahl):
- INT VAR i,j;
- FOR i FROM 1 UPTO max artikel - 1 REP
- FOR j FROM i + 1 UPTO max artikel REP
- IF stueckzahl [i] < stueckzahl [j]
- THEN vertausche
-
- FI
- PER PER.
- vertausche:
- INT CONST hilfsint :: stueckzahl [i];
- ARTIKELDATEN CONST hilfsartikel :: warendatei [i];
- stueckzahl [i] := stueckzahl [j];
- warendatei [i] := warendatei [j];
- stueckzahl [j] := hilfsint;
- warendatei [j] := hilfsartikel.
-END PROC sortiere;
-PROC fuelle (FILE VAR f, WARENDATEI VAR warendat, VERKAUFSDATEI VAR anzahl):
- INT VAR nummer, platz :: 0;
- bereite datei vor;
- schreibe daten in datei.
-bereite datei vor:
- line (f);
- write(f," ============================================================");
-
- line (f,2);
- write(f," | Platz | Verk.Anzahl | Artikelname | Preis |");
- line (f);
- write(f," +-------+-------------+------------------------+-----------+");
- line (f).
-schreibe daten in datei:
- FOR nummer FROM 1 UPTO max artikel REP
- IF warendat [nummer].artikelname <> ""
- THEN schreibe in datei; line (f)
- FI
- PER;
- write(f," +-------+-------------+------------------------+-----------+");
- line (f,3).
-schreibe in datei:
- platz INCR 1;
- write (f, " |" + text (platz, 5) + " |"
-
- + text (anzahl [nummer], 9) + " | "
- + text (warendat [nummer].artikelname, 22) + " | "
- + text (warendat [nummer].preis,8,2) + " |").
-END PROC fuelle;
-PROC artikelkaeuferliste von zentrale (INT CONST artikelnummer, FILE VAR f):
- INT VAR filialnr;
- pruefe artikelnummer;
- beginne mit eigener filiale;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
-
- IF filialnr <> int (filialnummer) CAND
- exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- schreibe daten in zentralliste
- FI
- PER;
- werte zentralliste aus.
- pruefe artikelnummer:
- INT CONST artikelindex :: artikelnummer - min artikelnr + 1;
- IF artikelindex < 1 OR artikelindex > max artikel
- THEN errorstop ("Unzulässige Artikelnummer!")
- FI.
- beginne mit eigener filiale:
- TEXT VAR aktueller artikelname :: artikel [artikelindex].artikelname;
-
- KUNDENDATEI VAR hilfsdatei;
- CONCR (hilfsdatei) := CONCR (kunde);
- ROW max kunden INT VAR kaeufe;
- INT VAR i;
- FOR i FROM 1 UPTO max kunden REP
- kaeufe [i] := einkaufsdatei [i][artikelindex]
- PER.
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code).
- schreibe daten in zentralliste:
- BOUND FILIALDATEN VAR aktuelle daten :: ds;
- IF aktueller artikelname = ""
- THEN aktueller artikelname
-
- := aktuelle daten.waren [artikelindex].artikelname
- FI;
- FOR i FROM 1 UPTO max kunden REP
- kaeufe [i] INCR aktuelle daten.einkaeufe [i][artikelindex];
- IF hilfsdatei [i].nachname = ""
- THEN hilfsdatei [i] := aktuelle daten.kunden [i]
- FI
- PER.
- werte zentralliste aus:
- forget (ds);
- forget ("Auskunft: Zentrale", quiet);
- f := sequential file (output, "Auskunft: Zentrale");
- line (f);
- IF aktueller artikelname = ""
- THEN write (f, " Der Artikel Nr. " + text (artikelindex)
-
- + " wird in keiner Filiale geführt.");
- line (f);
- write(f,
- " ============================================================");
- line (f,3);
- ELSE write (f, " Gesamtkäuferliste des Artikels "
- + invers (aktueller artikelname) + ":");
- fuelle (f, hilfsdatei, kaeufe)
- FI.
-END PROC artikelkaeuferliste von zentrale;
-PROC artikelkaeuferliste von filiale (INT CONST artikelnummer, FILE VAR f):
-
- pruefe artikelnummer;
- kopiere einkaufszahlen in hilfsliste;
- erstelle filialliste.
- pruefe artikelnummer:
- INT CONST artikelindex :: artikelnummer - min artikelnr + 1;
- IF artikelindex < 1 OR artikelindex > max artikel
- THEN errorstop ("Unzulässige Artikelnummer!")
- FI.
- kopiere einkaufszahlen in hilfsliste:
- ROW max kunden INT VAR kaeufe;
- INT VAR i;
- FOR i FROM 1 UPTO max kunden REP
- kaeufe [i] := einkaufsdatei [i][artikelindex]
- PER.
- erstelle filialliste:
-
- forget ("Auskunft: Filiale " + filialnummer, quiet);
- f := sequential file (output, "Auskunft: Filiale " + filialnummer);
- line (f);
- IF artikel [artikelindex].artikelname = ""
- THEN write (f, " Der Artikel Nr. " + text (artikelindex)
- + " wird in dieser Filiale nicht geführt.");
- line (f);
- write(f,
- " ============================================================");
- line (f,3);
- ELSE write (f, " Käufer des Artikels "
-
- + invers (artikel [artikelindex].artikelname)
- + ":");
- fuelle (f, kunde, kaeufe)
- FI.
-END PROC artikelkaeuferliste von filiale;
-PROC artikelkaeuferlisten aller filialen(INT CONST artikelnummer,FILE VAR f):
- INT VAR i, filialnr;
- ROW max kunden INT VAR kaeufe;
- pruefe artikelnummer;
- bereite datei vor;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
-
- IF filialnr = int (filialnummer)
- THEN kopiere eigene einkaufszahlen in hilfsliste;
- schreibe eigene daten in auskunftsdatei
- ELIF exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- schreibe daten in auskunftsdatei
- FI
- PER;
- forget (ds).
- pruefe artikelnummer:
- INT CONST artikelindex :: artikelnummer - min artikelnr + 1;
- IF artikelindex < 1 OR artikelindex > max artikel
- THEN errorstop ("Unzulässige Artikelnummer!")
-
- FI.
- bereite datei vor:
- forget ("Auskunft: Alle Filialen", quiet);
- f := sequential file (output, "Auskunft: Alle Filialen");
- line (f).
- kopiere eigene einkaufszahlen in hilfsliste:
- FOR i FROM 1 UPTO max kunden REP
- kaeufe [i] := einkaufsdatei [i][artikelindex]
- PER.
- schreibe eigene daten in auskunftsdatei:
- IF artikel [artikelindex].artikelname = ""
- THEN write (f, " Der Artikel Nr. " + text (artikelindex)
- + " wird in "
-
- + invers ("Filiale " + filialnummer)
- + " nicht geführt.");
- line (f);
- write(f,
- " ============================================================");
- line (f,3)
- ELSE write (f, " Käufer des Artikels '"
- + artikel [artikelindex].artikelname
- + "' in " + invers ("Filiale " + filialnummer) + ":");
- fuelle(f, kunde, kaeufe)
- FI.
- hole daten dieser filiale:
-
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code);
- BOUND FILIALDATEN VAR aktuelle daten :: ds;
- TEXT CONST aktueller artikelname
- := aktuelle daten.waren [artikelindex].artikelname
- FOR i FROM 1 UPTO max kunden REP
- kaeufe [i] := aktuelle daten.einkaeufe [i][artikelindex];
- PER.
- schreibe daten in auskunftsdatei:
- IF aktueller artikelname = ""
- THEN write (f, " Der Artikel Nr. " + text (artikelindex)
-
- + " wird in "
- + invers ("Filiale " + text (filialnr))
- + " nicht geführt.");
- line (f);
- write(f,
- " ============================================================");
- line (f,3)
- ELSE write (f, " Käufer des Artikels '"
- + aktueller artikelname
- + "' in " + invers ("Filiale " + text(filialnr)) + ":");
- fuelle(f, aktuelle daten.kunden, kaeufe)
-
- FI.
-END PROC artikelkaeuferlisten aller filialen;
-PROC fuelle (FILE VAR f, KUNDENDATEI CONST kundenliste,
- ROW max kunden INT CONST einkaufszahlen):
- INT VAR kundennummer;
- bereite datei vor;
- schreibe daten in datei.
-bereite datei vor:
- line (f);
- write(f," ============================================================");
- line (f, 2);
- write(f," | Anzahl | Nachname, Vorname | Geschlecht |");
- line (f);
- write(f," +--------+------------------------------------+------------+");
-
- line (f).
-schreibe daten in datei:
- FOR kundennummer FROM 1 UPTO max kunden REP
- IF einkaufszahlen [kundennummer] > 0
- THEN schreibe in datei; line (f);
- FI
- PER;
- write(f," +--------+------------------------------------+------------+");
- line (f, 3).
-schreibe in datei:
- write(f," |" + text(einkaufszahlen [kundennummer], 5) + " | "
- + text(kundenliste [kundennummer].nachname + ",", 17) + " "
- + text(kundenliste [kundennummer].vorname, 16) + " | ");
-
- IF kundenliste [kundennummer].geschlecht = "m"
- THEN write (f, " männlich |")
- ELIF kundenliste [kundennummer].geschlecht = "w"
- THEN write (f, " weiblich |")
- ELSE write (f, " |")
- FI.
-END PROC fuelle;
-PROC kundenliste von zentrale (FILE VAR f):
- hole kundenliste von zentrale;
- bereite datei vor;
- schreibe daten in datei.
- hole kundenliste von zentrale:
- init ds;
- call (zentrale, zentrale kundendatei holen code, ds, reply code);
- BOUND KUNDENDATEI VAR zentrale kundenliste :: ds.
-
- bereite datei vor:
- forget ("Auskunft: Zentrale", quiet);
- f := sequential file (output, "Auskunft: Zentrale");
- line (f);
- write (f, " Zentrale Kundenliste:").
- schreibe daten in datei:
- fuelle (f, zentrale kundenliste);
- forget (ds).
-END PROC kundenliste von zentrale;
-PROC kundenliste von filiale (FILE VAR f):
- bereite datei vor;
- schreibe daten in datei.
- bereite datei vor:
- forget ("Auskunft: Filiale " + filialnummer, quiet);
- f := sequential file (output, "Auskunft: Filiale " + filialnummer);
-
- line (f);
- write (f," Kundenliste:").
- schreibe daten in datei:
- fuelle (f, kunde).
-END PROC kundenliste von filiale;
-PROC kundenlisten aller filialen (FILE VAR f):
- INT VAR filialnr;
- bereite datei vor;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
- IF filialnr = int (filialnummer)
- THEN schreibe eigene daten in auskunftsdatei
- ELIF exists task (aktuelle verwaltung)
-
- THEN hole daten dieser filiale;
- schreibe daten dieser filiale in auskunftsdatei
- FI
- PER.
- bereite datei vor:
- forget ("Auskunft: Alle Filialen", quiet);
- f := sequential file (output, "Auskunft: Alle Filialen");
- line (f).
- schreibe eigene daten in auskunftsdatei:
- schreibe ueberschrift;
- fuelle (f, kunde).
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code);
- BOUND FILIALDATEN VAR aktuelle filialdaten :: ds.
-
- schreibe daten dieser filiale in auskunftsdatei:
- schreibe ueberschrift;
- fuelle (f, aktuelle filialdaten.kunden).
- schreibe ueberschrift:
- write (f, " Kundenliste für " +
- invers ("Filiale " + text (filialnr)) + ":").
-END PROC kundenlisten aller filialen;
-PROC fuelle (FILE VAR f, KUNDENDATEI VAR kundendatei):
- INT VAR kundennummer;
- bereite datei vor;
- schreibe daten in datei.
-bereite datei vor:
- line (f);
- write(f," ============================================================");
-
- line (f,2);
- write(f," | Kun.Nr.| Nachname, Vorname | Geschlecht |");
- line (f);
- write(f," +--------+------------------------------------+------------+");
- line (f).
-schreibe daten in datei:
- FOR kundennummer FROM 1 UPTO max kunden REP
- IF kundendatei [kundennummer].nachname <> ""
- THEN schreibe in datei; line (f)
- FI
- PER;
- write(f," +--------+------------------------------------+------------+");
- line (f, 3).
-schreibe in datei:
- write (f, " |" + text (kundennummer + min kundennummer - 1, 6) + " | "
-
- + text (kundendatei [kundennummer].nachname + ",", 17) + " "
- + text (kundendatei [kundennummer].vorname, 16) + " | ");
- IF kundendatei [kundennummer].geschlecht = "m"
- THEN write (f, " männlich |")
- ELIF kundendatei [kundennummer].geschlecht = "w"
- THEN write (f, " weiblich |")
- ELSE write (f, " |")
- FI.
-END PROC fuelle;
-PROC kundeneinkaufsliste von zentrale (INT CONST kundennummer, FILE VAR f):
- INT VAR filialnr;
-
- pruefe kundennummer;
- beginne mit eigener filiale;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
- IF filialnr <> int (filialnummer) CAND
- exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- schreibe daten in zentralliste
- FI
- PER;
- werte zentralliste aus.
- pruefe kundennummer:
- INT CONST kundenindex :: kundennummer - min kundennr + 1;
-
- IF kundenindex < 1 OR kundenindex > max kunden
- THEN errorstop ("Unzulässige Kundennummer!")
- FI.
- beginne mit eigener filiale:
- KUNDENDATEN VAR aktueller kunde :: kunde [kundenindex];
- WARENDATEI VAR hilfsdatei;
- CONCR (hilfsdatei) := CONCR (artikel);
- ROW max artikel INT VAR kaeufe;
- INT VAR i;
- FOR i FROM 1 UPTO max artikel REP
- kaeufe [i] := einkaufsdatei [kundenindex][i]
- PER.
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code).
-
- schreibe daten in zentralliste:
- BOUND FILIALDATEN VAR aktuelle daten :: ds;
- IF aktueller kunde.nachname = ""
- THEN aktueller kunde := aktuelle daten.kunden [kundenindex]
- FI;
- FOR i FROM 1 UPTO max artikel REP
- kaeufe [i] INCR aktuelle daten.einkaeufe [kundenindex][i];
- IF hilfsdatei [i].artikelname = ""
- THEN hilfsdatei [i] := aktuelle daten.waren [i]
- FI
- PER.
- werte zentralliste aus:
- forget (ds);
- forget ("Auskunft: Zentrale", quiet);
-
- f := sequential file (output, "Auskunft: Zentrale");
- line (f);
- IF aktueller kunde.nachname = ""
- THEN write (f, " Ein Kunde mit Nr. " + text (kundenindex)
- + " ist in keiner Filiale bekannt.");
- line (f);
- write(f,
- " ============================================================");
- line (f,3);
- ELSE write (f, " Gesamteinkaufsliste " + anrede
- + invers (aktueller kundenname) + ":");
-
- fuelle (f, hilfsdatei, kaeufe)
- FI.
- anrede:
- IF aktueller kunde.geschlecht = "m"
- THEN "des Kunden "
- ELIF aktueller kunde.geschlecht = "w"
- THEN "der Kundin "
- ELSE "von "
- FI.
- aktueller kundenname:
- (aktueller kunde.vorname SUB 1) + ". " + aktueller kunde.nachname.
-END PROC kundeneinkaufsliste von zentrale;
-PROC kundeneinkaufsliste von filiale (INT CONST kundennummer, FILE VAR f):
- pruefe kundennummer;
- erstelle filialliste.
-
- pruefe kundennummer:
- INT CONST kundenindex :: kundennummer - min kundennr + 1;
- IF kundenindex < 1 OR kundenindex > max kunden
- THEN errorstop ("Unzulässige Kundennummer!")
- FI.
- erstelle filialliste:
- forget ("Auskunft: Filiale " + filialnummer, quiet);
- f := sequential file (output, "Auskunft: Filiale " + filialnummer);
- line (f);
- IF kunde [kundenindex].nachname = ""
- THEN schicke leere liste zurueck
- ELSE schreibe dateikopf;
- fuelle (f, artikel, einkaufsdatei [kundenindex])
-
- FI.
- schicke leere liste zurueck:
- write (f," Ein Kunde mit Nr. " + text (kundennummer) + " ist in "
- + "dieser Filiale nicht bekannt.");
- line (f);
- write (f,
- " ============================================================");
- line (f,3).
- schreibe dateikopf:
- write (f, " Einkaufsliste " + anrede +
- invers ((kunde [kundenindex].vorname SUB 1) + ". " +
- kunde [kundenindex].nachname) + ":").
- anrede:
- IF kunde [kundenindex].geschlecht = "m"
-
- THEN "des Kunden "
- ELIF kunde [kundenindex].geschlecht = "w"
- THEN "der Kundin "
- ELSE "von "
- FI.
-END PROC kundeneinkaufsliste von filiale;
-PROC kundeneinkaufslisten aller filialen (INT CONST kundennummer,FILE VAR f):
- INT VAR filialnr;
- pruefe kundennummer;
- bereite datei vor;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
- IF filialnr = int (filialnummer)
-
- THEN schreibe eigene daten in auskunftsdatei
- ELIF exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- schreibe daten in auskunftsdatei
- FI
- PER;
- forget (ds).
- pruefe kundennummer:
- INT CONST kundenindex :: kundennummer - min kundennr + 1;
- IF kundenindex < 1 OR kundenindex > max kunden
- THEN errorstop ("Unzulässige Kundennummer!")
- FI.
- bereite datei vor:
- forget ("Auskunft: Alle Filialen", quiet);
- f := sequential file (output, "Auskunft: Alle Filialen");
-
- line (f).
- schreibe eigene daten in auskunftsdatei:
- IF kunde [kundenindex].nachname = ""
- THEN write (f," Ein Kunde mit Nr. " + text (kundennummer)
- + " ist in " + invers ("Filiale " + filialnummer)
- + " nicht bekannt.");
- line (f);
- write(f,
- " ============================================================");
- line (f,3)
- ELSE write (f, " Einkaufsliste " + anrede hier +
- (kunde [kundenindex].vorname SUB 1) + ". " +
-
- kunde [kundenindex].nachname +
- " in " + invers ("Filiale " + filialnummer) + ":");
- fuelle (f, artikel, einkaufsdatei [kundenindex])
- FI.
- anrede hier:
- IF kunde [kundenindex].geschlecht = "m"
- THEN "des Kunden "
- ELIF kunde [kundenindex].geschlecht = "w"
- THEN "der Kundin "
- ELSE "von "
- FI.
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code);
-
- BOUND FILIALDATEN VAR aktuelle daten :: ds;
- KUNDENDATEN CONST aktueller kunde := aktuelle daten.kunden [kundenindex].
- schreibe daten in auskunftsdatei:
- IF aktueller kunde.nachname = ""
- THEN write (f," Ein Kunde mit Nr. " + text (kundennummer)
- + " ist in " + invers ("Filiale " + text (filialnr))
- + " nicht bekannt.");
- line (f);
- write(f,
- " ============================================================");
-
- line (f,3)
- ELSE write (f, " Einkaufsliste " + anrede +
- (aktueller kunde.vorname SUB 1) + ". " +
- aktueller kunde.nachname +
- " in " + invers ("Filiale " + text (filialnr)) + ":");
- fuelle (f, aktuelle daten.waren,
- aktuelle daten.einkaeufe [kundenindex])
- FI.
- anrede:
- IF aktueller kunde.geschlecht = "m"
- THEN "des Kunden "
- ELIF aktueller kunde.geschlecht = "w"
-
- THEN "der Kundin "
- ELSE "von "
- FI.
-END PROC kundeneinkaufslisten aller filialen;
-PROC fuelle (FILE VAR f, WARENDATEI CONST warendatei,
- ROW max artikel INT CONST einkaufszahlen):
- INT VAR artikelnummer;
- REAL VAR gesamtpreis, summe :: 0.0;
- bereite datei vor;
- schreibe daten in datei.
-bereite datei vor:
- line (f);
- write(f," ============================================================");
- line (f,2);
- write(f," | Art.Nr.| Artikelname | Anzahl | Preis | Gesamt |");
-
- line (f);
- write(f," +--------+-------------------+--------+---------+----------+");
- line (f).
-schreibe daten in datei:
- FOR artikelnummer FROM 1 UPTO max artikel REP
- IF einkaufszahlen [artikelnummer] > 0
- THEN schreibe in datei; line (f)
- FI
- PER;
- write(f," +--------+-------------------+--------+---------+----------+");
- line (f);
- write(f," Summe: " +
- text (summe,8,2));
-
- line (f, 3).
-schreibe in datei:
- gesamtpreis := real (einkaufszahlen [artikelnummer]) *
- warendatei [artikelnummer].preis;
- summe INCR gesamtpreis;
- write (f," |" + text(artikelnummer,5) + " | "
- + text(warendatei [artikelnummer].artikelname,17) + " | "
- + text(einkaufszahlen [artikelnummer],4) + " |"
- + text(warendatei [artikelnummer].preis,7,2) + " |"
- + text(gesamtpreis,8,2) + " |").
-
-END PROC fuelle;
-PROC lageruebersicht von zentrale (FILE VAR f):
- INT VAR filialnr;
- beginne mit eigener filiale;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
- IF filialnr <> int (filialnummer) CAND
- exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- schreibe daten in zentralliste
- FI
- PER;
- werte zentralliste aus.
- beginne mit eigener filiale:
-
- WARENDATEI VAR hilfsdatei;
- CONCR (hilfsdatei) := CONCR (artikel).
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code).
- schreibe daten in zentralliste:
- BOUND FILIALDATEN VAR aktuelle daten :: ds;
- INT VAR i;
- FOR i FROM 1 UPTO max artikel REP
- IF hilfsdatei [i].artikelname = ""
- THEN hilfsdatei [i] := aktuelle daten.waren [i]
- ELSE hilfsdatei [i].mindestbestand INCR aktuell.mindestbestand;
-
- hilfsdatei [i].bestand INCR aktuell.bestand
- FI
- PER.
- aktuell: aktuelle daten.waren [i].
- werte zentralliste aus:
- forget (ds);
- forget ("Auskunft: Zentrale", quiet);
- f := sequential file (output, "Auskunft: Zentrale");
- line (f);
- write (f, " Zentrale Lagerübersicht:");
- fuelle (f, hilfsdatei).
-END PROC lageruebersicht von zentrale;
-PROC lageruebersicht von filiale (FILE VAR f):
- forget ("Auskunft: Filiale " + filialnummer, quiet);
-
- f := sequential file (output, "Auskunft: Filiale " + filialnummer);
- schreibe dateikopf;
- fuelle (f, artikel).
- schreibe dateikopf:
- line (f);
- write (f, " Lagerübersicht:").
-END PROC lageruebersicht von filiale;
-PROC lageruebersichten aller filialen (FILE VAR f):
- INT VAR filialnr;
- bereite datei vor;
- FOR filialnr FROM 1 UPTO max filialen REP
- TEXT CONST aktuelle verwaltung ::
- hauptstelle + ".Filialverwaltung " + text (filialnr);
- IF filialnr = int (filialnummer)
-
- THEN schreibe eigene daten in auskunftsdatei
- ELIF exists task (aktuelle verwaltung)
- THEN hole daten dieser filiale;
- schreibe daten in auskunftsdatei
- FI
- PER;
- forget (ds).
- bereite datei vor:
- forget ("Auskunft: Alle Filialen", quiet);
- f := sequential file (output, "Auskunft: Alle Filialen").
- schreibe eigene daten in auskunftsdatei:
- line (f);
- write (f, " Lagerübersicht für " +
- invers ("Filiale " + filialnummer) + ":");
-
- fuelle (f, artikel).
- hole daten dieser filiale:
- init ds;
- call (task(aktuelle verwaltung), filialdaten holen code, ds, reply code);
- BOUND FILIALDATEN VAR aktuelle daten :: ds.
- schreibe daten in auskunftsdatei:
- line (f);
- write (f, " Lagerübersicht für " +
- invers ("Filiale " + text (filialnr)) + ":");
- fuelle (f, aktuelle daten.waren).
-END PROC lageruebersichten aller filialen;
-PROC fuelle (FILE VAR f, WARENDATEI CONST warendatei):
- INT VAR artikelnummer;
-
- bereite datei vor;
- schreibe daten in datei.
-bereite datei vor:
- line (f);
- write(f," ============================================================");
- line (f,2);
- write(f," | Art.Nr.| Artikelname | Preis | Min.Best.| Bestand |");
- line (f);
- write(f," +--------+-------------------+--------+----------+---------+");
- line (f).
-schreibe daten in datei:
- FOR artikelnummer FROM 1 UPTO max artikel REP
- IF warendatei[artikelnummer].artikelname <> ""
- THEN schreibe in datei; line (f)
-
- FI
- PER;
- write(f," +--------+-------------------+--------+----------+---------+");
- line (f, 3).
-schreibe in datei:
- write (f, " |" + text(artikelnummer,5) + " | "
- + text(warendatei[artikelnummer].artikelname,17) + " |"
- + text(warendatei[artikelnummer].preis,7,2) + " | "
- + text(warendatei[artikelnummer].mindestbestand,6)+" | "
- + text(warendatei[artikelnummer].bestand,6) + " |").
-END PROC fuelle;
-
-PROC initialisiere dateien:
- INT VAR kundennummer, artikelnummer;
- FOR kundennummer FROM 1 UPTO max kunden REP
- kunde [kundennummer].nachname := "";
- kunde [kundennummer].vorname := "";
- kunde [kundennummer].geschlecht := ""
- PER;
- FOR artikelnummer FROM 1 UPTO max artikel REP
- verkaufszahl [artikelnummer] := 0;
- artikel [artikelnummer].mindestbestand := 0;
- artikel [artikelnummer].bestand := 0;
- artikel [artikelnummer].artikelname := "";
-
- artikel [artikelnummer].preis := 0.0;
- FOR kundennummer FROM 1 UPTO max kunden REP
- einkaufsdatei[kundennummer][artikelnummer] := 0
- PER;
- PER
-END PROC initialisiere dateien;
-initialisiere dateien
-END PACKET ls warenhaus 2
-
-