' ***********************************************************
' PROGRAM:      FUNCTION STRCMP(S1$, S2$)
' PURPOSE:      string compare
' RETURNS:      0 - S1$ = S2$: -1 - s1$ < s2$: 1 - S1$ > S2$
' AUTHOR:               vovchik (Puppy Linux forum)
' DEPENDS:      bacon, bash
' PLATFORM:     Puppy Linux (actually, any *nix with GTK)
' DATE:         04-03-2010
' VERSION:      0.01b
' ***********************************************************


' *****************
' FUNCTIONS
' *****************

FUNCTION STRCMP(STRING s1$, STRING s2$, NUMBER upcase)
        LOCAL my_result, max_len, i, char1, char2
        IF upcase THEN
                s1$ = UCASE$(s1$)
                s2$ = UCASE$(s2$)
        END IF
        IF LEN(s1$) > LEN(s2$) THEN
                max_len = LEN(s1$)
        ELSE
                max_len = LEN(s2$)
        END IF
        IF EQUAL(s1$, s2$) THEN
                my_result = 0
        ELSE
                FOR i = 1 TO max_len
                        char1 = ASC(MID$(s1$,i, 1))
                        char2 = ASC(MID$(s2$,i, 1))
                        IF char1 > char2 THEN
                                my_result = 1
                                BREAK
                        ELIF char1 < char2 THEN
                                my_result = -1
                                BREAK
                        END IF
                NEXT i
        END IF
        RETURN my_result
END FUNCTION

' *****************
' END FUNCTIONS
' *****************


' *****************
' MAIN
' *****************

' test of function

q$ = CHR$(34)
PRINT
PRINT "STRCMP(",q$,"aaa,",q$,"Aaa",q$,") : ", STRCMP("aaa","Aaa",0)
PRINT "STRCMP(",q$,"aaa,",q$,"AAA",q$,") : ", STRCMP("aaa","AAA",1)
PRINT "STRCMP(",q$,"aaa,",q$,"bbb",q$,") : ", STRCMP("aaa","bbb",0)
PRINT "STRCMP(",q$,"bbb,",q$,"aaa",q$,") : ", STRCMP("bbb","aaa",0)
PRINT "STRCMP(",q$,"aaa,",q$,"aaa",q$,") : ", STRCMP("aaa","aaa",0)
PRINT "STRCMP(",q$,"aab,",q$,"aba",q$,") : ", STRCMP("aab","aba",0)
PRINT "STRCMP(",q$,"1 2,",q$,"12",q$,")  : ", STRCMP("12","12 ",0)
PRINT "STRCMP(",q$,"a,",q$,"z",q$,")     : ", STRCMP("a","z",0)
PRINT "STRCMP(",q$,"z,",q$,"a",q$,")     : ", STRCMP("z","a",0)
PRINT "STRCMP(",q$,"a,",q$,"Z",q$,")     : ", STRCMP("a","Z",0)
PRINT "STRCMP(",q$,"Z,",q$,"a",q$,")     : ", STRCMP("Z","a",0)
PRINT "STRCMP(",q$,"cY,",q$,"cy",q$,")   : ", STRCMP("cY","cy",0)
PRINT
IF STRCMP("a", "b", 0) < 0 THEN
        PRINT "a is less than b."
END IF
IF STRCMP("a", "A", 1) EQ 0 THEN
        PRINT "a is equal to A."
END IF
IF STRCMP("b", "a", 0) > 0 THEN
        PRINT "b is greater than a."
END IF
PRINT
END
    
' *****************
' END MAIN
' *****************