Visual RPG 9.0 Language Reference  

Data Structure Changes

Data structure declarations needed a support of extracting their field definitions into a class and using that class as the basis of its field definitions. Users can write their classes in any language they wish and when that class/type is used as the basis of the field definitions of a DS, all the public fields and properties of that class/type become the fields of the Datastructure.

Changes in Data structures

When declaring a datastructure (DCLDS) as a TYPE on another DS, all the DCLDSes now generate classes.  Note that a big change is now DCLDS are Reference Types and not Value types). Internally they generate either a DSName_DS class for a single occurrance DS or DSName_MODS for a multi-occurrance datastructure.

There are certain OPCODES that data structures need to be recognized as such and not just a class name and hence a “Data structure” implements ASNA.VisualRPG.Runtime.IDS interface. The interface contains the following methods and properties.

1.       Load method – Needed for the DSLoad opcode.

2.       Dump method – Needed for the DSDump opcode.

3.       Clear method – Needed for the Clear opcode.

4.       ObjectToParm method – Needed for passing this DS as a INPUT parm on the Remote Call.

5.       ParmToObject method - Needed for passing this DS as an OUTPUT parm on the Remote Call.

6.        Length property – Returns the length of the DS.   

If the datastructure is a Multi-occurrance DS it implements ASNA.VisualRPG.Runtime.IMODS that has the following properties and methods.  

1.       Occurrance – Gets and sets the current occurrance.

2.       ClearAll    - Calls clear for all occurrances of the DS.

3.       DumpAll – Dumps all occurrances of the DS using ToString().

4.       LoadAll – Loads all occurrances of the DS from a source string. 

A class that does not implement can still be used on DCLDS TYPE keyword but can not be used with those opcodes.

See Also

DCLDS