IndexPayloadFetch.ecl 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // Example code - use without restriction.
  3. //
  4. IMPORT $;
  5. PersonFile := $.DeclareData.Person.FilePlus;
  6. AcctFile := $.DeclareData.Accounts;
  7. IDXname := '~$.DeclareData::EXAMPLEDATA::KEYS::Person.PersonID.CompPay';
  8. r1 := RECORD
  9. PersonFile.PersonID;
  10. UNSIGNED8 AcctCount := 0;
  11. UNSIGNED8 HighCreditSum := 0;
  12. UNSIGNED8 BalanceSum := 0;
  13. PersonFile.RecPos;
  14. END;
  15. t1 := TABLE(PersonFile,r1);
  16. st1 := DISTRIBUTE(t1,HASH32(PersonID));
  17. r2 := RECORD
  18. AcctFile.PersonID;
  19. UNSIGNED8 AcctCount := COUNT(GROUP);
  20. UNSIGNED8 HighCreditSum := SUM(GROUP,AcctFile.HighCredit);
  21. UNSIGNED8 BalanceSum := SUM(GROUP,AcctFile.Balance);
  22. END;
  23. t2 := TABLE(AcctFile,r2,PersonID);
  24. st2 := DISTRIBUTE(t2,HASH32(PersonID));
  25. r1 countem(t1 L, t2 R) := TRANSFORM
  26. SELF := R;
  27. SELF := L;
  28. END;
  29. j := JOIN(st1,st2,LEFT.PersonID=RIGHT.PersonID,countem(LEFT,RIGHT),LOCAL);
  30. Bld := BUILDINDEX(j,
  31. {PersonID},
  32. {AcctCount,HighCreditSum,BalanceSum,RecPos},
  33. IDXname,OVERWRITE);
  34. i := INDEX(PersonFile,
  35. {PersonID},
  36. {UNSIGNED8 AcctCount,UNSIGNED8 HighCreditSum,UNSIGNED8 BalanceSum,RecPos},
  37. IDXname);
  38. f := FETCH(PersonFile,i(PersonID BETWEEN 1 AND 100),RIGHT.RecPos);
  39. Get := OUTPUT(f,ALL);
  40. SEQUENTIAL(Bld,Get);