巧用FonPro的LEN（）函数判断内存变量的存在 FoxPro 2．6以其编程简单、程序可读性强和丰富的函数集倍受广大数据管理人员的喜爱。但美中不足的是它没有提供一个判断内存变量存在与否的函数。所以在开发一个应用系统时，如果某一个程序要做到既能被上级程序调用，又能独立运行，其参数传递就成为一个关键的问题。 在被上一级程序调用时，我们可用DO＜子程序文件名＞WITH＜参数清单＞和PARAMETERS＜参数清单＞来实现，可当独立运行时，PARAMETERS传递参数无效，调用相应内存变量时，系统就会出现“Variable ＜变量名＞not found．”（变量没找到）的出错信息。通常的解决办法是编写两个相应的程序，一个可以被上级调用，另一个单独对内存变量赋值。这样一来，整个系统就会显得臃肿。其实可以利用LEN（）对内存变量进行有效的判断，在运行一个程序时，先对所需的内存变量进行判断，如果存在，则程序继续运行，如果不存在，则转入赋值语句对其赋值，从而使整个系统变得更为简洁。
假如现有一字型内存变量：AA＝“工程师”，我们对其判断可采用以下方法：
IF LEN（“＆ AA．”）＝ 6 ＆＆6为“工程师”的长度
PDJP＝．T．＆＆判断结果返回值为真，变量存在
ENDIF
IF LEN（“＆ AA．”）＝4 ＆＆4为“＆ AA．”的长度
PDJP＝．F．＆＆判断结果返回值为假，变量不存在
ENDIF
这是因为，当AA存在时，LEN（）函数将通过宏代换计算“工程师”的长度（值为 6），AA不存在时，则会计算“＆ AA．”的长度（值为4），从而使问题得以解决（其中“.”为宏代换的分隔符）。对于日期型和数字型内存变量，可将其转换为字符型后再进行判断。
注意：内存变量名的长度加2不能与内存变量可能值的长度相等，否则判断无效。
（杨德军）