Edit: Wow, just saw when this thread was started. My bad. Maybe someone will get something out of this anyway.
With a system like this, you're going to have some very large differences in damage. If that's something you're looking for, then great.
if you want to lower the curve some use this formula.
Var0 = Char STR / Enemey DEF
Damage = Damage * Var0
(I haven't actually programmed in the game yet, so forgive me if my code is a bit off.) This will make it so that if the Char has twice the defence of the mob, he'll do twice the damage than if he had the same attack as the mob.
Also, if you like the way you have it now, might I suggest adding a bit of comfort room? The only way the Char will do half damage is if his att is exactly the same as the def of the mob. I'll give two alternate routes.
1)
if var0 >= 1 apply all weapon ATK points
if var0 = 0 apply 2/3 weapon ATK points
if var0 <= -1 apply 1/2 weapon ATK points
2)
if var0 >= 3 apply all weapon ATK points
if var0 = 2 apply 1/2 weapon ATK points
if var0 = 1 apply 1/2 weapon ATK points
if var0 = 0 apply 1/2 weapon ATK points
if var0 = -1 apply 1/2 weapon ATK points
if var0 = -2 apply 1/2 weapon ATK points
if var0 <= -3 apply 1/4 weapon ATK points
The first varient makes it so the char does 1/2 damage to stronger mobs instead of 1/4. If they happen to be equal than it does 2/3s damage (or even 3/4s if you like).
The second varient (which I'm assuming can be coded easier, but again I don't have the game yet (the game does allow for OR statemenets, right?
)) allows for a slightly broader range of difference before the player starts doing 1/4 damage.
Anyways, good luck with it.