DBASE命令文件书写格式的自动生成

Author: 浙 江 张文楚 Date: 1993-10-15

        几点说明:1、文件生成的结果,DO WHIL与ENDD之间的命令串,每行语句前空一格;IF与ENDI之间(不包括ELSE)空三个;DO CASE与ENDC之间的CASE和OTHE语句空三个,其余空八个,语句之间可以相互嵌套,前置空格依次累加,TEXT与ENDT之间的命令串保持原貌。
        2、原文件中以上的命令要成对出现,书写可以是完全大写,也可以是完全小写,但不能大小写混合。DO与CASE、DO与WHIL之间只能空一格。
        3、命令文件书写格式的自动生成与文件中每行语句前的空格多少无关紧要,本程序会自动判别,加以取舍。
        该程序用解释BASICA 1.13编写,在386DX/25及IBM-PC/XT机上运行通过。
        程序清单(文件名:BXPRG.BAS):10REM"DBASEⅢ命令文件收写格式的自动生成"20CLS:INPUT"请输入文件名",R$30  OPEN  R$  FOR  INPUT  AS#1
        40  OPEN"BXO.PRG"FOR  OUTPUT  AS#2
        50  FOR  I=1  TO  20000
        60  IF  EOF(1)  THEN  250
        70  LINE  INPUT#1,A$:L=LEN(A$):IF  SPP=1  THEN  SP1=0:GOTO  200
        80  FOR  I1=1  TO  L:IF  MID$(A$,I1,1)<>""  THEN  SPACE=I1-1:A$=RINGHT$(A$,L-SPACE):GOTO  100
        90  NEXT  I1:GOTO  220
        100  IF  LEFT  $(A$,8)="DO  WHILE"ORLEFT  $(A$,8)="dowhile"THEN  H=1:SP1=SP1+1:GOTO  220
        110  IF  LEFT  $(A$,4)="ENDD"ORLEFT  $(A$,4)="endd"THEN  H=0:SP1=SP11:GOTO  220
        120  IF  LEFT  $(A$,7)="DOCASE"ORLEFT  $(A$,7)="docase"THEN  H=3:SP1=SP1+3:SP3=SP1:GOTO  220
        130  IF  LEFT  $(A$,4)="CASE"OR  LEFT  $(A$,4)="case"THEN  H=5:SP1=SP3+5:GOTO  220
        140  IF  LEFT  $(A$,4)="OTHE"OR  LEFT  $(A$,4)="othe"THEN  H=-5:SP1=SP3+5:GOTO  220
        150  IF  LEFT  $(A$,4)="ENDC"OR  LEFT  $(A$,4)="endc"THEN  H=0:SP1=SP33:GOTO  220
        160  IF  LEFT  $(A$,2)="IF"OR  LEFT  $(A$,2)="if"THEN  H=-3:SP1=SP1+3:GOTO  220
        170  IF  LEFT  $(A$,4)="ELSE"OR  LEFT  $(A$,4)="else"THEN  H=3:GOTO  220
        180  IF  LEFT  $(A$,4)="ENDI"OR  LEFT  $(A$,4)="endi"THEN  H=0:SP1=SP3:GOTO  220
        190  IF  LEFT  $(A$,4)="TEXT"OR  LEFT  $(A$,4)="text"THEN  H=0:SPP=1:SP2=SP1:GOTO  220
        200  IF  LEFT  $(A$,4)="ENDT"OR  LEFT  $(A$,4)="endt"THEN  H=0:SPP=0:SP1=SP2:GOTO  220
        210  H=0
        220  IF  SP1+H<0  THEN  BEEP:PRINT"出错,前置空格小于0":GOTO  270
        230  A$=SPACE  $(SP1+H)+A$:PRINT  #2,A$
        240  NEXT  I
        250  CLOSE:KILLR$:NAME"BXD.PRG"ASR$
        260  BEEP:PRINT"DBASEⅢ命令文件书写格式生成完毕"
        270  END
        (浙江  张文楚)