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 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 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