Musterlösung zu Aufgabe 5 -- PersonsList.m2
IMPLEMENTATION MODULE PersonsList;
IMPORT Persons;
FROM StdIO IMPORT FILE;
FROM Storage IMPORT ALLOCATE;
TYPE
PersList = POINTER TO ListElement;
ListElement = RECORD
person: Persons.PersDat;
next: PersList
END;
PROCEDURE InitPersList(fromFile: FILE;
VAR persList: PersList): BOOLEAN;
(* Separator is whiteSpace -
* no check !!!
* FALSE, if error
*)
VAR
p: Persons.PersDat;
pl: PersList;
BEGIN
persList := NIL;
WHILE ( Persons.ReadRec(fromFile, p) )
DO
NEW(pl);
IF pl = NIL THEN RETURN FALSE END;
pl^.person := p;
pl^.next := persList;
persList := pl;
END;
RETURN TRUE;
END InitPersList;
PROCEDURE WritePersList(f: FILE; persList: PersList);
(* writes the whole List to open stream f
*)
VAR pl: PersList;
BEGIN
pl := persList;
WHILE pl <> NIL DO
Persons.WriteRec(f,pl^.person);
pl := pl^.next;
END;
END WritePersList;
BEGIN
END PersonsList.
Musterlösung zu Aufgabe 5 || Übungen || Vorlesung || SS 97 || SAI
Franz Schweiggert, 13.06.1997