My first thought is that if you will probably end up with 1 INPUT block but 16 forms.
What I have is some suggestions that would reduce the code duplicaton in the 16 forms.
Have a look at a column values file
https://4js.com/techdocs/genero/fgl/devel/DocRoot/User/DatabaseSchema.html#VAL_FILEI haven't used it myself and haven't seen it in use by any of my local clients but as I understand it you would only have to define the field in the attributes sections like so...
f01 = customer.zipcode;
and at compile time all the attributes will be read from the .val file. This means that if you change the attributes for a field, you would only have to change them in one place, the .val file and recompile your forms.
The second thing is have a look at the experimental form layout style in the 2.20 gdc
https://4js.com/techdocs/genero/gdc/devel/DocRoot/User/NewFeatures.html#220FormLayoutTHis would mean you wouldn't have to spend too much time laying out the form, just say what you want in each group and its relative positioning and the run-time will do the rest. It also allows you to specify the TITLE attribute for a non-column field.
So you'd end up with forms like
LAYOUT
GRID
{
[f01 ]
[f02 ]
}
END
END
f01 = customer.customer_number;
f02 = customer.zip_code;
LAYOUT
GRID
{
[f01 ]
[f02 ]
[f03 ]
}
END
END
f01 = customer.customer_number;
f02 = customer.address;
f03 = customer.zip_code;
and in your .val file
customer^customer_number^TITLE^"Customer Code"^
customer^address^TITLE^"Address"^
customer^zip_code^TITLE^"Zip Code"^
Hope that helps,
Reuben