(*PROGRAM DRUCK*); (*FORMATIERTER AUSDRUCK DER TELEFONDATEI*) (*0 ..19 NAME (20 ZEICHEN) *) (*20..40 ANSCHRIFT (21 ZEICHEN) *) (*41..44 PLZ (4 ZEICHEN) *) (*45..64 WOHNORT (20 ZEICHEN) *) (*65..79 TELEFON (15 ZEICHEN) *) CONST MAXZEILEN=38; TYPE SATZ= RECORD NAME:ARRAY[0..19] OF CHAR; ADR :ARRAY[0..20] OF CHAR; PLZ :ARRAY[0..4 ] OF CHAR; ORT :ARRAY[0..19] OF CHAR; TEL :ARRAY[0..14] OF CHAR END; VAR LFD,LETZTES:CHAR; ZEILE,I:INTEGER; EOF:BOOLEAN; EINTRAG:SATZ; PROCEDURE GETKEY; VAR C:CHAR; BEGIN WRITELN("(WEITER MIT TASTE)"); REPEAT READ(C) UNTIL C<>CHR(0); END; PROCEDURE LESEN; VAR I:INTEGER; BEGIN WITH EINTRAG DO BEGIN CHKIN(1); FOR I:=0 TO 19 DO READ(NAME[I]); FOR I:=0 TO 20 DO READ(ADR [I]); FOR I:=0 TO 3 DO READ(PLZ [I]); FOR I:=0 TO 19 DO READ(ORT [I]); FOR I:=0 TO 14 DO READ(TEL [I]); LFD:=NAME[0]; CLRCHN; END; EOF:=(PEEK(144)AND 255)<>0 END;(*LESEN*) BEGIN (*MAIN*) WRITELN("DRUCKER EINSCHALTEN!");GETKEY; OPEN(6,4,6,"");WRITELN(#6,CHR(38 ));CLOSE(6); (*FUER LINIERTES PAPIER*) OPEN(1,8,3,"TELEFON,S,R"); OPEN(7,4,7,""); ZEILE:=1;LETZTES:=CHR(0);LESEN; WHILE NOT EOF DO BEGIN IF(LFD<>LETZTES)OR(ZEILE>MAXZEILEN) THEN BEGIN (*BLATTWECHSEL*) IF LETZTES<>CHR(0) THEN BEGIN WRITE(#7,CHR(12)); WRITELN("BITTE EIN NEUES BLATT!"); GETKEY; END ELSE WRITE(#7,CHR(147)); WRITE(#7," ÁDRESSE: "); WRITE(#7," "); WRITE(#7,"ÔELEFON: "); WRITELN(#7,CHR(14),CHR(14),LFD,CHR(13)); ZEILE:=3; END; WITH EINTRAG DO BEGIN CHKOUT(7); WRITE(" "); FOR I:=0 TO 19 DO WRITE(NAME[I]); WRITE(" "); FOR I:=0 TO 14 DO WRITE(TEL [I]); WRITE(CHR(13)); WRITE(" "); FOR I:=0 TO 20 DO WRITE(ADR [I]); WRITE(CHR(13));ZEILE:=ZEILE+2; IF ORT[0]<>" " THEN BEGIN FOR I:=0 TO 3 DO WRITE(PLZ [I]); WRITE(" "); FOR I:=0 TO 19 DO WRITE(ORT [I]); WRITE(CHR(13),CHR(13));ZEILE:=ZEILE+2; END; CLRCHN; END; LETZTES:=LFD;LESEN END; WRITELN(#7,CHR(19)); WRITELN("AUSGABE BEENDET"); CLOSE(1);CLOSE(6);CLOSE(7); END.