It seems that whenever I tell a Lotus Notes programmer about this site, their reaction is consistently, "you must have a lot of Lotus Notes code posted !" Of course, this is not to say that Lotus Notes is a bad language (I've never used it), but it is odd that I keep hearing this. No less, Drew Refshauge does a bit of Lotus Notes and was called in to a client to fix a strange bug: some lists stopped working after it had twenty items. Right away, Drew knew what was wrong: while most would simply put the name of a list field in a drop-down box to get its values ("=exp_newlocation"), the original coder figured that breaking the list apart and assembling it again was the way to go ...
= @If( @Elements(exp_newlocation) = 1; @Subset(@Subset(exp_newlocation;1);-1); @Elements(exp_newlocation) = 2; @Subset(@Subset(exp_newlocation;1);-1) :@Subset(@Subset(exp_newlocation;2);-1); @Elements(exp_newlocation) = 3; @Subset(@Subset(exp_newlocation;1);-1) :@Subset(@Subset(exp_newlocation;2);-1) :@Subset(@Subset(exp_newlocation;3);-1); @Elements(exp_newlocation) = 4; @Subset(@Subset(exp_newlocation;1);-1) :@Subset(@Subset(exp_newlocation;2);-1) :@Subset(@Subset(exp_newlocation;3);-1) :@Subset(@Subset(exp_newlocation;4);-1); ... @Elements(exp_newlocation) = 19; @Subset(@Subset(exp_newlocation;1);-1) :@Subset(@Subset(exp_newlocation;2);-1) :@Subset(@Subset(exp_newlocation;3);-1) :@Subset(@Subset(exp_newlocation;4);-1) :@Subset(@Subset(exp_newlocation;5);-1) :@Subset(@Subset(exp_newlocation;6);-1) :@Subset(@Subset(exp_newlocation;7);-1) :@Subset(@Subset(exp_newlocation;8);-1) :@Subset(@Subset(exp_newlocation;9);-1) :@Subset(@Subset(exp_newlocation;10);-1) :@Subset(@Subset(exp_newlocation;11);-1) :@Subset(@Subset(exp_newlocation;12);-1) :@Subset(@Subset(exp_newlocation;13);-1) :@Subset(@Subset(exp_newlocation;14);-1) :@Subset(@Subset(exp_newlocation;15);-1) :@Subset(@Subset(exp_newlocation;16);-1) :@Subset(@Subset(exp_newlocation;17);-1) :@Subset(@Subset(exp_newlocation;18);-1) :@Subset(@Subset(exp_newlocation;19);-1); @Elements(exp_newlocation) = 20; @Subset(@Subset(exp_newlocation;1);-1) :@Subset(@Subset(exp_newlocation;2);-1) :@Subset(@Subset(exp_newlocation;3);-1) :@Subset(@Subset(exp_newlocation;4);-1) :@Subset(@Subset(exp_newlocation;5);-1) :@Subset(@Subset(exp_newlocation;6);-1) :@Subset(@Subset(exp_newlocation;7);-1) :@Subset(@Subset(exp_newlocation;8);-1) :@Subset(@Subset(exp_newlocation;9);-1) :@Subset(@Subset(exp_newlocation;10);-1) :@Subset(@Subset(exp_newlocation;11);-1) :@Subset(@Subset(exp_newlocation;12);-1) :@Subset(@Subset(exp_newlocation;13);-1) :@Subset(@Subset(exp_newlocation;14);-1) :@Subset(@Subset(exp_newlocation;15);-1) :@Subset(@Subset(exp_newlocation;16);-1) :@Subset(@Subset(exp_newlocation;17);-1) :@Subset(@Subset(exp_newlocation;18);-1) :@Subset(@Subset(exp_newlocation;19);-1) :@Subset(@Subset(exp_newlocation;20);-1); "")
Lotus Cheatsheet:
- ":" is list concatenation operator
- @Subset(@Subset(some_list;N);-1); is like as "some_array[N]"
- @If(a,b,c,d,e) is pretty much "if (a) return b; else if (c) return d; else return e"