REM
REM Contributed by James C. Fuller - April 2009.
REM
REM' ParseCount
REM'
REM' INCLUDE tally.bac
REM' INCLUDE replace.bac
FUNCTION ParseCount(STRING Main$, STRING Delim$)
    LOCAL i,j,k,mlen,dlen,dcount TYPE int
    LOCAL S1$ TYPE STRING
    LOCAL dl$ TYPE STRING
    
    mlen = LEN(Main$)
    dlen = LEN(Delim$)
    IF mlen EQ 0 THEN
       RETURN 0
    ENDIF
    IF dlen EQ 0 THEN
       RETURN 0
    ENDIF
    IF dlen >= mlen THEN
        RETURN 0
    ENDIF 
    i = 0
    j = 1
    k = 0
    S1$=""
    dl$ = Delim$

    IF dlen > 1 THEN
        dl$ = CHR$(255)
        S1$ = CONCAT$(Main$,dl$)
        IF EQUAL(UCASE$(LEFT$(Delim$,3)),"ANY") THEN
            FOR i = 4 TO dlen
                    S1$ = Replace(S1$,MID$(Delim$,i,1),dl$)
                NEXT
            ELSE
                S1$ = Replace(S1$,Delim$,dl$)
            ENDIF
    ELSE        
        S1$ = CONCAT$(Main$,Delim$)
    ENDIF
    dcount = Tally(S1$,dl$)

    RETURN dcount
END FUNCTION