Mark SQL host variables with $
The fglcomp compiler can mark SQL host variables with a
$
dollar sign.
The fglcomp compiler provides the --mark-host-variables
option, to add a $
dollar sign before all program variables used in static SQL
statements.
Important:
The --mark-host-variables
does not fix you code when column
names conflict with variable names: It reveals how program variables are detected by the compiler.
In case of conflict, the code must be fixed anyway.
By default, the modified source is written to the standard output stream
(stdout). No output is produced, if no modification is required. To replace the
orignal source file directly, add the --inplace
option. With the
--inplace
option, fglcomp makes a copy of the original source,
using the .4gl~ file extension.
For
example:
$ cat main.4gl
MAIN
DEFINE cust_id, cnt INTEGER
-- SQL with conflicting names
SELECT COUNT(*) INTO cnt FROM customer WHERE cust_id = cust_id
-- SQL without conflicting names
SELECT COUNT(*) INTO cnt FROM customer WHERE customer.cust_id = cust_id
END MAIN
$ fglcomp --mark-host-variables main.4gl
MAIN
DEFINE cust_id, cnt INTEGER
-- SQL with conflicting names
SELECT COUNT(*) INTO cnt FROM customer WHERE $cust_id = $cust_id
-- SQL without conflicting names
SELECT COUNT(*) INTO cnt FROM customer WHERE customer.cust_id = $cust_id
END MAIN