FUNCTION Eliza$ (TheStringIn AS STRING)
    DIM TheReturn AS STRING
    DIM K AS INTEGER
    DIM L AS INTEGER
    DIM X AS INTEGER
    DIM C AS STRING
    DIM I AS STRING
    DIM F AS STRING
    DIM P AS STRING
    170 REM ***********************************
    180 REM *******USER INPUT SECTION**********
    190 REM ***********************************
    200 I = UCASE$(TheStringIn) 'INPUT I$
    201 I = "  " + I + "  "
    210 REM GET RID OF APOSTROPHES
    220 FOR L = 1 TO LEN(I)
        230 'REM IF MID$(I$,L,1)="'"THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L):GOTO 230
        240 IF L + 4 > LEN(I) THEN 250
        241 IF MID$(I, L, 4) <> "SHUT" THEN 250
        242 TheReturn = "O.K. IF YOU FEEL THAT WAY I'LL SHUT UP...."
        243 GOTO ElizaFuncExit 'END
    250 NEXT L
    255 IF I = P THEN TheReturn = "PLEASE DON'T REPEAT YOURSELF!": GOTO ElizaFuncExit
    260 REM ***********************************
    270 REM ********FIND KEYWORD IN I$*********
    280 REM ***********************************
    300 FOR K = 1 TO N1
        320 FOR L = 1 TO LEN(I) - LEN(KEYWORD$(K)) + 1
            340 IF MID$(I, L, LEN(KEYWORD$(K))) <> KEYWORD$(K) THEN 350
            341 IF K <> 13 THEN 349
            342 IF MID$(I, L, LEN(KEYWORD$(29))) = KEYWORD$(29) THEN K = 29
            349 F = KEYWORD$(K): GOTO 390
        350 NEXT L
    360 NEXT K
    370 K = 36: GOTO 570: REM WE DIDN'T FIND ANY KEYWORDS
    380 REM ******************************************
    390 REM **TAKE PART OF STRING AND CONJUGATE IT****
    400 REM **USING THE LIST OF STRINGS TO BE SWAPPED*
    410 REM ******************************************
    430 C = " " + RIGHT$(I, LEN(I) - LEN(F) - L + 1) + " "
    440 FOR X = 1 TO N2 / 2
        460 FOR L = 1 TO LEN(C)
            470 IF L + LEN(WORDIN$(X)) > LEN(C) THEN 510
            480 IF MID$(C, L, LEN(WORDIN$(X))) <> WORDIN$(X) THEN 510
            490 C = LEFT$(C, L - 1) + WORDOUT$(X) + RIGHT$(C, LEN(C) - L - LEN(WORDIN$(X)) + 1)
            495 L = L + LEN(WORDOUT$(X))
            500 GOTO 540
            510 IF L + LEN(WORDOUT$(X)) > LEN(C) THEN 540
            520 IF MID$(C, L, LEN(WORDOUT$(X))) <> WORDOUT$(X) THEN 540
            530 C = LEFT$(C, L - 1) + WORDIN$(X) + RIGHT$(C, LEN(C) - L - LEN(WORDOUT$(X)) + 1)
            535 L = L + LEN(WORDIN$(X))
        540 NEXT L
    550 NEXT X
    555 IF MID$(C, 2, 1) = " " THEN C = RIGHT$(C, LEN(C) - 1): REM ONLY 1 SPACE
    556 FOR L = 1 TO LEN(C)
        557 IF MID$(C, L, 1) = "!" THEN C = LEFT$(C, L - 1) + RIGHT$(C, LEN(C) - L): GOTO 557
    558 NEXT L
    560 REM **********************************************
    570 REM **NOW USING THE KEYWORD NUMBER (K) GET REPLY**
    580 REM **********************************************
    600 F = REPLIES$(R(K))
    610 R(K) = R(K) + 1: IF R(K) > N(K) THEN R(K) = S(K)
    620 IF RIGHT$(F, 1) <> "*" THEN TheReturn = F: P = I: GOTO ElizaFuncExit
    625 IF C <> "   " THEN 630
    626 TheReturn = "YOU WILL HAVE TO ELABORATE MORE FOR ME TO HELP YOU"
    627 GOTO ElizaFuncExit
    630 TheReturn = LEFT$(F, LEN(F) - 1) + C
    640 P = I: GOTO ElizaFuncExit
    ElizaFuncExit:
    Eliza$ = TheReturn
    'GOTO 170
END FUNCTION
