updated: 3 March 2000.
Native flow types: String, String[], String[][], Record, Record[], RecordRef, RecordRef[], Object, Object[]
P9:2 = 9! / (9-2)! = 72.
Four points:
To do:
Case | Action | Example | Production |
When names are the same and type/dimensions are the same | perform an implicit map | String s -> String s | 1 |
String[] sl -> String[] sl | 2 | ||
String[][] st -> String[][] st | 3 | ||
Record r -> Record r | 4 | ||
Record r -> RecordRef r | 5 | ||
RecordRef rf -> RecordRef rf | 6 | ||
RecordRef rf -> Record rf | 7 | ||
Record[] rl -> Record[] rl | 8 | ||
Record[] rl -> RecordRef[] rl | 9 | ||
RecordRef[] rfl -> RecordRef[] rfl | 10 | ||
RecordRef[] rfl -> Record[] rfl | 11 | ||
Object[] ol -> Object[] ol | 12 | ||
Object o -> Object o | 13 | ||
When names are the same and type/dimensions are different, but mapping to looser type with the same dimension | perform an implicit map | String s -> Object s | 14 |
String[] sl -> Object[] sl | 15 | ||
Record r -> Object r | 16 | ||
RecordRef rf -> Object rf | 17 | ||
Record[] rl -> Object[] rl | 18 | ||
RecordRef[] rfl -> Object[] rfl | 19 | ||
String[][] st -> Object st | 20* diff dim | ||
String[][] st -> Object[] st | 21* diff dim | ||
When names are the same and type/dimensions are different, but mapping to same type and lower dimension | explicit map possible | String[] s -> String s | 22 |
String[] s -> Object s | 23 | ||
String[][] s -> String[] s | 24 | ||
String[][] s -> String s | 25 | ||
Record[] rl -> Record rl | 26 | ||
Record[] rl -> RecordRef rl | 27 | ||
RecordRef[] rfl -> Record rfl | 28 | ||
RecordRef[] rfl -> RecordRef rfl | 29 | ||
Object[] ol -> Object ol | 30 | ||
When names are the same and type/dimensions are different, but mapping to different type and higher dimension | explicit map possible | String s -> Object[] s | 31 |
When names are the same and
type/dimensions are different, but mapping to same type and higher
dimension
(if there is no destination value, then the destination is of dimension one. If the destination is non-null each value gets overwritten with a copy of the source value.) |
explicit map possible | String s -> String s[] | 32 |
String s -> String[][] s | 33 | ||
String[] s -> String[][] s | 34 | ||
Record rl -> Record[] rl | 35 | ||
Record rl -> RecordRef[] rl | 36 | ||
RecordRef rfl -> RecordRef[] rfl | 37 | ||
RecordRef rfl -> Record[] rfl | 38 | ||
Object ol -> Object[] ol | 39 | ||
When names are the same and tigher type and same dimension | no map possible | Object s1 -> String s1 | 40 |
Object[] sl1 -> String[] sl1 | 41 | ||
Object r1 -> Record r1 | 42 | ||
Object r1 -> RecordRef r1 | 43 | ||
Object[] rl1 -> Record[] rl1 | 44 | ||
Object[] rfl1 -> RecordRef[] rfl1 | 45 | ||
Record[] s1 -> String[] s1 | 46 | ||
RecordRef[] s1 -> String[] s1 | 47 | ||
String[] s1 -> Record[] s1 | 48 | ||
String[] s1 -> RecordRef[] s1 | 49 | ||
String s1 -> Record s1 | 50 | ||
String s1 -> RecordRef s1 | 51 | ||
RecordRef s1 -> String s1 | 52 | ||
Record s1 -> String s1 | 53 | ||
When names are the same and tigher type and different dimension | no map possible | Object s1 -> String[] s1 | 54 |
Object[] s1 -> String s1 | 55 | ||
Object r1 -> Record[] r1 | 56 | ||
Object rf1 -> RecordRef[] rf1 | 57 | ||
Object[] rl1 -> Record rl1 | 58 | ||
Object[] rf1 -> RecordRef rf1 | 59 | ||
String s1 -> Record[] s1 | 60 | ||
String s1 -> RecordRef[] s1 | 61 | ||
String[][] st -> Record st | 62 | ||
String[][] st -> RecordRef st | 63 | ||
String[][] st -> Record[] st | 64 | ||
String[][] st -> RecordRef[] st | 65 | ||
Object st -> String[][] st | 67 | ||
RecordRef st -> String[][] st | 68 | ||
Record[] st -> String[][] st | 69 | ||
RecordRef[] st -> String[][] st | 70 | ||
Object[] st -> String[][] st | 71 | ||
Object st -> String[][] st | 72 | ||
When names are not the same and type/dimensions are the same | explicit map possible | String s -> String s1 | 1 |
String[] sl -> String[] sl1 | 2 | ||
String[][] st -> String[][] st1 | 3 | ||
Record r -> Record r1 | 4 | ||
Record r -> RecordRef r1 | 5 | ||
RecordRef rf -> RecordRef rf1 | 6 | ||
RecordRef rf -> Record rf1 | 7 | ||
Record[] rl -> Record[] rl1 | 8 | ||
Record[] rl -> RecordRef[] rl1 | 9 | ||
RecordRef[] rfl -> RecordRef[] rfl1 | 10 | ||
RecordRef[] rfl -> Record[] rfl1 | 11 | ||
Object[] ol -> Object[] ol1 | 12 | ||
Object o -> Object o1 | 13 | ||
When names are not the same and type/dimensions are different, but mapping to looser type with the same dimension | explicit map possible | String s -> Object s2 | 14 |
String[] sl -> Object[] sl2 | 15 | ||
Record r -> Object r2 | 16 | ||
RecordRef rf -> Object rf2 | 17 | ||
Record[] rl -> Object[] rl2 | 18 | ||
RecordRef[] rfl -> Object[] rfl2 | 19 | ||
String[][] st -> Object st2 | 20* diff dim | ||
String[][] st -> Object[] st2 | 21* diff dim | ||
When names are not the same and type/dimensions are different, but mapping to same type and lower dimension | explicit map possible | String[] s -> String s2 | 22 |
String[] s -> Object s2 | 23 | ||
String[][] s -> String[] s2 | 24 | ||
String[][] s -> String s2 | 25 | ||
Record[] rl -> Record rl2 | 26 | ||
Record[] rl -> RecordRef rl2 | 27 | ||
RecordRef[] rfl -> Record rfl2 | 28 | ||
RecordRef[] rfl -> RecordRef rfl2 | 29 | ||
Object[] ol -> Object ol2 | 30 | ||
When names are not the same and type/dimensions are different, but mapping to different type and higher dimension | explicit map possible | String s -> Object[] s2 | 31 |
When names are not the same and
type/dimensions are different, but mapping to same type and higher
dimension
(if there is no destination value, then the destination is of dimension one. If the destination is non-null each value gets overwritten with a copy of the source value.) |
explicit map possible | String s -> String[] s2 | 32 |
String s -> String[][] s2 | 33 | ||
String[] s -> String[][] s2 | 34 | ||
Record rl -> Record[] rl2 | 35 | ||
Record rl -> RecordRef[] rl2 | 36 | ||
RecordRef rfl -> RecordRef[] rfl2 | 37 | ||
RecordRef rfl -> Record[] rfl2 | 38 | ||
Object ol -> Object[] ol2 | 39 | ||
When names are not the same and tigher type and same dimension | no map possible | Object s1 -> String s12 | 40 |
Object[] sl1 -> String[] sl12 | 41 | ||
Object r1 -> Record r12 | 42 | ||
Object r1 -> RecordRef r12 | 43 | ||
Object[] rl1 -> Record[] rl12 | 44 | ||
Object[] rfl1 -> RecordRef[] rfl12 | 45 | ||
Record[] s1 -> String[] s12 | 46 | ||
RecordRef[] s1 -> String[] s12 | 47 | ||
String[] s1 -> Record[] s12 | 48 | ||
String[] s1 -> RecordRef[] s12 | 49 | ||
String s1 -> Record s12 | 50 | ||
String s1 -> RecordRef s12 | 51 | ||
RecordRef s1 -> String s12 | 52 | ||
Record s1 -> String s12 | 53 | ||
When names are not the same and tigher type and different dimension | no map possible | Object s1 -> String[] s12 | 54 |
Object[] s1 -> String s12 | 55 | ||
Object r1 -> Record[] r12 | 56 | ||
Object rf1 -> RecordRef[] rf12 | 57 | ||
Object[] rl1 -> Record rl12 | 58 | ||
Object[] rf1 -> RecordRef rf12 | 59 | ||
String s1 -> Record[] s12 | 60 | ||
String s1 -> RecordRef[] s12 | 61 | ||
String[][] st -> Record st2 | 62 | ||
String[][] st -> RecordRef st2 | 63 | ||
String[][] st -> Record[] st2 | 64 | ||
String[][] st -> RecordRef[] st2 | 65 | ||
Object st -> String[][] st2 | 67 | ||
RecordRef st -> String[][] st2 | 68 | ||
Record[] st -> String[][] st2 | 69 | ||
RecordRef[] st -> String[][] st2 | 70 | ||
Object[] st -> String[][] st2 | 71 | ||
Object st -> String[][] st2 | 72 | ||
144 |
Notes: