Access Path

Access paths describe access to object data and methods and enable a navigation through the database:

1. If the data field (name1) is an object, its data field (name2) is accessed via name1.name
2. If the data field is a pointer on an object, its data field (name2) can also be accessed via name1.name2
This means InstantView® does not differentiate between a pointer on an object and the object itself (like Java).
`The C/C++ -equivalent name1->name2 is no longer supported.
3. Navigation can be continued from a data field CX_CONDITIONED_BAG data field with ->. -> requires the selection of an object, CX_CONDITIONED_BAG is seen as a variable pointer in PlugSpace.
4. The n-th element in a collection (name1) is referred to with name1[n]
Example: father.children[3]
5 and a data field (name2) of this element with name1[n].name2. Here, n represents an integer (constant) or an InstantView® variable.
Example: father.childeren[3].firstName
6. Member function calls can be done anywhere (with return value object or collection); as a parameter, constants, a string/integer or an  InstantView® variable can be specified. An object can only be passed via InstantView® variable. 
Example
: owner.StateMonitor("REQUEST").mlShortName
7. If an access path starts with weak all ClassiX® exceptions are suppressed. In case of an exception no abort will be triggered, but the entire access path will return INVALID
Example: item.weak.ProductAllocation(resolveType,0)  
'weak' has to come right before the function call. 'weak' may also be used by a MA-function or the pseudo function call(...).
8. At the end of a data field of type INTEGER, SHORT, CHAR, ENUMSHORT or ENUMCHAR you can access the n-th bit with name[n]. With MULTIPLE_STRING data fields you will get the n-th string (the n-th language).
n may be an integer or an InstantView® variable.
9. The pseudo function var(x) can be at the start of an access path. It provides the InstantView® variable value x as an object. This construction changes the access path meaning: the object from which the navigation starts becomes irrelevant. This mainly makes sense inside formulas (see CX_FORMULA).
10. With help of the pseudo function call(statement) inside an access path an InstantView® statement (macro) is called. The (by Define) declared macro must be defined in the current module. Input to the macro is the result of the access path just before the call(...) statement.
The macro must return a value in the stack top.
If the access path shall be continued after using call(...), even an object must be left in the stack top.
11. If the access path return value is a string, the pseudo function string(flag1, flag2, ...) can be used at the end, whereas the conversion of the string might be controlled by optional flags.
12. Pseudo function core() provides the referenced object (the "wrapped" object) for CX_DESCRIPTIVE_REF- and CX_OVERWRITIG_REF objects - even across several steps. Core() has no effect on any other object. The object itself is the result.
Example: salesItem.core().mlWordDoc
13. With the reserved word this, it is possible to refer to the object itself. This is mainly used to check access security and validity by date. If any of this two checks fail INVALID will be returned
14. With the reserved word hard, check of validity by date is ignored.

Information: 'Data field' can be a data member (attribute) of a class or a dynamic data field. When an access path is executed security and validity by date is checked on all objects.

Data field names have to be registered in the Data Dictionary and function names in the Method Dictionary.