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.


valuetype-header constraints-paragraph static-or-instance-field static-or-instance-member


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.