PROGRAM DRUCK (INPUT,OUTPUT); (* FUER PASCAL 2.0 16.3.1987 FLORIAN MATTHES *) CONST ZPROSEITE=66; SPROZEILE=4; LEN =18; VAR BLATT:ARRAY[1..ZPROSEITE] OF STRING; NAME :STRING[20]; S : STRING[LEN]; CH,A,B:CHAR; LAST : INTEGER; (* LETZTER SATZ *) SEITE,ZEILE,I,J : INTEGER; INF,KOMMANDO,DRU,PAG: TEXT; PROCEDURE DISK; VAR NUMMER: INTEGER; TEXT : STRING; BEGIN READ(KOMMANDO,NUMMER,TEXT); IF NUMMER>=20 THEN BEGIN WRITELN('FEHLER AUF DISKETTE:'); WRITELN(NUMMER,':',TEXT); HALT; END END; (* DISK *) BEGIN (* MAIN *) WRITELN(#147 #13 #13 ' M-CODE-DRUCK'); WRITELN(' ££££££££££££'); WRITE(#13 #13 #13 'FILENAMEN:'); READLN(NAME); (***************) (* LESE-FILE *) (***************) OPEN(KOMMANDO,8,15,'I0:'); DISK; OPEN(INF,8,3,NAME+',P,R'); DISK; (***************) (*HEADER LESEN *) (***************) READ(INF,CH,CH,CH); IF ORD(CH)<>LEN THEN BEGIN WRITELN('FEHLER:SATZLAENGE',ORD(CH)); WRITELN('······ STATT', LEN); HALT END; READ(INF,A,B); LAST:=ORD(A) + 256*ORD(B); FOR I:= 1 TO 3*LEN+2 DO READ(INF,CH); (***************) (*INIT DRUCKER *) (*66 ZEILEN *) (*PAGING ON *) (***************) OPEN(DRU,4,10);WRITELN(DRU); CLOSE(DRU); OPEN(PAG,4,3) ;WRITELN(PAG, CHR(ZPROSEITE)); OPEN(DRU,4,0) ;WRITE (DRU, CHR(147)); SEITE:=1; S[0]:=CHR(LEN); WHILE NOT EOF(INF) DO BEGIN BLATT[1]:='FILE: ' + NAME + '(' + STR(SEITE:0:0) + ')'; FOR ZEILE:=2 TO ZPROSEITE DO BLATT[ZEILE]:=''; FOR I:=1 TO SPROZEILE DO FOR ZEILE:=2 TO ZPROSEITE DO BEGIN IF NOT EOF(INF) THEN BEGIN FOR J:= 1 TO LEN DO READ(INF,S[J]); BLATT[ZEILE]:=BLATT[ZEILE] + 'Ý' + S; END END; FOR ZEILE:=1 TO ZPROSEITE DO WRITELN(DRU,BLATT[ZEILE]); SEITE:=SEITE+1 END; (*******************) (*FILES SCHLIESSEN *) (*******************) WRITELN(#13 'AUSGABE BEENDET.'); CLOSE(INF); CLOSE(KOMMANDO); CLOSE(DRU); CLOSE(PAG) END.