1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- //
- // Example code - use without restriction.
- //
- Rec := RECORD,MAXLENGTH(4096)
- STRING1 Letter;
- UNSIGNED1 DS;
- UNSIGNED1 Matches := 0;
- UNSIGNED1 LastMatch := 0;
- SET OF UNSIGNED1 MatchDSs := [];
- END;
- ds1 := DATASET([{'A',1},{'B',1},{'C',1},{'D',1},{'E',1}],Rec);
- ds2 := DATASET([{'A',2},{'B',2},{'H',2},{'I',2},{'J',2}],Rec);
- ds3 := DATASET([{'B',3},{'C',3},{'M',3},{'N',3},{'O',3}],Rec);
- ds4 := DATASET([{'A',4},{'B',4},{'R',4},{'S',4},{'T',4}],Rec);
- ds5 := DATASET([{'B',5},{'V',5},{'W',5},{'X',5},{'Y',5}],Rec);
- SetDS := [ds1,ds2,ds3,ds4,ds5];
- Rec XF(Rec L,DATASET(Rec) Matches) := TRANSFORM
- SELF.Matches := COUNT(Matches);
- SELF.LastMatch := MAX(Matches,DS);
- SELF.MatchDSs := SET(Matches,DS);
- SELF := L;
- END;
- j1 := JOIN( SetDS,STEPPED(LEFT.Letter=RIGHT.Letter),XF(LEFT,ROWS(LEFT)),SORTED(Letter));
- O1 := OUTPUT(j1);
- Rec XF1(Rec L,Rec R,integer MatchSet) := TRANSFORM
- SELF.Matches := L.Matches + 1;
- SELF.LastMatch := MatchSet;
- SELF.MatchDSs := L.MatchDSs + [MatchSet];
- SELF := L;
- END;
- j2 := JOIN( ds1,ds2,LEFT.Letter=RIGHT.Letter,XF1(LEFT,RIGHT,2));
- j3 := JOIN( j2,ds3, LEFT.Letter=RIGHT.Letter,XF1(LEFT,RIGHT,3));
- j4 := JOIN( j3,ds4, LEFT.Letter=RIGHT.Letter,XF1(LEFT,RIGHT,4));
- j5 := JOIN( j4,ds5, LEFT.Letter=RIGHT.Letter,XF1(LEFT,RIGHT,5));
- O2 := OUTPUT(SORT(j5,Letter));
- j6 := JOIN( SetDS,STEPPED(LEFT.Letter=RIGHT.Letter),XF(LEFT,ROWS(LEFT)),SORTED(Letter),LEFT OUTER);
- j7 := JOIN( SetDS,STEPPED(LEFT.Letter=RIGHT.Letter),XF(LEFT,ROWS(LEFT)),SORTED(Letter),LEFT ONLY);
- j8 := JOIN( SetDS,STEPPED(LEFT.Letter=RIGHT.Letter),XF(LEFT,ROWS(LEFT)),SORTED(Letter),MOFN(3));
- j9 := JOIN( SetDS,STEPPED(LEFT.Letter=RIGHT.Letter),XF(LEFT,ROWS(LEFT)),SORTED(Letter),MOFN(3,4));
- O3 := OUTPUT(j6);
- O4 := OUTPUT(j7);
- O5 := OUTPUT(j8);
- O6 := OUTPUT(j9);
- j10 := JOIN( RANGE(SetDS,[1,3,5]),STEPPED(LEFT.Letter=RIGHT.Letter),XF(LEFT,ROWS(LEFT)),SORTED(Letter));
- O7 := OUTPUT(j10);
- SEQUENTIAL(O1,O2,O3,O4,O5,O6,O7);
|