COBOL uses the valuetype-id to define a value type.
valuetype-id StudentRecord. 01 aName string public. 01 gpa float-short public. method-id new. procedure division using by value nam as string, gpa as float-short. set aName to nam set self::"gpa" to gpa end method. end valuetype. class-id a. method-id main static. local-storage section. 01 stu type StudentRecord value new StudentRecord("Bob", 3.5). 01 stu2 type StudentRecord. procedure division. set stu2 to stu set stu2::aName to "Sue" display stu::aName *> Prints Bob display stu2::aName *> Prints Sue end method. end class.
C# uses struct to define a value type.
struct StudentRecord { public string name; public float gpa; public StudentRecord(string name, float gpa) { this.name = name; this.gpa = gpa; } } StudentRecord stu = new StudentRecord("Bob", 3.5f); StudentRecord stu2 = stu; stu2.name = "Sue"; Console.WriteLine(stu.name); // Prints Bob Console.WriteLine(stu2.name); // Prints Sue