我正在对FoxPro中的程序进行逆向工程。
我对FoxPro 一无所知,幸运的是程序很简单,或多或少我能理解所有进程
我在源代码
中有这个Select 1
SET RELATION TO GROUP_T+POL INTO BASE2
REPLACE MARK_T WITH BASE2->STATUS FOR GROUP_T+POL=BASE2->GROUP_T+POL
REPLACE LAPSE2 WITH BASE2->LAPSE FOR GROUP_T+POL=BASE2->GROUP_T+POL
REPLACE STATUS2 WITH BASE2->STATUS FOR GROUP_T+POL=BASE2->GROUP_T+POL
REPLACE DATPAHAS2 WITH BASE2->DATPAHAS FOR GROUP_T+POL=BASE2->GROUP_T+POL
CLOSE DATABASES
我需要知道稍后使用变量LAPSE2
的位置。
但我不知道计算
这是什么意思?
REPLACE LAPSE2 WITH BASE2->LAPSE FOR GROUP_T+POL=BASE2->GROUP_T+POL
这是稍后在条件
中使用之前出现的唯一行答案 0 :(得分:2)
在您显示的片段中,当前表中每个LAPSE2
的值将替换为LAPSE
中第一个匹配记录的BASE2
字段的值,基于当前在该表中设置的索引。
FOR
子句将此限制为在BASE2
中具有匹配记录的记录;跳过不匹配的记录(保持不变)。如果没有此过滤器,则LAPSE2
的新值在没有匹配记录时将为空值('',。f。,0,...)。
注意:没有任何REPLACE
或FOR
的{{1}}只会影响单个记录,因为缺少范围子句意味着WHILE
(另一种查看方式) NEXT 1
意味着FOR
和ALL
隐含WHILE
)。
代码片段开头的REST
语句导致Fox在SET RELATION
表中执行搜索,并在记录指针发生变化时评估表达式BASE2
。换句话说:无论何时在主表中移动记录指针,子表中的记录指针都会移动到第一个匹配记录(如果有的话),或者如果没有匹配则移动到EOF。
因此GROUP_T+POL
与SET RELATION
的组合类似于
REPLACE ... FOR <key match>
注意:此声明仅用于说明发生的情况;它永远不应该在实际代码中使用,因为它充满了问题和错误。