DBASE命令文件书写格式的自动生成 浙 江 张文楚 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 (浙江 张文楚)