Value types can contain data members and function members, similar to classes. The difference is that value types store the data as values and don't require heap allocation.


Syntax for valuetype-specification 
 valuetype-header constraints-paragraph static-or-instance-field static-or-instance-member


Syntax for valuetype-header
 access-modifier type-specifier attribute-clause


valuetype-id StudentRecord.
01 #name            string public.
01 averageMark      float-short public.

method-id new(studentName as string, averageMark as float-short).
    set self::name to studentName
    set self::averageMark to averageMark
end method.

end valuetype.

class-id RecordClient.

method-id main static.
    declare stu = new StudentRecord("Bob", 3.5).
    declare stu2 as type StudentRecord
    set stu2 to stu
    set stu2::name to "Sue"
    display stu::name   *> Prints Bob
    display stu2::name  *> Prints Sue
end method.

end class.

See also the ValueTypes sample, which is available from Start > All Programs > Micro Focus Visual COBOL > Samples, under COBOL for .NET.