home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 08_09 / xtra / rmline.bas < prev   
Encoding:
BASIC Source File  |  1988-06-07  |  4.5 KB  |  154 lines

  1. '* ------------------------------------------------------- *
  2. '*                     RMLINE.BAS                          *
  3. '*     Entfernen überflüssiger Zeilennummern aus alten     *
  4. '*              GW-Basic und Basica-Programmen             *
  5. '* ------------------------------------------------------- *
  6. '*   (c) 1988 by HEIMSOETH software / Technical Support    *
  7. '*     veröffentlicht in PASCAL International  8,9/88      *
  8. '* ------------------------------------------------------- *
  9. '*            Compiler:  Turbo Basic  V1.01e               *
  10. '* ------------------------------------------------------- *
  11. DIM Numbers%(4000)
  12. Counter% = 0
  13.  
  14. SUB Analyze(L$)
  15. LOCAL  Keyword$, C%, I%, N$, Number$
  16. SHARED Numbers%(), Counter%
  17.   Number$  = ""
  18.   Keyword$ = ""
  19.   I%       = 0
  20.   WHILE I% < LEN(L$)
  21.     INCR I%
  22.     C% = ASC(MID$(L$, I%, 1))
  23.     SELECT CASE C%
  24.       CASE 65 TO 90, 97 TO 122
  25.         Keyword$ = Keyword$ + UCASE$(CHR$(C%))
  26.       CASE ELSE
  27.         SELECT CASE Keyword$
  28.           CASE "THEN", "GOTO", "GOSUB", "RESTORE", "RESUME"
  29.            INCR I%
  30.            N$ = MID$(L$, I%, 1)
  31.            SELECT CASE N$
  32.              CASE "0" TO "9"
  33.                Number$ = N$
  34.                WHILE (I% + 1 <= LEN(L$))_
  35.                    AND ((MID$(L$, I% + 1, 1) >= "0")_
  36.                    OR   (MID$(L$, I% + 1, 1) <= "9")_
  37.                    OR   (MID$(L$, I% + 1, 1) =  " ")_
  38.                    OR   (MID$(L$, I% + 1, 1) =  ","))
  39.                  INCR I%
  40.                  SELECT CASE MID$(L$, I%, 1)
  41.                    CASE "0" TO "9"
  42.                      Number$ = Number$ + MID$(L$, I%, 1)
  43.                    CASE " ", ","
  44.                      IF (Number$ <> "") THEN
  45.                        INCR Counter%
  46.                        Numbers%(Counter%) = VAL(Number$)
  47.                        Number$ = ""
  48.                      END IF
  49.                    CASE ELSE
  50.                      INCR counter%
  51.                      numbers%(counter%) = VAL(number$)
  52.                      Number$ = ""
  53.                  END SELECT
  54.                  IF (I% = LEN(L$)) AND (Number$ <> "") THEN
  55.                    INCR Counter%
  56.                    Numbers%(Counter%) = VAL(Number$)
  57.                    Number$=""
  58.                  END IF
  59.                WEND
  60.              CASE ELSE
  61.                Keyword$ = ""
  62.                DECR I%, 2
  63.            END SELECT
  64.         END SELECT
  65.         Keyword$ = ""
  66.     END SELECT
  67.   WEND
  68. END SUB
  69.  
  70. SUB RmLine(L$)
  71. LOCAL IsLineNumber%
  72. SHARED Numbers%(), Counter%
  73. LOCAL I%, N%, C$
  74.   I% = 0
  75.   C$ = ""
  76.   DO
  77.     INCR I%
  78.     C$=C$+MID$(L$,I%,1)
  79.   LOOP UNTIL (MID$(L$,I%+1,1)=" ") OR (I%=LEN(L$)) or L$=""
  80.   N% = VAL(C$)
  81.   IsLineNumber% = 0
  82.   FOR I% = 1 TO Counter%
  83.     IF N% = Numbers%(I%) THEN IsLineNumber% = 1
  84.   NEXT I%
  85.   IF (IsLineNumber% = 0) AND (LEN(L$) > 0) THEN
  86.     L$ =  RIGHT$(L$, LEN(L$) - LEN(C$))
  87.   ELSE
  88.     L$ = C$ + RIGHT$(L$, LEN(L$) - LEN(C$))
  89.   END IF
  90.   PRINT #2, L$
  91. END SUB
  92.  
  93. '* ------------------------------------------------------- *
  94. '*             H A U P T   -   P R O G R A M M             *
  95. '* ------------------------------------------------------- *
  96. CLS
  97. PRINT "R E M O V E  -  L I N E"
  98. PRINT
  99. PRINT "Dieses Programm entfernt alle überflüssigen ";
  100. PRINT "Zeilennummern aus einem alten"
  101. PRINT "GW-BASIC oder BASICA Programm."
  102. PRINT
  103. IF COMMAND$ <> "" THEN
  104.   L1%     = INSTR(COMMAND$, " ")
  105.   ADatei$ = LEFT$(COMMAND$, L1%-1)
  106.   NDatei$ = MID$(COMMAND$, L1%+1, LEN(COMMAND$)-L1%)
  107.   PP%     = INSTR(ADatei$, ".")
  108.   IF PP%  = 0 THEN ADatei$ = ADatei$ + ".BAS"
  109.   PP%     = INSTR(NDatei$, ".")
  110.   IF PP%  = 0 THEN NDatei$ = NDatei$ + ".BAS"
  111.   PRINT "Alter Dateiname  ";ADatei$
  112.   PRINT "Neuer Dateiname  ";NDatei$
  113. END IF
  114. IF (ADatei$ = "") OR (NDatei$ = "") THEN
  115.   PRINT "Bitte Dateinamen der alten Datei eingeben   ";
  116.   INPUT ADatei$
  117.   PRINT "Bitte Dateinamen der neuen Datei eingeben   ";
  118.   INPUT NDatei$
  119. END IF
  120. OPEN ADatei$ FOR INPUT AS #1
  121. T1=TIMER
  122. PRINT
  123. Zaehler% = 0
  124. PRINT "Analysiere ..."
  125. WHILE NOT EOF(1)
  126.   INCR Zaehler%
  127.   LINE INPUT #1, Lin$
  128.   LOCATE 9, 16
  129.   PRINT USING "###";Zaehler%
  130.   CALL Analyze(Lin$)
  131. WEND
  132. CLOSE 1
  133.  
  134. OPEN ADatei$ FOR INPUT  AS #1
  135. OPEN NDatei$ FOR OUTPUT AS #2
  136. PRINT
  137. Zaehler% = 0
  138. PRINT "Entferne   ..."
  139. WHILE NOT EOF(1)
  140.   INCR Zaehler%
  141.   LINE INPUT #1, Lin$
  142.   LOCATE 11,16
  143.   PRINT USING "###";Zaehler%
  144.   CALL RmLine(Lin$)
  145. WEND
  146. CLOSE
  147. PRINT
  148. PRINT "Zeitbedarf";
  149. PRINT USING "###.##";TIMER - t1;
  150. PRINT " Sekunden !"
  151. END
  152. '* ------------------------------------------------------- *
  153. '*                 Ende von RMLINE.BAS                     *
  154.