Code: Select all
Structure RecordStructure
ID.l
Name.s
Age.l
Country.s
Email.s
EndStructure
Define Record.RecordStructure
Code: Select all
Structure RecordStructure
ID.l
Name.s
Age.l
Country.s
Email.s
EndStructure
Define Record.RecordStructure
Code: Select all
Structure RecordStructure
; Indexed fields with length 0
IntField.i[0]
StrField.s[0]
; Record fields
ID.i
Name.s
Age.i
Country.s
Email.s
EndStructure
Define Record.RecordStructure
Record\Name = "John"
Record\Age = 25
Record\Country = "France"
Debug Record\Name
Debug Record\StrField[1]
Debug Record\Age
Debug Record\IntField[2]
Debug Record\Country
Debug Record\StrField[3]
Code: Select all
Structure RecordStructure
ID.l
Name.s
EndStructure
Structure RecordStructureN
_0.l
_1.s
EndStructure
*rsn.RecordStructureN = @rs.RecordStructure
*rsn\_0 = 123
*rsn\_1 = "abc"
Debug rs\ID
Debug rs\Name
Code: Select all
Structure RecordStructure
StructureUnion
_0.l
ID.l
EndStructureUnion
StructureUnion
_1.s
Name.s
EndStructureUnion
EndStructure
Define Record.RecordStructure
Record\_0 = 123
Debug Record\_0
Record\_1 = "abc"
Debug Record\_1
Code: Select all
Structure RecordStructure
StructureUnion
_0.l
ID.l
EndStructureUnion
StructureUnion
_1.s
Name.s
EndStructureUnion
EndStructure
Define Record.RecordStructure
Record\_0 = 123
Debug Record\_0
Record\_1 = "abc"
Debug Record\_1
Macro byIndex(i)
_#i
EndMacro
Record\byIndex(0) + 1
Record\byIndex(1) + "d"
Debug Record\ID
Debug Record\Name
Code: Select all
EnableExplicit
Structure RecordStructure
Name.s
Age.l
Country.s
Email.s
EndStructure
Define NewMap RecordStructure.RecordStructure()
RecordStructure("1")\Age = 29
Code: Select all
#RECSTRUCTA = 1
#RECSTRUCTB = 2
Structure RecordStructureA
ID.l
Name.s
Age.l
Country.s
Email.s
EndStructure
Structure RecordStructureB
ID.l
Height.i
Weight.l
HairColor.s
EndStructure
Structure records
type.b
StructureUnion
*recA.RecordStructureA
*recB.RecordStructureB
EndStructureUnion
EndStructure
Procedure AddElementRecords(List rec.records(),type)
AddElement(rec())
rec()\type = type
Select type
Case #RECSTRUCTA
rec()\recA = AllocateStructure(RecordStructureA)
Case #RECSTRUCTB
rec()\recB = AllocateStructure(RecordStructureB)
EndSelect
EndProcedure
Procedure FreeListRecords(List rec.records())
ForEach rec()
Select type
Case #RECSTRUCTA
FreeStructure(rec()\recA)
Case #RECSTRUCTB
FreeStructure(rec()\recB)
EndSelect
Next
FreeList(Rec())
EndProcedure
Procedure process(List record.records())
ForEach record()
Select record()\type
Case #RECSTRUCTA
Debug record()\recA\Age
Debug record()\recA\Country
Debug record()\recA\Name
Case #RECSTRUCTB
Debug Record()\recB\HairColor
Debug record()\recB\Height
Debug record()\recB\Weight
EndSelect
Next
EndProcedure
Global NewList records.Records()
AddElementRecords(records(),#RECSTRUCTA)
Records()\recA\Age = 50
Records()\recA\Country = "NZ"
Records()\recA\Name = "idle"
AddElementRecords(records(),#RECSTRUCTB)
records()\recB\HairColor = "Blond"
records()\recB\Height = 186
records()\recB\Weight = 85
process(records())