// // Example code - use without restriction. // IMPORT $; r := RECORD REAL8 Float := 0.0; DECIMAL8_3 Dec := 0.0; $.DeclareData.person.file; END; t := TABLE($.DeclareData.person.file,r); r XF(r L) := TRANSFORM SELF.float := L.PersonID / 1000; SELF.dec := L.PersonID / 1000; SELF := L; END; p := PROJECT(t,XF(LEFT)); DSname := '~PROGGUIDE::EXAMPLEDATA::KEYS::dataset'; IDX1name := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestIDX1'; IDX2name := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestIDX2'; OutName1 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout1'; OutName2 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout2'; OutName3 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout3'; OutName4 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout4'; OutName5 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout5'; OutName6 := '~PROGGUIDE::EXAMPLEDATA::KEYS::realkeytestout6'; DSout := OUTPUT(p,,DSname,OVERWRITE); ds := DATASET(DSname,r,THOR); idx1 := INDEX(ds,{STRING13 FloatStr := REALFORMAT(float,13,3)},{ds},IDX1name); idx2 := INDEX(ds,{STRING13 DecStr := (STRING13)dec},{ds},IDX2name); Bld1Out := BUILD(idx1,OVERWRITE); Bld2Out := BUILD(idx2,OVERWRITE); j1 := JOIN(idx1,idx2,LEFT.FloatStr = RIGHT.DecStr); j2 := JOIN(idx1,idx2,KEYED(LEFT.FloatStr = RIGHT.DecStr)); j3 := JOIN(ds,idx1,KEYED((STRING10)LEFT.float = RIGHT.FloatStr)); j4 := JOIN(ds,idx2,KEYED((STRING10)LEFT.dec = RIGHT.DecStr)); j5 := JOIN(ds,idx1,KEYED((STRING10)LEFT.dec = RIGHT.FloatStr)); j6 := JOIN(ds,idx2,KEYED((STRING10)LEFT.float = RIGHT.DecStr)); JoinOut1 := OUTPUT(j1,,OutName1,OVERWRITE); JoinOut2 := OUTPUT(j2,,OutName2,OVERWRITE); JoinOut3 := OUTPUT(j3,,OutName3,OVERWRITE); JoinOut4 := OUTPUT(j4,,OutName4,OVERWRITE); JoinOut5 := OUTPUT(j5,,OutName5,OVERWRITE); JoinOut6 := OUTPUT(j6,,OutName6,OVERWRITE); SEQUENTIAL(DSout,Bld1Out,Bld2Out,JoinOut1,JoinOut2,JoinOut3,JoinOut4,JoinOut5,JoinOut6);