Red[ Dialect: { pair! (req) - block size: record size x number of records [MAX] integer! (opt) - value size: string length for values in records. MAX switches to variable size } ] make-string: func [ "Return random string!" length [integer!] "String size" ][ collect/into [ loop length [keep random/only "abcdefghijklmnopqrstuvwxyz"] ] make string! length ] make-block: function [ "Make block of records from simple dialect" desc [block!] ][ value-size: 8 ; default value size variable-value-size?: false record-size: 0 length: 0 parse desc [ set value pair! ( record-size: value/x length: value/y ) opt ['max (variable-value-size?: true)] opt [set value-size integer!] ] collect/into [ loop length [ keep/only collect/into [ loop record-size [ keep make-string either variable-value-size? [ random value-size ][ value-size ] ] ] make block! record-size ] ] make block! length ]