home *** CD-ROM | disk | FTP | other *** search
- '* ------------------------------------------------------- *
- '* RMLINE.BAS *
- '* Entfernen überflüssiger Zeilennummern aus alten *
- '* GW-Basic und Basica-Programmen *
- '* ------------------------------------------------------- *
- '* (c) 1988 by HEIMSOETH software / Technical Support *
- '* veröffentlicht in PASCAL International 8,9/88 *
- '* ------------------------------------------------------- *
- '* Compiler: Turbo Basic V1.01e *
- '* ------------------------------------------------------- *
- DIM Numbers%(4000)
- Counter% = 0
-
- SUB Analyze(L$)
- LOCAL Keyword$, C%, I%, N$, Number$
- SHARED Numbers%(), Counter%
- Number$ = ""
- Keyword$ = ""
- I% = 0
- WHILE I% < LEN(L$)
- INCR I%
- C% = ASC(MID$(L$, I%, 1))
- SELECT CASE C%
- CASE 65 TO 90, 97 TO 122
- Keyword$ = Keyword$ + UCASE$(CHR$(C%))
- CASE ELSE
- SELECT CASE Keyword$
- CASE "THEN", "GOTO", "GOSUB", "RESTORE", "RESUME"
- INCR I%
- N$ = MID$(L$, I%, 1)
- SELECT CASE N$
- CASE "0" TO "9"
- Number$ = N$
- WHILE (I% + 1 <= LEN(L$))_
- AND ((MID$(L$, I% + 1, 1) >= "0")_
- OR (MID$(L$, I% + 1, 1) <= "9")_
- OR (MID$(L$, I% + 1, 1) = " ")_
- OR (MID$(L$, I% + 1, 1) = ","))
- INCR I%
- SELECT CASE MID$(L$, I%, 1)
- CASE "0" TO "9"
- Number$ = Number$ + MID$(L$, I%, 1)
- CASE " ", ","
- IF (Number$ <> "") THEN
- INCR Counter%
- Numbers%(Counter%) = VAL(Number$)
- Number$ = ""
- END IF
- CASE ELSE
- INCR counter%
- numbers%(counter%) = VAL(number$)
- Number$ = ""
- END SELECT
- IF (I% = LEN(L$)) AND (Number$ <> "") THEN
- INCR Counter%
- Numbers%(Counter%) = VAL(Number$)
- Number$=""
- END IF
- WEND
- CASE ELSE
- Keyword$ = ""
- DECR I%, 2
- END SELECT
- END SELECT
- Keyword$ = ""
- END SELECT
- WEND
- END SUB
-
- SUB RmLine(L$)
- LOCAL IsLineNumber%
- SHARED Numbers%(), Counter%
- LOCAL I%, N%, C$
- I% = 0
- C$ = ""
- DO
- INCR I%
- C$=C$+MID$(L$,I%,1)
- LOOP UNTIL (MID$(L$,I%+1,1)=" ") OR (I%=LEN(L$)) or L$=""
- N% = VAL(C$)
- IsLineNumber% = 0
- FOR I% = 1 TO Counter%
- IF N% = Numbers%(I%) THEN IsLineNumber% = 1
- NEXT I%
- IF (IsLineNumber% = 0) AND (LEN(L$) > 0) THEN
- L$ = RIGHT$(L$, LEN(L$) - LEN(C$))
- ELSE
- L$ = C$ + RIGHT$(L$, LEN(L$) - LEN(C$))
- END IF
- PRINT #2, L$
- END SUB
-
- '* ------------------------------------------------------- *
- '* H A U P T - P R O G R A M M *
- '* ------------------------------------------------------- *
- CLS
- PRINT "R E M O V E - L I N E"
- PRINT
- PRINT "Dieses Programm entfernt alle überflüssigen ";
- PRINT "Zeilennummern aus einem alten"
- PRINT "GW-BASIC oder BASICA Programm."
- PRINT
- IF COMMAND$ <> "" THEN
- L1% = INSTR(COMMAND$, " ")
- ADatei$ = LEFT$(COMMAND$, L1%-1)
- NDatei$ = MID$(COMMAND$, L1%+1, LEN(COMMAND$)-L1%)
- PP% = INSTR(ADatei$, ".")
- IF PP% = 0 THEN ADatei$ = ADatei$ + ".BAS"
- PP% = INSTR(NDatei$, ".")
- IF PP% = 0 THEN NDatei$ = NDatei$ + ".BAS"
- PRINT "Alter Dateiname ";ADatei$
- PRINT "Neuer Dateiname ";NDatei$
- END IF
- IF (ADatei$ = "") OR (NDatei$ = "") THEN
- PRINT "Bitte Dateinamen der alten Datei eingeben ";
- INPUT ADatei$
- PRINT "Bitte Dateinamen der neuen Datei eingeben ";
- INPUT NDatei$
- END IF
- OPEN ADatei$ FOR INPUT AS #1
- T1=TIMER
- PRINT
- Zaehler% = 0
- PRINT "Analysiere ..."
- WHILE NOT EOF(1)
- INCR Zaehler%
- LINE INPUT #1, Lin$
- LOCATE 9, 16
- PRINT USING "###";Zaehler%
- CALL Analyze(Lin$)
- WEND
- CLOSE 1
-
- OPEN ADatei$ FOR INPUT AS #1
- OPEN NDatei$ FOR OUTPUT AS #2
- PRINT
- Zaehler% = 0
- PRINT "Entferne ..."
- WHILE NOT EOF(1)
- INCR Zaehler%
- LINE INPUT #1, Lin$
- LOCATE 11,16
- PRINT USING "###";Zaehler%
- CALL RmLine(Lin$)
- WEND
- CLOSE
- PRINT
- PRINT "Zeitbedarf";
- PRINT USING "###.##";TIMER - t1;
- PRINT " Sekunden !"
- END
- '* ------------------------------------------------------- *
- '* Ende von RMLINE.BAS *