(****************************************) (* (c) Copyright 1987 by Jens Kalski *) (****************************************) (* Programm : WS-PAAR *) (* Version : 2.0 (28.02.1987) *) (* Sprache : TURBO-PASCAL 3.0 *) (* Programmiert auf : Schneider CPC464 *) (* Betriebssystem : CP/M 2.2 *) (* Kurzbeschreibung : Test auf paariges *) (* Vorkommen von Druckersteuerzeichen *) (****************************************) (*$U-,C-*) PROGRAM WS_PAAR; LABEL Ex; CONST OK : ARRAY(.BOOLEAN.) OF STRING(.10.) = (^X'Ungerade'^X,'OK'); Puffer_P_Size = 256; Puffer_B_Size = 32767; VAR b : BYTE; gelesen_P, Zaehler : INTEGER; Flag : ARRAY(.0..255.) OF BOOLEAN; Puffer : ARRAY(.0..Puffer_B_Size.) OF BYTE; Name_In : STRING(.14.); Dat_In : FILE; BEGIN CrtInit; ClrScr; (* Bildschirm loeschen *) LowVideo; WriteLn(' WS-PAAR 2.0 (28.02.1987) '); (* Ueberschrift und Copyright *) NormVideo; WriteLn('(C) Copyright by Jens Kalski, Heidbergredder 27, 2050 Hamburg 80'); WriteLn; IF ParamCount=1 THEN BEGIN (* Parameter uebergeben *) Name_In:=ParamStr(1); (* Dateinamen uebernehmen *) Assign(Dat_In,Name_In); (* Dat_In anmelden *) (*$I-*) Reset(Dat_In); (*$I+*) (* Dat_In oeffnen *) IF IOResult=0 THEN BEGIN (* Oeffnen erfolgreich *) Write('Getestet wird '); LowVideo; WriteLn(' ',Name_In,' '); NormVideo; WriteLn; FillChar(Flag,SizeOf(Flag),Ord(TRUE)); REPEAT (* Solange Zeichen in Dat_In *) BlockRead(Dat_In,Puffer,Puffer_P_Size,gelesen_P); (* Blocklesen *) IF gelesen_P > 0 THEN BEGIN FOR Zaehler:=0 TO Pred(gelesen_P SHL 7) DO BEGIN b:=Puffer(.Zaehler.); CASE b OF 26 : GOTO Ex; (* Dateiende *) 138 : Write('*'); (* Seitenumbruch *) ELSE Flag(.b.):=NOT Flag(.b.); (* Alle Zeichen *) END; END; END; UNTIL (gelesen_P = 0) OR (b = 26); Ex: Close(Dat_In); (* Dat_In schliessen *) WriteLn; (* Ergebnisausgabe *) WriteLn('^A^N --> ',OK(.(Flag(.1.) = Flag(.129.)) = (Flag(.14.) = Flag(.142.)).)); WriteLn('^B --> ',OK(. Flag(.2.) = Flag(.130.).)); WriteLn('^D --> ',OK(. Flag(.4.) = Flag(.132.).)); WriteLn('^P --> ',OK(. Flag(.16.) = Flag(.144.).)); WriteLn('^Q --> ',OK(. Flag(.17.) = Flag(.145.).)); WriteLn('^R --> ',OK(. Flag(.18.) = Flag(.146.).)); WriteLn('^S --> ',OK(. Flag(.19.) = Flag(.147.).)); WriteLn('^T --> ',OK(. Flag(.20.) = Flag(.148.).)); WriteLn('^V --> ',OK(. Flag(.22.) = Flag(.150.).)); WriteLn('^W --> ',OK(. Flag(.23.) = Flag(.151.).)); WriteLn('^X --> ',OK(. Flag(.24.) = Flag(.152.).)); WriteLn('^Y --> ',OK(. Flag(.25.) = Flag(.153.).)); END ELSE WriteLn('Fehler: Die Dat_In ',Name_In, (* IOresult <> 0 *) ' kann nicht ge|ffnet werden!'); END ELSE BEGIN (* Programm ohne Parameter aufgerufen *) WriteLn('Bitte rufen Sie das Programm folgenderma~en auf :'); WriteLn; LowVideo; WriteLn('WS-PAAR BEISPIEL.TXT'); NormVideo; WriteLn; WriteLn('Getestet wird auf folgende Eigenschaften'); WriteLn('der WORDSTAR-Textdatei:'); WriteLn; WriteLn('(Anzahl der ^A) = (Anzahl der ^N) ?'); WriteLn('^B,^D,^P,^S,^T,^V,^X und ^Y paarig ?'); END; END.