'===========================================================================
' Subject: COUNT NUMBER OF LINES              Date: 04-16-92 (09:06)       
'  Author: Matt Hart                          Code: QB, QBasic, PDS        
'  Origin: COUNT,NUMBER,LINES               Packet: TEXT.ABC
'===========================================================================
' COUNTLNS.BAS  Matt Hart
'
' Counts the number of lines in a text file by
' counting occurrances of CR/LF.
' Modify the COMMAND$ for a Text File

    DEFINT A-Z
    DECLARE FUNCTION CountLines& (File$)

    F$ = LTRIM$(RTRIM$(COMMAND$))

    PRINT F$ + " has"; CountLines&(F$); "lines"
    END

FUNCTION CountLines& (File$)
    S$ = CHR$(13) + CHR$(10)
    F = FREEFILE
    OPEN "B", F, File$
    L& = LOF(F)
    SeekPos = 0&
    CL& = 0&
    DO UNTIL L& < 1&
        IF L& < 4096& THEN
            A$ = SPACE$(L&)
            SeekPos& = SeekPos& + L&
            L& = 0&
        ELSE
            A$ = SPACE$(4096)
            SeekPos& = SeekPos& + 4096&
            L& = L& - 4096&
        END IF
        GET F, , A$
        P = INSTR(A$, S$)
        DO UNTIL P = 0
            CL& = CL& + 1&
            P = P + 2
            P = INSTR(P, A$, S$)
        LOOP
        IF RIGHT$(S$, 1) = CHR$(13) THEN
            L& = L& + 1
            SeekPos& = SeekPos& - 1&
            SEEK #F, SeekPos&
        END IF
    LOOP
    CLOSE F
    CountLines& = CL&
END FUNCTION

