'*********************************************** GLOBAL Source$,Destin$,A$,B$,C$,D$,OP$,J,K,Tabs '*********************************************** PRINT "Indent For BCX BASIC by Kevin Diggins 2002 [Ver. 2.0]" IF COMMAND$(1) = "" OR COMMAND$(1) = "?" THEN PRINT "Usage: Indent FileName [.Bas] [Tabs]" PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" PRINT "³ .Bas is assumed if no file extension is specified. ³" PRINT "³ Tabs defaults to 0 if not specified. ³" PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" END END IF Destin$ = TEMPFILENAME$(TEMPDIR$,"INDENT") Source$ = COMMAND$(1) IF INSTR(Source$,".") = 0 THEN CONCAT(Source$,".BAS") IF COMMAND$(2) = "" THEN Tabs = 0 ELSE Tabs = VAL(COMMAND$(2)) END IF IF NOT EXIST (Source$) THEN PRINT "Error: ", MCASE$(Source$), " was not found." END END IF OPEN Source$ FOR INPUT AS FP1 OPEN Destin$ FOR OUTPUT AS FP2 PRINT "Indenting: "; MCASE$(Source$) WHILE NOT EOF(FP1) LINE INPUT FP1,A$ OP$ = "" A$ = TRIM$(A$) & " " A$ = LTRIM$(A$,9) '************************************************************************** IF UCASE$(LEFT$(A$,3)) = "DO " THEN OP$ = "INDENT" IF UCASE$(LEFT$(A$,6)) = "WHILE " THEN OP$ = "INDENT" IF UCASE$(LEFT$(A$,4)) = "SUB " THEN OP$ = "INDENT" IF UCASE$(LEFT$(A$,7)) = "SELECT " THEN OP$ = "INDENT" IF UCASE$(LEFT$(A$,5)) = "TYPE " THEN OP$ = "INDENT" IF UCASE$(LEFT$(A$,4)) = "FOR " THEN OP$ = "INDENT" IF UCASE$(LEFT$(A$,7)) = "REPEAT " THEN OP$ = "INDENT" IF UCASE$(LEFT$(A$,9)) = "FUNCTION " THEN IF INSTR(A$,"=") = 0 THEN OP$ = "INDENT" END IF '************************************************************************** IF UCASE$(LEFT$(A$,5)) = "LOOP " THEN OP$ = "OUTDENT" IF UCASE$(LEFT$(A$,5)) = "WEND " THEN OP$ = "OUTDENT" IF UCASE$(LEFT$(A$,5)) = "NEXT " THEN OP$ = "OUTDENT" IF UCASE$(LEFT$(A$,4)) = "END " THEN IF UCASE$(RTRIM$(A$)) <> "END" THEN OP$ = "OUTDENT" END IF '************************************************************************** IF UCASE$(LEFT$(A$,5)) = "ELSE " THEN OP$ = "ELSE" IF UCASE$(LEFT$(A$,6)) = "ELSEIF" THEN OP$ = "ELSEIF" '************************************************************************** IF UCASE$(LEFT$(A$,3)) = "IF " THEN D$ = UCASE$(RIGHT$(A$,5)) IF D$ = "THEN " AND UCASE$(LEFT$(A$,2)) = "IF" THEN OP$ = "INDENT" J = INSTR(UCASE$(A$),"THEN ") J = J+4 C$ = MID$(A$,J) C$ = LTRIM$(C$) C$ = RTRIM$(C$) IF LEFT$(C$,1)="'" AND UCASE$(LEFT$(A$,2)) = "IF" THEN OP$ = "INDENT" END IF '************************************************************************** IF OP$ = "INDENT" THEN B$ = SPACE$(K) & A$ INCR K,Tabs END IF '************************************************************************** IF OP$ = "OUTDENT" THEN DECR K,Tabs IF K<0 THEN K = 0 B$ = SPACE$(K) & A$ END IF '************************************************************************** IF OP$ = "ELSE" OR OP$ = "ELSEIF" THEN IF K-Tabs<0 THEN B$ = SPACE$(K) & A$ IF K-Tabs>=0 THEN B$ = SPACE$(K-Tabs) & A$ END IF '************************************************************************** IF OP$ = "" THEN B$ = SPACE$(K) & A$ END IF '************************************************************************** IF MID$(LTRIM$(B$),1,1) = "'" THEN B$ = LTRIM$(B$) FPRINT FP2,RTRIM$(B$) WEND CLOSE FP1 CLOSE FP2 KILL Source$ RENAME Destin$, Source$