Topic The If statement changes the output indices.
We have two new locations for Keyman technical support:
The Tavultesoft Forums are now read only.
| # The If statement changes the output indices.   2016-02-25 10:07:04.140 | 
|---|
br Julian Griffin OSL
  | The line below works. ( I have shortened Store names to make it easier to read.)
 
 
	  | : | 
	 
	
	  | Any(LL) $SK + ['A'] > Context(1) Index(SO,1) Index(S_a,1) | 
	 
 
   I wanted to make it conditional, so I added an IF, to get:
 
 
	  | : | 
	 
	
	  | If(MF = 'No') Any(LL) $SK + ['A'] > Context(1) Index(SO,1) Index(S_a,1) | 
	 
 
   But this would not compile. So, assuming the IF was being counted as an element of the Rule, I changed all the ( 1)s to ( 2). This compiled, but no longer functioned as required. After trying all eight possible configurations of the three ( 1)s, I found the following code compiled and function correctly.
 
 
	  | : | 
	 
	
	  | If(MF = 'No') Any(LL) $SK + ['A'] > Context(1) Index(SO,2) Index(S_a,2) | 
	 
 
   So to my question, why is Context ( 1), when the two Indexes are ( 2)?
 
Regards
 
Julian Griffin  | 
| # RE: The If statement changes the output indices.   2016-02-26 07:38:54.177 | 
|---|
Marc Durdin Tavultesoft Staff | Yes, you are correct. I looked into my notes and found a reference to this from ages ago but it never made it into the documentation. It's a silly distinction that I should have resolved but won't for now because there are too many keyboards and versions of Keyman dependent on it.
 
 
I could update the compiler to handle this case but even then it would require existing keyboards to be updated and I think documenting the difference will be more productive at this stage.  | 
| # RE: The If statement changes the output indices.   2016-02-26 07:57:48.027 | 
|---|
Marc Durdin Tavultesoft Staff |  |