The second form constructs a record from the row passed to it using the resultrec the same way the TABLE function operates. This is typically used within a TRANSFORM structure as the expression defining the output for a child dataset field.
Example:
AkaRec := {STRING20 forename,STRING20 surname}; outputRec := RECORD UNSIGNED id; DATASET(AkaRec) children; END; inputRec := {UNSIGNED id,STRING20 forename,STRING20 surname}; inPeople := DATASET([{1,'Kevin','Halligan'},{1,'Kevin','Hall'}, {1,'Gawain',''},{2,'Liz','Hall'}, {2,'Eliza','Hall'},{2,'Beth','Took'}],inputRec); outputRec makeFatRecord(inputRec L) := TRANSFORM SELF.id := l.id; SELF.children := ROW(L, AkaRec); //using Form 2 here END; fatIn := PROJECT(inPeople, makeFatRecord(LEFT)); outputRec makeChildren(outputRec L, outputRec R) := TRANSFORM SELF.id := L.id; SELF.children := L.children + ROW({R.children[1].forename,R.children[1].surname},AkaRec); END; r := ROLLUP(fatIn, id, makeChildren(LEFT, RIGHT));