INSTALL @lib$+"CLASSLIB" REM Create a base class with no members: DIM class{method} PROC_class(class{}) REM Instantiate the class: PROC_new(myobject{}, class{}) REM Add a member at run-time: member$ = "mymember#" PROCaddmember(myobject{}, member$, 8) REM Test that the member can be accessed: PROCassign("myobject." + member$, "PI") PRINT EVAL("myobject." + member$) END DEF PROCaddmember(RETURN obj{}, mem$, size%) LOCAL D%, F%, P% DIM D% DIM(obj{}) + size% - 1, F% LEN(mem$) + 8 P% = !^obj{} + 4 WHILE !P% : P% = !P% : ENDWHILE : !P% = F% $$(F%+4) = mem$ : F%!(LEN(mem$) + 5) = DIM(obj{}) !(^obj{} + 4) = D% ENDPROC DEF PROCassign(v$, n$) IF EVAL("FNassign(" + v$ + "," + n$ + ")") ENDPROC DEF FNassign(RETURN n, v) : n = v : = 0