1 PROGRAM RENUM1,2.1(116) !Basic program line renumbering utility
2 ! RENUMBERED ON 05/25/85
3 ! Donated to AMUS, May 1985
4 ! Modified from original renumbering program vintage 1981 - author unknown.
5 ! Modified by: Chuck Brite, Trinity Gospel Temple, Canton, Ohio
6 MAP1 NMBR,S,5 !Line number part of the source line
7 MAP1 REST,S,132 !Balance of the source line
8 MAP1 SRC'LINE,S,132 !Entire source line
9 MAP1 SAV'SRCE,S,132,"" !Saves first line when not a comment
10 MAP1 FILNAM,S,15 !Inputted name
11 MAP1 NAME,S,15 !Inputted name + extension
12 MAP1 NEWNAM,S,15 !Output file name
13 MAP1 OLDNAM,S,15 !Name to give old source file
14 MAP1 NEWLIN,F !Line number to give date line
15 MAP1 PRTLIN,S,5 !String version of NEWLIN
16 MAP1 START'LINE,F !Starting line number of source file
17 MAP1 COPY'TO,F !Starting line of output file
18 MAP1 END'LINE,F !Ending line of source file
19 MAP1 INCR,F !Increment to use
20 MAP1 A,F !Working Variables
21 MAP1 B,F !
22 MAP1 C,F !
23 MAP1 D,S,3 !
24 MAP1 YN,S,1 !
25 MAP1 POS,F !Marks end of line number
26 MAP1 BINDATE,B,4 !Variable for system date
27 MAP1 DATFILL,@BINDATE !
28 MAP2 MMM,B,1 !
29 MAP2 DDD,B,1 !
30 MAP2 YYY,B,1 !
31 MAP1 DATT,S,8 !Date as MM/DD/YY
32
33 START:
34 BINDATE = DATE
35 DATT=(MMM USING "#Z") + "/" + (DDD USING "#Z") + "/" + (YYY USING "#Z")
36 PRINT TAB(-1,0);"PROGRAM RENUMERING UTILITY VERSION 2.1";
37 GET'FILNAM:
38 PRINT TAB(10,5);TAB(-1,10);
39 PRINT "Enter filename or END to exit (Extension BAS is default)--->";
40 INPUT LINE FILNAM
41 IF FILNAM = "END" OR FILNAM = "" &
GOTO EXIT
42 IF INSTR(1,FILNAM,".")=0 &
NAME = FILNAM + ".BAS" &
ELSE &
NAME = FILNAM
43 LOOKUP NAME,A
44 IF A=0 &
PRINT CHR$(7);TAB(12,5);"Sorry, ";NAME;" was not found!"; :&
FOR A = 1 TO 10000 : NEXT :&
GOTO GET'FILNAM !AM100 & T users change 10000 to 1000
45 A = INSTR(1,FILNAM,":") + 1 !Does name have a device? (ie- DSK2:)
46 IF A > 1 &
FILNAM = FILNAM[A,-1] !Delete device name from FILNAM
47 A = INSTR(1,FILNAM,".") + 1 !Does name have an extension? (.BAS)
48 IF A > 1 &
FILNAM = FILNAM[1,A-1] !Delete extension from FILNAM
49 CONDITIONS:
50 PRINT TAB(12,5);"Use standard conditions? (ie: Renumber all lines in the";
51 PRINT TAB(13,5);"source program - the output file numbering to start at line";
52 PRINT TAB(14,5);"100 and increment by 10.)";
53 PRINT TAB(16,5);"Standard conditions? (RETURN/N)--->";
54 INPUT LINE YN
55 IF YN # "N" AND YN # "n" &
GOTO STANDARD
56 PRINT TAB(18,5);"Start with which line number in source program--->";
57 INPUT LINE START'LINE
58 IF START'LINE = 0 &
START'LINE = 1
59 PRINT TAB(19,5);"Copy to what start number in the output program--->";
60 INPUT LINE COPY'TO
61 IF COPY'TO = 0 &
COPY'TO = 100
62 PRINT TAB(20,5);"End with what line number in the source program--->";
63 INPUT LINE END'LINE
64 IF END'LINE = 0 &
END'LINE = 65534
65 PRINT TAB(21,5);"Use what line number increment (default=10)--->";
66 INPUT LINE INCR
67 IF INCR = 0 &
INCR = 10
68 ANYCNG:
69 PRINT TAB(23,5);"Any Change? (Y/RETURN)--->";
70 INPUT LINE YN
71 IF YN = "Y" OR YN = "y" &
PRINT TAB(12,5);TAB(-1,10); :&
GOTO CONDITIONS
72 OPEN'FILES:
73 PRINT TAB(2,1);TAB(-1,10);"RENUMBERING ";NAME;
74 OPEN #1,NAME,INPUT
75 B = INSTR(1,NAME,".") - 1
76 NEWNAM = NAME[1,B] + ".NEW"
77 LOOKUP NEWNAM,A
78 IF A # 0 &
KILL NEWNAM
79 OPEN #2,NEWNAM,OUTPUT
80 OLDNAM = NAME[1,B] + ".REN"
81 LOOKUP OLDNAM,A
82 IF A # 0 &
KILL OLDNAM
83 TITLE'LINE:
84 INPUT LINE #1,SRC'LINE !Read first line
85 CALL GET'LINE'NUMB
86 NMBR = SRC'LINE[1,(POS-1)]
87 REST = SRC'LINE[POS,-1]
88 IF NMBR >= START'LINE &
NMBR = COPY'TO
89 A = INSTR(1,REST,"PROGRAM") !Check for PROGRAM statement
90 B = INSTR(1,REST,"(") !Check for edit number
91 C = INSTR(1,REST,")")
92 IF A=0 OR B=0 OR C=0 OR B<A &
CALL TITLE :&
SRC'LINE = NMBR + " PROGRAM "+FILNAM+",1.0(99) !"+ SRC'LINE :&
ELSE &
SRC'LINE = NMBR + REST
93 B = INSTR(1,SRC'LINE,"(") !Get new location of edit number
94 C = INSTR(1,SRC'LINE,")")
95 PRINT TAB(3,1);TAB(-1,10);TAB(10,30);"SOURCE";TAB(10,40);"OUTPUT";TAB(12,28);
96 IF START'LINE <> 1 &
PRINT TAB(12,35);"Running";TAB(12,28);
97 UPDATE'VERSION'NUM:
98 B = B+1 : C=C-1 !Get edit number between parentheses
99 A = VAL(SRC'LINE[B,C]) !A is the edit number
100 IF A > 126 AND A < 131 &
A = 131 !Fix apparent bug in PROGRAM statement
101 D = STR(A + 1) !Increment edit number by one
102 SRC'LINE = SRC'LINE[1,B-1] + D + SRC'LINE[C+1,-1]
103 PRINT #2,SRC'LINE !Output first line
104 CALL DATE'LINE
105 READ'2ND'SOURCE'LINE:
106 INPUT LINE #1, SRC'LINE
107 IF INSTR(1,SRC'LINE,"RENUM") = 0 &
GOTO READ1 !Does 2nd source line have "RENUMBERED"?
!If not, bypass next input
108 READ'SOURCE'FILE:
109 INPUT LINE #1,SRC'LINE
110 IF EOF(1)=1 &
GOTO DONE
111 READ1:
112 CALL GET'LINE'NUMB
113 NMBR=SRC'LINE[1,(POS-1)]
114 IF VAL(NMBR) < START'LINE &
PRINT #2,SRC'LINE :&
GOTO READ'SOURCE'FILE
115 IF VAL(NMBR) > END'LINE AND VAL(NMBR) <= COPY'TO &
CALL BAD'RANGE
116 IF VAL(NMBR) > END'LINE &
PRINT #2,SRC'LINE :&
PRINT TAB(14,34);TAB(-1,9);"Bypassing"; :&
GOTO READ'SOURCE'FILE
117 PRINT " ";NMBR;SPACE(9);TAB(12,40);COPY'TO;TAB(12,28);
118 REST=SRC'LINE[POS,-1]
119 NMBR=COPY'TO
120 SRC'LINE=NMBR+REST
121 PRINT #2, SRC'LINE
122 COPY'TO=COPY'TO + INCR
123 GOTO READ'SOURCE'FILE
124
125 DONE:
126 CLOSE #1 : CLOSE #2 : B=0
127 XCALL RENAME,NAME,OLDNAM,A !*.BAS to *.REN
128 IF A # 0 &
B=1 : GOTO RENAME'ERR
129 XCALL RENAME,NEWNAM,NAME,A !*.NEW to *.BAS
130 IF A # 0 &
B=2 : GOTO RENAME'ERR
131 END'LINE:
132 PRINT TAB(4,1);TAB(-1,10);"DONE";
133 PRINT TAB(6,1);"OK to compile? (RETURN/N)--->";
134 INPUT LINE YN
135 IF YN = "N" OR YN = "n" &
GOTO EXIT
136 CREATE'COMMAND'FILE:
137 OPEN #3,"REN.CMD",OUTPUT
138 PRINT #3,":R"
139 PRINT #3,"COMPIL "+NAME+"/M"
140 PRINT #3,":S"
141 PRINT #3,"ERASE REN.CMD"
142 PRINT #3,":<"
143 PRINT #3," "
144 PRINT #3,"DONE"
145 PRINT #3,">"
146 CLOSE #3
147 PRINT
148 CHAIN "REN.CMD"
149
150 !**************************** EXCEPTIONS *******************************
151
152 EXIT:
153 PRINT TAB(-1,0);TAB(4,1);"EXIT"
154 PRINT : PRINT : END
155
156 STANDARD:
157 START'LINE = 1
158 COPY'TO = 100
159 END'LINE = 65534
160 INCR = 10
161 GOTO OPEN'FILES
162
163 BAD'RANGE:
164 PRINT CHR$(7);TAB(20,5);"Insufficient space to renumber with the increment you specified!";
165 PRINT TAB(21,5)"Try again using smaller increment.";
166 CLOSE #1: CLOSE #2
167 PRINT TAB(23,5);"RETURN to continue--->";
168 INPUT LINE YN
169 PRINT TAB(3,1);TAB(-1,10);
170 GOTO CONDITIONS
171
172 RENAME'ERR:
173 PRINT TAB(4,1);TAB(-1,10);TAB(8,1);"ERROR...";
174 IF B=1 &
PRINT NAME; &
ELSE &
PRINT NEWNAM;
175 PRINT " could not be renamed!"
176 END
177
178 !************************** SUBROUTINES ********************************
179
180 GET'LINE'NUMB:
181 A=INSTR(1,SRC'LINE," ")
182 B=INSTR(1,SRC'LINE,CHR(9))
183 IF A=0 AND B=0 &
POS=(LEN(SRC'LINE)+1) &
ELSE IF A=0 &
POS=B &
ELSE IF B=0 &
POS=A &
ELSE IF B>A &
POS=A &
ELSE IF A>B &
POS=B
184 RETURN
185
186 DATE'LINE: !Put date on 2nd output line
187 NEWLIN = (VAL(NMBR) + 1)
188 PRTLIN = STR(NEWLIN)
189 SRC'LINE = PRTLIN + " ! RENUMBERED ON "+DATT
190 PRINT #2,SRC'LINE !Output second line
191 NEW'LINE'NUM:
192 IF INCR = 1 &
COPY'TO = NEWLIN + INCR &
ELSE IF NMBR >= START'LINE &
COPY'TO = COPY'TO + INCR
193 IF SAV'SRCE = "" &
RETURN
194 IF INCR < 3 &
NEWLIN = NEWLIN + INCR &
ELSE &
NEWLIN = COPY'TO
195 PRTLIN = STR(NEWLIN)
196 SRC'LINE = PRTLIN + SAV'SRCE
197 PRINT #2,SRC'LINE !Output original first source line as line 3.
198 SAV'SRCE = ""
199 GOTO NEW'LINE'NUM
200
201 TITLE:
202 A = INSTR(1,REST,"!") !Is there a comment character?
203 IF A = 0 OR A > 2 &
A= INSTR(1,REST,"REM") !Is there a REMark statement?
204 PRINT TAB(4,1);TAB(-1,10);
205 SRC'LINE = ""
206 IF A > 0 AND A < 3 &
GOTO COMMENT !Original source line has comment
207 INPUT'TITLE: !Original source line has no comment.
208 SAV'SRCE = REST[A+1,-1] !Save contents for third output line
209 PRINT "Enter title to follow PROGRAM statement. 50-60 characters maximum.";
210 PRINT TAB(6,1);"Enter Title----->";
211 INPUT LINE SRC'LINE
212 RETURN
213 COMMENT:
214 PRINT "First source line is as follows:";
215 PRINT TAB(6,10);REST;
216 PRINT TAB(8,1);"Enter new title (50-60 characters) below or <RETURN> if no change.";
217 PRINT TAB(10,1);"New Title ----->";
218 INPUT LINE SRC'LINE
219 IF SRC'LINE = "" &
SRC'LINE = REST !No change, keep it the same.
220 RETURN