Difference between revisions of "Line number"
imported>Clippy m |
m (Add page sections/Reword) |
||
(17 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | '''Line | + | '''Line identifiers''' are used to identify a specific line location in a program. There are two types of identifiers, line numbers and alphanumeric line labels. |
+ | Line identifiers act as targets for statements that alter the normal flow of control of a program such as [[GOTO]] and [[GOSUB]]. | ||
− | The | + | |
+ | {{PageSyntax}} | ||
+ | :: ''lineNumber'' [statement] | ||
+ | :: ''lineLabel'': [statement] | ||
+ | |||
+ | |||
+ | {{PageDescription}} | ||
+ | * Line numbers are any combination of digits. | ||
+ | * Line labels are any combination of letters and digits, starting with a letter, and followed by a colon. The colon is required to differentiate them from keywords and variable names. Case is not significant for line labels. | ||
+ | * Identifiers may start in any column but may only be proceeded by whitespace characters. | ||
+ | * Line numbers and labels may be freely mixed in a given program. | ||
+ | * The order of line numbers is not significant and there is no correspondence between line numbers and the actual line number, within the source code file, at which they appear. Line numbers are simply numeric line labels. | ||
+ | * Statements may immediately follow line identifiers. No intervening whitespace is required. | ||
+ | * Line numbers are not required for every program line as they were in earlier dialects of the BASIC language. | ||
+ | |||
+ | |||
+ | {{PageExamples}} | ||
+ | ''Example 1:'' | ||
+ | {{CodeStart}} | ||
+ | 100 {{Cl|PRINT}} "This is a line number." | ||
+ | here: {{Cl|PRINT}} "This is a line label." | ||
+ | {{CodeEnd}} | ||
+ | |||
+ | ''Example 2:'' Microsoft's REMLINE.BAS program removes unnecessary line numbers where they are not required by [[IF...THEN]], [[GOTO]], [[GOSUB]], [[ERL]], [[RUN]] or [[RESUME]]. | ||
{{CodeStart}} '' '' | {{CodeStart}} '' '' | ||
{{Cl|CLS}} | {{Cl|CLS}} | ||
− | {{Cl|REDIM}} linenumber( | + | {{Cl|REDIM}} linenumber(100000) |
{{Cl|PRINT}} "This Program removes unnecessary line numbers.": {{Cl|PRINT}} | {{Cl|PRINT}} "This Program removes unnecessary line numbers.": {{Cl|PRINT}} | ||
{{Cl|INPUT}} "Name of file: ", filename$: {{Cl|PRINT}} | {{Cl|INPUT}} "Name of file: ", filename$: {{Cl|PRINT}} | ||
+ | |||
{{Cl|OPEN}} filename$ {{Cl|FOR (file statement)|FOR}} {{Cl|INPUT (file mode)|INPUT}} {{Cl|AS}} #1 | {{Cl|OPEN}} filename$ {{Cl|FOR (file statement)|FOR}} {{Cl|INPUT (file mode)|INPUT}} {{Cl|AS}} #1 | ||
{{Cl|DO...LOOP|DO}} {{Cl|UNTIL}} {{Cl|EOF}}(1) | {{Cl|DO...LOOP|DO}} {{Cl|UNTIL}} {{Cl|EOF}}(1) | ||
− | {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, a$ | + | {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, a$ |
− | {{Cl|REM}} Get rid of quotes and {{Cl| | + | {{Cl|REM}} Get rid of quotes and REM statements. |
− | + | {{Cl|DO}} | |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) <> 0 {{Cl|THEN}} | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) <> 0 {{Cl|THEN}} |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}({{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) + 1, a$, {{Cl|CHR$}}(34)) = 0 {{Cl|THEN}} {{Cl|EXIT DO}}: {{Cl|REM}} Mismatched quotes. Illegal code. | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}({{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) + 1, a$, {{Cl|CHR$}}(34)) = 0 {{Cl|THEN}} {{Cl|EXIT DO}}: {{Cl|REM}} Mismatched quotes. Illegal code. |
− | a$ = {{Cl|MID$}}(a$, 1, {{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) - 1) + {{Cl|MID$}}(a$, {{Cl|INSTR}}({{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) + 1, a$, {{Cl|CHR$}}(34)) + 1) | + | a$ = {{Cl|MID$}}(a$, 1, {{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) - 1) + {{Cl|MID$}}(a$, {{Cl|INSTR}}({{Cl|INSTR}}(a$, {{Cl|CHR$}}(34)) + 1, a$, {{Cl|CHR$}}(34)) + 1) |
− | {{Cl|ELSE}} | + | {{Cl|ELSE}} |
− | {{Cl|EXIT DO}} | + | {{Cl|EXIT DO}} |
− | {{Cl|END IF}} | + | {{Cl|END IF}} |
− | {{Cl|LOOP}} | + | {{Cl|LOOP}} |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}({{Cl|UCASE$}}(a$), "{{Cl|REM}} ") <> 0 {{Cl|THEN}} a$ = {{Cl|MID$}}(a$, 1, {{Cl|INSTR}}({{Cl|UCASE$}}(a$), "{{Cl|REM}} ")) | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}({{Cl|UCASE$}}(a$), "{{Cl|REM}} ") <> 0 {{Cl|THEN}} a$ = {{Cl|MID$}}(a$, 1, {{Cl|INSTR}}({{Cl|UCASE$}}(a$), "{{Cl|REM}} ")) |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}({{Cl|UCASE$}}(a$), "' ") <> 0 {{Cl|THEN}} a$ = {{Cl|MID$}}(a$, 1, {{Cl|INSTR}}(a$, "' ")) | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}({{Cl|UCASE$}}(a$), "' ") <> 0 {{Cl|THEN}} a$ = {{Cl|MID$}}(a$, 1, {{Cl|INSTR}}(a$, "' ")) |
− | DO | + | {{Cl|DO}} |
− | flag = 0 | + | flag = 0 |
− | {{Cl|REM}} Break down compound statements and get line numbers. | + | {{Cl|REM}} Break down compound statements and get line numbers. |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|GOTO}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|GOTO}} ") + 5: {{Cl|GOSUB}} tracknumber | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|GOTO}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|GOTO}} ") + 5: {{Cl|GOSUB}} tracknumber |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|GOSUB}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|GOSUB}} ") + 6: {{Cl|GOSUB}} tracknumber | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|GOSUB}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|GOSUB}} ") + 6: {{Cl|GOSUB}} tracknumber |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|THEN}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|THEN}} ") + 5: {{Cl|GOSUB}} tracknumber | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|THEN}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|THEN}} ") + 5: {{Cl|GOSUB}} tracknumber |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|ELSE}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|ELSE}} ") + 5: {{Cl|GOSUB}} tracknumber | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|ELSE}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|ELSE}} ") + 5: {{Cl|GOSUB}} tracknumber |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl| | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|RUN}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|RUN}} ") + 4: {{Cl|GOSUB}} tracknumber |
− | {{Cl|IF...THEN|IF}} flag = 0 {{Cl|THEN}} {{Cl|EXIT DO}} {{Cl|ELSE}} a$ = {{Cl|MID$}}(a$, n) | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|RESUME}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|RESUME}} ") + 7: {{Cl|GOSUB}} tracknumber |
− | {{Cl|LOOP}} | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "{{Cl|RETURN}} ") <> 0 {{Cl|THEN}} flag = 1: n = {{Cl|INSTR}}(a$, "{{Cl|RETURN}} ") + 7: {{Cl|GOSUB}} tracknumber |
+ | {{Cl|IF...THEN|IF}} flag = 0 {{Cl|THEN}} {{Cl|EXIT DO}} {{Cl|ELSE}} a$ = {{Cl|MID$}}(a$, n) | ||
+ | {{Cl|LOOP}} | ||
{{Cl|LOOP}} | {{Cl|LOOP}} | ||
{{Cl|PRINT}} "Number of line-numbered statements kept:"; count | {{Cl|PRINT}} "Number of line-numbered statements kept:"; count | ||
Line 39: | Line 66: | ||
{{Cl|OPEN}} filename$ {{Cl|FOR (file statement)|FOR}} {{Cl|INPUT (file mode)|INPUT}} {{Cl|AS}} #1 | {{Cl|OPEN}} filename$ {{Cl|FOR (file statement)|FOR}} {{Cl|INPUT (file mode)|INPUT}} {{Cl|AS}} #1 | ||
− | {{Cl|OPEN}} "filename.tmp" {{Cl|FOR | + | {{Cl|OPEN}} "filename.tmp" {{Cl|FOR (file statement)|FOR}} {{Cl|OUTPUT}} {{Cl|AS}} #2 |
{{Cl|DO...LOOP|DO}} {{Cl|UNTIL}} {{Cl|EOF}}(1) | {{Cl|DO...LOOP|DO}} {{Cl|UNTIL}} {{Cl|EOF}}(1) | ||
− | {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, a$ | + | {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, a$ |
− | flag = 0 | + | flag = 0 |
− | {{Cl|IF...THEN|IF}} {{Cl|VAL}}({{Cl|MID$}}(a$, 1, 1)) <> 0 {{Cl|THEN}} | + | {{Cl|IF...THEN|IF}} {{Cl|VAL}}({{Cl|MID$}}(a$, 1, 1)) <> 0 {{Cl|THEN}} |
− | {{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} count | + | {{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} count |
− | {{Cl|IF...THEN|IF}} {{Cl|VAL}}(a$) = linenumber(i) {{Cl|THEN}} flag = 1: {{Cl|EXIT | + | {{Cl|IF...THEN|IF}} {{Cl|VAL}}(a$) = linenumber(i) {{Cl|THEN}} flag = 1: {{Cl|EXIT FOR}} |
− | {{Cl|NEXT}} | + | {{Cl|NEXT}} |
− | {{Cl|IF...THEN|IF}} flag = 0 {{Cl|THEN}} a$ = {{Cl|MID$}}(a$, {{Cl|INSTR}}(a$, " ") + 1) | + | {{Cl|IF...THEN|IF}} flag = 0 {{Cl|THEN}} a$ = {{Cl|MID$}}(a$, {{Cl|INSTR}}(a$, " ") + 1) |
− | {{Cl|END IF}} | + | {{Cl|END IF}} |
− | {{Cl|PRINT (file statement)|PRINT}} #2, a$ | + | {{Cl|PRINT (file statement)|PRINT}} #2, a$ |
{{Cl|LOOP}} | {{Cl|LOOP}} | ||
{{Cl|CLOSE}} #1, #2 | {{Cl|CLOSE}} #1, #2 | ||
− | {{Cl|SHELL}} " | + | {{Cl|SHELL}} {{Cl|_DONTWAIT}} "notepad filename.tmp" |
{{Cl|PRINT}} | {{Cl|PRINT}} | ||
− | {{Cl|PRINT}} " | + | {{Cl|PRINT}} "Back up original file as .org and give edited file original file name? [Y/N]" |
− | DO | + | {{Cl|DO}} |
− | b$ = {{Cl|UCASE$}}({{Cl|INKEY$}}) | + | b$ = {{Cl|UCASE$}}({{Cl|INKEY$}}) |
− | {{Cl| | + | {{Cl|SELECT CASE}} b$ |
− | {{Cl| | + | {{Cl|CASE}} {{Cl|CHR$}}(27): {{Cl|SYSTEM}} |
− | {{Cl|ON ERROR}} {{Cl|GOTO}} resnxt | + | {{Cl|CASE}} "N" |
− | {{Cl|KILL}} {{Cl|MID$}}(filename$, 1, {{Cl|INSTR}}(filename$, ".") - 1) + ".org" | + | {{Cl|ON ERROR}} {{Cl|GOTO}} resnxt |
− | {{Cl|ON ERROR}} {{Cl|GOTO}} 0 | + | {{Cl|KILL}} "filename.tmp" |
− | {{Cl|NAME}} filename$ {{Cl|AS}} {{Cl|MID$}}(filename$, 1, {{Cl|INSTR}}(filename$, ".") - 1) + ".org" | + | {{Cl|ON ERROR}} {{Cl|GOTO}} 0 |
− | {{Cl|NAME}} "filename.tmp" {{Cl|AS}} filename$ | + | {{Cl|PRINT}} |
− | {{Cl|PRINT}} : {{Cl|PRINT}} "File conversion completed." | + | {{Cl|PRINT}} "Temporary "+ {{Cl|CHR$}}(34) + "filename.tmp" + {{Cl|CHR$}}(34) + " was removed and no changes were made to original file." |
− | {{Cl|EXIT DO}} | + | {{Cl|PRINT}} |
− | {{Cl|END | + | {{Cl|PRINT}} "Press any key to end." |
+ | {{Cl|EXIT DO}} | ||
+ | |||
+ | {{Cl|CASE}} "Y" | ||
+ | {{Cl|ON ERROR}} {{Cl|GOTO}} resnxt | ||
+ | {{Cl|KILL}} {{Cl|MID$}}(filename$, 1, {{Cl|INSTR}}(filename$, ".") - 1) + ".org" | ||
+ | {{Cl|ON ERROR}} {{Cl|GOTO}} 0 | ||
+ | {{Cl|NAME}} filename$ {{Cl|AS}} {{Cl|MID$}}(filename$, 1, {{Cl|INSTR}}(filename$, ".") - 1) + ".org" | ||
+ | {{Cl|NAME}} "filename.tmp" {{Cl|AS}} filename$ | ||
+ | {{Cl|PRINT}} : {{Cl|PRINT}} "File conversion completed. Press any key to end." | ||
+ | {{Cl|EXIT DO}} | ||
+ | {{Cl|END SELECT}} | ||
{{Cl|LOOP}} | {{Cl|LOOP}} | ||
+ | {{Cl|SLEEP}} | ||
{{Cl|SYSTEM}} | {{Cl|SYSTEM}} | ||
tracknumber: | tracknumber: | ||
− | DO | + | {{Cl|DO}} |
− | count = count + 1 | + | count = count + 1 |
− | linenumber(count) = {{Cl|VAL}}({{Cl|MID$}}(a$, n)) | + | linenumber(count) = {{Cl|VAL}}({{Cl|MID$}}(a$, n)) |
− | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "ON") <> 0 {{Cl|AND (boolean)|AND}} {{Cl|INSTR}}(a$, "{{Cl|GOSUB}}") <> 0 {{Cl|OR (boolean)|OR}} {{Cl|INSTR}}(a$, "ON") <> 0 {{Cl|AND (boolean)|AND}} {{Cl|INSTR}}(a$, "{{Cl|GOTO}}") <> 0 {{Cl|THEN}} | + | {{Cl|IF...THEN|IF}} {{Cl|INSTR}}(a$, "ON") <> 0 {{Cl|AND (boolean)|AND}} {{Cl|INSTR}}(a$, "{{Cl|GOSUB}}") <> 0 {{Cl|OR (boolean)|OR}} {{Cl|INSTR}}(a$, "ON") <> 0 {{Cl|AND (boolean)|AND}} {{Cl|INSTR}}(a$, "{{Cl|GOTO}}") <> 0 {{Cl|THEN}} |
− | {{Cl|FOR...NEXT|FOR}} i = n {{Cl|TO}} {{Cl|LEN}}(a$) | + | {{Cl|FOR...NEXT|FOR}} i = n {{Cl|TO}} {{Cl|LEN}}(a$) |
− | {{Cl|IF...THEN|IF}} {{Cl|VAL}}({{Cl|MID$}}(a$, i, 1)) = 0 {{Cl|AND (boolean)|AND}} {{Cl|MID$}}(a$, i, 1) <> "0" {{Cl|AND (boolean)|AND}} {{Cl|MID$}}(a$, i, 1) <> "," {{Cl|AND (boolean)|AND}} {{Cl|MID$}}(a$, i, 1) <> " " {{Cl|THEN}} {{Cl|EXIT | + | {{Cl|IF...THEN|IF}} {{Cl|VAL}}({{Cl|MID$}}(a$, i, 1)) = 0 {{Cl|AND (boolean)|AND}} {{Cl|MID$}}(a$, i, 1) <> "0" {{Cl|AND (boolean)|AND}} {{Cl|MID$}}(a$, i, 1) <> "," {{Cl|AND (boolean)|AND}} {{Cl|MID$}}(a$, i, 1) <> " " {{Cl|THEN}} {{Cl|EXIT FOR}} |
− | {{Cl|IF...THEN|IF}} {{Cl|MID$}}(a$, i, 2) = ", " {{Cl|THEN}} n = i + 1: {{Cl|EXIT | + | {{Cl|IF...THEN|IF}} {{Cl|MID$}}(a$, i, 2) = ", " {{Cl|THEN}} n = i + 1: {{Cl|EXIT FOR}} |
− | {{Cl|NEXT}} | + | {{Cl|NEXT}} |
− | {{Cl|IF...THEN|IF}} n <> i + 1 {{Cl|THEN}} {{Cl|EXIT DO}} | + | {{Cl|IF...THEN|IF}} n <> i + 1 {{Cl|THEN}} {{Cl|EXIT DO}} |
− | {{Cl|ELSE}} | + | {{Cl|ELSE}} |
− | {{Cl|EXIT DO}} | + | {{Cl|EXIT DO}} |
− | {{Cl|END IF}} | + | {{Cl|END IF}} |
{{Cl|LOOP}} | {{Cl|LOOP}} | ||
{{Cl|RETURN}} | {{Cl|RETURN}} | ||
resnxt: | resnxt: | ||
− | {{Cl|RESUME NEXT}} '' '' | + | {{Cl|RESUME|RESUME NEXT}} '' '' |
{{CodeEnd}} | {{CodeEnd}} | ||
− | {{small|Code courtesy of Pete from the | + | {{small|Code courtesy of Pete from the Network 54 QBasic Forum}} |
− | |||
− | |||
− | |||
− | |||
+ | {{PageSeeAlso}} | ||
+ | * [[GOTO]] , [[RUN]] | ||
+ | * [[GOSUB]] , [[RETURN]] | ||
+ | * [[RESUME]], [[NEXT]] | ||
+ | * [[RESTORE]] | ||
+ | * [[IF...THEN]] | ||
{{PageNavigation}} | {{PageNavigation}} |
Latest revision as of 10:07, 21 February 2021
Line identifiers are used to identify a specific line location in a program. There are two types of identifiers, line numbers and alphanumeric line labels.
Line identifiers act as targets for statements that alter the normal flow of control of a program such as GOTO and GOSUB.
Syntax
- lineNumber [statement]
- lineLabel: [statement]
Description
- Line numbers are any combination of digits.
- Line labels are any combination of letters and digits, starting with a letter, and followed by a colon. The colon is required to differentiate them from keywords and variable names. Case is not significant for line labels.
- Identifiers may start in any column but may only be proceeded by whitespace characters.
- Line numbers and labels may be freely mixed in a given program.
- The order of line numbers is not significant and there is no correspondence between line numbers and the actual line number, within the source code file, at which they appear. Line numbers are simply numeric line labels.
- Statements may immediately follow line identifiers. No intervening whitespace is required.
- Line numbers are not required for every program line as they were in earlier dialects of the BASIC language.
Examples
Example 1:
100 PRINT "This is a line number." here: PRINT "This is a line label."
Example 2: Microsoft's REMLINE.BAS program removes unnecessary line numbers where they are not required by IF...THEN, GOTO, GOSUB, ERL, RUN or RESUME.
CLS REDIM linenumber(100000) PRINT "This Program removes unnecessary line numbers.": PRINT INPUT "Name of file: ", filename$: PRINT OPEN filename$ FOR INPUT AS #1 DO UNTIL EOF(1) LINE INPUT #1, a$ REM Get rid of quotes and REM statements. DO IF INSTR(a$, CHR$(34)) <> 0 THEN IF INSTR(INSTR(a$, CHR$(34)) + 1, a$, CHR$(34)) = 0 THEN EXIT DO: REM Mismatched quotes. Illegal code. a$ = MID$(a$, 1, INSTR(a$, CHR$(34)) - 1) + MID$(a$, INSTR(INSTR(a$, CHR$(34)) + 1, a$, CHR$(34)) + 1) ELSE EXIT DO END IF LOOP IF INSTR(UCASE$(a$), "REM ") <> 0 THEN a$ = MID$(a$, 1, INSTR(UCASE$(a$), "REM ")) IF INSTR(UCASE$(a$), "' ") <> 0 THEN a$ = MID$(a$, 1, INSTR(a$, "' ")) DO flag = 0 REM Break down compound statements and get line numbers. IF INSTR(a$, "GOTO ") <> 0 THEN flag = 1: n = INSTR(a$, "GOTO ") + 5: GOSUB tracknumber IF INSTR(a$, "GOSUB ") <> 0 THEN flag = 1: n = INSTR(a$, "GOSUB ") + 6: GOSUB tracknumber IF INSTR(a$, "THEN ") <> 0 THEN flag = 1: n = INSTR(a$, "THEN ") + 5: GOSUB tracknumber IF INSTR(a$, "ELSE ") <> 0 THEN flag = 1: n = INSTR(a$, "ELSE ") + 5: GOSUB tracknumber IF INSTR(a$, "RUN ") <> 0 THEN flag = 1: n = INSTR(a$, "RUN ") + 4: GOSUB tracknumber IF INSTR(a$, "RESUME ") <> 0 THEN flag = 1: n = INSTR(a$, "RESUME ") + 7: GOSUB tracknumber IF INSTR(a$, "RETURN ") <> 0 THEN flag = 1: n = INSTR(a$, "RETURN ") + 7: GOSUB tracknumber IF flag = 0 THEN EXIT DO ELSE a$ = MID$(a$, n) LOOP LOOP PRINT "Number of line-numbered statements kept:"; count CLOSE #1 OPEN filename$ FOR INPUT AS #1 OPEN "filename.tmp" FOR OUTPUT AS #2 DO UNTIL EOF(1) LINE INPUT #1, a$ flag = 0 IF VAL(MID$(a$, 1, 1)) <> 0 THEN FOR i = 1 TO count IF VAL(a$) = linenumber(i) THEN flag = 1: EXIT FOR NEXT IF flag = 0 THEN a$ = MID$(a$, INSTR(a$, " ") + 1) END IF PRINT #2, a$ LOOP CLOSE #1, #2 SHELL _DONTWAIT "notepad filename.tmp" PRINT PRINT "Back up original file as .org and give edited file original file name? [Y/N]" DO b$ = UCASE$(INKEY$) SELECT CASE b$ CASE CHR$(27): SYSTEM CASE "N" ON ERROR GOTO resnxt KILL "filename.tmp" ON ERROR GOTO 0 PRINT PRINT "Temporary "+ CHR$(34) + "filename.tmp" + CHR$(34) + " was removed and no changes were made to original file." PRINT PRINT "Press any key to end." EXIT DO CASE "Y" ON ERROR GOTO resnxt KILL MID$(filename$, 1, INSTR(filename$, ".") - 1) + ".org" ON ERROR GOTO 0 NAME filename$ AS MID$(filename$, 1, INSTR(filename$, ".") - 1) + ".org" NAME "filename.tmp" AS filename$ PRINT : PRINT "File conversion completed. Press any key to end." EXIT DO END SELECT LOOP SLEEP SYSTEM tracknumber: DO count = count + 1 linenumber(count) = VAL(MID$(a$, n)) IF INSTR(a$, "ON") <> 0 AND INSTR(a$, "GOSUB") <> 0 OR INSTR(a$, "ON") <> 0 AND INSTR(a$, "GOTO") <> 0 THEN FOR i = n TO LEN(a$) IF VAL(MID$(a$, i, 1)) = 0 AND MID$(a$, i, 1) <> "0" AND MID$(a$, i, 1) <> "," AND MID$(a$, i, 1) <> " " THEN EXIT FOR IF MID$(a$, i, 2) = ", " THEN n = i + 1: EXIT FOR NEXT IF n <> i + 1 THEN EXIT DO ELSE EXIT DO END IF LOOP RETURN resnxt: RESUME NEXT
See also