const MaxNumberOfEntries = 20; type EntryName = string[40]; Entry = record ItemNumber : Integer; Item : EntryName; end; var EntryFile : file of Entry; EntryRec : Entry; I : Integer; Pnr : Integer; Choice : Char; procedure Print; begin WRITELN(lst,chr(30),chr(31)); Reset(EntryFile); for I := 1 to MaxNumberOfEntries do begin Read(EntryFile,EntryRec); With EntryRec do begin if Item <> '' then Writeln(Lst,ItemNumber,' ',Item); end; end; for I := 1 to 8 do begin Writeln(Lst); end; end; PROCEDURE DelEntry; begin Reset(EntryFile); Repeat GoToXY(5,22);ClrEol;Write('Item Number(0 = STOP)?'); Readln(Pnr); If Pnr in [1..MaxNumberOfEntries] then begin Seek(EntryFile,Pnr); with EntryRec do begin ItemNumber := Pnr; ClrEol; end; Seek(EntryFile,Pnr-1); Write(EntryFile,EntryRec); end; Reset(EntryFile);ClrScr; For I := 1 to MaxNumberOfEntries do begin With EntryRec do begin Read(EntryFile,EntryRec); Writeln(ItemNumber,' ',Item); end; end; until (Pnr = 0); end; procedure AddEntry; begin Reset(EntryFile); repeat GoToXY(5,22);ClrEol;Write('Item Number (0 = STOP)? '); Readln(Pnr); If Pnr in [1..MaxNumberOfEntries] then begin Seek(EntryFile,Pnr); with EntryRec do begin ItemNumber := Pnr; ClrEol; Write('Entry: '); Readln(Item); end; Seek(EntryFile,Pnr-1); Write(EntryFile,EntryRec); end; Reset(EntryFile);ClrScr; For I := 1 to MaxNumberOfEntries do begin With EntryRec do begin Read(EntryFile,EntryRec); Writeln(ItemNumber,' ',Item); end; end; until (Pnr = 0); end; {program SPAD} BEGIN Assign(EntryFile,'ENTRY.DTA'); Reset(EntryFile);ClrScr; For I := 1 to MaxNumberOfEntries do begin With EntryRec do begin Read(EntryFile,EntryRec); Writeln(ItemNumber,' ',Item); end; end; Repeat Repeat GoToXY(3,22);Write(' (A)dd (D)elete (E)xit (P)rint '); Read(Kbd,Choice); Until (Choice in ['e','a','E','A','p','P','d','D']); Case Choice of 'a','A' : AddEntry; 'p','P' : Print; 'd','D' : DelEntry; 'e','E' : begin ClrScr; Halt; end; end; until (Choice in ['e','E']); Close(EntryFile); end.