home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ray Tracing Box
/
RAY_CD.mdf
/
raytrace
/
cullar
/
cull.bas
next >
Wrap
BASIC Source File
|
1993-03-28
|
4KB
|
182 lines
DECLARE SUB usage ()
DEFINT A-Z
DIM lib$(16), decl$(1000), true(1000), written(1000)
c$ = COMMAND$
IF c$ = "" THEN usage
args = 1
c = 1
DO
d = INSTR(c, c$, " ")
IF d = 0 THEN d = LEN(c$)
cm$(args) = RTRIM$(UCASE$(MID$(c$, c, d - c + 1)))
args = args + 1
c = INSTR(c, c$, " ") + 1
IF c = 1 THEN EXIT DO
LOOP
FOR i = 1 TO args
l$ = LEFT$(cm$(i) + " ", 2)
IF RIGHT$(" " + cm$(i), 4) = ".POV" THEN c1$ = cm$(i)
IF RIGHT$(" " + cm$(i), 4) = ".INC" THEN c2$ = cm$(i)
NEXT i
IF c1$ = "" OR c2$ = "" THEN usage
CLS
ON ERROR GOTO wrong:
OPEN c1$ FOR INPUT AS #1
ON ERROR GOTO 0
DO
LINE INPUT #1, l$
i = INSTR(1, l$, "#include")
IF i <> 0 THEN
j = INSTR(i + 9, l$, CHR$(34))
k = INSTR(j + 1, l$, CHR$(34))
IF j <> 0 AND k <> 0 THEN
lb$ = LTRIM$(RTRIM$(UCASE$(MID$(l$, j + 1, k - j - 1))))
IF (INSTR(1, c2$, lb$) = 0) AND (INSTR(1, c2$, lb$) = 0) THEN
libs = libs + 1
lib$(libs) = lb$
END IF
END IF
END IF
LOOP UNTIL EOF(1)
CLOSE #1
FOR k = 1 TO libs
ON ERROR GOTO wrong:
OPEN lib$(k) FOR INPUT AS #1
ON ERROR GOTO 0
DO
LINE INPUT #1, l$
i = INSTR(1, l$, "#declare")
IF i <> 0 THEN
decs = decs + 1
j = INSTR(i + 9, l$, " ")
IF j = 0 THEN
decl$(decs) = MID$(l$, i + 9)
ELSE
decl$(decs) = MID$(l$, i + 9, j - i - 9)
END IF
END IF
LOOP UNTIL EOF(1)
CLOSE #1
NEXT k
ON ERROR GOTO wrong:
OPEN c1$ FOR INPUT AS #1
ON ERROR GOTO 0
DO
LINE INPUT #1, l$
FOR k = 1 TO decs
i = INSTR(1, l$, decl$(k))
IF i <> 0 THEN
j = INSTR(i, l$, " ")
IF j = 0 THEN
d$ = MID$(l$, i)
ELSE
d$ = MID$(l$, i, j - i)
END IF
IF d$ = decl$(k) THEN true(k) = -1
END IF
NEXT k
LOOP UNTIL EOF(1)
CLOSE #1
OPEN "culled.inc" FOR OUTPUT AS #1
FOR k = 1 TO libs
OPEN lib$(k) FOR INPUT AS #2
DO
LINE INPUT #2, l$
i = INSTR(1, l$, "#declare")
IF i <> 0 THEN
j = INSTR(i + 9, l$, " ")
IF j = 0 THEN
d$ = MID$(l$, i + 9)
ELSE
d$ = MID$(l$, i + 9, j - i - 9)
END IF
FOR j = 1 TO decs
IF true(j) AND d$ = decl$(j) THEN
written(j) = -1
PRINT #1, l$
DO
LINE INPUT #2, l$
IF INSTR(1, l$, "#declare") <> 0 THEN EXIT DO
PRINT #1, l$
IF l$ = "" THEN EXIT DO
LOOP
END IF
NEXT j
END IF
LOOP UNTIL EOF(2)
CLOSE #2
NEXT k
CLOSE #1
lt = -1
DO
OPEN "culled.inc" FOR INPUT AS #1
lines = 0
DO
LINE INPUT #1, l$
lines = lines + 1
FOR k = 1 TO decs
i = INSTR(1, l$, decl$(k))
IF i <> 0 THEN
j = INSTR(i, l$, " ")
IF j = 0 THEN
d$ = MID$(l$, i)
ELSE
d$ = MID$(l$, i, j - i)
END IF
IF d$ = decl$(k) THEN true(k) = -1
END IF
NEXT k
LOOP UNTIL EOF(1)
CLOSE #1
IF lines = lt THEN EXIT DO
lt = lines
OPEN "culled.inc" FOR OUTPUT AS #1
FOR k = 1 TO libs
OPEN lib$(k) FOR INPUT AS #2
DO
LINE INPUT #2, l$
i = INSTR(1, l$, "#declare")
IF i <> 0 THEN
j = INSTR(i + 9, l$, " ")
IF j = 0 THEN
d$ = MID$(l$, i + 9)
ELSE
d$ = MID$(l$, i + 9, j - i - 9)
END IF
FOR j = 1 TO decs
IF true(j) AND d$ = decl$(j) THEN
written(j) = -1
PRINT #1, l$
DO
LINE INPUT #2, l$
IF INSTR(1, l$, "#declare") <> 0 THEN EXIT DO
PRINT #1, l$
IF l$ = "" THEN EXIT DO
LOOP
END IF
NEXT j
END IF
LOOP UNTIL EOF(2)
CLOSE #2
NEXT k
CLOSE #1
LOOP
CLOSE #1
END
wrong:
PRINT "File error"
CLOSE #1
CLOSE #2
END
DEFSNG A-Z
SUB usage
PRINT
PRINT "CULL:"
PRINT
PRINT "Usage: CULL infile.POV outfile.INC"
PRINT
END
END SUB