home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol028
/
compare.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1984-04-29
|
3KB
|
102 lines
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.