4GL_WHERE_CONSTRAINT is an environment variable used to restrict the result of a query run on a database. In some situations it is very useful to improve performance. It can be declared in the cblconfi, or it can be set programmatically with a SET ENVIRONMENT statement. As soon as the START statement is executed, the 4GL_WHERE_CONSTRAINT appears empty and needs to be set again. Is this an expected behavior?
It is correct that the Acu4GL interface blanks out the variable after use, either this was set in the environment or in the program. This is useful (and explicitly requested) to limit the action of the WHERE-CONSTRAINT itself to the single following START. In the most common scenario, an application works on different database tables alongside with Vision files. A new operation on data that needs a new START would use probably wrong information. To avoid it, 4GL interface blanks automatically any value of WHERE-CONSTRAINT.