IndexREALkey.ecl 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // Example code - use without restriction.
  3. //
  4. IMPORT $;
  5. r := RECORD
  6. REAL8 Float := 0.0;
  7. DECIMAL8_3 Dec := 0.0;
  8. $.DeclareData.person.file;
  9. END;
  10. t := TABLE($.DeclareData.person.file,r);
  11. r XF(r L) := TRANSFORM
  12. SELF.float := L.PersonID / 1000;
  13. SELF.dec := L.PersonID / 1000;
  14. SELF := L;
  15. END;
  16. p := PROJECT(t,XF(LEFT));
  17. DSname := '~PROGGUIDE::EXAMPLEDATA::KEYS::dataset';
  18. IDX1name := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestIDX1';
  19. IDX2name := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestIDX2';
  20. OutName1 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout1';
  21. OutName2 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout2';
  22. OutName3 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout3';
  23. OutName4 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout4';
  24. OutName5 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout5';
  25. OutName6 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout6';
  26. DSout := OUTPUT(p,,DSname,OVERWRITE);
  27. ds := DATASET(DSname,r,THOR);
  28. idx1 := INDEX(ds,{STRING13 FloatStr := REALFORMAT(float,13,3)},{ds},IDX1name);
  29. idx2 := INDEX(ds,{STRING13 DecStr := (STRING13)dec},{ds},IDX2name);
  30. Bld1Out := BUILD(idx1,OVERWRITE);
  31. Bld2Out := BUILD(idx2,OVERWRITE);
  32. j1 := JOIN(idx1,idx2,LEFT.FloatStr = RIGHT.DecStr);
  33. j2 := JOIN(idx1,idx2,KEYED(LEFT.FloatStr = RIGHT.DecStr));
  34. j3 := JOIN(ds,idx1,KEYED((STRING10)LEFT.float = RIGHT.FloatStr));
  35. j4 := JOIN(ds,idx2,KEYED((STRING10)LEFT.dec = RIGHT.DecStr));
  36. j5 := JOIN(ds,idx1,KEYED((STRING10)LEFT.dec = RIGHT.FloatStr));
  37. j6 := JOIN(ds,idx2,KEYED((STRING10)LEFT.float = RIGHT.DecStr));
  38. JoinOut1 := OUTPUT(j1,,OutName1,OVERWRITE);
  39. JoinOut2 := OUTPUT(j2,,OutName2,OVERWRITE);
  40. JoinOut3 := OUTPUT(j3,,OutName3,OVERWRITE);
  41. JoinOut4 := OUTPUT(j4,,OutName4,OVERWRITE);
  42. JoinOut5 := OUTPUT(j5,,OutName5,OVERWRITE);
  43. JoinOut6 := OUTPUT(j6,,OutName6,OVERWRITE);
  44. SEQUENTIAL(DSout,Bld1Out,Bld2Out,JoinOut1,JoinOut2,JoinOut3,JoinOut4,JoinOut5,JoinOut6);