I found this information in the help file under 'Varible' that may be helpful .
Notation of string variables: it is possible to use the '$' as last char of a variable name to mark it as string. This way you can use 'a$' and 'a.s' as different string variables. Please note, that the '$' belongs to the variable name and must be always attached, unlike the '.s' which is only needed when the string variable is declared the first time.
a.s = "One string"
a$ = "Another string"
Debug a ; will give "One string"
Debug a$ ; will give "Another string"
Thanks Allen, that's how I understand it as well concerning string variables. But, I was zeroing in on the 'Define' keyword vs variables. Affixing an '$' suffix to a keyword like 'Define' (vs variable) is not in any of the documentation. Very interesting I thought.
Thanks BarryG for verifying! PureBasic is full of surprises .. in a good way
Gary E Chike DMD MS
'Experience is what you get when you don't get what you want'
For human and automation ease of reading your code, it is better to stick with Define/Protected.x instead of Define/Protected$.
And, I recommend string variables keep the trailing $.
Ex. Define.s myString$
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum