1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- //
- // 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);
|