// // Example code - use without restriction. // IMPORT $; PersonFile := $.DeclareData.Person.FilePlus; AcctFile := $.DeclareData.Accounts; IDXname := '~$.DeclareData::EXAMPLEDATA::KEYS::Person.PersonID.CompPay'; r1 := RECORD PersonFile.PersonID; UNSIGNED8 AcctCount := 0; UNSIGNED8 HighCreditSum := 0; UNSIGNED8 BalanceSum := 0; PersonFile.RecPos; END; t1 := TABLE(PersonFile,r1); st1 := DISTRIBUTE(t1,HASH32(PersonID)); r2 := RECORD AcctFile.PersonID; UNSIGNED8 AcctCount := COUNT(GROUP); UNSIGNED8 HighCreditSum := SUM(GROUP,AcctFile.HighCredit); UNSIGNED8 BalanceSum := SUM(GROUP,AcctFile.Balance); END; t2 := TABLE(AcctFile,r2,PersonID); st2 := DISTRIBUTE(t2,HASH32(PersonID)); r1 countem(t1 L, t2 R) := TRANSFORM SELF := R; SELF := L; END; j := JOIN(st1,st2,LEFT.PersonID=RIGHT.PersonID,countem(LEFT,RIGHT),LOCAL); Bld := BUILDINDEX(j, {PersonID}, {AcctCount,HighCreditSum,BalanceSum,RecPos}, IDXname,OVERWRITE); i := INDEX(PersonFile, {PersonID}, {UNSIGNED8 AcctCount,UNSIGNED8 HighCreditSum,UNSIGNED8 BalanceSum,RecPos}, IDXname); f := FETCH(PersonFile,i(PersonID BETWEEN 1 AND 100),RIGHT.RecPos); Get := OUTPUT(f,ALL); SEQUENTIAL(Bld,Get);