New ideas have just come to my mind (maybe it should be in the Other Ideas):
When we define a field in a datadef.hal, we can point the table that this field refers to (kind of referential integrity):
ArrayField(Item, M4Code, 20, INVc);
It would be very nice if we had an automatic check if the "Item" field in the case above refers to an existing record in the INVc freeing us, developers to write an extra code in the xxxxRecordCheck(). This could be done automatically without writing any hal code.
Next idea:
We could extend the field definition with an optional parameter "is required" (same as "not null" in SQL terms)
For instance:
RecordField(CustCode,M4Code,20,CUVc, true);
if the last parameter is "true" then RecordCheck should automatically throw an error "field must not be empty" without writing any hal code.
This would free us of writing the same boring code everytime we create a new register or a field to an existing register definition.