Cartesian.ecl 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // Example code - use without restriction.
  3. //
  4. rec := RECORD
  5. STRING1 Letter;
  6. END;
  7. Inds1 := DATASET([{'A'},{'B'},{'C'},{'D'},{'E'},
  8. {'F'},{'G'},{'H'},{'I'},{'J'},
  9. {'K'},{'L'},{'M'},{'N'},{'O'},
  10. {'P'},{'Q'},{'R'},{'S'},{'T'},
  11. {'U'},{'V'},{'W'},{'X'},{'Y'}],
  12. rec);
  13. Inds2 := DATASET([{'A'},{'B'},{'C'},{'D'},{'E'},
  14. {'F'},{'G'},{'H'},{'I'},{'J'},
  15. {'K'},{'L'},{'M'},{'N'},{'O'},
  16. {'P'},{'Q'},{'R'},{'S'},{'T'},
  17. {'U'},{'V'},{'W'},{'X'},{'Y'}],
  18. rec);
  19. CntInDS2 := COUNT(Inds2);
  20. rec Xform1(rec L, INTEGER C) := TRANSFORM
  21. SELF.Letter := Inds2[C].Letter;
  22. END;
  23. CP1 := NORMALIZE(Inds1,CntInDS2,Xform1(LEFT,COUNTER));
  24. CP2 := NORMALIZE(cp1,CntInDS2,Xform1(LEFT,COUNTER));
  25. CP3 := NORMALIZE(cp2,CntInDS2,Xform1(LEFT,COUNTER));
  26. Out1 := OUTPUT(DISTRIBUTE(CP3,RANDOM()),,'~RTTEST::IN::CP1',OVERWRITE);
  27. Out2 := OUTPUT(DISTRIBUTE(CP2,RANDOM()),,'~RTTEST::IN::CP2',OVERWRITE);
  28. ds1 := DATASET('~RTTEST::IN::CP1',rec,thor);
  29. ds2 := DATASET('~RTTEST::IN::CP2',rec,thor);
  30. CntDS2 := COUNT(ds2);
  31. SetDS2 := SET(ds2,letter);
  32. outrec := RECORD
  33. STRING1 LeftLetter;
  34. STRING1 RightLetter;
  35. END;
  36. outrec Xform2(rec L, INTEGER C) := TRANSFORM
  37. SELF.LeftLetter := L.Letter;
  38. SELF.RightLetter := Setds2[C];
  39. END;
  40. CP := NORMALIZE(ds1,CntDS2,Xform2(LEFT,COUNTER));
  41. Out3 := OUTPUT(CP,,'~RTTEST::OUT::CP3',overwrite);
  42. SEQUENTIAL(Out1,Out2,Out3)