Hi Marco, The idea of using Python (perhaps via PyFerret) may be the most natural way to do these sorts of things. CF doesn't have an explicit concept of a "structure", but of course there is a partial analog through the use of shared dimensions (in netCDF) or coordinate axes (in Ferret and CF).  String arrays and numeric arrays that share the same coordinate axes, or even multidimensional grids, will share the same coordinate-aware index space. If we think of his variable "B" below as a named axis then, say, define axis/x B={0.1, 0.2, 0.3} let B_myy = I[gx=B] let B_myx = RESHAPE({"first", "second", "third"}, B_myy) So then, "second" is directly connected to "2"  through index x=0.2 of axis B, so that LIST/X=0.2 B-myx, B_myy will pick out the associated "structure" elements "second" and 2.   Use of families of variable names helps with readability, and Ferret scripts might be used to abstract the definitions and then  define various versions of your structure. let vstrings = {"first", "second", "third"} let zlocations = {0.1, 0.2, 0.3} go define_structure B vstrings, zlocations where a script, define_structure.jnl takes the arguments and defines a set of variables. ! define_structure.jnl ! Arguments !  1 name prefix !  2 list of strings !  3 locations define axis/x (\$1) = (\$3) let (\$1)_myy = I[gx=(\$1)] let (\$1)_mxy = RESHAPE((\$2), (\$1)_myy) show var (\$1)* would show,  !-> sh var B*  B_MXY = RESHAPE(VSTRINGS, B_MYY)  B_MYY = I[GX=B] On 11/12/2015 3:07 AM, Marco van Hulten wrote: ```Hi all, Is it possible to define data structures that are more complex than scalars and arrays? I am talking about records [1], so e.g. let A.x = "some name" let A.y = 10 let A.z = 3.14 Ultimately I'd like to define an array consisting of records: let B.x = {"first name", "second name", "third name"} let B.y = {1, 2, 3} let B.z = {0.1, 0.2, 0.3} or the other way around starting with records and putting them in an array: let C = { A, A2, ... } Note that none of the above command don't work in Ferret, but I hope it is clear what I would like to do :-) Marco [1]: https://en.wikipedia.org/wiki/Record_(computer_science)#Examples ```