现在开始动手做你这个。
分开做是什么意思?为什么要分开?
三个问题需要分开做。不要做在一起。
分开做是什么意思?为什么要分开?

授人以渔,不授人以鱼。

程序代码:
CLEAR ALL
SET SAFETY OFF && 关闭文件覆盖保护
CLEAR
* 创建输出数据表
* 由于这是新建文件,所以后面不需再初始化
CREATE TABLE "Output1" FREE (卷号 C(5), 最大尾页 I)
CREATE TABLE "Output2" FREE (记录号 I)
CREATE TABLE "Output3" FREE (记录号 I)
CLOSE TABLES ALL
SELECT 0
USE "试验用" ALIAS "testDBF"
INDEX ON 卷号+页号 TO "testDBF"
USE "Output1" EXCLUSIVE IN 0
USE "Output2" EXCLUSIVE IN 0
USE "Output3" EXCLUSIVE IN 0
* 为回避后续处理不涉及表文件名的要求,在这里切换当前工作区到指定表空间
* 后续所有处理动作均对当前工作区进行
SELECT "testDBF"
Process("Output1", "Output2", "Output3")
CLOSE TABLES ALL
CLEAR ALL
RETURN
*------------------------------
* 数据的处理过程
*------------------------------
PROCEDURE Process(tcOutput1, tcOutput2, tcOutput3)
LOCAL lcAlias && 当前工作区
LOCAL lcCaseID && 当前处理的卷号
LOCAL llFirstRecord && 每卷的第一条记录标志
LOCAL lnLastPage && 尾页号
LOCAL lnPages && 总页数
* 记忆当前工作区
lcAlias = ALIAS()
SELECT "&lcAlias"
lcCaseID = ""
llFirstRecord = .F.
lnPages = 0
* 扫描所有尾页号非空的记录
GOTO TOP
DO WHILE !EOF()
IF lcCaseID != 卷号
lcCaseID = 卷号
llFirstRecord = .T.
ENDIF
DO WHILE lcCaseID == 卷号
IF llFirstRecord
* 检查要求第3点:每卷的第一条记录首页号是否为1
IF ALLTRIM(首页号) != "1"
* 把检查结果输出到对应的输出表中
SELECT "&tcOutput3"
APPEND BLANK
REPLACE 记录号 WITH RECNO(lcAlias)
SELECT "&lcAlias"
ENDIF
lnLastPage = VAL(尾页号)
ELSE
IF VAL(页号) != lnLastPage + 1
* 把要求第2点的记录输出到对应的输出表中
SELECT "&tcOutput2"
APPEND BLANK
REPLACE 记录号 WITH RECNO(lcAlias)
SELECT "&lcAlias"
ELSE
lnLastPage = VAL(尾页号)
ENDIF
ENDIF
SKIP IN "&lcAlias"
llFirstRecord = .F.
ENDDO
* 把要求第1点的记录输出到对应的输出表中
SELECT "&tcOutput1"
APPEND BLANK
REPLACE 卷号 WITH lcCaseID, 最大尾页 WITH lnLastPage
lnPages = lnPages + 最大尾页
SELECT "&lcAlias"
ENDDO
* 输出总页数
SELECT "&tcOutput1"
APPEND BLANK
REPLACE 卷号 WITH "总计", 最大尾页 WITH lnPages
BROWSE
* 返回进来时所处的工作区
SELECT "&lcAlias"
ENDPROC
*------------------------------
* 显示记录
*------------------------------
PROCEDURE Show_Record(tcAlias)
LOCAL lcAlias
lcAlias = ALIAS()
SELECT "&tcAlias"
?? 卷号,首页号,页号,尾页号
?
SELECT "&lcAlias"
ENDPROC
