PROGRAM COMPARE;(*$I+,S+ *) (* THIS PROGRAM WILL DO A BYTE BY BYTE COMPARE OF TWO FILES. UPON EXECUTION THE OPERATOR WILL BE ASKED THE NAME OF THE TWO INPUT FILES TO BE COMPARED AND THE NAME OF THE OUTPUT FILE THAT THE COMPARE INFO IS TO BE DUMPED TO. *) CONST BLANK14=' '; TYPE BYTE=0..255; STR4=STRING 4; STR16=ARRAY[1..16] OF CHAR; VAR NOCOMPARE: BOOLEAN; ABYTE1,ABYTE2: BYTE; FVAR1,FVAR2: FILE OF BYTE; FVAR3: TEXT; HEXSTRING: STR16; FNAME1,FNAME2,FNAME3: STRING 14; K: INTEGER; I: REAL; (****************************************************************) PROCEDURE CNVRTTOHEX(INT: INTEGER;VAR HEXVAL: STR4); CONST HEX1000=4096; VAR K,DIVISOR,J: INTEGER; BEGIN HEXVAL:=' '; DIVISOR:=HEX1000; FOR K:=1 TO 4 DO BEGIN J:=INT DIV DIVISOR; INT:=INT MOD DIVISOR; HEXVAL[K]:=HEXSTRING[J+1]; DIVISOR:=DIVISOR DIV 16; END; END; (****************************************************************) PROCEDURE LOGDIFF; VAR T1:STR4; TEMPINT: INTEGER; BEGIN WRITE(FVAR3,I:5:0,' '); TEMPINT:=ABYTE1; CNVRTTOHEX(TEMPINT,T1); WRITE(FVAR3,T1[3],T1[4],' '); TEMPINT:=ABYTE2; CNVRTTOHEX(TEMPINT,T1); WRITELN(FVAR3,T1[3],T1[4]); END; (****************************************************************) BEGIN HEXSTRING:='0123456789ABCDEF'; NOCOMPARE:=FALSE; FNAME1:=BLANK14; FNAME2:=BLANK14; FNAME3:=BLANK14; WRITE('ENTER COMPARE FILE NUMBER 1-- '); READLN(FNAME1); WRITE('ENTER COMPARE FILE NUMBER 2-- '); READLN(FNAME2); WRITE('ENTER OUTPUT LOG FILE-- '); READLN(FNAME3); RESET(FNAME1,FVAR1); RESET(FNAME2,FVAR2); REWRITE(FNAME3,FVAR3); I:=1; WRITELN(FVAR3,'COMPARING ',FNAME1,' WITH ',FNAME2); WRITELN('COMPARING ',FNAME1,' WITH ',FNAME2); WRITELN('VERSION 0.0 ,2/22/81 OF COMPARE PROGRAM'); WHILE ((NOT EOF(FVAR1)) AND (NOT EOF(FVAR2))) DO BEGIN READ(FVAR1,ABYTE1); READ(FVAR2,ABYTE2); IF ABYTE1<>ABYTE2 THEN BEGIN LOGDIFF; NOCOMPARE:=TRUE; END; I:=I+1; END; IF (EOF(FVAR1) AND (NOT EOF(FVAR2))) THEN BEGIN WRITELN(FVAR3,FNAME2,' IS LONGER THAN ',FNAME1); NOCOMPARE:=TRUE; END; IF ((NOT EOF(FVAR1)) AND EOF(FVAR2)) THEN BEGIN WRITELN(FVAR3,FNAME1,' IS LONGER THAN ',FNAME2); NOCOMPARE:=TRUE; END; IF NOT NOCOMPARE THEN WRITELN(FVAR3,' BOTH FILES COMPARED COMPLETELY WITH EACH OTHER'); WRITELN(FVAR3,' THERE WERE ',(I-1):2:0,' CHARACTERS READ'); END. .