#-h- cmp.r 2281 asc 07-may-80 12:10:24 #-h- main 567 asc 07-may-80 12:10:07 #--------------------------------------------------------------------- # include symbol definitions # include symbols #-------------------------------------------------------------------- ## cmp -- main program #BKY subroutine driver # call initr4 # call cmp # call endr4 # end #BKY #assembly code main program (used to avoid loading fortran I/O) #BKY % #BKY ident main #BKY entry main #BKY vfd 42/0lmain,18/main #BKY ext driver #BKY rj uzero00 #BKY rj driver #BKY end main #BKY% #-h- cmps 1180 asc 07-may-80 12:10:08 ## cmp - compare two files for equality # subroutine cmp subroutine main character arg1(MAXLINE), arg2(MAXLINE) , stdin(2) character line1(MAXLINE), line2(MAXLINE) integer equal, getarg, getlin, open integer infil1, infil2, lineno, m1, m2 data stdin/MINUS, EOS/ if (getarg(1, arg1, MAXLINE) == EOF | (arg1(1) == QMARK & arg1(2) == EOS)) call error ('usage: cmp file1 [file2].') if (getarg(2, arg2, MAXLINE) == EOF) # read STDIN if arg 2 call scopy(stdin, 1, args, 1) infil1 = open(arg1, READ) if (infil1 == ERR) call cant(arg1) if (equal(args, stdin) == YES) infil2 = STDIN else { infil2 = open(arg2, READ) if (infil2 == ERR) call cant(arg2) } lineno = 0 repeat { m1 = getlin(line1, infil1) m2 = getlin(line2, infil2) if (m1 == EOF | m2 == EOF) break lineno = lineno + 1 if (equal(line1, line2) == NO) call difmsg(lineno, line1, line2) } if (m1 == EOF & m2 != EOF) call remark('eof on file 1.') else if (m2 == EOF & m1 != EOF) call remark('eof on file 2.') return end #-h- difmsg 387 asc 07-may-80 12:10:10 #---------------------------------------------------------- ## difmsg - print line number and differing lines of file1 and file2 subroutine difmsg(lineno, line1, line2) character line1(MAXLINE), line2(MAXLINE) integer lineno call putdec(lineno, 5) call putc(NEWLINE) call putlin(line1, STDOUT) call putlin(line2, STDOUT) return end