Clear requires the field to be enterable (& on the layout). It's like copy, cut & paste. Use
Set field ( gField1 ; "" )
I think just replacing Clear (Select; gField2) with a Set Field with calc result "" will work and clear the field.
Clear is a step to be avoided UNLESS it's exactly what you need.
It only works if the field is present on the current layout--so this is likely why it didn't work for you, but there are other reasons why it may not have--though much less likely.
It puts the cursor (the focus) in the specified field. This change of focus can trip a number of script triggers on your layout. Not only OnObjectEnter on the field being cleared, but if the focus is on a field with a trigger such as: OnObjectExit, OnObjectValidate, they will be tripped as well. Since the focus may not be the same place each time, you can even get a "mystery bug" where something unexpected happens only part of the time as your script may be tripping one of these triggers only some of the time.
BUT: if you want that cursor to be automatically placed in the field ready for input as part of the clear, then much of the time, it makes sense to use clear. But even then, I sometimes find it better to use set field followed by go to object to put the cursor where I want it. That's in cases where the field that I'm clearing has been placed in more than one spot on the current layout--such as might be done with a global text field used for "temporary input".