文本内容:
9.4循环结构程序
9.
4.1DOWHILE循环格式DOWHILE条件表达式循环体ENDDO执行过程当给定的条件满足时,执行DOWHILE和ENDDO之间的命令组命令组执行完毕后,程序自动返回到DOWHILE语句,再一次判断DOWHILE语句中的条件如果条件仍然满足,则再执行一遍命令组,如果条件不满足,则结束循环,转去执行ENDDO之后的命令EXIT控制从循环体内跳出,转去执行ENDDO后的第一条命令,可把EXIT放在循环体的任何地方因此EXIT被称为无条件结束循环命令,只能在循环结构中使用LOOP控制直接转回到DOWHILE语句,而不执行LOOP和ENDDO之间的命令因此LOOP称为无条件循环命令,只能在循环结构中使用
9.
4.2FOR循环格式FOR循环变量=初值TO终值[STEP步长]循环体ENDFOR|NEXT执行过程首先计算初值、终值和步长值,并将初值赋给循环变量,再将循环变量的值与终值比较,如果循环变量的值在初值与终值范围内,则执行FOR与ENDFOR之间的命令,然后循环变量按步长值增加或减小,再重新比较,直到循环变量的值不在初值与终值范围内,结束循环,转去执行ENDFOR后面的第一条命令
9.
4.3SCAN循环格式SCAN[范围][FOR条件]循环体ENDSCAN执行过程首先将表记录指针__到指定范围内的第一条记录上,然后判断记录指针是否超过指定范围以及该记录是否满足WHILE子句所描述的条件,若记录指针超过指定范围或该记录不满足WHILE子句所描述的条件,则结束扫描循环,执行ENDSCAN后面的语句若记录指针未超过指定范围且该记录满足WHILE子句所描述的条件,则判断该记录是否满足FOR子句所描述的条件,若不满足,记录指针移到下一条记录,进行下一轮循环判断,否则执行命令组后,记录指针下移一条记录,再进行下一轮循环判断
9.
4.4程序举例例某集团公司下属6个分公司,各分公司均已建立了各自的人事档案表,表结构相同,表文件名分别为rsda
1.dbf、rsda
2.dbf、…、rsda
6.dbf现要求统计各公司会计师、经济师和其他人员的人数SETTALKOFFFORk=1TO6db=rsda+SUBSTRSTRk101USEdbSTORE0TOxyzSCANDOCASECASE职称=会计师x=x+1CASE职称=经济师y=y+1OTHERWISEz=z+1ENDCASEENDSCAN第+STRk1+分公司会计师有+STRx3+名第+STRk1+分公司经济师有+STRy3+名第+STRk1+分公司其他人员有+STRz3+名ENDFORSETTALKONRETURN。