PROGRAM SONDER(INPUT,OUTPUT); (*AUSDRUCK MIT SONDERZEICHEN FUER EDITOR-FILES *) (*INCLUDE FILE ERROR *) (*1.11.1985 FLORIAN MATTHES *) LABEL 9; CONST MAXCHAR=63;LCHAR=32; MAXS=80; NORMALVOR=36; NULLVOR =21; KURZ1VOR =14; KURZ2VOR =22; TYPE CHARDEF=RECORD C:PACKED ARRAY[0..7] OF CHAR; END; VAR CHARTAB:ARRAY[0..MAXCHAR] OF CHARDEF; ZEILE:ARRAY[1..MAXS]OF CHAR; NAME:ARRAY[1..20]OF CHAR; I,L,Z,LEN,A,V:INTEGER; VOR,C,N,E,F:CHAR; INF,KOMMANDO:TEXT; PRT,USR,PSP,SML:TEXT; (*$"SONDER1.INC"*) PROCEDURE PRINTDEUTSCH; CONST EXCH="@";CR=141; VAR I,S:INTEGER; LAST,LFD,Z:CHAR; BEGIN LFD:=ZEILE[1];LAST:="?";I:=2;S:=1; ZEILE[L+1]:=" ";(*DUMMY ZEICHEN AM ZEILENENDE*) WHILE I<=L+1 DO BEGIN Z:=ZEILE[I]; IF Z<>EXCH THEN BEGIN WRITE(SML,LFD);LFD:=Z;I:=I+1;S:=S+1 END ELSE BEGIN (*SONDERZEICHEN BESTIMMEN:*) CASE LFD OF "A":LFD:="0";"U":LFD:="2";"O":LFD:="4"; "Á":LFD:="1";"Õ":LFD:="3";"Ï":LFD:="5"; "S":LFD:="6" ELSE END;(*CASE*) WITH CHARTAB[ORD(LFD)-LCHAR] DO BEGIN WRITE(SML,CHR(CR)); WRITELN(USR,C[0],C[1],C[2],C[3], C[4],C[5],C[6],C[7]); WRITE(SML,CHR(254):S,CHR(CR)); WRITE(SML," " :S); END; I:=I+2;S:=S+1;LFD:=ZEILE[I-1] END;(*SONDERZEICHEN*) END; WRITELN(SML) END;(*PRINTDEUTSCH*) BEGIN WRITELN(CHR(147),CHR(17),CHR(17), "SONDERZEICHEN":17); WRITELN("·············":17);WRITELN; OPEN(KOMMANDO,8,15,"I0"); READTABLE;DISK; REPEAT WRITELN;WRITELN("FILENAMEN:");I:=1; REPEAT READ(NAME[I]);I:=I+1 UNTIL EOLN; NAME[I-1]:=",";NAME[I ]:="P"; NAME[I+1]:=",";NAME[I+2]:="R"; OPEN(INF,8,3,NAME);DISK; (*HEADER LESEN:*) READ(INF,E,E,E);L:=ORD(E); READ(INF,E,F);LEN:=ORD(E)+256*ORD(F)-1; FOR I:=1 TO 3*L+2 DO READ(INF,E); WRITELN; WRITELN("SPALTEN:3..",L :4); WRITELN("ZEILEN: 1..",LEN:4); L:=L-2;IF L+1>MAXS THEN ERROR(2); FOR I:=L TO MAXS DO ZEILE[I]:=" "; (*DRUCKER INITIALISIEREN:*) OPEN(PRT,4,10);WRITELN(PRT);CLOSE(PRT); OPEN(PRT,4,0);(*GROSSBUCHSTABEN *) OPEN(USR,4,5);(*SONDERZEICHENDEF.*) OPEN(PSP,4,6);(*ZEILENABSTAND *) OPEN(SML,4,7);(*KLEINBUCHSTABEN *) READ(INF,VOR,C);A:=NORMALVOR; IF VOR<>" " THEN ERROR(1); FOR Z:=0 TO LEN DO BEGIN FOR I:= 1 TO L DO READ(INF,ZEILE[I]); IF Z=LEN THEN VOR:=" " ELSE BEGIN READ(INF,VOR,N) END; CASE VOR OF " ":BEGIN V:=A;A:=NORMALVOR END; "=":BEGIN V:=0 END; "+":BEGIN V:=A;A:=KURZ1VOR END; "-":BEGIN V:=KURZ1VOR;A:=KURZ2VOR END; "0":BEGIN V:=NULLVOR; A:=NORMALVOR END ELSE BEGIN ERROR(3);V:=A;A:=NORMALVOR END END;(*CASE*) WRITELN(PSP,CHR(V)); CASE C OF " ":WRITELN(SML,ZEILE); "G":WRITELN(PRT,ZEILE); "U":PRINTUSER; "D":PRINTDEUTSCH ELSE BEGIN ERROR(4);WRITELN(SML,ZEILE) END END;(*CASE*); C:=N;(*ZEICHENSATZ NAECHSTE ZEILE*) END; 9:CLOSE(INF);CLOSE(KOMMANDO); CLOSE(PRT);CLOSE(USR);CLOSE(PSP);CLOSE(SML); WRITELN("AUSGABE BEENDET."); WRITELN;WRITE("WEITERE DATEIEN? N?"); READLN(C); UNTIL C="N"; END.