MFS, SI_MFS, select and readnext (OpenInsight 32-Bit)
At 13 OCT 2002 03:51:14AM Richard Hunt wrote:
Created an INDEX_MFS. Works fine. Just a little problem with the SELECT (code 7 and 33) and READNEXT (code 8).
With a select sentence…
SELECT AD WITH PERIOD EQ "2001*12"
I get "PERIOD" passed in the "NAME" argument, and "3" passed in then "RECORD" argument. I understand that information. I just don't get the "2001*12" value passed.
Without the "2001*12" value, I can not extract the key list from the index file. With "AREV" I was able to get the select sentence by using the variable "@SENTENCE". Can't do that in OI.
Currently my workaround is to have a subroutine that directly calls the "INDEX_MFS" with code "333" (SELECTINDEX), and pass the "INDEX NAME" and "VALUE". That way I can efficiently pass back a select list, and the "READNEXT" works perfectly.
I just can not get the RLIST selects to pass me enough information to resolve the select sentence. And then… maybe I never will.
At 13 OCT 2002 09:13AM [url=http://www.revsoft.co.uk]Revelation Software EMEA Support[/url] wrote:
Richard
The only reason for the system to pass the BFS a full select statement would be if the BFS was responsible for the resolution of the select statement which it is not. As the MFS documentation comments "A latent index-based select condition is not a BFS-level function. If an indexed field is passed as a sort criterion in a filing system SELECT call, SI.MFS traps the call. Other MFSs that follow SI.MFS, and the actual BFS, never receive the SELECT call.". The way to address this is to modify your code to call your routine directly to establish the select list and this is exactly what you seem to have done.
At 13 OCT 2002 10:44AM Richard Hunt wrote:
Ok, thanks. I thought that was whats so, I just couldn't resist asking.
Then I will continue to directly call my INDEX_MFS with my SELECTINDEX subroutine then.