Don’t have direct experience this WATCH() specific;
I’ve used a (manual defined) view for a similar check before to exclude a few fields from a SQL comparison.
Not sure if it is an option, but looking at the documentation (cla.10) for the watch() procedure:
You can now specify which fields are to be used to WATCH if a record has changed. By default all fields are used. However, if you have a specific field (or set of fields) that are always changed when a record is changed (e.g., a record last changed a timestamp field), then you can set the external name of the field to:
<FieldName> | WATCH
and then only fields with the WATCH switch in them will be used to check if a record has changed.
Alternatively you could consider creating a view over the fields to watch and change from
WATCH( file ) to WATCH( View )