" 2430 GOTO 2100 2900 ! & !return & ! 2990 RETURN 3000 ! & ! & ! SUBROUTINE: open the file & ! & ! 3100 ! & !open it & ! 3110 OPEN FILE$ FOR INPUT AS FILE #1% 3120 RETURN 3200 ! & !file not found & ! 3210 ERROR% = 1% 3220 PRINT BELL$;"Can't find "; FILE$ 3230 RETURN 3300 ! & !protection violation & ! 3310 ERROR% = 2% 3320 PRINT BELL$;"I don't have access to ";FILE$ 3330 RETURN 3900 ! & !return & ! 3990 RETURN 4000 ! & ! & ! SUBROUTINE: copy the file & ! & ! 4100 ! & !print heading & ! 4110 PRINT " ***** file begins *****" 4200 ! & !input a line & ! 4210 INPUTLINE #1%, IN$ \ & IN$ = CVT$$(IN$,4%) 4300 ! & !adjust for tabs & ! 4310 I% = INSTR(1%,IN$,CHR$(9%)) 4320 IF I% = 0% THEN GOTO 4400 4330 R% = (I% - 1%) - (I% - 1%) / 8% * 8% 4340 SP% = 8% - R% & ! The character after a tab should be in positions 9, 17, 25, & ! 33, etc. They are all one more than a multiple of 8. The & ! part of the string before the tab must be expanded with & ! with spaces so that it is the next multiple of eight. & ! R% = (I% - 1%) - (I% - 1%) / 8% * 8% is how far past a & ! multiple of eight this string is. The number of spaces to & ! is then 8% - R%. & ! 4350 IN$ = LEFT(IN$,I%-1%) + SPACE$(SP%) + RIGHT(IN$,I%+1%) 4360 GOTO 4310 4400 ! & !select range & ! 4410 IN$ = MID(IN$,LCOL%,RCOL%-LCOL%+1%) 4500 ! & !print it & ! 4510 PRINT IN$ 4600 ! & !go back for another line & ! 4610 GOTO 4200 4900 ! & !return & ! 4910 CLOSE #1% 4920 PRINT " ***** end of file *****" 4990 RETURN 5000 ! & ! & ! SUBROUTINE: & ! & ! 5900 ! & !return & ! 5990 RETURN 6000 ! & ! & ! SUBROUTINE: & ! & ! 6900 ! & !return & ! 6990 RETURN 7000 ! & ! & ! SUBROUTINE: & ! & ! 7900 ! & !return & ! 7990 RETURN 8000 ! & ! & ! FUNCTIONS & ! & ! 8100 ! & !& ! 8200 ! & !& ! 8300 ! & !& ! 8400 ! & !& ! 8500 ! & !& ! 8990 RETURN 9000 ! & ! & ! Error Routine & ! & ! 9100 ! & !^C error & ! 9110 IF ERR = 28 THEN RESUME 800 9200 ! & !Expected errors (by line number) & ! 9210 IF ERL = 2220 & OR ERL = 2230 & THEN RESUME 2400 & !illegal number for column 9220 IF ERL = 4210 THEN RESUME 4900 & !end-of-file on input 9600 ! & !Expected errors (by type) & ! 9610 IF ERR = 5 THEN RESUME 3200 & !can't find file 9620 IF ERR = 10 THEN RESUME 3300 & !protection violation 9900 ! & !Unexpected errors & ! 9910 Z$ = SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)) 9920 ERROR$ = RIGHT(Z$,3%) 9930 PRINT " ***** Whoops! *****" \ & PRINT " "; ERROR$; " at line";ERL 9990 GOTO 32767 30000 ! & ! & ! CCL entry & ! & ! 30100 ! & !check for correct entry & ! 30110 ARG$ = SYS(CHR$(7%)) 30111 IF LEFT(ARG$,1%) = "Q" & THEN ARG$ = "PIP2KB" + RIGHT(ARG$,2%) !* D 30120 IF LEFT(ARG$,6%) <> "PIP2KB" & THEN PRINT 'Incorrect CCL. Use "PIP2KB".' \ & GOTO 32767 30200 ! & !pull off argument & ! 30210 ARG$ = RIGHT(ARG$,7%) \ & ARG$ = CVT$$(ARG$,-1%) 30300 ! & !seperate file name and column specification & ! 30310 SEMI% = INSTR(1%,ARG$,";") 30320 IF SEMI% = 0% & THEN FILE$ = ARG$ \ & COLS$ = "" 30330 IF SEMI% <> 0% & THEN FILE$ = LEFT(ARG$,SEMI%-1%) \ & COLS$ = RIGHT(ARG$,SEMI%+1%) 30400 ! & !branch to beginning & ! 30410 GOTO 80 32767 END PIP2KBBAS[.050021]PIP2KB.BAS[.050021]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddf