(*****************************************) (* (c) Copyright 1987 by Jens Kalski *) (*****************************************) (* Programm : WS-DECP *) (* Version : 1.0 (02.03.1988) *) (* Sprache : TURBO-PASCAL 3.0 *) (* Programmiert auf : Schneider CPC464 *) (* Betriebssystem : Orig. f. CP/M 2.2 *) (* Kurzbeschreibung : Umwandlung von .CP *) (* in ^K-Markierungen *) (*****************************************) (*$U-,C-*) PROGRAM WS_DECP; CONST imAbsatz : BOOLEAN = FALSE; ZeilenAnf : BOOLEAN = TRUE; VAR i,Fehler, BLaenge : INTEGER; c,c2,cH, cC,cP : CHAR; Zeile : STRING(.10.); Name_In, Name_Out : STRING (.14.); Dat_In, Dat_Out : TEXT; BEGIN CrtInit; ClrScr; LowVideo; WriteLn(' WS-DECP 1.0 (02.03.1988) '); NormVideo; WriteLn('(C) Copyright by Jens Kalski'); WriteLn; IF ParamCount = 1 THEN BEGIN Name_In:=ParamStr(1); Name_Out:=Name_In; i:=Pos('.',Name_Out); IF i <> 0 THEN Name_Out:=Copy(Name_Out,1,Pred(i)); WriteLn('Ich bearbeite ',Name_In); WriteLn; Assign(Dat_In,Name_In); (*$I-*) Reset(Dat_In); (*$I+*) IF IOResult = 0 THEN BEGIN Assign(Dat_Out,Name_Out+'$$$'); (*$I-*) ReWrite(Dat_Out); (*$I+*) IF IOResult = 0 THEN BEGIN WHILE NOT EoF(Dat_In) DO BEGIN Read(Dat_In,c); c2:=Chr(Ord(c) AND 127); CASE c2 OF '.' : IF ZeilenAnf THEN BEGIN cC:=#0; cP:=#0; IF NOT EoF(Dat_In) THEN Read(Dat_In,cC); IF NOT EoF(Dat_In) THEN Read(Dat_In,cP); IF (UpCase(cC) = 'C') AND (UpCase(cP) = 'P') THEN BEGIN Write('C'); Zeile:=''; cH:=#0; WHILE (NOT EoF(Dat_In)) AND (cH <> #10) DO BEGIN Read(Dat_In,cH); cH:=UpCase(Chr(Ord(cH) AND 127)); IF cH > #31 THEN Zeile:=Zeile+cH; END; REPEAT Val(Zeile,BLaenge,Fehler); IF Fehler<>0 THEN Delete(Zeile,Fehler,1); UNTIL (Fehler=0) OR (Length(Zeile) = 0); IF Length(Zeile) = 0 THEN BLaenge:=0; IF BLaenge > 0 THEN BEGIN Write(Dat_Out,^K); imAbsatz:=TRUE; END; END ELSE BEGIN Write(Dat_Out,'.'); ZeilenAnf:=FALSE; IF cC <> #0 THEN Write(Dat_Out,cC); IF cP <> #0 THEN Write(Dat_Out,cP); IF imAbsatz THEN BLaenge:=Succ(BLaenge); END; END ELSE Write(Dat_Out,c); #13 : BEGIN ZeilenAnf:=TRUE; Write(Dat_Out,c); IF imAbsatz THEN IF NOT EoF(Dat_In) THEN BEGIN Read(Dat_In,c); Write(Dat_Out,c); c2:=Chr(Ord(c) AND 127); IF c2 = #10 THEN BEGIN BLaenge:=Pred(BLaenge); IF BLaenge <= 0 THEN BEGIN Write(Dat_Out,^K); imAbsatz:=FALSE; END; END; END; END; #10 : Write(Dat_Out,c); ELSE ZeilenAnf:=FALSE; Write(Dat_Out,c); END; (* ELSE/CASE *) END; Close(Dat_In); ReName(Dat_In,Name_Out+'.BAK'); Close(Dat_Out); ReName(Dat_Out,Name_In); WriteLn; WriteLn; WriteLn('Fertig. Bitte }berpr}fen Sie den Text.'); END ELSE BEGIN LowVideo; Write(' FEHLER : '); NormVideo; WriteLn(Name_Out,'.$$$ kann nicht geoeffnet werden !'); Close(Dat_In); END; END ELSE BEGIN LowVideo; Write(' FEHLER : '); NormVideo; WriteLn(Name_In,' nicht gefunden !'); END; END ELSE BEGIN WriteLn('Bitte rufen Sie das Programm folgenderma~en auf :'); WriteLn; WriteLn('WS-DECP BEISPIEL.TXT'); WriteLn; LowVideo; WriteLn(' Die Eingabedatei heisst BEISPIEL.BAK '); WriteLn(' Die Ausgabedatei heisst BEISPIEL.TXT '); NormVideo; END; END. (* -------------------------- Programmende -------------------------- *)