在Foxpro中替换为for

时间:2015-06-11 21:58:46

标签: foxpro visual-foxpro

我正在对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

这是稍后在条件

中使用之前出现的唯一行

1 个答案:

答案 0 :(得分:2)

在您显示的片段中,当前表中每个LAPSE2的值将替换为LAPSE中第一个匹配记录的BASE2字段的值,基于当前在该表中设置的索引。

FOR子句将此限制为在BASE2中具有匹配记录的记录;跳过不匹配的记录(保持不变)。如果没有此过滤器,则LAPSE2的新值在没有匹配记录时将为空值('',。f。,0,...)。

注意:没有任何REPLACEFOR的{​​{1}}只会影响单个记录,因为缺少范围子句意味着WHILE(另一种查看方式) NEXT 1意味着FORALL隐含WHILE)。

代码片段开头的REST语句导致Fox在SET RELATION表中执行搜索,并在记录指针发生变化时评估表达式BASE2。换句话说:无论何时在主表中移动记录指针,子表中的记录指针都会移动到第一个匹配记录(如果有的话),或者如果没有匹配则移动到EOF。

因此GROUP_T+POLSET RELATION的组合类似于

REPLACE ... FOR <key match>

注意:此声明仅用于说明发生的情况;它永远不应该在实际代码中使用,因为它充满了问题和错误。