This question comes up a lot, so I’d like to add an FAQ of sorts on it here.
Clarion is a case insensitive language. But many other languages (and data formats) are case sensitive. This can lead to complications when interacting with those formats and languages.
Take this declaration;
Customer Group FirstName String(100) LastName String(100) End
The word in column 1 is the LABEL, not the NAME of the field.
Since Clarion is case insensitive all LABELS are automatically turned into UPPER case by the compiler.
In the absence of a NAME attribute, the LABEL (which is uppercase) is used as the name.
So this declaration is seen by the compiler as this;
CUSTOMER Group FIRSTNAME String(100) LASTNAME String(100) End
You can set a specific NAME attribute, with a specific case to each field.
Customer Group,Name('Customer') FirstName String(100),name('FirstName') LastName String(100),name('LastName') End
Any code (think jFiles & xFiles) which takes the structure at runtime is going to need the Name attribute if you want to make a mixed-case output. In some cases (think jFiles and xFiles again) a case insensitive match can be done for Input - using the appropriate TagCase property.