Form 1 of COMBINE produces its result by passing each record from leftrecset along with the record in the same ordinal position within rightrecset to the transform to produce a single output record. Grouping (if any) on the leftrecset is preserved. An error occurs if leftrecset and rightrecset contain a different number of records.
Example:
inrec := RECORD UNSIGNED6 uid; END; outrec := RECORD(inrec) STRING20 name; STRING11 ssn; UNSIGNED8 dob; END; ds := DATASET([1,2,3,4,5,6], inrec); i1 := DATASET([ {1, 'Kevin' }, {2, 'Richard'}, {5, 'Nigel' }], {UNSIGNED6 uid, STRING10 name }); i2 := DATASET([ {3, '000-12-3462'}, {5, '000-12-8723'}, {6, '000-10-1002'}], {UNSIGNED6 uid, STRING11 ssn }); i3 := DATASET([ {1, 19700117}, {4, 19831212}, {6, 20010101}], {UNSIGNED6 uid, UNSIGNED8 dob}); j1 := JOIN(ds, i1, LEFT.uid = RIGHT.uid, LEFT OUTER, LOOKUP); j2 := JOIN(ds, i2, LEFT.uid = RIGHT.uid, LEFT OUTER, LOOKUP); j3 := JOIN(ds, i3, LEFT.uid = RIGHT.uid, LEFT OUTER, LOOKUP); combined1 := COMBINE(j1, j2, TRANSFORM(outRec, SELF := LEFT; SELF := RIGHT; SELF := []), LOCAL); combined2 := COMBINE(combined1, j3, TRANSFORM(outRec, SELF.dob := RIGHT.dob; SELF := LEFT), LOCAL); OUTPUT(combined1); OUTPUT(combined2);