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

  1. PROGRAM COMPARE;(*$I+,S+  *)
  2. (* THIS PROGRAM WILL DO A BYTE BY BYTE COMPARE
  3.  OF TWO FILES. UPON EXECUTION THE OPERATOR WILL
  4.  BE ASKED THE NAME OF THE TWO INPUT FILES TO BE
  5.  COMPARED AND THE NAME OF THE OUTPUT FILE THAT THE COMPARE INFO
  6.  IS TO BE DUMPED TO. *)
  7. CONST
  8.  BLANK14='              ';
  9. TYPE
  10.  BYTE=0..255;
  11.  STR4=STRING 4;
  12.  STR16=ARRAY[1..16] OF CHAR;
  13. VAR
  14.  NOCOMPARE: BOOLEAN;
  15.  ABYTE1,ABYTE2: BYTE;
  16.  FVAR1,FVAR2: FILE OF BYTE;
  17.  FVAR3: TEXT;
  18.  HEXSTRING: STR16;
  19.  FNAME1,FNAME2,FNAME3: STRING 14;
  20.  K: INTEGER;
  21.  I: REAL;
  22. (****************************************************************)
  23. PROCEDURE CNVRTTOHEX(INT: INTEGER;VAR HEXVAL: STR4);
  24.  CONST
  25.   HEX1000=4096;
  26.  VAR
  27.   K,DIVISOR,J: INTEGER;
  28.  BEGIN
  29.   HEXVAL:='    ';
  30.   DIVISOR:=HEX1000;
  31.   FOR K:=1 TO 4 DO
  32.    BEGIN
  33.     J:=INT DIV DIVISOR;
  34.     INT:=INT MOD DIVISOR;
  35.     HEXVAL[K]:=HEXSTRING[J+1];
  36.     DIVISOR:=DIVISOR DIV 16;
  37.    END;
  38.  END;
  39. (****************************************************************)
  40.  PROCEDURE LOGDIFF;
  41.   VAR
  42.    T1:STR4;
  43.    TEMPINT: INTEGER;
  44.   BEGIN
  45.    WRITE(FVAR3,I:5:0,'  ');
  46.    TEMPINT:=ABYTE1;
  47.    CNVRTTOHEX(TEMPINT,T1);
  48.    WRITE(FVAR3,T1[3],T1[4],'  ');
  49.    TEMPINT:=ABYTE2;
  50.    CNVRTTOHEX(TEMPINT,T1);
  51.    WRITELN(FVAR3,T1[3],T1[4]);
  52.   END;
  53. (****************************************************************)
  54. BEGIN
  55.  HEXSTRING:='0123456789ABCDEF';
  56.  NOCOMPARE:=FALSE;
  57.  FNAME1:=BLANK14;
  58.  FNAME2:=BLANK14;
  59.  FNAME3:=BLANK14;
  60.  WRITE('ENTER COMPARE FILE NUMBER 1-- ');
  61.  READLN(FNAME1);
  62.  WRITE('ENTER COMPARE FILE NUMBER 2-- ');
  63.  READLN(FNAME2);
  64.  WRITE('ENTER OUTPUT LOG FILE-- ');
  65.  READLN(FNAME3);
  66.  RESET(FNAME1,FVAR1);
  67.  RESET(FNAME2,FVAR2);
  68.  REWRITE(FNAME3,FVAR3);
  69.  I:=1;
  70.  WRITELN(FVAR3,'COMPARING ',FNAME1,' WITH ',FNAME2);
  71.  WRITELN('COMPARING ',FNAME1,' WITH ',FNAME2);
  72.  WRITELN('VERSION 0.0 ,2/22/81 OF COMPARE PROGRAM');
  73.  WHILE ((NOT EOF(FVAR1)) AND (NOT EOF(FVAR2))) DO
  74.   BEGIN
  75.    READ(FVAR1,ABYTE1);
  76.    READ(FVAR2,ABYTE2);
  77.    IF ABYTE1<>ABYTE2
  78.     THEN
  79.      BEGIN
  80.       LOGDIFF;
  81.       NOCOMPARE:=TRUE;
  82.      END;
  83.    I:=I+1;
  84.    END;
  85.  IF (EOF(FVAR1) AND (NOT EOF(FVAR2)))
  86.   THEN
  87.    BEGIN
  88.     WRITELN(FVAR3,FNAME2,' IS LONGER THAN ',FNAME1);
  89.     NOCOMPARE:=TRUE;
  90.    END;
  91.  IF ((NOT EOF(FVAR1)) AND EOF(FVAR2))
  92.   THEN
  93.    BEGIN
  94.     WRITELN(FVAR3,FNAME1,' IS LONGER THAN ',FNAME2);
  95.     NOCOMPARE:=TRUE;
  96.    END;
  97.  IF NOT NOCOMPARE
  98.   THEN
  99.    WRITELN(FVAR3,' BOTH FILES COMPARED COMPLETELY WITH EACH OTHER');
  100.  WRITELN(FVAR3,' THERE WERE ',(I-1):2:0,' CHARACTERS READ');
  101.  END.
  102.