Hi Garth,
The characters allowed in a record name are documented
here, but not enforced in all cases, and for a PV name in a link we can’t check or limit what the characters can be because the IOC isn’t the only software which can serve channels (over CA or PVA) that can be linked to. In fact using $ in a channel name
can be a requirement when reading or writing long string fields, see the
Field Modifier Reference for information about that usage.
You can try that yourself if you have an IOC with a CALC field holding a long _expression_, or with a record name longer than 39 characters, the command
caget calc-record.CALC
or
caget really-long-record-name-with-more-than-40-characters.NAME
will only show the first 39 characters of those values (the NAME field just returns the record’s name, which is useful if you have record aliases). However these will fetch the full string:
caget -S calc-record.CALC$
caget -S really-long-record-name-with-more-than-40-characters.NAME$
HTH,
- Andrew
Complexity comes for free, Simplicity you have to work for.
On 5/15/25, 2:03 PM, "Tech-talk" <tech-talk-bounces at aps.anl.gov> wrote:
We just had a bug where there was a stray $ in the PV name for an OUT link. Just a typo. I was surprised that there was no error message from dbLoadRecords. But I couldn't
find anything saying that this was an invalid PV name, unless the $ is followed by () or {} with an undefined macro. Is that the intent? Does anyone use $ in PV names? Or should that have produced an error message?
SLAC National Accelerator Laboratory