WITH Text_IO; USE Text_IO; WITH SEQUENTIAL_IO; PROCEDURE ToSeq IS SUBTYPE KeyType IS STRING(1..5); SUBTYPE NameType IS STRING(1..10); SUBTYPE AddrType IS STRING(1..20); SUBTYPE FoneType IS STRING(1..8); TYPE MastType IS RECORD Key : KeyType; FName : NameType; LName : NameType; MI : CHARACTER; Address: AddrType; Phone : FoneType; END RECORD; PACKAGE SeqPack IS NEW SEQUENTIAL_IO(MastType); USE SeqPack; SUBTYPE FNameType IS STRING(1..20); Input : Text_IO.FILE_TYPE; Output : SeqPack.FILE_TYPE; IName : FNameType; OName : FNameType; ISize, OSize : NATURAL; Monkey : MastType; PROCEDURE GetRec(FileIn : IN OUT Text_IO.FILE_TYPE ; M : IN OUT MastType) IS Buffer : STRING(1..80); Last : NATURAL; BEGIN GET_LINE(FileIn, Buffer, Last); M.Key := Buffer(1..5); M.FName := Buffer(6..15); M.LName := Buffer(16..25); M.MI := Buffer(26); M.Address := Buffer(27..46); M.Phone := Buffer(47..54); END GetRec; PROCEDURE PutRec(FileOut : IN OUT SeqPack.FILE_TYPE ; RecOut : IN MastType) IS BEGIN WRITE(FileOut, RecOut); END PutRec; BEGIN PUT("Enter text file name: "); GET_LINE(IName, ISize); PUT("Enter sequential file name: "); GET_LINE(OName, OSize); OPEN (Input, IN_FILE, IName(1..ISize) ); CREATE(Output, Out_File, OName(1..OSize) ); WHILE NOT END_OF_FILE(Input) LOOP GetRec(Input , Monkey); PutRec(Output, Monkey); END LOOP; CLOSE(Input); CLOSE(Output); END ToSeq;