L'opérateur = a deux fonctions:

1) l'affectation de variable ou propriété
lcToto="Bonjour" affecte la chaîne "Bonjour" à la variable lcToto en la créant si elle n'existe pas.

2) la comparaison entre expressions de même type
? lcToto="Bonjour"    affiche .T. à l'écran 
 (maintenir ctrl+Shift+Alt appuyées simultanément pour voir le résultat)
Répond à la question lcToto est-il égal à "Bonjour" ?

Par défaut (SET EXACT OFF) on obtient aussi:
? lcToto="Bon"    affiche toujours .T. à l'écran 
? "Bon"=lcToto    affiche .F. à l'écran 

La comparaison est vérifiée si la première chaîne commence par la seconde

Attention ! si on veut savoir si une chaîne est vide:
? lcToto=""    affiche toujours .T. à l'écran 

Il ne faudra donc pas employer (chaîne vide ou pas)
IF lcToto= ""
...
qui serait toujours réalisée  mais lui préférer
IF EMPTY(lcToto)
...


Complément: 1) Ce comportement de l'opérateur = n'est pas un bug !
Il a énormément d'avantages, en particulier pour les vues paramétrées
2) Pour une égalité absolue (même longueur, même casse, mêmes caractères)
basculer SET EXACT à ON ou utiliser l'opérateur ==