(已解决) xjoinx 参数为同一个游标时的问题

1、帖子中用到的数据来自集算器自带的 demo;
2、xjoinx 函数的官方链接: http://d.raqsoft.com.cn:6999/esproc/func/xjoinx.html

根据函数语法 xjoinx(csi:Fi,xi,..;…),参数 csi 为游标时,必须为可回转的单路游标,也可以是序表。正常来说,csi 应该是属于不同的游标或者不同的序表,但也有特殊情况,比如,自己跟自己叉乘,也就是说 xjoinx 所有的参数 csi 是同一个游标或者序表。当参数是同一个序表时,没有啥问题,过滤条件随意写。当参数是同一个游标做叉乘时,就会跟同是序表的结果有出入。这个应该跟游标的只遍历一次特性有关,且文档也说了,必须是可回转的单路游标。那在 xjoinx 函数计算时,如何才能让游标自动回转,或者有没有人工干预的方法使其在函数执行的过程中按需要回转。举例对比如下:

源数据的结构如下所示:

imagepng

1、同一个序表,用 xjoinx 自己跟自己叉乘:

A
1 =demo.query@x("select top 10 EID,NAME,DEPT,GENDER from EMPLOYEE")
2 =xjoinx(A1:a,GENDER=="M";A1:b, GENDER=="M")
3 =A2.fetch()

A3 中的结果显示如下:

imagepng

选出 GENDER 等于 M 的做叉乘,观察源数据可知,这个结果是正确的。

此时把序表换成游标,过滤条件写在同样的位置:

A
1 =demo.cursor("select top 10 EID,NAME,DEPT,GENDER from EMPLOYEE")
2 =xjoinx(A1:a,GENDER=="M" ;A1:b,GENDER=="M")
3 =A2.fetch()

此时 A3 中 fetch 出来的结果就跟上述不一样了,少了两条:

imagepng

此时,如果把第一个游标的过滤条件换个位置,写到第二个过滤位置处,发现结果为空。但在参数为序表时,过滤条件换位置,出来的结果是一样的。以下语句运行结果为空:

A
1 =demo.cursor("select top 10 EID,NAME,DEPT,GENDER from EMPLOYEE")
2 =xjoinx(A1:a;A1:b,a.GENDER=="M" && GENDER=="M")
3 =A2.fetch()

再比如,把过滤条件写复杂一点,依然是同一个游标自己叉乘,以下语句没有结果:

imagepng

如果上述语句中的 A1 是序表,是能出结果的。

所以,同一个游标自己跟自己叉乘是不是属于不正规用法,有没有办法可以写出结果来?
恳请大佬们得闲时给予指导帮助,谢谢🙏