REM PROGRAM FCOMP 1.2.1 REM PROGRAMMER D. ALLEN REM CREATED DEC 09, 1985 REM UPDATED SEP 08, 1998 REM COPYRIGHT (C) 1986 ' ' THE PURPOSE OF THIS PROGRAM IS TO COMPARE TWO FILES, RECORD ' BY RECORD. ' ' VARIABLE TABLE: ' A$,A - ONE CHARACTER INPUT ' D! - DUMMY VARIABLE ' D$ - DUMMY STRING ' D1$ - DATA STRING ONE ' D2$ - DATA STRING TWO ' ER - ERROR CODE ' ERP - FLAG, ERROR PROMPT ' F1$ - FILE NAME ONE ' F2$ - FILE NAME TWO ' I - PTR TO CURRENT CHARACTER IN REC$ ' J - LENGTH OF REC$ ' L1 - LINE NUMBER FOR FILE ONE ' L2 - LINE NUMBER FOR FILE TWO ' REC$ - CURRENT RECORD DATA STRING ' ' DEFINT A-Z GOTO INITIALIZATION REM REM UTILITY ROUTINES SECTION. REM ' GET.NEXT.BLK: ' ' THE PURPOSE OF THIS ROUTINE IS TO SET I TO POINT TO THE NEXT ' BLANK CHARACTER IN REC$, STARTING AT I. ' ' VARIABLE TABLE: ' D$ - DUMMY STRING ' I - PTR TO CURRENT CHARACTER IN REC$ ' J - LENGTH OF REC$ ' REC$ - CURRENT RECORD DATA STRING ' D$=MID$(REC$,I,1) WHILE I <= J AND NOT (D$=" " OR D$=CHR$(9)) I=I+1 D$=MID$(REC$,I,1) WEND RETURN ' GET.NEXT.NON.BLK: ' ' THE PURPOSE OF THIS ROUTINE IS TO SET I TO POINT TO THE NEXT ' NON BLANK CHARACTER IN REC$, STARTING AT I. ' ' VARIABLE TABLE: ' D$ - DUMMY STRING ' I - PTR TO CURRENT CHARACTER IN REC$ ' J - LENGTH OF REC$ ' REC$ - CURRENT RECORD DATA STRING ' D$=MID$(REC$,I,1) WHILE I <= J AND (D$=" " OR D$=CHR$(9)) I=I+1 D$=MID$(REC$,I,1) WEND RETURN ' CLS.: ' ' THE PURPOSE OF THIS ROUTINE IS TO PRINT A CLEAR SCREEN AND ' HOME THE CURSOR. ' : LOCATE ,,1 : CLS RETURN ' ERROR.HANDLER: ' ' THE PURPOSE OF THIS ROUTINE IS HANDLE ALL PROGRAM, AND ' SYSTEM ERRORS. ENTRY: ON ERROR GOTO ERROR.HANDLER\ ' D$="" IF ERR<50 THEN D$="Syntax Error" IF ERR=53 THEN D$="File not Found" IF ERR=64 THEN D$="Bad File Name" IF D$="" THEN D$="Disk Error" PRINT "** ";D$;", ERR#";ERR IF ERR <= 50 THEN D!=ERL IF D! <> 65535 THEN PRINT "** Error Line Number";D! END IF IF ERP THEN PRINT "Press 'C' to continue, anything to quit." D$=INPUT$(1) IF D$<>"C" AND D$<>"c" THEN STOP END IF RESUME RESUMED RESUMED: RETURN REM REM UTILITY ROUTINES EXIT. REM INITIALIZATION: ON ERROR GOTO ERROR.HANDLER IF LEN(ENVIRON$("DEBUG")) > 0 THEN ERP = -1 ELSE ERP = 0 REM REM MAIN ROUTINE REM GOSUB CLS. PRINT "FCOMP 1.2.1" PRINT "(C) Copyright 1986 by Dennis Allen" PRINT "Portions (C) Copyright" PRINT "Microsoft Corp. 1982-1993" PRINT "All Rights Reserved" PRINT PRINT F1$ = "" : F2$ = "" REC$ = LTRIM$(RTRIM$(COMMAND$)) IF LEN(REC$) > 0 THEN I=1 : J=LEN(REC$) : GOSUB GET.NEXT.BLK F1$ = LEFT$(REC$,I-1) : GOSUB GET.NEXT.NON.BLK F2$ = MID$(REC$,I) END IF IF LEN(F1$) = 0 THEN PRINT : PRINT "What is the name of the first file "; INPUT F1$ END IF IF LEN(F2$) = 0 THEN PRINT : PRINT "What is the name of the second file "; INPUT F2$ END IF GOSUB MAIN SYSTEM ' MAIN: ' ' THE PURPOSE OF THIS ROUTINE IS TO EXECUTE THE MAIN ROUTINE. ' OPEN "I", 1, F1$ : L1 = 0 OPEN "I", 2, F2$ : L2 = 0 WHILE NOT EOF(1) OR NOT EOF(2) IF EOF(1) THEN D1$ = "* * EOF * * " ELSE LINE INPUT#1, D1$ : L1 = L1 + 1 IF EOF(2) THEN D2$ = "* * EOF * * " ELSE LINE INPUT#2, D2$ : L2 = L2 + 1 IF D1$<>D2$ THEN PRINT "<1> L#";L1;D1$ PRINT PRINT "<2> L#";L2;D2$ PRINT PRINT "Incr <1>, Incr <2>, ontinue, or to quit" PRINT D!=0 DO A$=INPUT$(1) : A=VAL(A$) IF D!<>A THEN D!=A : PRINT IF A=1 THEN IF EOF(1) THEN D1$ = "* * EOF * * " ELSE LINE INPUT#1, D1$ : L1 = L1 + 1 PRINT "<1> L#";L1;D1$ END IF IF A=2 THEN IF EOF(2) THEN D2$ = "* * EOF * * " ELSE LINE INPUT#2, D2$ : L2 = L2 + 1 PRINT "<2> L#";L2;D2$ END IF IF ASC(A$)=13 THEN SYSTEM LOOP UNTIL A=0 END IF WEND CLOSE RETURN