FICO Xpress Optimization Examples Repository
 FICO Optimization Community FICO Xpress Optimization Home

Working with records

Description
• defining records and arrays of records
• accessing record fields
• assigning values to record fields
• initialization with data from file
• defining records of records (recorddef2.mos)
• selecting record fields in initializations (recorddef2.mos)
Further explanation of this example: 'Mosel User Guide', Section 8.6 Records

 records.zip [download all files]

Source Files
By clicking on a file name, a preview is opened at the bottom of this page.
 recorddef.mos [download] recorddef2.mos [download]

Data Files
 recorddef.dat [download] recorddef2.dat [download]

recorddef.mos

(!******************************************************
Mosel User Guide Example Problems
=================================

file recorddef.mos

Defining and initializing records.

(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Nov. 2006, rev. Sep. 2018
*******************************************************!)

model "Defining records"

public declarations
R = 1..10
D: public record
name: string
values: array(R) of real
end-record
end-declarations

public declarations
mydata = public record                   ! Define a named record
name: string
values: array(R) of real
end-record
M: mydata
A: dynamic array(T:range) of mydata
end-declarations

D.name:= "D"
forall(i in R) D.values(i):= i
writeln("Values of ", D.name, ": ", D.values)

initializations from "recorddef.dat"
A
end-initializations

writeln("An entry of A: ", A(1))
writeln("'name' of an entry of A: ", A(4).name)
writeln("'values' of an entry of A: ", A(3).values)
writeln("First entry of 'values' of 'A4': ", A(4).values(1))

forall(i in T | exists(A(i))) writeln(A(i).name)

end-model