The at Meta Operator

The @ (at) meta operator is a very useful meta programming operator in PeopleCode. When applied, the operator turns a string into a reference in PeopleCode.

For example, the follow PeopleCode snippet:

Local string &sEmplidField = "EMPLID";
Local string &sEmplid;

&sEmplid = GetField(@("Field." | &sEmplidField)).Value;

Effectively turns into the following code:

Local string &sEmplid;

&sEmplid = GetField(Field.EMPLID).Value;

This is a trivial example, however, hopefully you can see the power of doing something like this. Essentially it is a very basic form of metaprogramming which allows you to dynamically set a reference. For example, say you want to get the value of a field passed to a method, but you don't know what field that will be. For such a scenario, you could use code like the above to dynamically cater for any field.

The @ operator can be used in methods/functions that expect a string that is a reference to a particular Definition or an Object (however I'm not sure if this is the case for all objects ).

Some of the common functions where it can be used include:

  • GetField
  • GetRecord
  • CreateRecord
  • GetRowset
  • CreateRowset
  • GetSQL, FetchSQL, DeleteSQL

However it can conceivably be used with any PeopleCode function or method that expects a definition or object reference as a string parameter, for example DoModal, Transfer, SetCursorPos, GenerateComponentPortalURL, and SQLExec.


Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License