r",N$):IF N>3 THEN N=N-3 47310 ON N GOTO 47320,47350,47380 47315 GOTO 47110 47319 ' pause 47320 PRINT @ BOTT,BLANK$BOTT$" PRINTING PAUSED * Press any key to continue - "; 47325 A$=INKEY$:IF A$="" THEN 47325 ELSE N$="":PRINT PP$;:GOTO 47120 47349 ' abort 47350 CLOSE 47355 KILL MF$ 47360 GOTO 47520 47379 ' redo 47380 ' 47385 PRINT @ BOTT,BLANK$BOTT$" REDO REPORT * Press any key to continue - "; 47390 A$=INKEY$:IF A$="" THEN 47390 ELSE LC=0:PG=0:GOTO 47065 47399 ' if sort detected error 47400 PRINT @ BOTT,BLANK$BOTT$"SORT DETECTED ERROR #";EC!;", nter to continue -"; 47410 A$=INKEY$:IF A$=CHR$(13) THEN 47510 ELSE 47410 47499 'if no PRINTCMD file 47500 RESUME 47510 47510 ON ERROR GOTO 53000 47520 ST=0:CP=0:CLOSE:GOTO 202 53000 REM ERROR TRAPS 53005 REM 53010 REM 53015 REM 53020 REM 53025 REM 53030 REM 53035 REM 53040 REM 54000 REM 54010 REM 54100 PRINT @ BOTT,;BLANK$;BOTT$;E$(X);CHR$(7):PRINT 54200 CLOSE:END 60000 REM ..... TIME DELAY ..... 60010 FOR Z = 1 TO 700 60020 NEXT Z 60030 RETURN APS 53005 REM 5:RUN "QUIKPRT4" 540 GOSUB 2000:RUN "QUIKIDEX"' INDEX PROGRAM 545 RUN "HELPFUL" 550 CLS :PRINT "QUIKPRO+II ENDED" 570 SOUND 30,3 580 CLEAR 500 600 END 2000 PRINT : PRINT "LOADING PROGRAM ...";:RETURN 1 ' RANDWRT VER. 2.2 11/23/81 2 ' (C) 1981 FUTURESOFT 3 ' PORTIONS OF THIS PROGRAM 4 ' ARE PROTECTED FROM SALE BY 5 ' U.S. COPYRIGHT LAWS 10 REM 15 ON ERROR GOTO 53000 21 CLEAR 1500:FILES 2,512 22 BOTT = 416 26 REM 135 REM 145 REM 160 RB$=CHR$(8) 165 SB$=CHR$(232) 170 BK$=STRING$(63,32)+STRING$(63,8) 175 REM 185 DIM F$(T),F(T):' DIMENSION FIELDS 190 D$=CHR$(94)+STRING$(KL,32):' DUMMY KEY 205 A=INT(255/(KL+6)): ' NUMBER OF KEYS PER SECTOR 210 OPEN "R",1,V1$,RL:' OPEN MASTER FILE 220 OPEN "R",2,V2$:' OPEN KEY FILE 225 FIELD 1,RL AS FR$:' FIELD MASTER FILE BUFFER 227 FIELD 2,255 AS KS$:' FIELD KEY FILE BUFFER 300 PRINT CL$; 700 CLS:PRINT HOME$;:' ... PRINT SCREEN.... 4000 ' ... BEGIN MAINLINE 4003 UPDATE$="" 4004 FOR X = 1 TO T:F$(X)="":F(X)=0: NEXT X: REM .. CLEAR FIELDS 4005 PRINT @ BOTT,BK$;"DD RECORD, ET RECORD, EARCH OR ND PROGRAM "; 4010 TY$="A":FL=1 4015 GOSUB 21000 4020 IF T$="A" THEN 4100 4025 IF T$="G" THEN UPDATE$="YES":GOTO 15000 4030 IF T$="E" THEN 40000 4035 IF T$="S" OR T$="s" THEN PRINT @ BOTT,BK$;"SEARCH SOMETHING IN A IELD OR NYWHERE IN THE FILE ";:Z2=1:GOSUB 21000:IF T$="F" OR T$="f" THEN GOTO 45000 ELSE GOTO 14000 4040 PRINT CHR$(7); 4050 GOTO 700 4099 ' 4100 ' ... START OF INPUT 4101 ' 4999 ' ... SPLIT RECORD INTO FIELDS 5000 R$="" 10000 ' ... IF UPDATE SWITCH IS YES THEN SKIP NEXT SECTION 10005 IF UPDATE$="YES" THEN 12620 12000 ' 12010 ' ... RANDOM WRITE 12500 ' ... LOOK FOR SPACE TO WRITE RECORD 12510 X=0:IF LOF(2)=0 THEN 12530 12515 X=X+1:GET #2,X:IF INSTR(KS$,D$)<>0 THEN 12580 12520 IF LOF(2)=X THEN 12530 ELSE GOTO 12515 12530 X=X+1:KR$="":FORY=1TOA:KR$=KR$+CHR$(94)+STRING$(KL,32):G$=STR$(LOF(2)*A+Y):KR$=KR$+STRING$(5-LEN(G$),32)+G$:NEXTY 12540 LSETKS$=KR$:PUT #2,X 12550 LSET FR$=STRING$(RL,0):FOR Y=1TOA:PUT #1,(LOF(2)-1)*A+Y:NEXT Y:' CLEAR MASTER FILE RECORD 12580 ' ... WRITE KEY ....... 12590 KR$=KS$ 12600 P=INSTR(KR$,D$) 12610 KREC=X: ' ... PHYS REC. NUMBER 12620 '.. INSERT KEY INTO RECORD 12625 K$=CHR$(94)+K$ 12630 KR$=MID$(KR$,1,P-1)+K$+MID$(KR$,P+LEN(K$),LEN(KR$)) 12640 ' ... GET LOGICAL RECORD FROM KEY FILE 12650 LR=VAL(MID$(KR$,P+LEN(K$),5)) 12660 ' ... WRITE MASTER FILE 12670 LSET FR$=R$ 12680 PUT #1,LR 12690 REM ... WRITE KEY RECORD 12700 LS45110 PRINT @ BOTT,BK$;"QUAL, ESS OR REATER THAN THE NUMBER ENTERED ";:FL=1:GOSUB 21000 45115 IF T$="" THEN 45110 45120 IF ASC(T$)>90 THEN T$=CHR$(ASC(T$)-32) 45130 CP = INSTR(" ELGelg",T$)-1: IF CP>3 THEN CP=CP-3 45140 IF CP<1 OR CP>3 THEN PRINT CHR$(7);:GOTO 45110 45150 C1=FP:C2=FL(FC) 45200 OPEN "R",3,"SORT/V10":IF LOF(3)>0 THEN CLOSE 3: GOTO 45205 ELSE T$="N":CLOSE 3:GOTO 45210 45201 REM 45202 REM 45203 REM 45204 REM 45205 PRINT @ BOTT,BK$"DO YOU WANT YOU REPORT IN SORTED ORDER? (Y/N)-";:FL=1:GOSUB 21000:IF T$="" THEN 45205 45210 IF INSTR("Nn",T$) THEN IF CP THEN 45500 ELSE 14038 45215 IF INSTR("Yy",T$)=0 THEN 45205 45216 FOR X=1 TO T:IF TY$(X)="Z" THEN 45218 ELSE N$=MID$(STR$(X),2) 45217 PRINT @ CP(X),N$;:IF FL(X)<>1 THEN PRINT STRING$(FL(X)-LEN(N$),"."); 45218 NEXT 45219 ' 45220 CLOSE:PRINT @ BOTT,BK$"WHAT FIELD DO YOU WANT TO SORT ON? (ENTER FIELD NUMBER) - "; 45225 FL=2:GOSUB 21000:IF T$="" OR VAL(T$)<1 OR VAL(T$)>T THEN 45220 45226 IF TY$(VAL(T$))="Z" THEN PRINT @ BOTT,BLANK$"> Cannot Sort on Display Only Fields <";:GOSUB 60000:FOR X=1 TO T:PRINT @ CP(X),STRING$(FL(X),".");:NEXT:GOTO 45205 45230 S1=1:FOR X=0 TO VAL(T$)-1 45231 IF TY$(X)<>"Z" THEN S1=S1+FL(X) 45232 NEXT 45235 S2=FL(VAL(T$)):NF=INSTR("AN",TY$(VAL(T$)))-1 45236 IF CP THEN PRINT @ CP(FC),SS$ 45254 ' WRITE SORT COMMAND FILE 45255 OPEN"O",3,PN$+"/SRT" 45260 PRINT#3,PN$' PROGRAM NAME 45261 PRINT#3,V1$' MASTER FILE 45262 PRINT#3,"0"' SCRATCH DRIVE 45263 PRINT#3,"0"' SORTED KEY WRITE DRIVE 45264 PRINT #3," " 45265 PRINT#3,RL ' RECORD LENGTH 45266 PRINT#3,S1' SORT FIELD POSITION 45267 PRINT#3,S2' SORT FIELD LENGTH 45268 PRINT#3,NF' ALPHA OR NUMERIC (0/1) 45269 PRINT#3,MP' DECIMAL PRECISION (.1234) 45270 PRINT#3,SS$' TEST/SEARCH STRING$ 45271 PRINT#3,CP' TYPE TEST 45272 PRINT#3,C1' TEST FIELD POSITION 45273 PRINT#3,C2 ' TEST FIELD LENGTH 45274 PRINT#3,0' RESERVED 45275 PRINT#3,0' RESERVED 45276 PRINT#3,0' RESERVED 45279 CLOSE 3:OPEN"O",3,"SORTCMD/DAT":PRINT#3,PN$+"/SRT" 45280 PRINT @ BOTT,BK$"--LOADING QUIKPRO+II SORT--"; 45290 RUN "SORT/V10" 45500 REM 45505 X=1:GET #1,X 45506 PRINT @ BOTT,BK$"PRESS ANY KEY TO STOP SEARCH "; 45510 ' 45520 IF LOF(1)=X-1 THEN GOSUB 28000:GOTO 700 ELSE GET #1,X:X=X+1 45521 IF FR$=STRING$(RL,0) THEN 45520 45525 IF BF=0 THEN RS$=MID$(FR$,C1,C2):GOTO 45530 45526 IF FC=BF THEN RS$=MID$(FR$,FB,255)+MID$(FR1$,FL(FC)-FB):GOTO 45530OK 45527 IF FC>BF THEN RS$=MID$(FR1$,FP-255,FL(FC)) 45530 ON CP GOTO 45600,45700,45800,45900 45600 REM TEST NUMBER IF EQUAL 45610 IF VAL(RS$)=VAL(SS$) THEN GOSUB 15390:GOTO 45950 ELSE 45950 45700 REM TEST NUMBER IF LESS 45710 IF VAL(RS$)VAL(SS$) THEN GOSUB 15390:GOTO 45950 ELSE 45950 45900 IF INSTR(RS$,SS$)<>0 THEN GOSUB 15390:GOTO 45950 ELSE 45950 45950 IF ST THEN RETURN 45954 IF INKEY$<>"" THEN 700 45955 GOTO 45510 45956 GOSUB 28000' Total Out Record 45960 GOTO 700 ' Return to Mainline 46054 REM 46999 ' PRINTCMD ( Report Program Command File ) 47000 REM 47005 OPEN "R",1,"KEYCMD/DAT",10 47006 IF LOF(1)=0 THEN CLOSE:GOTO 47520: ELSE CLOSE 47010 OPEN "I",1,"KEYCMD/DAT" 47020 INPUT #1,EC 47021 INPUT#1,MF$'SORTED KEY FILE NAME 47022 INPUT#1,A$'CALLING PROGRAM NAME 47023 INPUT#1,SS$'TEST/SEARCH STRING 47024 INPUT#1,CP'TYPE TEST 47025 INPUT#1,C1'TEST FIELD POS 47026 INPUT#1,C2'TEST FIELD LENGTH 47027 INPUT#1,X'RESERVED 47028 INPUT#1,X'RESERVED 47029 INPUT#1,X'RESERVED 47035 IF A$<>PN$ THEN 47510' NOT CALLED FROM THIS PROGRAM 47040 CLOSE:KILL "KEYCMD/DAT" ' kill CMD file 47045 REM 47050 REM 47055 OPEN"R",2,V1$,RL:' open master file 47056 FIELD 2 ,RL AS FR$ 47060 OPEN"R",1,MF$' open key file 47061 IF LOF(1)=0 THEN CLOSE 1:KILL MF$:GOTO 202 ' check if good 47065 RX=1:Y=1:GET #1,Y' set buff & rec counter 47090 ST=1:UPDTE$="S" 47095 PRINT @ BOTT,BK$"

AUSE, BORT, EDO (HOLD DOWN KEY "; 47100 FIELD 1,(RX*5-5) AS DU$,5 AS RN$' point to Rec Number 47101 A=CVN(RN$) 47102 IF A=0 THEN GOSUB 28000:GOTO 47140' if done total/copy? 47103 RX=RX+1:IF RX>50 THEN RX=1:Y=Y+1:GET #1,Y ' get more keys 47110 N$=INKEY$:IF N$<>"" THEN 47300' check for interrupt 47120 GET #2,A:IF CP THEN GOSUB 45525:GOTO 47100 47130 IF INSTR(FR$,SS$) THEN GOSUB 15390 ELSE GOTO 47100 47135 GOTO 47100 47140 ' another copy / return to program 47150 PRINT @ BOTT,BK$"DO YOU WANT TO PRINT ANOTHER COPY (Y/N ) - "; 47160 FL=1:GOSUB 21000:IF T$="" THEN 47160 47165 IF INSTR("Nn",T$) THEN CLOSE:KILL MF$:GOTO 47520 47170 IF INSTR("Yy",T$) THEN LC=0:PG=0:GOTO 47065 47180 GOTO 47150 47299 ' Pause / Abort /Redo 47300 N=INSTR("PARpa502 PRINT #-2, STRING$( 6,10); 18560 GOTO 15320 28000 RETURN 25003 RETURN 50 REM . . . . ---> Program Name is LABELS <----- 1 REM RANDPRT/NEW COLOR COMPUTER 2 REM (C) 1986,1987 ICR FUTURE- SOFT 3 REM 4 REM 5 REM 10 REM 12 CLEAR 1500:FILES 3,770 15 REM 135 REM 140 REM 150 REM 155 BK$=STRING$(63,32)+STRING$(63,8) 160 BOTT = 416 165 BLANK$=BK$ 170 RB$=CHR$(8) 175 SB$=CHR$(232) 185 DIM F$(T),F(T),T(T):REM DIMENSION FIELDS 187 REM 188 REM 190 D$=CHR$(94)+STRING$(KL,32):REM DUMMY KEY 201 GOTO 47000 'check for PRINTCMD 202 ' arrive here after PRINTCMD ( Report Program Command File ) 204 REM 205 A=INT(255/(KL+6)): REM NUMBER OF KEYS PER SECTOR 210 OPEN "R",1,V1$,RL:REM OPEN MASTER FILE 220 OPEN "R",2,V2$:REM OPEN KEY FILE 225 FIELD 1,RL AS FR$:REM FIELD MASTER FILE BUFFER 227 FIELD 2,255 AS KS$:REM FIELD KEY FILE BUFFER 300 CLS 410 FOR X = 1 TO T:F$(X)=STRING$(FL(X),0):NEXT X 700 REM ... PRINT SCREEN 701 CLS 4000 REM ... BEGIN MAINLINE 4003 UPDATE$="" 4004 FOR X = 1 TO T:T(X)=0: NEXT X: REM .. CLEAR FIELDS 4005 PRINT @ BOTT,;BLANK$;BOTT$;"et Record, earch, Select, Sort or nd Program "; 4010 TY$="A":FL=1 4015 GOSUB 21000 4025 IF T$="G" THEN UPDATE$="YES":GOTO 15000 4030 IF T$="E" THEN 40000 4035 IF T$="S" OR T$="s" THEN PRINT @ BOTT,;BLANK$;BOTT$;"Select something in a IELD OR NYWHERE in the file ";:Z2=1:GOSUB 21000: IF T$="F" OR T$="F" THEN GOTO 45000 ELSE GOTO 14000 4040 PRINT CHR$(7); 4050 GOTO 4005 14000 REM ..... STRING SEARCH ...... 14002 X=0:LC=0:PG=0 14005 UPDATE$="S" 14010 PRINT @ BOTT,;BLANK$;BOTT$;"Search for ? - ";:REM .. SEARCH 14020 FL=30:REM ... MAXIMUM LENGTH OF SEARCH STRING .... 14030 TY$="A":REM ... SEARCH STRING IS ALPHA-NUMERIC .... 14035 GOSUB 21000:Q$=T$ 14036 IF Q$="" THEN PRINT @ BOTT,BLANK$BOTT$"Print All Records ? (Y/N) - ";:FL=1:GOSUB 21000: IF T$="N" THEN 4000 ELSE IF T$<>"Y" THEN 14036 14037 SS$=Q$:GOTO 45205 : ' SORT ? 14038 PRINT @ BOTT,;BLANK$;BOTT$;"Press any key to stop search ";:FL=1:TY$="A" 14040 FOR X = 1 TO LOF(1):GET #1,X:IF (INSTR(FR$,Q$)<>0 OR Q$="") AND FR$<>STRING$(RL,0) THEN GOTO 14100 14045 IF INKEY$<>""THEN4000 14060 NEXT X:GOSUB 28000:GOTO 4000 14100 GOSUB 15390:REM .. PRINT RECORD ....... AND RETURN .... 14200 PRINT @ BOTT,;BLANK$;BOTT$;" top - "; 14210 IF INKEY$="S" THEN 4000 14250 GOTO 14060 14300 REM ..... remember that you have a line at 18200 ... 15000 REM 15002 REM ... GET RECORD 15003 PG=0:LC=0 15395 IF LC=<0 THEN GOSUB 25000 18200 IF UPDATE$="S" THEN RETURN 21000 REM ... ALPHA NUMERIC IKEYBOARD SCAN 21005 T$="" 21010 PRINT SB$;:A$=INKEY$:IF A$="" THEN PRINT RB$;:GOTO 21010 21015 PRINT RB$; 21020 IF ASC(A$)=8 AND LEN(T$)>0 THEN PRINT CHR$(8);:T$=LEFT$(T$,LEN(T$)-1):GOTO 21010 21030 IF ASC(A$)=13 THEN 21100 21040 IF ASC(A$)<32 OR ASC(A$)>127 THEN 21010 21050 T$=T$+A$ 21060 IF LEN(T$)>FL THEN T$=MID$(T$,1,LEN(T$)-1):PRINT CHR$(7);:GOTO 21010 21065 PRINT A$; 21070 GOTO 21010 21100 RETURN 23000 REM ... CHECK FOR VALID NUMERIC ..... 23005 F1=0:F2=0:N=0 23010 FOR X = 1 TO LEN(T$) 23020 A=ASC(MID$(T$,X,1)) 23030 IF A<45 OR A>57 THEN PRINT CHR$(7);:GOTO 23100 23040 IF A=47 THEN 23050 IF A=46 THEN F1=F1+1:IF F1>1 THEN PRINT CHR$(7);:GOTO 23100 23060 IF A=45 THEN F2=F2+1:IF F2>1 THEN PRINT CHR$(7);:GOTO 23100 23070 NEXTX 23080 IF INSTR(T$,"-")>1 THEN PRINT CHR$(7);:GOTO 23100 23090 N=1 23100 RETURN 25000 REM HEADER ......................... 25005 PG=PG+1 25006 PRINT #-2, FF$ 25007 PRINT #-2, " " 25009 PRINT #-2, " ":PRINT #-2, " " 25300 LC=PL:RETURN 40000 PRINT @ BOTT,;BLANK$;BOTT$;"Press Enter to End Program ";:INPUT D$ 40010 END:REM . . . YOU MAY GO TO ANOTHER PROGRAM FROM HERE . 40020 REM 40030 REM 40040 REM 45000 ' relational prompting 45001 UPDTE$="S" 45002 LC=0 45005 FC=0:FP=1:CP=0:BF=0 45010 PRINT @ BOTT,BK$;"PRESS ENTER TO GET TO THE FIELD YOU WANT TO SEARCH ON.."; 45030 FL=1:GOSUB 21000 45031 PRINT @ BOTT,BK$;"... THEN, TYPE IN WHAT YOU WANT TO SEARCH FOR. "; 45035 FC=FC+1:IF FC>T THEN 4000:ELSE IF TY$(FC)="Z" THEN 45035 45036 FL=FL(FC):PRINT @ CP(FC),""; 45038 GOSUB 21000:IF T$<>"" AND TY$(FC)="N" THEN GOSUB 23000:IF N=0 THEN PRINT @ CP(FC),STRING$(FL(FC),".");:GOTO 45036 45040 IF T$<>"" THEN 45048 45042 IF BF>0 THEN 45046 45044 IF FP+FL(FC)-1>255 THEN BF=FC:FB=255-(FP-FL(FC)-1) 45046 FP=FP+FL(FC):GOTO 45035 45048 SS$=T$ 45050 IF TY$(FC)<>"N" THEN CP=4:GOTO 45150'sort ? 45100 PRINT @ BOTT,BK$;"THE FIELD YOU ARE SEARCHING IS A NUMBER FIELD...";:GOSUB 60000 45105 PRINT @ BOTT,BK$;"YOU MAY SEARCH FOR RECORDS IN YOUR REPORT THAT ARE.. ";:GOSUB 60000 THEN CLOSE 1:KILL MF$:GOTO 202 ' check if good 47065 RX=1:Y=1:GET #1,Y' set buff & rec counter 47090 ST=1:UPDTE$="S" 47095 PRINT @ BOTT,BK$"

AUSE, BORT, EDO (HOLD DOWN KEY "; 47100 FIELD 1,(RX*5-5) AS DU$,5 AS RN$' point to Rec Number 47101 A=CVN(RN$) 47102 IF A=0 THEN GOSUB 28000:GOTO 47140' if done total/copy? 47103 RX=RX+1:IF RX>50 THEN RX=1:Y=Y+1:GET #1,Y ' get more keys 47110 N$=INKEY$:IF N$<>"" THEN 47300' check for interrupt 47120 GET #2,A:IF CP THEN GOSUB 45525:GOTO 47100 47130 IF INSTR(FR$,SS$) THEN GOSUB 15390 ELSE GOTO 47100 47135 GOTO 47100 47140 ' another copy / return to program 47150 PRINT @ BOTT,BK$"DO YOU WANT TO PRINT ANOTHER COPY (Y/N ) - "; 47160 FL=1:GOSUB 21000:IF T$="" THEN 47160 47165 IF INSTR("Nn",T$) THEN CLOSE:KILL MF$:GOTO 47520 47170 IF INSTR("Yy",T$) THEN LC=0:PG=0:GOTO 47065 47180 GOTO 47150 47299 ' Pause / Abort /Redo 47300 N=INSTR("PARpar",N$):IF N>3 THEN N=N-3 47310 ON N GOTO 47320,47350,47380 47315 GOTO 47110 47319 ' pause 47320 PRINT @ BOTT,BLANK$BOTT$" PRINTING PAUSED * Press any key to continue - "; 47325 A$=INKEY$:IF A$="" THEN 47325 ELSE N$="":PRINT PP$;:GOTO 47120 47349 ' abort 47350 CLOSE 47355 KILL MF$ 47360 GOTO 47520 47379 ' redo 47380 ' 47385 PRINT @ BOTT,BLANK$BOTT$" REDO REPORT * Press any key to continue - "; 47390 A$=INKEY$:IF A$="" THEN 47390 ELSE LC=0:PG=0:GOTO 47065 47399 ' if sort detected error 47400 PRINT @ BOTT,BLANK$BOTT$"SORT DETECTED ERROR #";EC!;", nter to continue -"; 47410 A$=INKEY$:IF A$=CHR$(13) THEN 47510 ELSE 47410 47499 'if no PRINTCMD file 47500 RESUME 47510 47510 ON ERROR GOTO 53000 47520 ST=0:CP=0:CLOSE:GOTO 202 53000 REM ERROR TRAPS 53005 REM 53010 REM 53015 REM 53020 REM 53025 REM 53030 REM 53035 REM 53040 REM 54000 REM 54010 REM 54100 PRINT @ BOTT,;BLANK$;BOTT$;E$(X);CHR$(7):PRINT 54200 CLOSE:END 60000 REM ..... TIME DELAY ..... 60010 FOR Z = 1 TO 700 60020 NEXT Z 60030 RETURN APS 53005 REM 53010 REM 53015 REM 53020 REM 53025 REM 53030 REM 53035 REM 53040 REM 54000 REM 54010 REM 54100 PRINT @ BOTT,;BLANK$;BOTT$;E$(X)X) 10200 PRINT#1,(X-1)*64;",";Q$;A$(X);Q$;", ,D, , ":NEXTX 10300 FORX=1TOU 10500 PRINT#1,Z1(X);",,";Z2(X);",";Z2$(X);",";Z3$(X);",";Z4$(X);",";Q$;Z5$(X);Q$;",";Z6$(X) 10600 NEXTX 10700 CLOSE1 10800 GOSUB 55100:PRINT "CREATING YOUR PROGRAM ...":PRINT"PLEASE 20 REM 25 REM 110 V1$= "HUNTER/DAT": REM .. MASTER FILE NAME ... 112 V2$= "HUNTER/ISI":REM .. KEY FILE NAME ... 120 RL = 74 : REM ..... RECORD LENGTH ... 125 KL = 13 : REM ..... KEY LENGTH .... 130 T = 7 : REM ... TOTAL NUMBER OF FIELDS 135 HOME$ = 140 SUBKEY = INT(255/(KL +6)) 145 REM 150 = STRING$( 31,32) 155 BK$= STRING$(63,32)+STRING$(63,8); 160 REM 165 BLANK$ = BK$ 170 RB$= "" 175 SB$= "" 176 HE$= "" 177 FF$=CHR$(12): REM *** FORM FEED CODE 179 PL = 6 200 PN$ = "LABELS" 301 DIM CP( 7 ),FL( 7 ),TY$( 7 ) 302 FL( 1)= 13 :CP( 1)= 75:TY$( 1)="A" 303 FL( 2)= 13 :CP( 2)= 107:TY$( 2)="A" 304 FL( 3)= 17 :CP( 3)= 139:TY$( 3)="A" 305 FL( 4)= 12 :CP( 4)= 171:TY$( 4)="A" 306 FL( 5)= 4 :CP( 5)= 203:TY$( 5)="A" 307 FL( 6)= 7 :CP( 6)= 235:TY$( 6)="A" 308 FL( 7)= 8 :CP( 7)= 267:TY$( 7)="A" 701 PRINT CL$; 702 PRINT "HUNTERS ASSOCIATION" 703 PRINT "" 704 PRINT "LST-NAME ............." 705 PRINT "FST-NAME ............." 706 PRINT "STREET ................." 707 PRINT "CITY ............" 708 PRINT "PROV. ...." 709 PRINT "PCODE ......." 710 PRINT "YELEPHONE ........" 711 PRINT "" 712 PRINT "" 713 PRINT "" 714 PRINT "" 15060 FL = 13 15065 PRINT @ BOTT,BK$;"ENTER LSTNAME KEY - ";""; 15070 TY$ = "A" 15100 GOSUB 21000 15110 IF LEN(T$)=0 THEN 4000:REM.RETURN TO MAINLINE IF NULL ENTRY 15200 K$=T$:REM. PASS INKEY TO KEY VAR. 15210 K$ = K$ + STRING$(FL-LEN(K$),32): REM . . LEFT JUST & PAD 15220 K$ = CHR$(94) + K$ 15300 REM . . . . . LOCATE RECORD . . . . . . . 15310 P = 0 15315 KREC = 1 15320 FOR X = KREC TO LOF(2): GET #2,X:IF INSTR(P+1,KS$,K$)=0 THEN P=0 :NEXT X ELSE 15340 15330 PRINT @ BOTT,BK$;CHR$(7)"---> END OF FILE <---";:GOSUB 28000:GOSUB 60000:GOTO 4000 15340 REM . . . . GET RECORD FROM MASTER FILE . . . . 15350 KR$=KS$ 15355 KREC = X 15360 P = INSTR(P+1,KR$,K$) 15370 LR = VAL(MID$(KR$,P+LEN(K$),5)) 15380 GET #1,LR 15390 REM . . . SUBDIVIDE & PRINT RECORD . . . 15400 F$( 1 ) = MID$(FR$, 1 , 13 ) 15410 F$( 2 ) = MID$(FR$, 14 , 13 ) 15420 F$( 3 ) = MID$(FR$, 27 , 17 ) 15430 F$( 4 ) = MID$(FR$, 44 , 12 ) 15440 F$( 5 ) = MID$(FR$, 56 , 4 ) 15450 F$( 6 ) = MID$(FR$, 60 , 7 ) 15460 F$( 7 ) = MID$(FR$, 67 , 8 ) 17500 ' PRINT RECORD 17020 REM 40030 REM 40040 REM 45000 ' relational prompting 45001 UPDTE$="S" 45002 LC=0 45005 FC=0:FP=1:CP=0:BF=0 45010 PRINT @ BOTT,BK$;"PRESS ENTER TO GET TO THE FIELD YOU WANT TO SEARCH ON.."; 45030 FL=1:GOSUB 21000 45031 PRINT @ BOTT,BK$;"... THEN, TYPE IN WHAT YOU WANT TO SEARCH FOR. "; 45035 FC=FC+1:IF FC>T THEN 4000:ELSE IF TY$(FC)="Z" THEN 45035 45036 FL=FL(FC):PRINT @ CP(FC),""; 45038 GOSUB 21000:IF T$<>"" AND TY$(FC)="N" THEN GOSUB 23000:IF N=0 THEN PRINT @ CP(FC),STRING$(FL(FC),".");:GOTO 45036 45040 IF T$<>"" THEN 45048 45042 IF BF>0 THEN 45046 45044 IF FP+FL(FC)-1>255 THEN BF=FC:FB=255-(FP-FL(FC)-1) 45046 FP=FP+FL(FC):GOTO 45035 45048 SS$=T$ 45050 IF TY$(FC)<>"N" THEN CP=4:GOTO 45150'sort ? 45100 PRINT @ BOTT,BK$;"THE FIELD YOU ARE SEARCHING IS A NUMBER FIELD...";:GOSUB 60000 45105 PRINT @ BOTT,BK$;"YOU MAY SEARCH FOR RECORDS IN YOUR REPORT THAT ARE.. ";:GOSUB 60000 45110 PRINT @ BOTT,BK$;"QUAL, ESS OR REATER THAN THE NUMBER ENTERED ";:FL=1:GOSUB 21000 45115 IF T$="" THEN 45110 45120 IF ASC(T$)>90 THEN T$=CHR$(ASC(T$)-32) 45130 CP = INSTR(" ELGelg",T$)-1: IF CP>3 THEN CP=CP-3 45140 IF CP<1 OR CP>3 THEN PRINT CHR$(7);:GOTO 45110 45150 C1=FP:C2=FL(FC) 45200 OPEN "R",3,"SORT/V10":IF LOF(3)>0 THEN CLOSE 3: GOTO 45205 ELSE T$="N":CLOSE 3:GOTO 45210 45201 REM 45202 REM 45203 REM 45204 REM 45205 PRINT @ BOTT,BK$"DO YOU WANT YOU REPORT IN SORTED ORDER? (Y/N)-";:FL=1:GOSUB 21000:IF T$="" THEN 45205 45210 IF INSTR("Nn",T$) THEN IF CP THEN 45500 ELSE 14038 45215 IF INSTR("Yy",T$)=0 THEN 45205 45216 FOR X=1 TO T:IF TY$(X)="Z" THEN 45218 ELSE N$=MID$(STR$(X),2) 45217 PRINT @ CP(X),N$;:IF FL(X)<>1 THEN PRINT STRING$(FL(X)-LEN(N$),"."); 45218 NEXT 45219 ' 45220 CLOSE:PRINT @ BOTT,BK$"WHAT FIELD DO YOU WANT TO SORT ON? (ENTER FIELD NUMBER) - "; 45225 FL=2:GOSUB 21000:IF T$="" OR VAL(T$)<1 OR VAL(T$)>T THEN 45220 45226 IF TY$(VAL(T$))="Z" THEN PRINT @ BOTT,BLANK$"> Cannot Sort on Display Only Fields <";:GOSUB 60000:FOR X=1 TO T:PRINT @ CP(X),STRING$(FL(X),".");:NEXT:GOTO 45205 45230 S1=1:FOR X=0 TO VAL(T$)-1 45231 IF TY$(X)<>"Z" THEN S1=S1+FL(X) 45232 NEXT 45235 S2=FL(VAL(T$)):NF=INSTR("AN",TY$(VAL(T$)))-1 45236 IF CP THEN PRINT @ CP(FC),SS$ 45254 ' WRITE SORT COMMAND FILE 45255 OPEN"O",3,PN$+"/SRT" 45260 PRINT#3,PN$' PROGRAM NAME 45261 PRINT#3,V1$' MASTER FILE 45262 PRINT#3,"0"' SCRATCH DRIVE 45263 PRINT#3,"0"' SORTED KEY WRITE DRIVE 45264 PRINT #3," " 45265 PRINT#3,RL ' RECORD LENGTH 45266 PRINT#3,S1' SORT FIELD POSITION 45267 PRINT#3,S2' SORT FIELD LENGTH 45268 PRINT#3,NF' ALPHA OR NUMERIC (0/1) 45269 PRINT#3,MP' DECIMAL PRECISION (.1234) 45270 PRINT#3,SS$' TEST/SEARCH STRING$ 45271 PRINT#3,CP' TYPE TEST 45272 PRINT#3,C1' TEST FIELD POSITION 45273 PRINT#3,C2 ' TEST FIELD LENGTH 45274 PRINT#3,0' RESERVED 45275 PRINT#3,0' RESERVED 45276 PRINT#3,0' RESERVED 45279 CLOSE 3:OPEN"O",3,"SORTCMD/DAT":PRINT#3,PN$+"/SRT" 45280 PRINT @ BOTT,BK$"--LOADING QUIKPRO+II SORT--"; 45290 RUN "SORT/V10" 45500 REM 45505 X=1:GET #1,X 45506 PRINT @ BOTT,BK$"PRESS ANY KEY TO STOP SEARCH "; 45510 ' 45520 IF LOF(1)=X-1 THEN GOSUB 28000:GOTO 700 ELSE GET #1,X:X=X+1 45521 IF FR$=STRING$(RL,0) THEN 45520 45525 IF BF=0 THEN RS$=MID$(FR$,C1,C2):GOTO 45530 45526 IF FC=BF THEN RS$=MID$(FR$,FB,255)+MID$(FR1$,FL(FC)-FB):GOTO 45530OK 45527 IF FC>BF THEN RS$=MID$(FR1$,FP-255,FL(FC)) 45530 ON CP GOTO 45600,45700,45800,45900 45600 REM TEST NUMBER IF EQUAL 45610 IF VAL(RS$)=VAL(SS$) THEN GOSUB 15390:GOTO 45950 ELSE 45950 45700 REM TEST NUMBER IF LESS 45710 IF VAL(RS$)VAL(SS$) THEN GOSUB 15390:GOTO 45950 ELSE 45950 45900 IF INSTR(RS$,SS$)<>0 THEN GOSUB 15390:GOTO 45950 ELSE 45950 45950 IF ST THEN RETURN 45954 IF INKEY$<>"" THEN 700 45955 GOTO 45510 45956 GOSUB 28000' Total Out Record 45960 GOTO 700 ' Return to Mainline 46054 REM 46999 ' PRINTCMD ( Report Program Command File ) 47000 REM 47005 OPEN "R",1,"KEYCMD/DAT",10 47006 IF LOF(1)=0 THEN CLOSE:GOTO 47520: ELSE CLOSE 47010 OPEN "I",1,"KEYCMD/DAT" 47020 INPUT #1,EC 47021 INPUT#1,MF$'SORTED KEY FILE NAME 47022 INPUT#1,A$'CALLING PROGRAM NAME 47023 INPUT#1,SS$'TEST/SEARCH STRING 47024 INPUT#1,CP'TYPE TEST 47025 INPUT#1,C1'TEST FIELD POS 47026 INPUT#1,C2'TEST FIELD LENGTH 47027 INPUT#1,X'RESERVED 47028 INPUT#1,X'RESERVED 47029 INPUT#1,X'RESERVED 47035 IF A$<>PN$ THEN 47510' NOT CALLED FROM THIS PROGRAM 47040 CLOSE:KILL "KEYCMD/DAT" ' kill CMD file 47045 REM 47050 REM 47055 OPEN"R",2,V1$,RL:' open master file 47056 FIELD 2 ,RL AS FR$ 47060 OPEN"R",1,MF$' open key file 47061 IF LOF(1)=0INT #-2, STRING$( 0 ,32); F$( 1 ); 17504 PRINT #-2, STRING$( 2 ,32); F$( 2 ); 17506 PRINT #-2, STRING$( 2 ,32); F$( 3 ); 17508 PRINT #-2, STRING$( 2 ,32); F$( 4 ); 17510 PRINT #-2, STRING$( 2 ,32); F$( 5 ); 17512 PRINT #-2, STRING$( 2 ,32); F$( 6 ); 17514 PRINT #-2, " ":LC=LC-1 17516 PRINT #-2, STRING$( 0 ,32); F$( 7 ); 17518 PRINT #-2, " ":LC=LC-1 18560 GOTO 15320 25012 PRINT #-2, STRING$( 0 ,32);"NAME"; 25014 PRINT #-2, STRING$( 11 ,32);""; 25016 PRINT #-2, STRING$( 15 ,32);"STREET"; 25018 PRINT #-2, STRING$( 13 ,32);"CITY"; 25020 PRINT #-2, STRING$( 10 ,32);"PROV"; 25022 PRINT #-2, STRING$( 2 ,32);"PCODE"; 25024 PRINT #-2, " " 25026 PRINT #-2, STRING$( 0 ,32);"PHONE"; 25028 PRINT #-2, " " 25180 PRINT #-2, STRING$( 80 ,61) 25008 PRINT #-2, HE$;CHR$(32);CHR$(32);"PAGE - " ;PG 28000 REM TOTAL OUT AND LAST LINE SUBROUTINE 28005 PRINT #-2, STRING$( 80 ,61) 28012 PRINT #-2, " " 28014 PRINT #-2, " " 28016 RETURN 50 REM . . . . ---> Program Name is HUNTLIST <----- 1 REM RANDPRT/NEW COLOR COMPUTER 2 REM (C) 1986,1987 ICR FUTURE- SOFT 3 REM 4 REM 5 REM 10 REM 12 CLEAR 1500:FILES 3,770 15 REM 135 REM 140 REM 150 REM 155 BK$=STRING$(63,32)+STRING$(63,8) 160 BOTT = 416 165 BLANK$=BK$ 170 RB$=CHR$(8) 175 SB$=CHR$(232) 185 DIM F$(T),F(T),T(T):REM DIMENSION FIELDS 187 REM 188 REM 190 D$=CHR$(94)+STRING$(KL,32):REM DUMMY KEY 201 GOTO 47000 'check for PRINTCMD 202 ' arrive here after PRINTCMD ( Report Program Command File ) 204 REM 205 A=INT(255/(KL+6)): REM NUMBER OF KEYS PER SECTOR 210 OPEN "R",1,V1$,RL:REM OPEN MASTER FILE 220 OPEN "R",2,V2$:REM OPEN KEY FILE 225 FIELD 1,RL AS FR$:REM FIELD MASTER FILE BUFFER 227 FIELD 2,255 AS KS$:REM FIELD KEY FILE BUFFER 300 CLS 410 FOR X = 1 TO T:F$(X)=STRING$(FL(X),0):NEXT X 700 REM ... PRINT SCREEN 701 CLS 4000 REM ... BEGIN MAINLINE 4003 UPDATE$="" 4004 FOR X = 1 TO T:T(X)=0: NEXT X: REM .. CLEAR FIELDS 4005 PRINT @ BOTT,;BLANK$;BOTT$;"et Record, earch, Select, Sort or nd Program "; 4010 TY$="A":FL=1 4015 GOSUB 21000 4025 IF T$="G" THEN UPDATE$="YES":GOTO 15000 4030 IF T$="E" THEN 40000 4035 IF T$="S" OR T$="s" THEN PRINT @ BOTT,;BLANK$;BOTT$;"Select something in a IELD OR NYWHERE in the file ";:Z2=1:GOSUB 21000: IF T$="F" OR T$="F" THEN GOTO 45000 ELSE GOTO 14000 4040 PRINT CHR$(7); 4050 GOTO 4005 14000 REM ..... STRING SEARCH ...... 14002 X=0:LC=0:PG=0 14005 UPDATE$="S" 14010 PRINT @ BOTT,;BLANK$;BOTT$;"Search for ? - ";:REM .. SEARCH 14020 FL=30:REM ... MAXIMUM LENGTH OF SEARCH STRING .... 14030 TY$="A":REM ... SEARCH STRING IS ALPHA-NUMERIC .... 14035 GOSUB 21000:Q$=T$ 14036 IF Q$="" THEN PRINT @ BOTT,BLANK$BOTT$"Print All Records ? (Y/N) - ";:FL=1:GOSUB 21000: IF T$="N" THEN 4000 ELSE IF T$<>"Y" THEN 14036 14037 SS$=Q$:GOTO 45205 : ' SORT ? 14038 PRINT @ BOTT,;BLANK$;BOTT$;"Press any key to stop search ";:FL=1:TY$="A" 14040 FOR X = 1 TO LOF(1):GET #1,X:IF (INSTR(FR$,Q$)<>0 OR Q$="") AND FR$<>STRING$(RL,0) THEN GOTO 14100 14045 IF INKEY$<>""THEN4000 14060 NEXT X:GOSUB 28000:GOTO 4000 14100 GOSUB 15390:REM .. PRINT RECORD ....... AND RETURN .... 14200 PRINT @ BOTT,;BLANK$;BOTT$;" top - "; 14210 IF INKEY$="S" THEN 4000 14250 GOTO 14060 14300 REM ..... remember that you have a line at 18200 ... 15000 REM 15002 REM ... GET RECORD 15003 PG=0:LC=0 15395 IF LC=<0 THEN GOSUB 25000 18200 IF UPDATE$="S" THEN RETURN 21000 REM ... ALPHA NUMERIC IKEYBOARD SCAN 21005 T$="" 21010 PRINT SB$;:A$=INKEY$:IF A$="" THEN PRINT RB$;:GOTO 21010 21015 PRINT RB$; 21020 IF ASC(A$)=8 AND LEN(T$)>0 THEN PRINT CHR$(8);:T$=LEFT$(T$,LEN(T$)-1):GOTO 21010 21030 IF ASC(A$)=13 THEN 21100 21040 IF ASC(A$)<32 OR ASC(A$)>127 THEN 21010 21050 T$=T$+A$ 21060 IF LEN(T$)>FL THEN T$=MID$(T$,1,LEN(T$)-1):PRINT CHR$(7);:GOTO 21010 21065 PRINT A$; 21070 GOTO 21010 21100 RETURN 23000 REM ... CHECK FOR VALID NUMERIC ..... 23005 F1=0:F2=0:N=0 23010 FOR X = 1 TO LEN(T$) 23020 A=ASC(MID$(T$,X,1)) 23030 IF A<45 OR A>57 THEN PRINT CHR$(7);:GOTO 23100 23040 IF A=47 THEN 23050 IF A=46 THEN F1=F1+1:IF F1>1 THEN PRINT CHR$(7);:GOTO 23100 23060 IF A=45 THEN F2=F2+1:IF F2>1 THEN PRINT CHR$(7);:GOTO 23100 23070 NEXTX 23080 IF INSTR(T$,"-")>1 THEN PRINT CHR$(7);:GOTO 23100 23090 N=1 23100 RETURN 25000 REM HEADER ......................... 25005 PG=PG+1 25006 PRINT #-2, FF$ 25007 PRINT #-2, " " 25009 PRINT #-2, " ":PRINT #-2, " " 25300 LC=PL:RETURN 40000 PRINT @ BOTT,;BLANK$;BOTT$;"Press Enter to End Program ";:INPUT D$ 40010 END:REM . . . YOU MAY GO TO ANOTHER PROGRAM FROM HERE . 40&(:QUIKPRO+II (C) 1983 J.W. TAMARGO&H:LICENSE TO ICR FUTURESOFT&V:3/19/82&n:QUIKMENU VER. 2.1&:THIS PROGRAM IS PROTECTED BY&:U.S. PATENT OR COPYRIGHT LAW&:REPRODUCTION WITHOUT WRITTEN&:AUTHORIZATION BY FUTURESOFT':IS EXPRESSLY FORBIDDEN AND'; :IS A VIOLATION OF THE LAW.'F 4000'l : CL$=CHR$(28)+CHR$(31)+CHR$(28)' : ON ERROR GOTO 60000': END SYSTEM PARAMS'Ȟ : PRINT CL$'҇ " QUIKPRO+II VER. 3.1"' " PROGRAM MENU"'( "1) QUIKPRO"(3 " FILING PROGRAM GENERATOR"(F "2) QUIKPRO"(h " AUTOMATIC INSTRUCTIONS"(}, "3) QUIKPRINT"(. " REPORT GENERATOR"(6 "4) QUIKINDEX"(8 " UTILITY TO INDEX FILE"(; "5) read this now"(J "6) END PROGRAM")) " SELECT - ";). A$:A(A$))Q A 510,520,530,540,545,550)p 200,2 : PRINT CHR$(7);)z 10) 2000 : "QP5") 2000: "QUIKDOK": DOCUMENTATION PROGRAM) 2000: "QUIKPRT4"* 2000: "QUIKIDEX": INDEX PROGRAM*! "HELPFUL"*J& : "QUIKPRO+II ENDED": X13000::113,0:40999*U: 30,3*_D 500*eX*Ї : "LOADING PROGRAM ...";:"QP5") 2000: "QUIKDOK": DOCUMENTATION PROGRAM) 2000: "QUIKPRT4"* 2000: "QUIKIDEX": INDEX PROGSUB 6000:CLOSE:EC=0:GOTO 4300 1219 EC=1:NT=NT+1:R(NT)=Z+1 1220 IF NT=1 THEN OPEN"R",1,M1$:IF LOF(1)<>0 THEN CLOSE 1:KILL M1$:GOTO 1220 1230 FOR X=1 TO LA+1 1232 FIELD 1,(EC*KP-KP) AS W1$,(KP) AS W2$ 1235 LSET W2$=A$(X) 1240 EC=EC+1:IF EC>EX THEN Z=Z+1:PUT #1,Z:EC=1 1245 IF X=LA+1 THEN LSET W2$=STRING$(KP,0):Z=Z+1:PUT #1,Z 1250 NEXT:IF DN=0 THEN 1211 1280 OPEN"R",2,MF$:IF LOF(2)<>0 THEN CLOSE 2:KILL MF$:GOTO 1280 1281 EC=1:Y=1 1290 BM=EX*KP:NU$=STRING$(KP,0):TE$=NU$:NA$=STRING$(KP,255) 1300 FIELD 1,255 AS A$:FOR X=1 TO NT:A$(X)=STRING$(255,0):B(X)=0:GET #1,R(X):LSET A$(X)=A$:NEXT 1350 LSET TE$=NA$:FOR X=1 TO NT:LSET A$=A$(X):FIELD 1,(B(X)) AS D$,(KP) AS C$(X):IF C$(X)=127 THEN EC=1:PUT #2,Y:Y=Y+1 1375 B(TE)=B(TE)+KP:IF B(TE)=BM THEN R(TE)=R(TE)+1:B(TE)=0:GET #1,R(TE):LSET A$(TE)=A$ 1380 FIELD 1,(B(TE)) AS D$,(KP) AS C$(TE):IF C$(TE)=NU$ THEN GOTO 1390 1385 GOTO 1350 1390 FOR X=1 TO NT-1 20 REM 25 REM 110 V1$= "HUNTER/DAT": REM .. MASTER FILE NAME ... 112 V2$= "HUNTER/ISI":REM .. KEY FILE NAME ... 120 RL = 74 : REM ..... RECORD LENGTH ... 125 KL = 13 : REM ..... KEY LENGTH .... 130 T = 7 : REM ... TOTAL NUMBER OF FIELDS 135 HOME$ = 140 SUBKEY = INT(255/(KL +6)) 145 REM 150 = STRING$( 31,32) 155 BK$= STRING$(63,32)+STRING$(63,8); 160 REM 165 BLANK$ = BK$ 170 RB$= "" 175 SB$= "" 176 HE$= "MEMBERSHIP LIST" 177 FF$=CHR$(12): REM *** FORM FEED CODE 179 PL = 50 200 PN$ = "HUNTLIST" 301 DIM CP( 7 ),FL( 7 ),TY$( 7 ) 302 FL( 1)= 13 :CP( 1)= 75:TY$( 1)="A" 303 FL( 2)= 13 :CP( 2)= 107:TY$( 2)="A" 304 FL( 3)= 17 :CP( 3)= 139:TY$( 3)="A" 305 FL( 4)= 12 :CP( 4)= 171:TY$( 4)="A" 306 FL( 5)= 4 :CP( 5)= 203:TY$( 5)="A" 307 FL( 6)= 7 :CP( 6)= 235:TY$( 6)="A" 308 FL( 7)= 8 :CP( 7)= 267:TY$( 7)="A" 701 PRINT CL$; 702 PRINT "HUNTERS ASSOCIATION" 703 PRINT "" 704 PRINT "LST-NAME ............." 705 PRINT "FST-NAME ............." 706 PRINT "STREET ................." 707 PRINT "CITY ............" 708 PRINT "PROV. ...." 709 PRINT "PCODE ......." 710 PRINT "YELEPHONE ........" 711 PRINT "" 712 PRINT "" 713 PRINT "" 714 PRINT "" 15060 FL = 13 15065 PRINT @ BOTT,BK$;"ENTER NAME KEY - ";""; 15070 TY$ = "A" 15100 GOSUB 21000 15110 IF LEN(T$)=0 THEN 4000:REM.RETURN TO MAINLINE IF NULL ENTRY 15200 K$=T$:REM. PASS INKEY TO KEY VAR. 15210 K$ = K$ + STRING$(FL-LEN(K$),32): REM . . LEFT JUST & PAD 15220 K$ = CHR$(94) + K$ 15300 REM . . . . . LOCATE RECORD . . . . . . . 15310 P = 0 15315 KREC = 1 15320 FOR X = KREC TO LOF(2): GET #2,X:IF INSTR(P+1,KS$,K$)=0 THEN P=0 :NEXT X ELSE 15340 15330 PRINT @ BOTT,BK$;CHR$(7)"---> END OF FILE <---";:GOSUB 28000:GOSUB 60000:GOTO 4000 15340 REM . . . . GET RECORD FROM MASTER FILE . . . . 15350 KR$=KS$ 15355 KREC = X 15360 P = INSTR(P+1,KR$,K$) 15370 LR = VAL(MID$(KR$,P+LEN(K$),5)) 15380 GET #1,LR 15390 REM . . . SUBDIVIDE & PRINT RECORD . . . 15400 F$( 1 ) = MID$(FR$, 1 , 13 ) 15410 F$( 2 ) = MID$(FR$, 14 , 13 ) 15420 F$( 3 ) = MID$(FR$, 27 , 17 ) 15430 F$( 4 ) = MID$(FR$, 44 , 12 ) 15440 F$( 5 ) = MID$(FR$, 56 , 4 ) 15450 F$( 6 ) = MID$(FR$, 60 , 7 ) 15460 F$( 7 ) = MID$(FR$, 67 , 8 ) 17502 PR1$)1\/G1$ (T1$,X,1): G2$ (T1$,X1,1)\l G1$G2$ G1$")" ((G1$)48 (G1$)57) 33300\ G1$"F" G2$"#" 33300\ρ G2$"F" G1$"*" G1$"/" G1$"-" G1$"+" 33300\ G1$"(" (G2$) 0 33300] G1$"#" G2$"(" 33300]W" G1$")" G2$"*" G2$"-" G2$"/" G2$"+" 33300]_L X]yVG2$(T1$,(T1$),1)]ˁ` G2$"+" G2$"-" G2$"/" G2$"*" G2$"(" G2$"F" G2$"#" 33300]~. TEST FOR GOOD SUBSCRIPT.]G11^ G1(G11,T1$,"(")^ G10 33200^7G2(G11,T1$,")")^J G20 33300^q ((T1$,G11,G21))0 33300^ ((T1$,G11,G21))U 33300^ 33170^ ... INSERT BRAKETS...^ȁX0^恵XX1: X(T1$) 33250_J (T1$,X,1)"/" (T1$,X,1)"*" T1$"("T1$:T1$(T1$,1,X)")"(T1$,X1,(T1$)):XX3_Wā 33205_p⁦ 63500:Z6$(CF)T1$_ @ Z1(CF),"C";_Ɓ聦 55100: "CALCULATION FOR FIELD ";CF:"ACCEPTED ";: 50000_Ӂ쁥 32000` 55000 : 55100: "INVALID COMPUTATION -":"PLEASE REDO";: 50000`9Z3$(CF)"D":Z6$(CF)""`i 55100: "COMPUTATION WAS ";T1$;: 50000` @ Z1(CF),((CF),2,((CF)));` 32000`Ĝ@: "PRESS TO CONTINUE ";`̜ED$`ܜJ"QUIKMENU"`PZ12000:Z`Z`:a :BEEP ***a 200,2aa";:a6<: CLEAR BOTTOMaJF @ BOTT,BLANK$a`P @ BOTT1,BLANK$aqZ @ BOTT,"";awזa~ן:a`:REM ERROR TRAPS *** NOT AVAILABLEaĂ TEST FOR SCREEN FILEaŀ UW1 (J$)b7ƅ (J$,UW,1)"A" (J$,UW,1)"Z" @ BOTT,BK$"BAD SCREEN FILE NAME";: 30,2: 50000::b@Nj UWbXə "R",1,J$"/SCR",1b΅ (1)0 @ BOTT,BK$"THE SCREEN FILE FOR PROGRAM "J$" IS NOT ON THIS DISK";: 30,2:: ""J$"/SCR" : 50000:bӚ:c7( @ BOTT,BK$"INSERT A FORMATTED BLANK DISK NOW THEN PRESS ENTER ";:Z21: 21000:cDT 40000c\H MOD 11225 & 11286cc:cy:RECREATE SCREENc 55100: "PLEASE WAIT,": "RE-CREATING YOUR SCREEN ...";c X 1 SCc (A$(X),".")0 61150d5A$(X)(A$(X),1,(A$(X),".")1)"="(A$(X),(A$(X),".")1,(A$(X)))dBԁ 61120dJދ Xd X 1 U:Z1(X)0:Z2(X)0:Z2$(X)"":Z3$(X)"":Z4$(X)"":Z5$(X)"":Z6$(X)"": XdU0:RL0:KL0dd e6" "USING THE COLOR COMPUTER COPY COMMAND, COPY YOUR PROGRAM AND ITS SCREEN FILE TO A FORMATTED BLANK DISKETTE"eH1 "YOUR ... "em6 "PROGRAM NAME IS - ";J$"/BAS"e@ "SCREEN FILE NAME- ";J$"/SCR"eJf,T "IN ORDER TO USE THE PROGRAMS YOU CREATE, SIMPLY INSERT THE DISK WITH THE PROGRAM ON IT AND TYPE IN RUN "(34)"YOUR PROGRAM NAME"(34)f2^fO CHECK FOR QUIKPRO DISKfl "R",1,"QUIKMENU/BAS",1f (1)0 : 30,2: @ BOTT,BK$"PUT THE QUIKPRO+II DISK BACK IN THE DISK DRIVE THEN ";:Z21: 16000: 63400f:f REOVE #gTH$T1$:T1$""g$ IK1(TH$)gC (TH$,IK,1)"#" 63540g\*T1$T1$(TH$,IK,1)ge4 IKgk> (1)0 : 30,2: @ BOTT,BK$"PUT THE QUIKPRO+II DISK BACK IN THE DISK DRIVE THEN ";:Z21: 16000: 63400f:f REOVE # ... TOTAL NUMBER OF FIELDS " 11092 LN=135:PRINT#1,LN;" HOME$ = ";B2$ 11095 LN=140:PRINT#1,LN;" SUBKEY = INT(255/(KL +6)) " 11096 LN=145:PRINT#1,LN;" REM" 11097 LN=150:PRINT#1,LN;" = ";B1$ 11098 LN=155:PRINT #1,LN;" BK$= STRING$(63,32)+STRING$(63,8); " 11099 LN=160:PRINT #1,LN;"REM " 11100 LN=165:PRINT #1,LN;"BLANK$ = BK$" 11101 LN=170:PRINT#1,LN;" RB$= ";CHR$(34);RB$;CHR$(34) 11102 LN=175:PRINT#1,LN;" SB$= ";CHR$(34);SB$;CHR$(34) 11105 LN=176:PRINT #1, LN ; "HE$= ";CHR$(34);HE$;CHR$(34) 11106 LN=177:PRINT #1, LN"FF$=CHR$(12): REM *** FORM FEED CODE" 11107 LN=179:PRINT #1, LN;"PL = ";PL 11108 REM 11109 REM 11390 REM 11950 REM 12000 ' 12005 LN=200:PRINT #1,LN"PN$ = "Q$J$Q$ 12010 LN=301:PRINT #1,LN"DIM CP("U"),FL("U"),TY$("U")" 12020 FOR X = 1 TO U 12022 IF Z3$(X)="D" OR Z3$(X)="I" THEN TZ$="Z" ELSE TZ$=Z2$(X) 12025 X$=STR$(X) 12030 LN=LN+1:PRINT #1,LN;"FL("X$")="Z2(X)":CP("X$")="STR$(Z1(X))":TY$("X$")="Q$TZ$Q$ 12040 NEXT X 12100 LN=701 12105 PRINT #1,LN;"PRINT CL$;" 12110 FOR X = 1 TO SC 12120 LN=LN+1:PRINT #1,LN;"PRINT "Q$MID$(A$(X),2,LEN(A$(X)))Q$ 12130 NEXT X 14000 REM 14005 REM 14010 REM 14020 LN=15060:PRINT#1,LN;"FL = ";Z2(KFIEL) 14025 REM . .LN=15065:PRINT#1,LN;"PRINT @ ";Z1(KFIEL);",STRING$(FL,46);@ ";Z1(KFIEL);",";CHR$(34);CHR$(34);";" 14026 LN=15065:PRINT#1,LN;"PRINT @ BOTT,BK$;";CHR$(34);"ENTER ";Z5$(KFIEL);" KEY - ";CHR$(34);";";CHR$(34);CHR$(34);";" 14030 LN=15070:PRINT#1,LN;"TY$ = ";CHR$(34);Z2$(KFIEL);CHR$(34) 14040 LN=15100:PRINT#1,LN;"GOSUB 21000" 14050 LN=15110:PRINT#1,LN;"IF LEN(T$)=-LEN(K$),32): ' . . LEFT JUST & PAD "JM7LN15220:#1,LN;"K$ = CHR$(94) + K$"J7(LN15300:#1,LN;"' . . . . . LOCATE RECORD . . . . . . ."J72LN15310:#1,LN;"P = 0"J77LN15315:#1,LN;"KREC = 1 "K47 NOT IN FILE <---";Q$;";:GOSUB 60000:GOTO 700"K7PLN15340:#1,LN;"' . . . . GET RECORD FROM MASTER FILE . . . ."K7ZLN15350:#1,LN;"KR$=KS$"L7_LN15355:#1,LN;"KREC = X "LB7dLN15360:#1,LN;"P = INSTR(P+1,KR$,K$)"Lw7nLN15370:#1,LN;"LR = VAL(MID$(KR$,P+LEN(K$),5))L7xLN15380:#1,LN;"GET #1,LR"L7LN15390:#1,LN;"' . . . SUBDIVIDE & PRINT RECORD . . . "L7FT1L7X1UL7LN10LNM7 Z3$(X)"D" Z3$(X)"I" 14320MP7܇#1,LN;"F$(";X;") = MID$(FR$,";FT;",";Z2(X);")"M`7FTFTZ2(X)Mg7XMt7LN17000M8 X 1 U:LNLN1M8 Z2$(X)"N" Z3$(X)"D" #1,LN;" F(";X;") = VAL(F$(";X;"))"N8 Z6$(X)"" Z3$(X)"D" #1,LN;" F(";X;") = ";Z6$(X)N8 XN+8LN17500:X1UN78LNLN2N8 Z2$(X)"N" #1,LN;" PRINT @ ";Z1(X);",";Q$;Q$;";:PRINT USING ";Q$;Z4$(X);Q$;";F(";X;");": 14370N8#1,LN;"PRINT @ ";Z1(X);",F$(";X;");"N8" XO&8,LN18500:#1,LN;"PRINT@ BOTT,BK$;";Q$;"HANGE, EXT, ELETE - ";Q$;";"OD86LN18510:#1,LN;"FL = 1 "Ok8@LN18520:#1,LN;"TY$ = ";Q$;"A";Q$O8rLN18530:#1,LN;"GOSUB 21000"O8LN18550:#1,LN;"IF T$=";Q$;"C";Q$;" THEN 4100 "O8LN18555:#1,LN;"IF T$=";Q$;"N";Q$;" THEN 15320 "P.8LN18557:#1,LN;"IF T$=";Q$;"D";Q$;" THEN 19000 "PM8LN18560:#1,LN;"GOTO 700"PT8:P[8:Pb8:P8ۅ Z6$(X)"" #1,LN;" PRINT @ ";Z1(X);";";Q$;Q$;";:PRINT USING ";Q$;Z4$(X);Q$;";F(";X;");": 14370P<20010P<:P>:P>:P>T$""Q?> SB$; :FORX=1TO50:PRINTSB$;:A$=INKEY$:IFA$<>""THEN16028ELSENEXTXQ>:FORX=1TO50:PRINTRB$;:A$=INKEY$:IFA$<>""THEN16028ELSENEXTXQ>A$: A$"" 16026Q> (8);:GOTO16020R> A$(31) T$T$A$: (T$)Z2 T$(T$,(T$)1): 55000: 16020 : A$;: 16020RR>RB$;:(A$)8(T$)0T$(T$,1,(T$)1):BS$;:16020Ri>(A$)13 OF0:R> A$(7) OF128 OF 0 : A$(7) OF128R> 16020R>:R>:RN :RN!:S N% 55100:"GIVE YOUR NEW PROGRAM A NAME.": ">"; : 55000S N&Z28:16000:J$T$S&N'SN(X1(J$):(J$,X,1)"A"(J$,X,1)"Z" 55000: 55100:"YOUR PROGRAM NAME MUST CONTAIN":"ONLY CAPITAL LETTERS.";:50000:20000TVN)X: 55100:"YOUR PROGRAM WILL NOW BE CREATED ON THE QUIKPRO+2 DISK";: 50000: 50000: 55100: "PRESS ENTER WHEN YOUR READY - ";:Z21: 16000:TN*LN50:#1,LN;" ' . . . . ---> PROGRAM NAME IS ";J$;" <----- ": 55100:"> QUIKPRO IS PREPARING YOUR":"PROGRAM NAMED - ";J$;" <";: 55000TN+ 21020TN,UN/UN4UN>UNHURU RU?RCH$"1""I",2,"RANDWRT/"UPR!(2)22000U\R,A$UgR:#1,A$UsRD21025UU:: (5,10); "YOUR FILING PROGRAM HAS BEEN":"SUCCESSFULLY CREATED ": 63000: 40000:"QUIKMENU"Uu0V7u5 55100:"DO YOU WANT TO PRINT OUT A":"SCREEN WORKSHEET (Y/N) - "; : 55000V\u6Z21:16000:R$T$:R$"Y"30008Vuu7R$"N"30040:30005Vu8 #2,"0 ";:X10SWSTEP10: #2,((X),2,1);:X: #2,""Vu9X1SW: #2,((X),((X)),1);:X: #2,""Vu:X1SCW u? #2," "W%uD #2,(64X);A$(X)W,uNXW9uO #2,""WnuSX1SW: #2,((X),((X)),1);:X: #2,""WuU #2," ": #2," ": #2,"SCREEN WORKSHEET FOR PROGRAM NAME - ";J$WuXWubWucW} . . . . COMP SECTION . . . . .X>} 55100: "ARE ANY FIELDS ":"COMPUTATION FIELDS (Y/N)? - ";:Z21: 16000XO} T$"N" Xm} T$"Y" 32030 : 32010X} 55100: "ENTER THE FIELD NUMBER OF":"A COMPUTATION FIELD - ";:Z22: 16000X} CF(T$)Y}! Z3$(CF)"K" 55100: "CAN'T COMPUTE THE KEY FIELD";: 50000: 32000Y?}# CF0 55000 : 32010Y}% CFU 55100: "INVALID FIELD NUMBER": 50000: 32030Y}& Z2$(CF)"N" 55100: "CANNOT CALCULATE A NON NUMERIC":"FIELD.";: 50000: 32030Z]}' 55100:"DO YOU WANT THIS COMPUTATION":"TORED OR ONLY ISPLAYED: ";:Z21: 16000: T$"D" Z3$(CF)"D": 32060Zs}( T$"S" 32039Z}< 55100:"ENTER COMPUTATION - ";:Z235: 16000ZÀ .... COMPU TEST ....Z΀T1$""Z (T$)0 33300[+ X 1 (T$): (T$,X,1)" " 33015 : T1$ T1$(T$,X,1)[3 X[Y X 1 (T1$):G1$(T1$,X,1)[ G1$"(" G1$")" G1$"#" G1$"/" G1$"*" G1$"-" G1$"+" G1$"F" ((G1$)48 (G1$)57) G1$"." 33300[ X\ X 1 (T,(A$))8!#B1(C1$):B2(C2$)8F#Z4$(A)(B1,"#")"."(B2,"#")8$T(Z4$(A))Z2(A) 55100:"THE FORMAT ";A$;" DOESN'T":"MATCH THE FIELD LENGTH OF ";Z2(A);" <";: 50000:6000:89009$ 55100:"-> YOUR FORMAT FOR NUMBER":"FIELD";A;" HAS BEEN ACCEPTED <-";: 500009;$ 55100:"ARE THERE ANY "9X$"MORE NUMERIC FIELDS ";9k$"? (Y/N) - ";9$Z21:16000:A$T$9$A$"Y"86009%A$"N"97009%94009%:GOTO COMP9%偦 32000:& Y 1 U : Z3$(Y)"D" Z3$(Y)"I" RLRLZ2(Y):j&"RL255 55100:"> YOUR RECORD IS GREATER THEN 255 CHARACTERS <";: 50000: 61100: 800:&%Z3$(Y)"K"KLKLZ2(Y):&* 55100:"ENTER COMMENT FOR FIELD #";Y: ">";:&/Z230:16000:Z5$(Y)T$:&2::&4Y:&5 55100:&6;>&7 "YOUR DATA FILE NAME IS BEING CREATED AUTOMATICALLY";: 50000;D&8;J&9;Q&::;&;20000:V1$J$"/DAT": V2$J$"/ISI";&<30000;&=:;&>V3$J$"/SCR";&H"O",1,V3$;,USC;&އ#1,V1$;,U;,J$<'X1SC:A$(X)(64X)A$(X)<3'؇#1,(X1)64;",";Q$;A$(X);Q$;", ,D, , ":X<>( +>LN125:#1,LN;"KL = ";KL;": ' ..... KEY LENGTH ....">^+RLN130:#1,LN;" T = ";U;": ' ... TOTAL NUMBER OF FIELDS ">+TLN135:#1,LN;" HOME$ = ";B2$>+WLN140:#1,LN;" SKEY= INT(255/(KL+6)) ">+X>+YLN150:#1,LN;" BLANK$= ";B1$>+ZLN155:#1,LN;" '" : WAS CL$?+[LN160:#1,LN;" RC = ";RC?2+\LN165:#1,LN;" DC = ";DC?W+]LN170:#1,LN;" RB$= ";Q$;RB$;Q$?|+^LN175:#1,LN;" SB$= ";Q$;SB$;Q$?+e:?+fLN700?+gLM1?+pX1SC?+zLNLN1?+#1,LN;" PRINT ";Q$;(A$(X),(A$(X))1);Q$?+X?+:?+:@+LN4000@ +X1U@+LNLN100@++#1,LN3;"'"@<+#1,LN4;"'"@j+#1,LN5;"'FIELD NUMBER ";X;" IS ";Z5$(X)@+ʇ#1,LN10;"'FIELD LENGTH IS ";Z2(X)@+ԇ#1,LN15;"'FIELD TYPE IS ";Z2$(X)@+م Z6$(X)"" LMLM1: 11316A4+އ#1,LN20;"PRINT @ ";Z1(X);",";Q$;(Z2(X),46);Q$;";:PRINT @ ";Z1(X);",";Q$;Q$;";"AP+#1,LN25;"FL = ";Z2(X)At+#1,LN30;"TY$ = ";Q$;Z2$(X);Q$A, #1,LN35;"GOSUB 21000"A,#1,LN40;"IF LEN(T$)=0 THEN ";LN50A,X1#1,LN42;"IF ASC(T$)=60 THEN 700"B,X1#1,LN42;"IF ASC(T$)=60 THEN ";LNLM1005:LM1Bk,Z2$(X)"N"#1,LN43;"GOSUB 23000: ' .. NUMERIC CHECK SUB ROUTINE ..."B,Z2$(X)"N"#1,LN44;"IF N=0 THEN GOSUB 55000 :GOTO ";LN5B,#1,LN45;"F$(";X;") = T$ : ' MOVE INKEY VARIABLE TO FIELD "C9,.#1,LN50;"F$(";X;") = F$(";X;") + STRING$(";Z2(X);"-LEN(F$(";X;")),32)"Cg,3#1,LN52;"PRINT @ ";Z1(X);", F$(";X;");"D,4 IFZ2$(X)="N" AND INSTR(Z4$(X),CHR$(46)) <>0 PRINT#1,LN+54;"F(";X;")=INT((F(";X;")*";10^(LEN(Z4$(X))-INSTR(Z4$(X),CHR$(46)));"#)+.5)/";10^(LEN(Z4$(X))-INSTR(Z4$(X),CHR$(46)));"#"DZ,5 Z2$(X)"N" #1,LN53;" F(";X;") = VAL(F$(";X;"))"D,6 Z2$(X)"N" Z6$(X)"" #1,LN53;" F(";X;") = ";Z6$(X)E,7 Z2$(X)"N" Z6$(X)"" #1,LN59;" PRINT @ ";Z1(X);",";Q$;Q$;";:PRINT USING ";Q$;Z4$(X);Q$;";F(";X;");"E8,8Z3$(X)"K"#1,LN58;"K$= F$(";X;")"F,9 Z6$(X)"" Z3$(X)"D" #1,LN55;"F$(";X;") = STR$(F(";X;"))": #1,LN56;"F$(";X;")=MID$(F$(";X;"),1,";Z2(X);")": #1,LN57;"F$(";X;") = F$(";X;") + STRING$(";Z2(X);"-LEN(F$(";X;")),32):F(";X;")=VAL(F$(";X;"))"F,BXF#,GF),LF5,VLN9800F@,`X1UFL,eLNLN1F,j Z6$(X)"" Z3$(X)"D" 11380 : #1,LN;"R$ = R$ + F$(";X;")"F,tXF,~:F.:F.Q$(34)F.LN301: #1,LN"DIM CP("U"),FL("U"),TY$("U")"F. X 1 UG-. Z3$(X)"D" Z3$(X)"I" TZ$"Z" : TZ$Z2$(X)GJ.X$((X),2) :FNW$(X)G.LNLN1: #1,LN;"FL("X$")="((Z2(X)),2)":CP("X$")="((Z1(X)),2)":TY$("X$")="Q$TZ$Q$G/ XG6:G6:G6:G6LN15060:#1,LN;"FL = ";Z2(KFIEL)HH6LN15065:#1,LN;"PRINT @ ";Z1(KFIEL);",STRING$(FL,46);:PRINT @ ";Z1(KFIEL);",";Q$;Q$;";"Hv6LN15070:#1,LN;"TY$ = ";Q$;Z2$(KFIEL);Q$H6LN15100:#1,LN;"GOSUB 21000"H6LN15110:#1,LN;"IF LEN(T$)=0 THEN 700:'.RETURN TO MAINLINE IF NULL ENTRY "I/6Z2$(KFIEL)"N"LN15120:#1,LN;"GOSUB 23000 :' TEST FOR NUMERIC "Iy6Z2$(KFIEL)"N"LN15130:#1,LN;"IF N=0 THEN GOSUB 55000:GOTO 15000 "I7LN15200:#1,LN;"K$=T$:'. PASS INKEY TO KEY VAR."I7 :J$7Z2$(KFIEL)"A"Z2$(KFIEL)"N"LN15210:#1,LN;"K$ = K$ + STRING$(FLAl&:&3:QUIKPRO5 WITH COMP AND SAVED FIELDS&V (C) 1986,1987 ICR FUTURESOFT&]:& 3000 : X,Y,Z,U : A$"": T$"" : L$""&SB$(207)&RB$""& :*RC=25& DM24& SC13& SW30& BLANK$(SW1,32):Q$(34)'B1$"STRING$("(SW)",32)"'=HOME0:*HOME$=CHR$(28):B2$="CHR$(28)"':*BOTT$=HOME$+STRING$(0,RC)+STRING$(SC,DC):B3$="HOME$+STRING$(0,"+STR$(RC)+")+STRING$("+STR$(SC)+","+STR$(DC)+")"'BOTT416 :*BOTT$=BOTT$+BLANK$+BOTT$':*CL( B4$"CHR$(28)+CHR$(31)+CHR$(28)"(BS$(8)(!:((:(/:(6:(<(B(h#"QUIKPRO+2 (C) 1986 JWT"($"FILING PROGRAM GENERATOR"((:PRINT:PRINT(2:(F:"1) START PROGRAM"(H"2) RETURN TO MENU"(K)L" SELECT - ";:CH$:CH$"1"CH$"2" 55000 :20)0CH$"2""QUIKMENU")=, A$(SC))q Z1(DM),Z2(DM),Z2$(DM),Z3$(DM),Z4$(DM),Z5$(DM)) F2(DM),F(DM),Z6$(DM)): TEST FOR ANOTHER SCREEN):) @ 256, "";) "1) DESIGN A NEW PROGRAM"*  "2) START FROM PREVIOUS PROGRAM"*:*8: " SELECT - ";:Z21: 16000*K T$"2" 540*^ T$"1" 570*i 521*o* "YOU CAN NOW START FROM A PROGRAM":"THAT YOU CREATED BEFORE:":* "ENTER THE NAME OF THE PREVIOUS": "PROGRAM THAT YOU CREATED."+F "REMEMBER THAT IN ORDER TO START": "FROM A PREVIOUS PROGRAM, THE"+l "PROGRAM'S SCREEN FILE MUST BE"+! "PRESENT ON ONE OF THE DISKS IN": "YOUR SYSTEM"+" "INSERT THE PROPER DISK NOW THEN ENTER THE PROGRAM NAME ";, %Z28: 16000:J$T$:: T$"" ,&:,(:,&) 60100,-*:,c+ "I",1,J$"/SCR": #1,U1: #1,V1$: #1,U: #1,J$,. X 1 SC: #1,D$,A$(X),D$,D$,D$,D$:A$(X)(A$(X),2,(A$(X))): X:,/ 63400: 61100,:,D,X,X0:Z2SW,T$""-  @0,""; :*PRINTHOME$;-%:*F=FRE("F")-=Z1SC:(Z64);A$(Z):Z-j聦 55100:"ENTER THE LETTER OF THE LINE"-"YOU WANT TO WORK ON (A-";(64SC);")-";-LL$"":L$-Q:-V:-L$""1700-(L$)1800-x(L$)65(L$)SC64800. 55100: "YOU MAY ENTER TEXT NOW".E "HIT DOWN ARROW FOR GRAPHICS ";.܇@((L$)65)321,BLANK$;:A$((L$)64)"":@((L$)65)321,"";.@2400.:. 55100:"ARE YOU DONE ? (Y/N) "; : 55000 . R$: R$"Y" 4800 : 800/l8000/ :/4:/:/:/( `:***/c ćSB$;::FORX=1TO50:A$=INKEY$:IFA$<>""THEN2800ELSENEXTX/ (:PRINTRB$;:FORX=1TO15:A$=INKEY$:IFA$<>""THEN2800ELSENEXTX/ ZA$: A$"" 2650/ d (8);/ :GOTO25000O A$(31) 2850 : A$((A$)OF):T$T$A$: (T$)Z2 T$(T$,(T$)1): 55000: 2500 : A$;: 25000 " ((8)(13)(10),A$) 2900,3100,31500 , 25000 T RB$;: (T$)0BS$;:T$(T$,(T$)1):25000 OF0:RB$;:43001~ N OF0 OF128: 55100: " YOU ARE IN GRAPHICS MODE NOW ";: @ ((L$)65)321,T$;:: OF 0: 55100: "YOU ARE IN THE TEXT MODE";: @ ((L$)65)321,T$;1 25001A$((L$)64)T$:T$""1010001:1 : @HOME,""; : X1SC1Z$(X)A$(X)1\X1:2-Ł 55100:"-> PLEASE WAIT - PROCESSING <-";: 5500029$X1SC2DP1702XP(A$(X),"=")2fPP059002PP11UU1:Z1(U)P((X1)32)1:Z2$(U)"A":Z3$(U)"R"3  U1DM 55100: DM;" FIELD MAXIMUM EXCEEDED":"MODIFY YOUR SCREEN ";: 50000: 61100: 7003Z2(U)Z2(U)13&|P1P3\A$(X)(A$(X),1,P1)"."(A$(X),P1,(A$(X)))3gD51003pX1X3w X3}p3ԇ @HOME,"";3X1SC38A$(X)3X3΅ U0 55100: "-> YOU HAVE NO INPUT FIELDS <-";: 50000: 8004X1U42X$((X),2,((X)))4Ed@Z1(X),(Z2(X),".");: @Z1(X),X$;4LȋX4R,4Y:4_4eX4sX1SCU4 #1,A,A$,B,B$,C$,C$4A$(A$,2,(A$))4B$"D"@A,A$;:@A,(B,".");4LX44#1,A,A$,B,B$,B$,B$5x@A,(B,".");:X5 ܁790050@ 55100:"WHICH FIELD NUMBER" 5LA"IS THE PRIME KEY - ";5lBZ23:16000:A$T$:A(A$)5AU A1 55000 :6100:80005 Z3$(A)"K"5 :KFIELA5 l 55100:"ARE ANY FIELDS "5 m"NUMERIC ONLY (Y/N) - ";6 nZ21:16000:A$T$6 ЅA$"N"970060!4A$"Y"6100:83006Y! 55100:"FIELD NUMBER OF NUMERIC "6j!"FIELD - ";6!Z23:16000:A$T$:A(A$):A(A)6!AU A1 55100: A;"IS AN INVALID FIELD NUMBER.";: 50000:6100:83006"`Z2$(A)"N"7"ā 55100:"WHAT IS THE ";7&"Ň"FORM OF THE "7E"Ƈ"NUMBER IN FIELD ";A;">";7\"Z24:16000:A$T$7"A$(((A$)),2,(A$))91007#(6100:89007#(A$,".")0B(A$):Z4$(A)(B,"#"):93007#C1$(A$,1,(A$,".")1)8#C2$(A$,(A$,".")1 1 REM RANDPRT/NEW COLOR COMPUTER 2 REM (C) 1986,1987 ICR FUTURE- SOFT 3 REM 4 REM 5 REM 10 REM 12 CLEAR 1500:FILES 3,770 15 REM 135 REM 140 REM 150 REM 155 BK$=STRING$(63,32)+STRING$(63,8) 160 BOTT = 416 165 BLANK$=BK$ 170 RB$=CHR$(8) 175 SB$=CHR$(232) 185 DIM F$(T),F(T),T(T):REM DIMENSION FIELDS 187 REM 188 REM 190 D$=CHR$(94)+STRING$(KL,32):REM DUMMY KEY 201 GOTO 47000 'check for PRINTCMD 202 ' arrive here after PRINTCMD ( Report Program Command File ) 204 REM 205 A=INT(255/(KL+6)): REM NUMBER OF KEYS PER SECTOR 210 OPEN "R",1,V1$,RL:REM OPEN MASTER FILE 220 OPEN "R",2,V2$:REM OPEN KEY FILE 225 FIELD 1,RL AS FR$:REM FIELD MASTER FILE BUFFER 227 FIELD 2,255 AS KS$:REM FIELD KEY FILE BUFFER 300 CLS 410 FOR X = 1 TO T:F$(X)=STRING$(FL(X),0):NEXT X 700 REM ... PRINT SCREEN 701 CLS 4000 REM ... BEGIN MAINLINE 4003 UPDATE$="" 4004 FOR X = 1 TO T:T(X)=0: NEXT X: REM .. CLEAR FIELDS 4005 PRINT @ BOTT,;BLANK$;BOTT$;"et Record, earch, Select, Sort or nd Program "; 4010 TY$="A":FL=1 4015 GOSUB 21000 4025 IF T$="G" THEN UPDATE$="YES":GOTO 15000 4030 IF T$="E" THEN 40000 4035 IF T$="S" OR T$="s" THEN PRINT @ BOTT,;BLANK$;BOTT$;"Select something in a IELD OR NYWHERE in the file ";:Z2=1:GOSUB 21000: IF T$="F" OR T$="F" THEN GOTO 45000 ELSE GOTO 14000 4040 PRINT CHR$(7); 4050 GOTO 4005 14000 REM ..... STRING SEARCH ...... 14002 X=0:LC=0:PG=0 14005 UPDATE$="S" 14010 PRINT @ BOTT,;BLANK$;BOTT$;"Search for ? - ";:REM .. SEARCH 14020 FL=30:REM ... MAXIMUM LENGTH OF SEARCH STRING .... 14030 TY$="A":REM ... SEARCH STRING IS ALPHA-NUMERIC .... 14035 GOSUB 21000:Q$=T$ 14036 IF Q$="" THEN PRINT @ BOTT,BLANK$BOTT$"Print All Records ? (Y/N) - ";:FL=1:GOSUB 21000: IF T$="N" THEN 4000 ELSE IF T$<>"Y" THEN 14036 14037 SS$=Q$:GOTO 45205 : ' SORT ? 14038 PRINT @ BOTT,;BLANK$;BOTT$;"Press any key to stop search ";:FL=1:TY$="A" 14040 FOR X = 1 TO LOF(1):GET #1,X:IF (INSTR(FR$,Q$)<>0 OR Q$="") AND FR$<>STRING$(RL,0) THEN GOTO 14100 14045 IF INKEY$<>""THEN4000 14060 NEXT X:GOSUB 28000:GOTO 4000 14100 GOSUB 15390:REM .. PRINT RECORD ....... AND RETURN .... 14200 PRINT @ BOTT,;BLANK$;BOTT$;" top - "; 14210 IF INKEY$="S" THEN 4000 14250 GOTO 14060 14300 REM ..... remember that you have a line at 18200 ... 15000 REM 15002 REM ... GET RECORD 15003 PG=0:LC=0 15395 IF LC=<0 THEN GOSUB 25000 18200 IF UPDATE$="S" THEN RETURN 21000 REM ... ALPHA NUMERIC IKEYBOARD SCAN 21005 T$="" 21010 PRINT SB$;:A$=INKEY$:IF A$="" THEN PRINT RB$;:GOTO 21010 21015 PRINT RB$; 21020 IF ASC(A$)=8 AND LEN(T$)>0 THEN PRINT CHR$(8);:T$=LEFT$(T$,LEN(T$)-1):GOTO 21010 21030 IF ASC(A$)=13 THEN 21100 21040 IF ASC(A$)<32 OR ASC(A$)>127 THEN 21010 21050 T$=T$+A$ 21060 IF LEN(T$)>FL THEN T$=MID$(T$,1,LEN(T$)-1):PRINT CHR$(7);:GOTO 21010 21065 PRINT A$; 21070 GOTO 21010 21100 RETURN 23000 REM ... CHECK FOR VALID NUMERIC ..... 23005 F1=0:F2=0:N=0 23010 FOR X = 1 TO LEN(T$) 23020 A=ASC(MID$(T$,X,1)) 23030 IF A<45 OR A>57 THEN PRINT CHR$(7);:GOTO 23100 23040 IF A=47 THEN 23050 IF A=46 THEN F1=F1+1:IF F1>1 THEN PRINT CHR$(7);:GOTO 23100 23060 IF A=45 THEN F2=F2+1:IF F2>1 THEN PRINT CHR$(7);:GOTO 23100 23070 NEXTX 23080 IF INSTR(T$,"-")>1 THEN PRINT CHR$(7);:GOTO 23100 23090 N=1 23100 RETURN 25000 REM HEADER ......................... 25005 PG=PG+1 25006 PRINT #-2, FF$ 25007 PRINT #-2, " " 25009 PRINT #-2, " ":PRINT #-2, " " 25300 LC=PL:RETURN 40000 PRINT @ BOTT,;BLANK$;BOTT$;"Press Enter to End Program ";:INPUT D$ 40010 END:REM . . . YOU MAY GO TO ANOTHER PROGRAM FROM HERE . 40020 REM 40030 REM 40040 REM 45000 ' relational prompting 45001 UPDTE$="S" 45002 LC=0 45005 FC=0:FP=1:CP=0:BF=0 45010 PRINT @ BOTT,BK$;"PRESS ENTER TO GET TO THE FIELD YOU WANT TO SEARCH ON.."; 45030 FL=1:GOSUB 21000 45031 PRINT @ BOTT,BK$;"... THEN, TYPE IN WHAT YOU WANT TO SEARCH FOR. "; 45035 FC=FC+1:IF FC>T THEN 4000:ELSE IF TY$(FC)="Z" THEN 45035 45036 FL=FL(FC):PRINT @ CP(FC),""; 45038 GOSUB 21000:IF T$<>"" AND TY$(FC)="N" THEN GOSUB 23000:IF N=0 THEN PRINT @ CP(FC),STRING$(FL(FC),".");:GOTO 45036 45040 IF T$<>"" THEN 45048 45042 IF BF>0 THEN 45046 45044 IF FP+FL(FC)-1>255 THEN BF=FC:FB=255-(FP-FL(FC)-1) 45046 FP=FP+FL(FC):GOTO 45035 45048 SS$=T$ 45050 IF TY$(FC)<>"N" THEN CP=4:GOTO 45150'sort ? 45100 PRINT @ BOTT,BK$;"THE FIELD YOU ARE SEARCHING IS A NUMBER FIELD...";:GOSUB 60000 45105 PRINT @ BOTT,BK$;"YOU MAY SEARCH FOR RECORDS IN YOUR REPORT THAT ARE.. ";:GOSUB 60000 45110 PRINT @ BOTT,BK$;"QUAL, ESS OR REATER THAN THE NUMBER ENTERED ";:FL=1:GOSUB 21000 45115 IF T$="" THEN 45110 45120 IF ASC(T$)>90 THEN T$=CHR$(ASC(T$)-32) 45130 CP = INSTR(" ELGelg",T$)-1: IF CP>3 THEN CP=CP-3 45140 IF CP<1 OR CP>3 THEN PRINT CHR$(7);:GOTO 45110 45150 C1=FP:C2=FL(FC) 45200 OPEN "R",3,"SORT/V10":IF LOF(3)>0 THEN CLOSE 3: GOTO 45205 ELSE T$="N":CLOSE 3:GOTO 45210 45201 REM 45202 REM 45203 REM 45204 REM 45205 PRINT @ BOTT,BK$"DO YOU WANT YOU REPORT IN SORTED ORDER? (Y/N)-";:FL=1:GOSUB 21000:IF T$="" THEN 45205 45210 IF INSTR("Nn",T$) THEN IF CP THEN 45500 ELSE 14038 45215 IF INSTR("Yy",T$)=0 THEN 45205 45216 FOR X=1 TO T:IF TY$(X)="Z" THEN 45218 ELSE N$=MID$(STR$(X),2) 45217 PRINT @ CP(X),N$;:IF FL(X)<>1 THEN PRINT STRING$(FL(X)-LEN(N$),"."); 45218 NEXT 45219 ' 45220 CLOSE:PRINT @ BOTT,BK$"WHAT FIELD DO YOU WANT TO SORT ON? (ENTER FIELD NUMBER) - "; 45225 FL=2:GOSUB 21000:IF T$="" OR VAL(T$)<1 OR VAL(T$)>T THEN 45220 45226 IF TY$(VAL(T$))="Z" THEN PRINT @ BOTT,BLANK$"> Cannot Sort on Display Only Fields <";:GOSUB 60000:FOR X=1 TO T:PRINT @ CP(X),STRING$(FL(X),".");:NEXT:GOTO 45205 45230 S1=1:FOR X=0 TO VAL(T$)-1 45231 IF TY$(X)<>"Z" THEN S1=S1+FL(X) 45232 NEXT 45235 S2=FL(VAL(T$)):NF=INSTR("AN",TY$(VAL(T$)))-1 45236 IF CP THEN PRINT @ CP(FC),SS$ 45254 ' WRITE SORT COMMAND FILE 45255 OPEN"O",3,PN$+"/SRT" 45260 PRINT#3,PN$' PROGRAM NAME 45261 PRINT#3,V1$' MASTER FILE 45262 PRINT#3,"0"' SCRATCH DRIVE 45263 PRINT#3,"0"' SORTED KEY WRITE DRIVE 45264 PRINT #3," " 45265 PRINT#3,RL ' RECORD LENGTH 45266 PRINT#3,S1' SORT FIELD POSITION 45267 PRINT#3,S2' SORT FIELD LENGTH 45268 PRINT#3,NF' ALPHA OR NUMERIC (0/1) 45269 PRINT#3,MP' DECIMAL PRECISION (.1234) 45270 PRINT#3,SS$' TEST/SEARCH STRING$ 45271 PRINT#3,CP' TYPE TEST 45272 PRINT#3,C1' TEST FIELD POSITION 45273 PRINT#3,C2 ' TEST FIELD LENGTH 45274 PRINT#3,0' RESERVED 45275 PRINT#3,0' RESERVED 45276 PRINT#3,0' RESERVED 45279 CLOSE 3:OPEN"O",3,"SORTCMD/DAT":PRINT#3,PN$+"/SRT" 45280 PRINT @ BOTT,BK$"--LOADING QUIKPRO+II SORT--"; 45290 RUN "SORT/V10" 45500 REM 45505 X=1:GET #1,X 45506 PRINT @ BOTT,BK$"PRESS ANY KEY TO STOP SEARCH "; 45510 ' 45520 IF LOF(1)=X-1 THEN GOSUB 28000:GOTO 700 ELSE GET #1,X:X=X+1 45521 IF FR$=STRING$(RL,0) THEN 45520 45525 IF BF=0 THEN RS$=MID$(FR$,C1,C2):GOTO 45530 45526 IF FC=BF THEN RS$=MID$(FR$,FB,255)+MID$(FR1$,FL(FC)-FB):GOTO 45530OK 45527 IF FC>BF THEN RS$=MID$(FR1$,FP-255,FL(FC)) 45530 ON CP GOTO 45600,45700,45800,45900 45600 REM TEST NUMBER IF EQUAL 45610 IF VAL(RS$)=VAL(SS$) THEN GOSUB 15390:GOTO 45950 ELSE 45950 45700 REM TEST NUMBER IF LESS 45710 IF VAL(RS$)VAL(SS$) THEN GOSUB 15390:GOTO 45950 ELSE 45950 45900 IF INSTR(RS$,SS$)<>0 THEN GOSUB 15390:GOTO 45950 ELSE 45950 45950 IF ST THEN RETURN 45954 IF INKEY$<>"" THEN 700 45955 GOTO 45510 45956 GOSUB 28000' Total Out Record 45960 GOTO 700 ' Return to Mainline 46054 REM 46999 ' PRINTCMD ( Report Program Command File ) 47000 REM 47005 OPEN "R",1,"KEYCMD/DAT",10 47006 IF LOF(1)=0 THEN CLOSE:GOTO 47520: ELSE CLOSE 47010 OPEN "I",1,"KEYCMD/DAT" 47020 INPUT #1,EC 47021 INPUT#1,MF$'SORTED KEY FILE NAME 47022 INPUT#1,A$'CALLING PROGRAM NAME 47023 INPUT#1,SS$'TEST/SEARCH STRING 47024 INPUT#1,CP'TYPE TEST 47025 INPUT#1,C1'TEST FIELD POS 47026 INPUT#1,C2'TEST FIELD LENGTH 47027 INPUT#1,X'RESERVED 47028 INPUT#1,X'RESERVED 47029 INPUT#1,X'RESERVED 47035 IF A$<>PN$ THEN 47510' NOT CALLED FROM THIS PROGRAM 47040 CLOSE:KILL "KEYCMD/DAT" ' kill CMD file 47045 REM 47050 REM 47055 OPEN"R",2,V1$,RL:' open master file 47056 FIELD 2 ,RL AS FR$ 47060 OPEN"R",1,MF$' open key file 47061 IF LOF(1)=0 THEN CLOSE 1:KILL MF$:GOTO 202 ' check if good 47065 RX=1:Y=1:GET #1,Y' set buff & rec counter 47090 ST=1:UPDTE$="S" 47095 PRINT @ BOTT,BK$"

AUSE, BORT, EDO (HOLD DOWN KEY "; 47100 FIELD 1,(RX*5-5) AS DU$,5 AS RN$' point to Rec Number 47101 A=CVN(RN$) 47102 IF A=0 THEN GOSUB 28000:GOTO 47140' if done total/copy? 47103 RX=RX+1:IF RX>50 THEN RX=1:Y=Y+1:GET #1,Y ' get more keys 47110 N$=INKEY$:IF N$<>"" THEN 47300' check for interrupt 47120 GET #2,A:IF CP THEN GOSUB 45525:GOTO 47100 47130 IF INSTR(FR$,SS$) THEN GOSUB 15390 ELSE GOTO 47100 47135 GOTO 47100 47140 ' another copy / return to program 47150 PRINT @ BOTT,BK$"DO YOU WANT TO PRINT ANOTHER COPY (Y/N ) - "; 47160 FL=1:GOSUB 21000:IF T$="" THEN 47160 47165 IF INSTR("Nn",T$) THEN CLOSE:KILL MF$:GOTO 47520 47170 IF INSTR("Yy",T$) THEN LC=0:PG=0:GOTO 47065 47180 GOTO 47150 47299 ' Pause / Abort /Redo 47300 N=INSTR("PARpar",N$):IF N>3 THEN N=N-3 47310 ON N GOTO 47320,47350,47380 47315 GOTO 47110 47319 ' pause 47320 PRINT @ BOTT,BLANK$BOTT$" PRINTING PAUSED * Press any key to continue - "; 47325 A$=INKEY$:IF A$="" THEN 47325 ELSE N$="":PRINT PP$;:GOTO 47120 47349 ' abort 47350 CLOSE 47355 KILL MF$ 47360 GOTO 47520 47379 ' redo 47380 ' 47385 PRINT @ BOTT,BLANK$BOTT$" REDO REPORT * Press any key to continue - "; 47390 A$=INKEY$:IF A$="" THEN 47390 ELSE LC=0:PG=0:GOTO 47065 47399 ' if sort detected error 47400 PRINT @ BOTT,BLANK$BOTT$"SORT DETECTED ERROR #";EC!;", nter to continue -"; 47410 A$=INKEY$:IF A$=CHR$(13) THEN 47510 ELSE 47410 47499 'if no PRINTCMD file 47500 RESUME 47510 47510 ON ERROR GOTO 53000 47520 ST=0:CP=0:CLOSE:GOTO 202 53000 REM ERROR TRAPS 53005 REM 53010 REM 53015 REM 53020 REM 53025 REM 53030 REM 53035 REM 53040 REM 54000 REM 54010 REM 54100 PRINT @ BOTT,;BLANK$;BOTT$;E$(X);CHR$(7):PRINT 54200 CLOSE:END 60000 REM ..... TIME DELAY ..... 60010 FOR Z = 1 TO 700 60020 NEXT Z 60030 RETURN  10 CLEAR 100:CLEAR MEM-9000 20 REM 50 DS$="T":OC=98:XK=10:XP=4 60 OPEN"I",3,"SORTCMD/DAT":INPUT#3,PF$:CLOSE 3:KILL "SORTCMD/DAT" 70 OPEN"I",3,PF$:INPUT#3,PN$,MS$,WV$,SV$,BB$,RL,S1,S2,NF,MP,SS$,CP,C1,C2,X,X,X:CLOSE 3:KILL PF$ 110 TF$=MS$:GOSUB 4550:MV$=DV$:MF$=T1$+EX$+"SKY" 120 TF$=PN$:GOSUB 4550:PV$=DV$ 130 PC$="KEYCMD/DAT":IF DS$="T" THEN PC$=PC$+PV$ ELSE PC$=PV$+PC$ 200 IF S1+(S2-1)>RL OR S1=0 OR S2=0 THEN EC=1 210 IF NF<>0 AND NF<>1 THEN EC=2 290 IF EC THEN 60000 300 IF S2 > XK THEN S2=XK 310 IF MP > S2-1 THEN MP=S2-1 311 IF MP > XP THEN MP=XP 312 IF MP < 0 THEN MP=0 340 A$=WV$:GOSUB 8000:WV$=A$ 341 A$=SV$:GOSUB 8000:SV$=A$ 342 A$=PV$:GOSUB 8000:PV$=A$ 343 A$=MV$:GOSUB 8000:MV$=A$ 360 IF DS$="C" THEN MF$=SV$+MF$ ELSE MF$=MF$+SV$ 400 KL=S2+(NF*(MP+1)):KP=KL+5 410 XL=(MEM-4000)/(KP+3):LA=XL:IF LA<10 THEN PRINT "OUT OF MEMORY":END 1140 REM 1145 REM 1150 DIM A$(LA+1) 1180 M1$="WK/TMP":IF DS$="T" THEN M1$=M1$+WV$ ELSE M1$=WV$+M1$ 1185 TP$=STRING$(S2,0):NU$=STRING$(S2,0):R$=STRING$(S2+MP," "):M0=VAL("1"+STRING$(MP,"0")):PB$="Please Stand By " 1190 PRINT @ 416,STRING$(63,32)STRING$(63,8);"QUIKPRO SORT "PB$; 1210 Z=0:NT=0:EX=INT(255/KP):DN=0:SR=0:LB=1:K3=32767:K6=65536:DIM R(25),B(25),C$(25) 1211 IF NT=0 THEN GOSUB 1600 ELSE GOSUB 1630 1213 IF NT=0 AND DN THEN GOSUB 6000:CLOSE:EC=0:GOTO 4300 1219 EC=1:NT=NT+1:R(NT)=Z+1 1220 IF NT=1 THEN OPEN"R",1,M1$:IF LOF(1)<>0 THEN CLOSE 1:KILL M1$:GOTO 1220 1230 FOR X=1 TO LA+1 1232 FIELD 1,(EC*KP-KP) AS W1$,(KP) AS W2$ 1235 LSET W2$=A$(X) 1240 EC=EC+1:IF EC>EX THEN Z=Z+1:PUT #1,Z:EC=1 1245 IF X=LA+1 THEN LSET W2$=STRING$(KP,0):Z=Z+1:PUT #1,Z 1250 NEXT:IF DN=0 THEN 1211 1280 OPEN"R",2,MF$:IF LOF(2)<>0 THEN CLOSE 2:KILL MF$:GOTO 1280 1281 EC=1:Y=1 1290 BM=EX*KP:NU$=STRING$(KP,0):TE$=NU$:NA$=STRING$(KP,255) 1300 FIELD 1,255 AS A$:FOR X=1 TO NT:A$(X)=STRING$(255,0):B(X)=0:GET #1,R(X):LSET A$(X)=A$:NEXT 1350 LSET TE$=NA$:FOR X=1 TO NT:LSET A$=A$(X):FIELD 1,(B(X)) AS D$,(KP) AS C$(X):IF C$(X)=127 THEN EC=1:PUT #2,Y:Y=Y+1 1375 B(TE)=B(TE)+KP:IF B(TE)=BM THEN R(TE)=R(TE)+1:B(TE)=0:GET #1,R(TE):LSET A$(TE)=A$ 1380 FIELD 1,(B(TE)) AS D$,(KP) AS C$(TE):IF C$(TE)=NU$ THEN GOTO 1390 1385 GOTO 1350 1390 FOR X=1 TO NT-1:IF X=>TE THEN B(X)=B(X+1):LSET A$(X)=A$(X+1):R(X)=R(X+1) 1395 NEXT:NT=NT-1:IF NT THEN 1350 1400 FIELD 2,EC*2-2 AS DK$,2 AS K$:LSET K$=STRING$(2,0):PUT #2,Y 1401 CLOSE 1:CLOSE 2:CLOSE 3:KILL M1$:EC=0 1430 GOTO 4300 1600 REM rd mstr, sel & srt 1620 OPEN"R",3,MS$,RL:FIELD#3,RL AS F$ 1625 IF LOF(3)=0 THEN CLOSE 3:EC=18:GOTO 60000 1626 IF NF=0 THEN FIELD 3,RL AS F$:FIELD 3,(KL) AS P1$,5 AS P2$:FIELD 3,(KP) AS P3$ 1627 IF NF THEN FIELD 3,1 AS P1$,(S2+MP) AS P2$,5 AS P3$:FIELD 3,(KP) AS P4$ 1630 Y=Y+1: IF Y>LOF(3) THEN 4180 ELSE GET #3,Y 1640 TP$=MID$(F$,S1,S2):IF TP$=NU$ THEN 1630 1650 ' 1980 ' 1990 ' 2000 ' 2010 ' 2020 ' 4000 IF NT=0 THEN A$(LB)=STRING$(KP,32) 4020 IF NF THEN T=VAL(TP$):LSET P1$=MID$("-0",(T<0)+2,1):RSET P2$=MID$(STR$(INT(T*M0)),2):RSET P3$=MKN$(Y): A$(LB)=P4$:IF T=>0 THEN 4150 ELSE GOSUB 9000:GOTO 4150 4040 RSET P2$=MKN$(Y):LSET P1$=TP$: A$(LB)=P3$ 4150 IF LB<>LA THEN LB=LB+1:GOTO 1630:ELSE GOSUB 4210:LB=1:RETURN 4180 DN=1:LA=LB-1:GOSUB 4210:RETURN 4210 IF LA<>0 THEN SR=1 4215 IF LA<2 THEN RETURN 4220 REM 4225 REM 4240 GOSUB 63000:REM GOTO SORT 4245 REM 4250 REM 4270 IF Y+1>LOF(3) THEN DN=1 4295 RETURN 4300 REM 4311 IF SR=0 AND EC=0 THEN EC=255:PRINT BB$"* NO SELECTED RECORDS * "; 4320 OPEN"O",1,PC$ 4321 PRINT#1,EC 4322 PRINT#1,MF$ 4323 PRINT#1,PN$ 4324 PRINT#1,SS$ 4325 PRINT#1,CP 4326 PRINT#1,C1 4327 PRINT#1,C2 4328 PRINT#1,0 4329 PRINT#1,0 4330 PRINT#1,0 4331 CLOSE 4333 IF EC=0 THEN PRINT @ 416,STRING$(63,32)STRING$(63,8)" * SORT COMPLETED * "; 4335 REM 4344 IF EC=0 AND PN$<>"" THEN PRINT @ BOTT,STRING$(63,32)STRING$(63,8)"LOADING PROGRAM ";PN$; 4345 REM 4346 IF PN$<>"" AND PN=0 THEN RUN ""+PN$ 4350 END 4550 IF DS$="T" THEN EX$="/" ELSE EX$="." 4555 IF LEN(TF$)>14 THEN EC=7:GOTO 60000 4560 DS=INSTR(TF$,":") 4570 IF DS$="T" AND DS=LEN(TF$)-1 THEN DV$=RIGHT$(TF$,2) 4580 IF DS$="C" AND DS=2 THEN DV$=LEFT$ (TF$,2) 4590 IF DS=0 THEN DV$="" 4610 IF DS$="T" AND DV$<>"" THEN T1$=LEFT$(TF$,DS-1) 4620 IF DS$="C" AND DV$<>"" THEN T1$=MID$(TF$,DS+1,LEN(TF$)) 4630 IF DV$="" THEN T1$=TF$ 4640 IF INSTR(T1$,EX$) THEN IF INSTR(T1$,EX$)=LEN(T1$)-3 THEN T1$=LEFT$(T1$,INSTR(T1$,EX$)-1) 4650 RETURN 6000 OPEN"R",2,MF$:IF LOF(2)<>0 THEN CLOSE 2:KILL MF$:GOTO 6000 6010 EC=1:Y=1 6020 FOR X=1 TO LA 6030 FIELD 2,EC*5 -5 AS DK$,5 AS K$ 6040 LSET K$=RIGHT$(A$(X),5) 6050 EC=EC+1:IF EC>50 THEN EC=1:PUT #2,Y:Y=Y+1 6060 NEXT 6070 FIELD 2,EC*5-5 AS DK$,5 AS K$:LSET K$=STRING$(5,0) 6080 PUT #2,Y:CLOSE 2 6090 RETURN 8000 IF A$="" THEN RETURN 8010 IF DS$="C" THEN 8100 8020 A$=":"+RIGHT$(A$,1) 8030 A=ASC(RIGHT$(A$,1)) 8040 IF A<48 OR A>57 THEN EC=8:GOTO 60000 ELSE RETURN 8100 A$=LEFT$(A$,1)+":" 8120 A=ASC(LEFT$(A$,1)) 8130 IF A>96 AND A<123 THEN A=A-32:MID$(A$,1)=CHR$(A) 8140 IF A<65 OR A>90 THEN EC=8:GOTO 60000 ELSE RETURN 9000 FOR X=2 TO LEN(A$(LB))-2:MID$(A$(LB),X,1)=CHR$(ABS(ASC(MID$(A$(LB),X,1))-255)):NEXT:RETURN 50000 EC=0:IF ERR/2+1=53 THEN EC=25:BB$=" ":RESUME 60000 50010 IF ERL=70 OR ERL=60 THEN PRINT BB$"> CANNOT FIND SORTCMD/DAT/PARAMETER FILE";:END 50015 IF ERL=1140 THEN EC=17:RESUME 60000 50020 IF ERR/2+1=54 AND ERL=4346 THEN EC=20:RESUME 60000 50030 IF ERL=>1620 AND ERL =<1640 THEN EC=24:RESUME 60000 50040 IF DS$="T" THEN IF ERR/2+1<>62 THEN 50500 50041 IF DS$="C" THEN IF ERR/2+1<>61 AND ERR<>67 THEN 50500 50042 CLOSE 50050 IF ERL=6050 OR ERL=6080 OR ERL=6380 OR ERL=1365 THEN 50100 50060 IF ERL=1240 OR ERL=1245 THEN 50200 50070 IF ERL=>4320 AND ERL=<4331 THEN 50300 50090 GOTO 51000 50100 EC=21:IF ERL=1365 THEN KILL M1$:KILL MF$: ELSE KILL MF$ 50109 IF IO THEN EC=26 50110 RESUME 60000 50200 EC=22:KILL M1$ 50209 IF IO THEN EC=26 50210 RESUME 60000 50300 EC=23:KILL PC$:IF DS$="T" THEN END 50310 IF IO THEN EC=26 50320 RESUME 60000 50500 IF ERR/2+1=58 THEN IO=1:GOTO 50042 51000 EC=0-(ERR/2+1):IF ERL=>500 AND ERL<4300 THEN RESUME 60000 51010 PRINT BB$"> UNDEFINED ERROR - [";EC;"] ":END 60000 REM 60010 PRINT BB$;"> "; 60020 IF EC>16 OR EC>200 THEN 60500 60100 PRINT "SORTCMD/DAT PARAMETER ERROR"; 60110 GOTO 62000 60500 ON ERROR GOTO 50000 61000 IF EC=18 THEN PRINT"MASTER FILE NOT FOUND / NO RECORDS"; 61001 IF EC=17 THEN PRINT"SRTOV3/V10 SORT FILE NOT FOUND"; 61010 IF EC=19 THEN PRINT"INSUFFICIENT MEMORY"; 61020 IF EC=20 THEN PRINT"CALLING PROGRAM NOT FOUND";:PRINT:END 61030 IF EC=21 OR EC=22 OR EC=23 THEN PRINT"INSUFFICIENT DISK SPACE"; 61035 'IF EC=23 THEN END 61040 IF EC=24 THEN PRINT"PARAMETERS DO NOT MATCH MASTER FILE"; 61050 IF EC=25 THEN PRINT"BASIC NOT OPENED WITH 3 FILE BUFFERS";:PRINT:END 61060 IF EC=26 THEN PRINT"DISK I/O ERROR / CHECK DISK";:PRINT:END 61070 IF EC>200 AND ERL=>500 THEN PRINT"UNDEFINED ERROR"; 62000 PRINT" - [";EC;"] "; 63000 REM SORT 63010 FOR IP=1 TO LA-1 63020 FOR JP=IP+1 TO LA 63025 IF A$(JP)>=A$(IP) THEN 63050 63030 X1$=A$(IP):A$(IP)=A$(JP): A$(JP)=X1$ 63050 NEXT JP:NEXT IP 63060 RETURN  5 CLEAR 5000 6 FILES 3,760 7 CLS 10 REM QUIKINDEX (C) 1982 FutureSoft 15 ' VER.2.2 7/27/1982 20 PRINT STRING$(30,10) 30 PRINT "QUIKIDEX - PROGRAM UTILITY TO CREATE KEY FILE FROM AN ASCII DATA FILE" 35 PRINT " " 40 PRINT "QUIKIDEX WILL ALLOW YOU TO TAKE ANY ASCII STORED DATA FILE AND PRODUCE AN INDEX FILE TO ALLOW THE ORIGINAL FILE TO BE USED BY PROGRAMS CREATED WITH QUIKPRO+II" 50 REM 60 REM 70 REM 80 PRINT " " 90 INPUT "FILE NAME --- ";F$ 95 INPUT "DRIVE CODE --- ";D$ 100 INPUT "ENTER THE STARTING POSISION OF THE KEY IN YOUR FILE ";A 200 INPUT "ENTER THE ENDING POSITION OF THE KEY IN YOUR FILE ";B 250 IF B<=A THEN PRINT:PRINT "--> YOUR ENDING POSITION IS GREATER THAN YOUR BEGINNING ";:GOSUB 50000:GOTO 20 260 KL =B-A+1 265 INPUT "WHAT IS THE RECORD LENGTH ";RL 300 OPEN "R",1,F$,RL 310 OPEN "R",2,F$+"/ISI:"+D$ 400 FIELD 1, RL AS FR$ 450 FIELD 2, 255 AS KR$ 460 PRINT:PRINT:PRINT "----> indexing <----" 470 PRINT :PRINT "(could take several Minutes)" 500 SR =INT (255/(KL +6)) 550 Y = Y+1 555 IF LOF(1)<=Z THEN 1000 600 KS$="" 610 FOR X = 1 TO SR 615 'IF EOF(1) THEN D$=STRING$(KL ,0):GOTO 630 617 Z = (Y-1)*SR +X:IF LOF(1)+1= INDEXING COMPLETE <--" 1010 PRINT:PRINT:PRINT " (Press any Key to End) ":INPUT D$ 1020 RUN "QUIKMENU" 50000 FOR X = 1 TO 800:NEXT X:RETURN 60000 PRINT "ERROR - ";ERR/2+1;"IN LINE NUMBER - ";ERL 60020 INPUT "PRESS ENTER TO CONTINUE - ";D$ 60030 RUN "QUIKMENU" 3.1 Adding a Record Entering the A for Add will allow you to add records to your file. After entering the A the cursor will position it- self to the first input field and wait for you to enter data into that field. Pressing the ENTER or RETURN keys will move the cursor to the next field until you have passed through all of the fields on the screen. Enter data into each field that you pass. Those fields which allow only numbers to be entered into them will not accept characters which are not numbers. When you have entered the last field on the screen the program will write the record that you just entered to your file. There will be a delay. If you make a mistake while entering fields then you may use the BACKSPACE or Left Arrow to erase characters while in the field. If you have already entered a field and you need to correct a previous field then you may move back to the previous field by entering the < sign followed by the ENTER or RETURN Key. If you want to add additional records then repeat the proceedure above. 3.2 Getting a Record To locate a record in your file enter the letter G for Get Record when the display at the bottom of your screen gives that option. When the letter G has been entered the program will ask you for the key of the record you wish to access. Enter the key. The cursor will position itself to the field that is the key field. If the key you entered is not in the file then a message will be displayed at the bottom of the screen telling you that the record was not found. If the record has been located then the entire record will be displayed on the screen. If you have more than one record with the same key then you may look for the next record of that same key by pressing N for Next. 3.2.1 Deleting a Record Once you have located a record by using the proceedure described above you may delete that record from your file by simply entering the letter D for delete. Once you have deleted a record from the file it has been removed permanently. The only way to replace it is to Add it back again using Add. 3.2.2 Updating or changing a Record To Update or Change Information in a record the record must first be located by getting the Record as described in the section on Getting Records. Once the desired record has been located and is displayed on the screen the fields in that record may be changed. To change the record enter the letter C for hange Record when displayed at the bottom of the screen. After you have entered the letter C the cursor will be moved to the first field in the record and pressing the ENTER or RETURN keys will move the cursor to the next field without changing the contents of that field. If you do want to change a field then enter the new data into the field when the cursor is positioned in that field. The new data will completely replace the previous data in the field. After you have passed the last field your record will be written back into your file with the updates or changes you have made. 3.3 Ending the Program To end your program simply enter an E for nd Program when the option is displayed at the bottom of the screen. This will cause all of your files to be closed and you will exit the program. or changes you have made. 3.3 Ending th   !#$')*+,-.0145678:;<>?@QUIKMENUBAS RANDWRT / QP5 BASoQUIKPRT4BAS(RANDPRT NEWjV10B QUIKIDEXBASQXDOC3  _p! QUIKDOC3 "_p$HELPFUL BAS%QUIKDOK BAS&HUNTER SCR2aHUNTER BAS3HUNTLISTBAS qSORT V109LABELS BASQDOC1 =HUNTER DATAHUNTER ISI 5 REM ..... QUIKDOC3 (c) 1981 FutureSoft ...... 7 ON ERROR GOTO 60000 10 REM .... Ver. 2.1 10/22/81 .... 20 FF$=CHR$(12) 21 LF$=CHR$(10) 25 L$="### % % ### %%" 30 RESTORE 40 READ S1 45 READ F$ 50 READ S2 60 READ P$ 100 REM . . .start mainline . . . 102 REM 105 PRINT #-2, FF$ 106 PRINT #-2, STRING$(20,ASC(LF$)) 107 PRINT #-2, " Operator's Guide for ";P$ 108 PRINT #-2, " " 109 PRINT #-2, " Data Entry/Filing System " 110 PRINT #-2, STRING$(15,LF$) 115 PRINT #-2, " (c) 1981 FutureSoft" 150 GOSUB 5000 160 PRINT #-2, " Table of Contents " 162 PRINT #-2, " ":PRINT #-2, " ":PRINT #-2, " " 163 PRINT #-2, " Section 1.0 Using Your New Progam" 164 PRINT #-2, " ":PRINT #-2, " " 165 PRINT #-2, " 1.1 First Time Use" 166 PRINT #-2, " ":PRINT #-2, " " 167 PRINT #-2, " Section 2.0 ";P$;" Record Layout" 168 PRINT #-2, " ":PRINT #-2, " " 169 PRINT #-2, " Section 3.0 Adding, Updating and Deleting Records " 170 PRINT #-2, " ":PRINT #-2, " " 171 PRINT #-2, " 3.1 Adding Records" 172 PRINT #-2, " ":PRINT #-2, " " 173 PRINT #-2, " 3.2 Getting Records" 174 PRINT #-2, " ":PRINT #-2, " " 175 PRINT #-2, " 3.2.1 Deleting Records" 176 PRINT #-2, " ":PRINT #-2, " " 177 PRINT #-2, " 3.2.2 Updating or Changing Records" 178 PRINT #-2, " ":PRINT #-2, " " 179 PRINT #-2, " 3.3 Ending Program " 190 GOSUB 5000 200 REM . . . . page 1 201 PRINT #-2, " 1.0 Using Your New Program " 202 PRINT #-2, " " 203 PRINT #-2, " Your new program will let you Add, Locate & Update, " 204 PRINT #-2, " and Delete from your File. This file is the File that you " 205 PRINT #-2, "named when you created your program. This file " 206 PRINT #-2, "is ";F$;"." 207 PRINT #-2, " " 208 PRINT #-2, " 1.1 First Time Use " 210 PRINT #-2, " " 215 PRINT #-2, " The first time that you RUN your new program, the files " 216 PRINT #-2, "that you named when you created you program will " 217 PRINT #-2, "automatically be created for you. Make sure that you do " 218 PRINT #-2, "not have another file of the same name on any of the " 219 PRINT #-2, "disks in your system or an error will occur. If you " 220 PRINT #-2, "already have a file of the same name on one of your disks and " 221 PRINT #-2, "you get an error message then you will have to KILL your old " 222 PRINT #-2, "file provided that you don't have any old data in it." 250 GOSUB 5000 300 REM PAGE 2 301 PRINT #-2, " " 302 PRINT #-2, " 2.0 ";P$;" Record Layout " 303 PRINT #-2, " " 304 PRINT #-2, " ";P$;" will allow you to Add, Locate and Update, " 305 PRINT #-2, "or Delete records from the file named ";F$;". The " 306 PRINT #-2, "record in your file has ";S2;" fields. A field is one " 307 PRINT #-2, "item of information in your file. So, your program ";P$ 308 PRINT #-2, "has ";S2;" distinct items of information contained in " 309 PRINT #-2, "each one of your records." 310 PRINT #-2, " " 311 PRINT #-2, "The form of your record will be displayed on your computer" 312 PRINT #-2, "screen, and will look like this: " 315 REM . . . print screen area . . . . 317 PRINT #-2, " ":PRINT #-2, " " 320 FOR X = 1 TO S1-S2 330 READ Z1,Z1$,Z2,Z2$,Z3$,Z4$ 340 PRINT #-2, " " 350 PRINT #-2, Z1$ 360 NEXT X 365 PRINT #-2, " " 370 PRINT #-2, "Fig. 1.0 - ";P$;" Screen and Record Layout" 375 GOSUB 5000 400 REM. . . page 3 401 PRINT #-2, " Each field in your record can only contain a certain " 402 PRINT #-2, "number of characters. Some fields will only allow a number " 403 PRINT #-2, "to be entered into them. Listed below are the fields which " 404 PRINT #-2, "are included in your record, along with the maximum length" 405 PRINT #-2, "allowed for each field. Also listed is the type of field, " 406 PRINT #-2, "either numeric (number field only) or alphanumeric (character" 407 PRINT #-2, "or number field). " 408 PRINT #-2, " " 409 PRINT #-2, " Record Fields for ";P$ 410 PRINT #-2, " " 412 PRINT #-2, "Number Description Length Type" 413 PRINT #-2, "------- ------------------------------- -------- ----" 414 LC=37:PRINT #-2, " " 415 FOR X = 1 TO S2 416 READ Z1,Z1$,Z2,Z2$,Z3$,Z4$,Z5$,D4$ 417 LC=LC-2 418 IF LC<0 THEN PRINT #-2, " ":PRINT #-2, " ";P$;" Record Fields ":GOSUB 5000 420 PRINT #-2, USING L$;X,Z5$,Z2,Z2$ 425 IF D4$="" THEN PRINT #-2, " " ELSE PRINT #-2, " CALCULATION FIELD: ";D4$ 430 NEXT X 440 PRINT #-2, " ":PRINT #-2, " " 450 PRINT #-2, " ";P$;" Record Fields " 460 GOSUB 5000 500 REM . . . next page . . . 501 PRINT #-2, " 3.0 Adding, Updating and Deleting Records " 502 PRINT #-2, " " 503 PRINT #-2, " When your ";P$;" program begins running, you will see " 504 PRINT #-2, " the screen input form as shown in Figure 1.0. At the " 505 PRINT #-2, "bottom of the screen will be displayed the functions you can" 506 PRINT #-2, "perform. " 507 PRINT #-2, " " 508 PRINT #-2, "The display will be: " 509 PRINT #-2, " " 510 PRINT #-2, " dd Record, et Record, nd Program - " 511 PRINT #-2, " " 512 PRINT #-2, "You should enter either an A, G, or E. Make sure that you " 513 PRINT #-2, "have the shift on your keyboard on so that all letters will be " 514 PRINT #-2, "entered as capital letters." 515 PRINT #-2, "" 600 OPEN "I",1,"QXDOC3/" 601 LC=35 605 IF EOF(1) THEN 700 610 LINE INPUT #1, A$ 611 LC=LC-1 612 IF LC<0 THEN GOSUB 5000 615 PRINT #-2, A$ 620 GOTO 605 700 PRINT #-2, FF$ 710 RUN "QUIKMENU" 5000 REM . . . .HEADER . . . . . 5010 LC=50 5020 PG=PG+1 5030 PRINT #-2, FF$ 5040 PRINT #-2, " " 5050 PRINT #-2, " " 5060 PRINT #-2, "Operator's Instructions for ";P$;" Page - ";PG 5070 PRINT #-2, " " 5080 PRINT #-2, " " 5090 RETURN 60000 REM ERROR TRAPS 60010 PRINT:PRINT 60020 PRINT "Error Number ";ERR/2+1;" at Line Number ";ERL 60030 PRINT:PRINT 60040 PRINT "Press to Continue "; 60050 INPUT D1$ 60060 RUN "QUIKMENU" - ";PG 5070 1 CLS 10 GOSUB 1000 30 PRINT "1. QUIKPRO+II WILL CREATE YOUR PROGRAMS RIGHT ON TO THE QUIKPRO+II DISKETTE. YOU MUST THEN COPY THESE ONTO A FORMATTEDBLANK COLOR COMPUTER DISKETTE USING THE COLOR COMPUTER COPY COMMAND." 35 PRINT "MAKE SURE TO COPY SCREEN FILES AS WELL. THESE ARE FILES WITH AN EXTENSION OF /SCR. THEY SHOULD BE COPIED ALONG WITH YOUR PROGRAM FILE." 36 GOSUB 10000:GOSUB 1000 40 PRINT "IT IS A GOOD IDEA TO FORMAT AND PREPARE SEVERAL BLANK DISKETTES BEFORE YOU BEGIN CREATING PROGRAMS WITH QUIKPRO+II." 50 GOSUB 10000:GOSUB 1000 100 PRINT "2. AFTER YOU HAVE COPIED THE PROGRAMS YOU CREATE TO ANOTHER DISK, THEN YOU SHOULD REMOVE THEM FROM THE QUIKPRO+II DISK USING THE COLOR COMPUTER KILL COMMAND." 150 PRINT "KILL ONLY FILES THAT YOU HAVE CREATED DO NOT REMOVE OTHERS." 200 GOSUB 10000:GOSUB 1000 205 PRINT "3. TO SPEED UP THE RUNNING AND LOADING OF THE PROGRAMS YOU CREATE WITH QUIKPRO+II, SIMPLY USE THE COLOR COMPUTER LOAD COMMAND TO LOAD THE PROGRAMS THEN USE THE COLOR COMPUTER SAVE COMMAND TO RESAVE THEM." 210 PRINT "THIS ONLY NEEDS TO BE DONE ONCE." 220 GOSUB 10000:GOSUB 1000 300 PRINT "4. TO USE THE PROGRAMS YOU CREATE SIMPLY TYPE IN RUN FOLLOWED BY YOUR PROGRAM NAME IN QUOTES" 305 PRINT 310 PRINT "EXAMPLE: RUN "CHR$(34)"MYPROG"CHR$(34) 320 GOSUB 10000:GOSUB 1000:RUN "QUIKMENU" 1000 PRINT "QUIKPRO+II - HELPFUL INFO ":PRINT:RETURN 10000 PRINT:INPUT "PRESS TO CONTINUE ";A$:CLS:RETURN 5 REM . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 REM . . . . QUIKDOK (c) 1981 FutureSoft . . . . . . . 12 REM . . . . . . . . . . . . . . . . . . . . . . . . . . 15 REM . . . . Ver. 2.1 . . 10/22/81. . . . . . . . . . . . . . 20 REM 25 CLS 30 REM 35 REM 100 CLEAR 3000 110 DIM A$(60) 120 BOTT=416:BK$=STRING$(63,32)+STRING$(63,8) 200 PRINT STRING$(30,10); 210 PRINT "QUIKDOK VER. 2+ AUTOMATIC PROGRAM DOCUMENTOR" 220 PRINT "(C) 1986,1987 ICR FUTURESOFT 230 PRINT 300 REM 305 PRINT "THIS PROGRAM WILL PRINT AN INSTRUCTION MANUAL FOR FILING PROGRAMS THAT YOU CREATED WITH QUIKPRO+II. IN ORDER TO PRINT INSTRUCTIONS, YOU MUST HAVE A PRINTER ATTACHED AND TURNED ON" 370 PRINT 375 INPUT "IS YOUR PRINTER ATTACHED (Y/N) ";R$ 376 IF R$="Y" THEN 379 377 IF R$="N" THEN RUN "QUIKMENU" 378 RUN 379 CLS 380 PRINT "INSERT THE DISK THAT HAS THE PROGRAM ON IT THAT YOU WANT INSTRUCTIONS FOR NOW." 382 PRINT "THE SCREEN FILE FOR THE PROGRAM SHOULD ALSO BE ON THIS DISK."" 390 PRINT 400 REM 402 REM 405 REM 410 REM 500 PRINT 510 INPUT "ENTER THE PROGRAM NAME YOU WANT TO PRINT INSTRUCTIONS FOR ";F$ 515 IF F$="" THEN 10 520 IF LEN(F$)>8 THEN RUN 530 FOR X = 1 TO LEN(F$):IF MID$(F$,X,1)<"A" OR MID$(F$,X,1)>"Z" THEN PRINT:PRINT "BAD SCREEN FILE NAME ";:GOSUB 50000:RUN 535 NEXT X 540 F$=F$+"/SCR" 545 OPEN "R",1,F$,1:IF LOF(1)=0 THEN SOUND 30,2:PRINT:PRINT "SCREEN FILE NOT ON THIS DISK":CLOSE:KILL ""+F$:GOSUB 50000:RUN :ELSE CLOSE 550 REM 560 GOSUB 1000 570 GOSUB 63400 575 REM 580 REM 600 OPEN "O",2,"QDOC1/":PRINT:PRINT:PRINT " PREPARING YOUR PROGRAM MANUAL" 601 LN=50010 602 FOR CY=1 TO CX:LN=LN+10 620 REM 625 PRINT #2,LN;"DATA ";A$(CY) 630 NEXT CY 700 REM 705 OPEN "I",1,"QUIKDOC3/" 710 IF EOF(1) THEN 800 720 LINE INPUT #1,A$ 725 PRINT #2, A$ 730 GOTO 710 800 CLOSE 900 RUN "QDOC1/" 1000 OPEN "I",1,F$ 1010 IF EOF(1) THEN 1100 1020 CX=CX+1 1030 LINE INPUT #1,RE$:A$(CX)=RE$ 1040 GOTO 1010 1050 CLOSE 1100 CLOSE:RETURN 2000 REM . . . . delay loop . . . . 2010 FOR Y = 1 TO 600 2020 NEXT Y 2030 RETURN 3000 REM . . . . PRESS ENTER TO CONTINUE . . . 3005 PRINT 3010 INPUT "Press ENTER or RETURN to CONTINUE ";R$ 3020 RETURN 4000 REM . . . . RETURN TO MENU . . . 4005 PRINT 4010 INPUT "Press ENTER or RETURN to END PROGRAM ";R$ 4020 RUN "QUIKMENU" 10000 REM .... file not found error trap .... 10010 PRINT CHR$(7) 10020 PRINT "----> I cannot find your Program Name <----" 10030 PRINT "----> Please double check it. <----" 10035 GOSUB 3000 10040 RESUME 4000 50000 FOR AX= 1 TO 2000:NEXT AX 50010 RETURN 63400 REM CHECK FOR QUIKPRO 63410 OPEN "R",1,"QUIKDOC3/",1 63415 IF LOF(1)=0 THEN CLOSE:SOUND 30,2:PRINT @ BOTT,BK$"PUT THE QUIKPRO+II DISK BACK IN THE DRIVE ";:INPUT DR$:GOTO 63400 63420 CLOSE:RETURN =& QUIKPRT4&! PROTECTION&'&j2400:A$(0):T$"":L$"":QT$(34): KI$: K0:KI$(255,0)&zSB$(232)&RB$(8)& SC13& SW31& BLANK$(SW,32)&B1$"STRING$("(SW)",32)"&&BK$(63,32)(63,8)'BOTT 416'BLANK$BK$'''+BS$(8)'@Q$(34):QT$Q$'OFF$(12)'U'['a'#"QUIKPRO+ VER. II - REPORT PROGRAM GENERATOR (C) 1986 JWT"'('2'F: " ( 1) - START PROGRAM "'H" ( 2) - RETURN TO MENU"'K(3L" select - ";:CH$:CH$"1"CH$"2"(7);:20(LCH$"2""QUIKMENU"(X,A$(SC)(Z1(30),Z2(30),Z2$(30),Z3$(30),Z4$(30),Z5$(30)( F$(30),F(30),Z6$(30),Z7$(30),Z8(30),Z9(30)(( "QUIKPRINT (C) 1986 REPORT PROGRAM GENERATOR")) "TO CREATE A REPORT PROGRAM YOU MUST START FROM AN EXISTING FILING PROGRAM THAT YOU CRE- ATED. THE SCREEN FILE, (/SCR FILE) FROM THE PROGRAM MUST BE ON YOUR DISK. INSERT THE PROPER DISK NOW.": 545) ) ) ) ) )** ****#*)*/*5*U! "ENTER PROGRAM NAME -> ";*m"Z28: 16000:J$T$*# 63500: "I",1,J$"/SCR": #1,U1: #1,V1$: #1,U: #1,J$*$ X 1 SC: #1,D$,A$(X),D$,D$,D$,D$: X+U% X 1 U: #1,Z1(X),D$,Z2(X),Z2$(X),Z3$(X),Z4$(X),Z5$(X),Z6$(X):Z7$(X)"1":Z8(X)1: X:: 63600: 6100: 7000+& @ BOTT,BK$"DO YOU WANT TO ELIMINATE ANY FIELDS IN THIS REPORT ?(Y/N)-";:Z21:16000++ T$"N" 560+, T$"Y" 550,I- @ BOTT,BK$;"ENTER FIELD NUMBER TO ELIMINATE - ";:Z23: 16000: (T$)1 (T$)U (7);: 550,x.Z7$((T$))"0": @ Z1((T$)),"*";: 550,0 9760,p,Ԟ,X1SC,8A$(X),X,΅ U0 @ BOTT,BK$;"> YOU HAVE NO INPUT FIELDS <";: 30,3: 50000: 800- X1U-'2X$((X),2,((X)))-Sd@Z1(X)1,(Z2(X),".");: @Z1(X)1,X$;-ZȋX-`,-f-X: PROMPT FOR FREE FORM OR COLUMNAR-b @ BOTT,BK$"DO YOU WANT REE FORM OR OLUMNAR REPORT-ENTER F OR C";:Z21: 16000. l T$"C" T$"c" 550.Cv T$"F" T$"f" LB1: 61000: 9760: : 7000 .& Y 1 U : Z3$(Y)"D" Z3$(Y)"I" RL RL Z2(Y).&!: :::::IF Z7$(Y)<>"0" THEN U(1)=U(1)+Z2(Y)+1:U(3)=U(3)+1/&"RL 255@ BOTT,BK$;"> YOUR RECORD IS GREATER THAN 255 CHARACTERS < ";: 50000:40000/E&%Z3$(Y)"K"KL KL Z2(Y):KFIELY/]&& Z7$(Y)"0" 9780/&( LB1 V2$ (V1$,1, (V1$,"/")1)"/ISI": 9780/&*@ BOTT,BK$;"ENTER HEADING FOR FIELD # ";Y;" ->";/&/Z2Z2(Y):16000:Z5$(Y)T$/&20&4 Y: LB1 20000: 101000u&5 @ BOTT,BK$;"PRESS ENTER WHEN YOU ARE READY TO ENTER THE REPORT HEADING";:Z21: 160000&6 @ BOTT,BK$;:Z2SW: 16000:HE$T$0&9V2$(V1$,1,(V1$,"/")1)"/ISI"0&;200001.&H @ BOTT,BK$;"WHAT IS THE WIDTH OF YOUR PRINTER ( FROM 10 TO 132 )-";:Z23: 160001R&M (T$)132 (7);: 98001s&R (T$)1 (7): 98001&\PW(T$)1& PAGE LEN1& @ BOTT,BK$;"HOW MANY LINES DO YOU WANT TO PRINT ON A PAGE? - ";:Z23: 160002G& (T$)1 @ BOTT,BK$;"Can't make page length less than 1 line ";:50000:50000:99052&ʅ (T$)99 @ BOTT,BK$;"Maximum Number allowed is 99 lines per page ";: 50000: 99052&PL(T$)2'2':2'2':2'LP1: Y 1 U: Z7$(Y)"0" 100703D'$ U(LP)Z2(Y)1PW U2(LP)((PW(U(LP)U1(LP)))U1(LP)):LPLP13z'.U(LP)U(LP)Z2(Y)1:U1(LP)U1(LP)1:Z7$(Y)(LP)3'V Y3'`U2(LP)((PW(U(LP)U1(LP)))U1(LP))3'e:3'j3'o:3't3'u LB 105004!'y @ BOTT,BK$;"DO YOU WANT TO TOTAL ANY FIELDS (Y/N): ";:Z21: 1600047'~ T$"Y" 105004' @ BOTT,BK$;"ENTER A FIELD NUMBER TO BE TOTALED: ";:Z22: 160004' T$"" @ BOTT,BK$;"ARE YOU DONE (Y/N) ";:Z21: 16000: T$"Y" 10500 : 1012053' (T$) 1 (T$) U @ BOTT,BK$;"Invalid Field Number ";: 50000:101205' Z7$((T$))"0" @ BOTT,BK$;"Can't Total a field that you are not printing ";: 50000:101205' Z2$((T$)) "N" @BOTT,BK$;"CAN't total a Non Numeric Field ";: 50000:101206 'Z8((T$))06' 101056':6%)6,) :6E)h LB 1 300006* @ BOTT,BK$;"PREPARING YOUR PROGRAM NAMED - ";J$;" PLEASE WAIT";6*"O",1,J$"/BAS"6+LN20:#1,LN;"REM "6+LN25:#1,LN;"REM "7!+LN110:#1,LN;" V1$= ";(34);V1$;(34);": REM .. MASTER FILE NAME ..."7j+LN112:#1,LN;" V2$= ";(34);V2$;(34);":REM .. KEY FILE NAME ..."7+*LN120:#1,LN;"RL = ";RL ;": REM ..... RECORD LENGTH ..."7+>LN125:#1,LN;"KL = ";KL ;": REM ..... KEY LENGTH ...."8(+RLN130:#1,LN;" T = ";U;": REM ... TOTAL NUMBER OF FIELDS "8J+TLN135:#1,LN;" HOME$ = ";B2$8z+WLN140:#1,LN;" SUBKEY = INT(255/(KL +6)) "8+XLN145:#1,LN;" REM"8+YLN150:#1,LN;" = ";B1$8+ZLN155: #1,LN;" BK$= STRING$(63,32)+STRING$(63,8); "9+[LN160: #1,LN;"REM "9/+\LN165: #1,LN;"BLANK$ = BK$" 9\+]LN170:#1,LN;" RB$= ";(34);RB$;(34)9+^LN175:#1,LN;" SB$= ";(34);SB$;(34)9+aLN176: #1, LN ; "HE$= ";(34);HE$;(34)9+bLN177: #1, LN"FF$=CHR$(12): REM *** FORM FEED CODE":+cLN179: #1, LN;"PL = ";PL:+d:+e:%,~:+.:2.::S.LN200: #1,LN"PN$ = "Q$J$Q$:.LN301: #1,LN"DIM CP("U"),FL("U"),TY$("U")":. X 1 U:. Z3$(X)"D" Z3$(X)"I" TZ$"Z" : TZ$Z2$(X):.X$(X);%.LNLN1: #1,LN;"FL("X$")="Z2(X)":CP("X$")="(Z1(X))":TY$("X$")="Q$TZ$Q$;-/ X;8/DLN701;Q/I #1,LN;"PRINT CL$;";b/N X 1 SC;/XLNLN1: #1,LN;"PRINT "Q$(A$(X),2,(A$(X)))Q$;/b X;6;6;6;6LN15060:#1,LN;"FL = ";Z2(KFIEL)&7LN15200:#1,LN;"K$=T$:REM. PASS INKEY TO KEY VAR.">7 IFZ2$(KFIEL)="N"THENLN=15210:PRINT#1,LN;"K$=STRING$(FL-LEN(K$),32)+K$: REM .. RIGHT JUSTIFY & PAD "?7Z2$(KFIEL)"A"Z2$(KFIEL)"N"LN15210:#1,LN;"K$ = K$ + STRING$(FL-LEN(K$),32): REM . . LEFT JUST & PAD "?*7LN15220:#1,LN;"K$ = CHR$(94) + K$"?l7(LN15300:#1,LN;"REM . . . . . LOCATE RECORD . . . . . . ."?72LN15310:#1,LN;"P = 0"?77LN15315:#1,LN;"KREC = 1 "@7 END OF FILE <---";(34);";:GOSUB 28000:GOSUB 60000:GOTO 4000"@7PLN15340:#1,LN;"REM . . . . GET RECORD FROM MASTER FILE . . . ."@7ZLN15350:#1,LN;"KR$=KS$"A7_LN15355:#1,LN;"KREC = X "AF7dLN15360:#1,LN;"P = INSTR(P+1,KR$,K$)"A|7nLN15370:#1,LN;"LR = VAL(MID$(KR$,P+LEN(K$),5))A7xLN15380:#1,LN;"GET #1,LR "A7LN15390:#1,LN;"REM . . . SUBDIVIDE & PRINT RECORD . . . "A7FT1A7X1UA7LN10LNB$7 Z3$(X)"D" Z3$(X)"I" 14320BX7܇#1,LN;"F$(";X;") = MID$(FR$,";FT;",";Z2(X);")"Bh7FTFTZ2(X)Bo7XB|7LN17000B8 X 1 U:LNLN1B8 Z2$(X)"N" Z3$(X)"I" Z3$(X)"D" #1,LN;" F(";X;") = VAL(F$(";X;"))";: 63000C:8 Z6$(X)"" Z3$(X)"D" #1,LN;" F(";X;") = ";Z6$(X);: 63000C}8 Z8(X)1 LNLN2: #1,LN;" T(";X;") = T(";X;") + F(";X;")"C8 XC8 LB1 62000: 14480: : LN17500:Y1LP:TB0:X1U: U(Y)0 14375C8 (Z7$(X))Y 14370C8LNLN2D8 Z2$(X)"N" (Z7$(X))Y #1,LN;"PRINT #-2, STRING$(";TB;",32);:PRINT #-2,USING ";(34);Z4$(X);(34);";F(";X;");": 14365D8 (Z7$(X))Y #1,LN;" PRINT #-2, STRING$(";TB;",32); F$(";X;");"D8TBU2(Y)D8" XE&8$LNLN2: #1,LN;"PRINT #-2, ";(34);(32);(34);":LC=LC-1"E38'TB1: YEd8LN18560: #1,LN;" GOTO 15320 ": LB 14813Ej8Ep8Ev8E8U(5)0:U(6)0E9:LN25010E9;U(5)0:U(6)0E9= Y 1 LP:TB0E9? X 1 UFJ9D (Z7$(X))Y LNLN2: #1,LN;" PRINT #-2, STRING$(";TB;",32);";(34);Z5$(X);(34);";":TBU2(Y)Z2(X)(Z5$(X))FR9I XF9NLNLN2: #1,LN;" PRINT #-2, ";(34);(32);(34)F9X YF9bLN25180: #1,LN;"PRINT #-2, STRING$(";PW;",61)"G"9lLN25008: #1, LN;" PRINT #-2, HE$;CHR$(32);CHR$(32);";(34);"PAGE - ";(34);" ;PG "G)9:G9LN28000: LB1 #1,LN;"RETURN": 14850 : : #1,LN;" REM TOTAL OUT AND LAST LINE SUBROUTINE ":LN28005: #1,LN;" PRINT #-2, STRING$(";PW;",61)G9LN28010G9 Y 1 LP:TB0G9 X 1 UH9: IF Z8(X)=-1 THEN 14827H79 (Z7$(X))Y 14828Hc9 Z8(X)1 TBU2(Y)Z2(X)TB: 14828Ho9LNLN2H9 #1,LN;"PRINT #-2, STRING$(";TB;",32);:PRINT #-2, USING ";(34);Z4$(X);(34);";T(";X;");"H9TBU2(Y)H9 XI9LNLN2: #1,LN;" PRINT #-2, ";(34);(32);(34)I%9 YID9LNLN2: #1,LN;" RETURN "Ij: LB1 LN25003:#1,LN;"RETURN"Iv<20010I|<I>:*I>I>:*I> Z2255 Z2255I>A$(0): (KI$,1,255)(255,0):K00I>(A$,1)(0)J8> SB$;: QX112: QX: RB$;: X1 25:(A$,1): (A$) 16100 : J>>JK> 16010Jc> (A$)32 16500J> K0Z2 16005 : K0K01:(KI$,K0)A$: A$;: 16005J@s: Handle Control CodesJ@tJ@~ (A$)8 K0 K0K01: BS$;: 16005K@؅ (A$)13 16900KA< (A$)21 16900K,A 16005K;B: Return KMBT$(KI$,K0)KTB@:KZB^K`N KfN!KN%@ BOTT,BK$;(7);"Give your new Report program a name - ";KN&Z28:16000:J$T$: T$"" 20005LNN(X1(J$):(J$,X,1)"A"(J$,X,1)"Z" @ BOTT,BK$;"PROGRAM NAME MUST CONTAIN ONLY CAPITAL LETTERS ";:50000:20000LXN) X:LN*LN50:#1,LN;" REM . . . . ---> Program Name is ";J$;" <----- ":@ BOTT,BK$;"---> WAIT <---";(7);LN+21020:"O",2,J$LN,"I",1,"TEMP"LN/(1)21000MN4#1,A$MN>#2,A$MNH20015M%R1MBRCH$"2""I",1,"SEQWRT"MdRCH$"1""I",2,"RANDPRT/NEW"MR @ BOTT,BK$;"ALMOST DONE"MR!(2) 21300MR,A$MR:#1,A$MRD21025MS4MS9MS>MSHMSMMSMSN S"O",1,"SORT/V10" : "I",2,"V10B/"NS (2) 21450N3S #2,A$ : #1,A$N@S 21420NFSʚNU:: "YOUR REPORT PROGRAM HAS BEEN SUCCESSFULLY CREATED ": 63400:: "PRESS TO CONTINUE";:Z21: 16000: "QUIKMENU"Nu0Nu1 LB O/u5 @ BOTT,BK$;"DO YOU WANT TO PRINT OUT A PRINT WORKSHEET (Y/N) ? - ";OTu6Z21:16000:R$T$:R$"Y"32000Omu7R$"N"32600:30005Ou8 #2,"0 ";:X10SWSTEP10: #2,((X),2,1);" ";:X: #2,""Ou9X1SW: #2,((X),((X)),1);:X: #2,""Pu:X1SCPu? #2," "P)uD #2,(64X);A$(X)P0uNXP=uO #2,""PruSX1SW: #2,((X),((X)),1);:X: #2,""PuU #2," ": #2," ": #2,"Print Worksheet for Program Name - ";J$PuW #2, FF$PuXPubPucP}P}U(5)0:U(6)0Q} #2, FF$Q} #2, " "Q} #2, HE$Q.}( #2, " "Q=}2 #2, " "QS}< Y 1 LP:TB0Qd}F X 1 UQ}H (Z7$(X))Y #2, (TB,32);Z5$(X);:TBU2(Y)Z2(X)(Z5$(X))Q}Z XQ}d #2, " "Q~, YQ~ #2, " ": #2, " "Q~U(5)0:U(6)0R~ Y 1 LP:TB0: X 1 UR (Z7$(X))Y #2, (TB,32);((X),2,((X))1);: Z2(X)2 32525 : #2, (Z2(X)((X))1,".");R (Z7$(X))Y TBU2(Y)R0 X: #2, " ":TB1: YR: #2, FF$RXS@ @ BOTT,BK$"PRESS TO CONTINUE";SED$SJS3P Z 1 900: ZS9ZSZH: FREE FORM REPORTING '''''T R @ BOTT,BK$"HOW LONG IS YOUR FORM OR LABEL IN NUMBER OF LINES-MAX IS 99 ";:Z22: 16000: PL(T$): PL1 PL99 @ BOTT,BK$"MUST BE BETWEEN 1 & 99";: 50000: 61010T\ @ BOTT,BK$"WHAT IS THE WIDTH OF YOUR REPORT ( 1 TO 77) CHARACTERS ";:Z22: 16000:PW(T$): PW1 PW77 @ BOTT,BK$"MUST BE A NUMBER BETWEEN 1 & 77";: 50000: 61020Tf CL$Up PLSC SC$(SC),SP$(SC) : SC$(PL),SP$(PL)UzDU$(PW,32)U  61600U CL0 @ BOTT,BK$;"DIT REPORT,

RINT REPORT FORM,OOK AT RECORD,ONE ";:Z21: 16000 : 61070U T$"E" T$"e" 61400U T$"P" T$"p" 61300U T$"D" T$"d" 61200V T$"L" T$"l" 6000V) 61070V/V5tVF~ X 1 PLVq #2, ((X),2);((X10)1,32);V Y 1 (SC$(X)): (SC$(X),Y,1)(176) #2, (95); : #2, (SC$(X),Y,1);V YV #2,""V XV #2, (LF)W戀W ؂WEG0W灦 61600Wn @ BOTT,BK$"WHAT LINE DO YOU WANT TO WORK ON (1-";PL;")- ";:Z22: 16000WCL((T$)):T$""W CL0 CL0: W CLPL @ BOTT,BK$;CL;" IS NOT A GOOD LINE NUMBER";: 50000: 61420W 61600XA @ BOTT,BK$"WHEN YOU WANT TO INSERT A FIELD PRESS SHIFT BACK ARROW";X[SC$(CL)"":SP$(CL)""Xh 61660Xr#Z2PWX$ 16000X( A$(21) SC$(CL)SC$(CL)T$:T$"": 61485X) 61530X-: INSERT A FIELD INTO LINEX2EF1:EG0:EH1X7T$""Yb< @ BOTT,BK$"WHAT FIELD NUMBER DO YOU WANT TO INSERT ( 1 -";U;")- ";:Z22: 16000:N$T$:T$""YoFN(N$)ZK N1 NU @ BOTT,BK$N;"ISN'T A GOOD FIELD NUMBER ";: 50000:N$"": @ BOTT,BK$"WHEN YOU WANT TO INSERT A FIELD PRESS SHIFT & BACK ARROW KEY ";:EH0: 61530ZL (SC$(CL))Z2(N)PW @ BOTT,BK$;"YOUR LINE IS TOO LONG TO FIT IN THE WIDTH ";PW;"THAT YOU WANTED";: 50000:N$"": @ BOTT,BK$"PRESS SHIFT BACK ARROW WHEN YOU WANT TO ENTER A FIELD";:EH0: 61530[3P Z2(N)1 N$(176) : N$((N),2,((N)))(Z2(N)(N$),176)[LUZ2PW(SC$(CL)N$)[V EF1 SP$(CL)SP$(CL)(N)((SC$(CL))1)[Z EF1 SC$(CL)SC$(CL)N$: 61660:EF0:Z2PW(SC$(CL)): 61476: : EG0 SC$(CL)SC$(CL)T$[d 61400\: DISPLAY REPORT LAYOUT\:\"\5TSCL(SC2)\Q TSSCPL TSPLSC1\c TS1 TS1\Ȁ X TS TSSC1: ((X),2);((X10)1,32);SC$(X): X:\:\܂\ @ 0,"";\ XTS TSSC1\ CLX 61690\ X]P EF1 SPXTS: @ 0,"";: @ SP32,"";((X),2);((X10)1,32);;SC$(X);: 61699]SPXTS: @ 0,"";: @ SP32,"";((X),2);((X10)1,32);(PW,32);: @ 0,"";: @ SP32,"";((X),2);((X10)1,32);]]0:]5^ DLN17500: #1,LN;"' PRINT RECORD"^N X 1 PL^@S SC$(X)"" YCYC1: 62600^SX YC0 62060^bLNLN2: #1,LN;"PRINT #-2, STRING$("YC",10);"^l:^v:^TC$"":LT1^ SP$(X)"" TC$QT$SC$(X)QT$: 62510^ Y 1 (SP$(X)) 2^:_F ((SP$(X),Y,1))_.FP ((SP$(X),Y1,1))_5:_mTC$TC$QT$(SC$(X),LT,FPLT)QT$"F$("(F)")"_t:_LTFPZ2(F)_:_ Y_:_ LT1 ( SC$(X) ) TC$TC$QT$ ( SC$(X),LT ) QT$_:_#: WRITE LINE`$:`.LNLN2`-L #1,LN;"PRINT #-2, ";TC$`6~YC0`> X`E:`K` YC LNLN2: #1,LN;" PRINT #-2, STRING$("(YC)",10);"``` #1,""````6`7`;`@`J:9780`T:61320,61325,61326,61327a: "USING THE COLOR COMPUTER COPY COMMAND, COPY YOUR REPORT PRO- GRAM AND THE SORT PROGRAM TO THE SAME DISKETTE THAT YOU COPIED ITS FILING PROGRAM TO."aa "YOUR REPORT..."a "PROGRAM NAME IS - ";J$"/BAS"b "SORT PROGRAM NAME IS - SORT/V10"b Ɛb UX1 (J$)b (J$,UX,1)"A" (J$,UX,1)"Z" @ BOTT,BK$"BAD SCREEN FILE NAME ";: 30,2: 50000:b UXb "R",1,J$"/SCR",1b (1)0 : ""J$"/SCR": 30,2: @ BOTT,BK$;"SCREEN FILE NOT FOUND";: 50000:c*:c p CHECK FOR QUIKPRO DISKc=z "R",1,"QUIKMENU/BAS",1c (1)0 : 30,2: @ BOTT,BK$"PUT THE QUIKPRO+II DISK BACK IN THE DISK DRIVE THEN ";:Z21: 16000: 63600c: 30,2: @ BOTT,BK$;"SCREEN FILE NOT FOUND";: 50000:c 1 ' RANDWRT VER. 2.2 11/23/81 2 ' (C) 1981 FUTURESOFT 3 ' PORTIONS OF THIS PROGRAM 4 ' ARE PROTECTED FROM SALE BY 5 ' U.S. COPYRIGHT LAWS 10 REM 15 REM 21 CLEAR 1500:FILES 2,512 22 BOTT = 416 26 REM 135 REM 145 REM 160 RB$=CHR$(8) 165 SB$=CHR$(232) 170 BK$=STRING$(63,32)+STRING$(63,8) 175 REM 185 DIM F$(T),F(T):' DIMENSION FIELDS 190 D$=CHR$(94)+STRING$(KL,32):' DUMMY KEY 205 A=INT(255/(KL+6)): ' NUMBER OF KEYS PER SECTOR 210 OPEN "R",1,V1$,RL:' OPEN MASTER FILE 220 OPEN "R",2,V2$:' OPEN KEY FILE 225 FIELD 1,RL AS FR$:' FIELD MASTER FILE BUFFER 227 FIELD 2,255 AS KS$:' FIELD KEY FILE BUFFER 300 PRINT CL$; 700 CLS:PRINT HOME$;:' ... PRINT SCREEN.... 4000 ' ... BEGIN MAINLINE 4003 UPDATE$="" 4004 FOR X = 1 TO T:F$(X)="":F(X)=0: NEXT X: REM .. CLEAR FIELDS 4005 PRINT @ BOTT,BK$;"DD RECORD, ET RECORD, EARCH OR ND PROGRAM "; 4010 TY$="A":FL=1 4015 GOSUB 21000 4020 IF T$="A" THEN 4100 4025 IF T$="G" THEN UPDATE$="YES":GOTO 15000 4030 IF T$="E" THEN 40000 4035 IF T$="S" OR T$="s" THEN PRINT @ BOTT,BK$;"SEARCH SOMETHING IN A IELD OR NYWHERE IN THE FILE ";:Z2=1:GOSUB 21000:IF T$="F" OR T$="f" THEN GOTO 45000 ELSE GOTO 14000 4040 PRINT CHR$(7); 4050 GOTO 700 4099 ' 4100 ' ... START OF INPUT 4101 ' 4999 ' ... SPLIT RECORD INTO FIELDS 5000 R$="" 10000 ' ... IF UPDATE SWITCH IS YES THEN SKIP NEXT SECTION 10005 IF UPDATE$="YES" THEN 12620 12000 ' 12010 ' ... RANDOM WRITE 12500 ' ... LOOK FOR SPACE TO WRITE RECORD 12510 X=0:IF LOF(2)=0 THEN 12530 12515 X=X+1:GET #2,X:IF INSTR(KS$,D$)<>0 THEN 12580 12520 IF LOF(2)=X THEN 12530 ELSE GOTO 12515 12530 X=X+1:KR$="":FORY=1TOA:KR$=KR$+CHR$(94)+STRING$(KL,32):G$=STR$(LOF(2)*A+Y):KR$=KR$+STRING$(5-LEN(G$),32)+G$:NEXTY 12540 LSETKS$=KR$:PUT #2,X 12550 LSET FR$=STRING$(RL,0):FOR Y=1TOA:PUT #1,(LOF(2)-1)*A+Y:NEXT Y:' CLEAR MASTER FILE RECORD 12580 ' ... WRITE KEY ....... 12590 KR$=KS$ 12600 P=INSTR(KR$,D$) 12610 KREC=X: ' ... PHYS REC. NUMBER 12620 '.. INSERT KEY INTO RECORD 12625 K$=CHR$(94)+K$ 12630 KR$=MID$(KR$,1,P-1)+K$+MID$(KR$,P+LEN(K$),LEN(KR$)) 12640 ' ... GET LOGICAL RECORD FROM KEY FILE 12650 LR=VAL(MID$(KR$,P+LEN(K$),5)) 12660 ' ... WRITE MASTER FILE 12670 LSET FR$=R$ 12680 PUT #1,LR 12690 REM ... WRITE KEY RECORD 12700 LSET KS$=KR$ 12710 PUT #2,KREC 13000 GOTO 4000 14000 ' ..... STRING SEARCH 14002 X=0 14005 UPDATE$="S":' ... SET UPDATE FLAG TO SEARCH 14010 PRINT @ BOTT,BK$;"SEARCH FOR ? - "; 14020 FL=30:' ... MAXIMUM LENGTH OF SEARCH STRING 14030 TY$="A":' ... SEARCH STRING IS ALPHA-NUMERIC 14035 GOSUB 21000 14037 Q$=T$ 14038 PRINT @ BOTT,BK$;"PRESS ANY KEY TO STOP SEARCH ";:FL=1:TY$="A" 14040 FOR X = 1 TO LOF(1):GET #1,X:IF INSTR(FR$,Q$)<>0 THEN 14100 14045 IF INKEY$<>""THEN700 14060 NEXT X:GOTO 700 14100 GOSUB 15390:' .. PRINT RECORD & RETURN 14200 PRINT @ BOTT,BK$;"EXT, TOP - "; 14210 TY$="A":FL=1:GOSUB 21000 14220 IF T$="N" THEN 14060 14230 IF T$="S" THEN 700 14240 GOTO 14200 14300 REM 15000 ' 15002 ' ... GET RECORD 15003 ' 15385 ' 18200 IF UPDATE$="S" THEN RETURN 19000 ' ... DELETE RECORD 19005 PRINT @ BOTT,BK$;"ARE YOU SURE (Y/N) - ";:FL=1:GOSUB 21000 19006 IF T$="Y" OR T$="y" THEN 19010 19007 IF T$="N" OR T$="n" THEN 4000 19008 GOTO 19005 19010 K$=MID$(D$,2,LEN(D$)): ' ... BLANK KEY 19020 R$=STRING$(RL,0):' BLANK MASTER FILE RECORD 19030 GOTO 12620' ... GOTO KEY AND MASTER WRITE ROUTINE 21000 ' ... ALPHA NUMERIC KEYBOARD SCAN 21005 T$="" 21010 PRINT SB$; 21015 A$=INKEY$:IF A$="" THEN 21015 21016 PRINT RB$; 21020 IF A$FL THEN T$=LEFT$(T$,LEN(T$)-1):PRINT CHR$(7);:GOTO 21010 ELSE PRINT A$;:GOTO 21010 21040 ON INSTR(CHR$(8)+CHR$(13),A$) GOTO 21050,21060 21050 IF LEN(T$)>0 THEN PRINT CHR$(8);:T$=LEFT$(T$,LEN(T$)-1):GOTO 21010 ELSE 21010 21060 PRINT RB$;:RETURN 23000 ' ... CHECK FOR VALID NUMERIC 23005 F1=0:F2=0:N=0 23010 FOR X = 1 TO LEN(T$) 23020 AX=ASC(MID$(T$,X,1)) 23030 IF AX<45 OR AX>57 THEN PRINT CHR$(7);:GOTO 23100 23040 IF AX=47 THEN 23050 IF AX=46 THEN F1=F1+1:IF F1>1 THEN PRINT CHR$(7);:GOTO 23100 23060 IF AX=45 THEN F2=F2+1:IF F2>1 THEN PRINT CHR$(7);:GOTO 23100 23070 NEXTX 23080 IF INSTR(T$,"-")>1 THEN PRINT CHR$(7);:GOTO 23100 23090 N=1 23100 RETURN 40000 PRINT @ BOTT,BK$;"press enter to end program ";:INPUT D$ 40010 END:' . . . YOU MAY GO TO ANOTHER PROGRAM FROM HERE 40020 ' 40030 ' 40040 ' 45000 REM REL PROMP 45005 UPDTE$="S" 45010 LC=0 45015 FC=0:FP=1:CP=0:BF=0 45020 PRINT @ BOTT,BK$;"PRESS ENTER TO GET TO THE FIELD YOU WANT TO SEARCH ON ..."; 45025 FL=1:GOSUB 21000 45030 PRINT @ BOTT,BK$;" ... THEN, TYPE IN WHAT YOU WANT TO SEARCH FOR."; 45035 FC=FC+1:IF FC>T THEN 4000:ELSE IF TY$(FC)="Z" THEN 45035 45040 FL=FL(FC):PRINT @ CP(FC),""; 45045 GOSUB 21000:IF T$<>"" AND TY$(FC)="N" THEN GOSUB 23000:IF N=0 THEN PRINT @ CP(FC),STRING$(FL(FC),".");:GOTO 45040 45050 IF T$<>"" THEN 45070 45055 IF BF>0 THEN 45065 45060 IF FP+FL(FC)-1>255 THEN BF=FC:FB=255-(FP-FL(FC)-1) 45065 FP=FP+FL(FC):GOTO 45035 45070 SS$=T$ 45075 IF TY$(FC)<>"N" THEN CP=4:GOTO 45115 45080 PRINT @ BOTT,BK$;"THE FIELD YOU ARE SERACHING IS A NUMBER FIELD...";:GOSUB 60000 45085 PRINT @ BOTT,BK$;"YOU MAY SEARCH FOR RECORDS THAT ARE ...";:GOSUB 60000 45090 PRINT @ BOTT,BK$;"EQUAL, LESS OR GREATER THEN THE NUMBER ENTERED (E,L OR G)";:FL=1:GOSUB 21000 45095 IF T$="" THEN 45090 45100 IF ASC(T$)>90 THEN T$=CHR$(ASC(T$)-32) 45105 CP = INSTR(" ELGelg",T$)-1: IF CP>3 THEN CP=CP-3 45110 IF CP<1 OR CP>3 THEN PRINT CHR$(7);:GOTO 45090 45115 REM 45120 X=1:GET #1,X 45125 IF T$="N" THEN PRINT @ BOTT,BK$;"press any key to stop search - ";:GOTO 45130 45130 ' 45135 IF LOF(1)=X-1 THEN 700 ELSE GET #1,X : X=X+1 45140 IF FR$=STRING$(RL,0) THEN 45135 45145 IF BF=0 THEN RS$=MID$(FR$,FP,FL(FC)):GOTO 45160 45150 IF FC=BF THEN RS$=MID$(FR$,FB,255)+MID$(FR1$,FL(FC)-FB):GOTO 45160 45155 IF FC>BF THEN RS$=MID$(FR1$,FP-255,FL(FC)) 45160 ON CP GOTO 45165,45175,45185,45195 45165 'EQUAL 45170 IF VAL(RS$)=VAL(SS$) THEN GOSUB 15390:GOTO 45210 ELSE 45200 45175 'LESS 45180 IF VAL(RS$)VAL(SS$) THEN GOSUB 15390:GOTO 45210 ELSE 45200 45195 IF INSTR(RS$,SS$)<>0 THEN GOSUB 15390:GOTO 45210 ELSE 45200 45200 IF INKEY$<>"" THEN 700 45205 GOTO 45130 45210 PRINT @ BOTT,BK$;"EXT, TOP - ";:FL=1:GOSUB 21000 45215 IF T$="N" THEN PRINT @ BOTT,BK$;"press any key to stop search - ";:GOTO 45130 45220 IF T$="S" THEN 700 45230 GOTO 45210 53000 REM COLOR COMPUTER DOES NOT PERMIT ERROR TRAPS 54000 REM 54010 REM 54100 REM 54200 REM 55000 RUN 60000 ' ..... TIME DELAY 60010 FOR Z = 1 TO 700 60020 NEXT Z 60030 RETURN p search - ";:GOTO 45130 45220 IF T$="S" THEN 700 45230 GOTO 45210 53000 REM COLOR COMPUTER DOES NOT PERMIT ERROR TRAPS 54000 REM 54010 REM 54100 REM 54200 REM 55000 RUN 60000 ' ..... TIME DELAY 60010 FOR Z = 1 TO 700 60020 NEXT Z 6003 20 HUNTER/DAT 7 HUNTER 0 ,"AHUNTERS ASSOCIATION", ,D, , 64 ,"B", ,D, , 128 ,"CLST-NAME .............", ,D, , 192 ,"DFST-NAME .............", ,D, , 256 ,"ESTREET .................", ,D, , 320 ,"FCITY ............", ,D, , 384 ,"GPROV. ....", ,D, , 448 ,"HPCODE .......", ,D, , 512 ,"IYELEPHONE ........", ,D, , 576 ,"J", ,D, , 640 ,"K", ,D, , 704 ,"L", ,D, , 768 ,"M", ,D, , 75 ,, 13 ,A,K,,"LSTNAME", 107 ,, 13 ,A,R,,"FSTNAME", 139 ,, 17 ,A,R,,"STREET", 171 ,, 12 ,A,R,,"CITY", 203 ,, 4 ,A,R,,"PROV", 235 ,, 7 ,A,R,,"PCODE", 267 ,, 8 ,A,R,,"PHONE", , 576 ,"J", ,D, , 640 ,"K", ,D, , 704 ,"L", ,D, , 768 ,"M", ,D, , 75 ,, 13 ,A,K,,"LSTNAME", 107 ,, 13 ,A,R,,"FSTNAME", 139 ,, 17 ,A,R,,"STREET", 1:CP( 5)= 171:TY$( 5)="A" 307 FL( 6)= 3 :CP( 6)= 176:TY$( 6)="A" 308 FL( 7)= 3 :CP( 7)= 180:TY$( 7)="A" 309 FL( 8)= 3 :CP( 8)= 235:TY$( 8)="A" 310 FL( 9)= 4 :CP( 9)= 239:TY$( 9)="A" 701 PRINT CL$; 702 PRINT "HUNTERS ASSOCIATION" 703 PRINT "LST-NAME ..............." 704 PRINT "FST-NAME ..............." 705 PRINT "STREET ..................." 706 PRINT "CITY ............." 707 PRINT "PROV.,PCODE....,... ..." 708 PRINT "" 709 PRINT "TELEPHONE ...-...." 710 PRINT "" 711 PRINT "" 712 PRINT "" 713 PRINT "" 714 PRINT "" 15060 FL = 15 15065 PRINT @ BOTT,BK$;"ENTER NAME KEY - ";""; 15070 TY$ = "A" 15100 GOSUB 21000 15110 IF LEN(T$)=0 THEN 4000:REM.RETURN TO MAINLINE IF NULL ENTRY 15200 K$=T$:REM. PASS INKEY TO KEY VAR. 15210 K$ = K$ + STRING$(FL-LEN(K$),32): REM . . LEFT JUST & PAD 15220 K$ = CHR$(94) + K$ 15300 REM . . . . . LOCATE RECORD . . . . . . . 15310 P = 0 15315 KREC = 1 15320 FOR X = KREC TO LOF(2): GET #2,X:IF INSTR(P+1,KS$,K$)=0 THEN P=0 :NEXT X ELSE 15340 15330 PRINT @ BOTT,BK$;CHR$(7)"---> END OF FILE <---";:GOSUB 28000:GOSUB 60000:GOTO 4000 15340 REM . . . . GET RECORD FROM MASTER FILE . . . . 15350 KR$=KS$ 15355 KREC = X 15360 P = INSTR(P+1,KR$,K$) 15370 LR = VAL(MID$(KR$,P+LEN(K$),5)) 15380 GET #1,LR 15390 REM . . . SUBDIVIDE & PRINT RECORD . . . 15400 F$( 1 ) = MID$(FR$, 1 , 15 ) 15410 F$( 2 ) = MID$(FR$, 16 , 15 ) 15420 F$( 3 ) = MID$(FR$, 31 , 19 ) 15430 F$( 4 ) = MID$(FR$, 50 , 13 ) 15440 F$( 5 ) = MID$(FR$, 63 , 4 ) 15450 20 ' 25 ' 110 V1$= "HUNTER/DAT": ' .. MASTER FILE NAME ... 112 V2$= "HUNTER/ISI":' .. KEY FILE NAME ... 120 RL = 74 : ' ..... RECORD LENGTH ... 125 KL = 13 : ' ..... KEY LENGTH .... 130 T = 7 : ' ... TOTAL NUMBER OF FIELDS 135 HOME$ = 140 SKEY= INT(255/(KL+6)) 150 BLANK$= STRING$( 30,32) 155 ' 160 RC = 0 165 DC = 0 170 RB$= "" 175 SB$= "" 701 PRINT "HUNTERS ASSOCIATION" 702 PRINT "" 703 PRINT "LST-NAME ............." 704 PRINT "FST-NAME ............." 705 PRINT "STREET ................." 706 PRINT "CITY ............" 707 PRINT "PROV. ...." 708 PRINT "PCODE ......." 709 PRINT "YELEPHONE ........" 710 PRINT "" 711 PRINT "" 712 PRINT "" 713 PRINT "" 4103 ' 4104 ' 4105 'FIELD NUMBER 1 IS LSTNAME 4110 'FIELD LENGTH IS 13 4115 'FIELD TYPE IS A 4120 PRINT @ 75 ,".............";:PRINT @ 75 ,""; 4125 FL = 13 4130 TY$ = "A" 4135 GOSUB 21000 4140 IF LEN(T$)=0 THEN 4150 4142 IF ASC(T$)=60 THEN 700 4145 F$( 1 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4150 F$( 1 ) = F$( 1 ) + STRING$( 13 -LEN(F$( 1 )),32) 4152 PRINT @ 75 , F$( 1 ); 4158 K$= F$( 1 ) 4203 ' 4204 ' 4205 'FIELD NUMBER 2 IS FSTNAME 4210 'FIELD LENGTH IS 13 4215 'FIELD TYPE IS A 4220 PRINT @ 107 ,".............";:PRINT @ 107 ,""; 4225 FL = 13 4230 TY$ = "A" 4235 GOSUB 21000 4240 IF LEN(T$)=0 THEN 4250 4242 IF ASC(T$)=60 THEN 4105 4245 F$( 2 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4250 F$( 2 ) = F$( 2 ) + STRING$( 13 -LEN(F$( 2 )),32) 4252 PRINT @ 107 , F$( 2 ); 4303 ' 4304 ' 4305 'FIELD NUMBER 3 IS STREET 4310 'FIELD LENGTH IS 17 4315 'FIELD TYPE IS A 4320 PRINT @ 139 ,".................";:PRINT @ 139 ,""; 4325 FL = 17 4330 TY$ = "A" 4335 GOSUB 21000 4340 IF LEN(T$)=0 THEN 4350 4342 IF ASC(T$)=60 THEN 4205 4345 F$( 3 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4350 F$( 3 ) = F$( 3 ) + STRING$( 17 -LEN(F$( 3 )),32) 4352 PRINT @ 139 , F$( 3 ); 4403 ' 4404 ' 4405 'FIELD NUMBER 4 IS CITY 4410 'FIELD LENGTH IS 12 4415 'FIELD TYPE IS A 4420 PRINT @ 171 ,"............";:PRINT @ 171 ,""; 4425 FL = 12 4430 TY$ = "A" 4435 GOSUB 21000 4440 IF LEN(T$)=0 THEN 4450 4442 IF ASC(T$)=60 THEN 4305 4445 F$( 4 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4450 F$( 4 ) = F$( 4 ) + STRING$( 12 -LEN(F$( 4 )),32) 4452 PRINT @ 171 , F$( 4 ); 4503 ' 4504 ' 4505 'FIELD NUMBER 5 IS PROV 4510 'FIELD LENGTH IS 4 4515 'FIELD TYPE IS A 4520 PRINT @ 203 ,"....";:PRINT @ 203 ,""; 4525 FL = 4 4530 TY$ = "A" 4535 GOSUB 21000 4540 IF LEN(T$)=0 THEN 4550 4542 IF ASC(T$)=60 THEN 4405 4545 F$( 5 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4550 F$( 5 ) = F$( 5 ) + STRING$( 4 -LEN(F$( 5 )),32) 4552 PRINT @ 203 , F$( 5 ); 4603 ' 4604 ' 4605 'FIELD NUMBER 6 IS PCODE 4610 'FIELD LENGTH IS 7 4615 'FIELD TYPE IS A 4620 PRINT @ 235 ,".......";:PRINT @ 235 ,""; 4625 FL = 7 4630 TY$ = "A" 4635 GOSUB 21000 4640 IF LEN(T$)=0 THEN 4650 4642 IF ASC(T$)=60 THEN 4505 4645 F$( 6 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4650 F$( 6 ) = F$( 6 ) + STRING$( 7 -LEN(F$( 6 )),32) 4652 PRINT @ 235 , F$( 6 ); 4703 ' 4704 ' 4705 'FIELD NUMBER 7 IS PHONE 4710 'FIELD LENGTH IS 8 4715 'FIELD TYPE IS A 4720 PRINT @ 267 ,"........";:PRINT @ 267 ,""; 4725 FL = 8 4730 TY$ = "A" 4735 GOSUB 21000 4740 IF LEN(T$)=0 THEN 4750 4742 IF ASC(T$)=60 THEN 4605 4745 F$( 7 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4750 F$( 7 ) = F$( 7 ) + STRING$( 8 -LEN(F$( 7 )),32) 4752 PRINT @ 267 , F$( 7 ); 9801 R$ = R$ + F$( 1 ) 9802 R$ = R$ + F$( 2 ) 9803 R$ = R$ + F$( 3 ) 9804 R$ = R$ + F$( 4 ) 9805 R$ = R$ + F$( 5 ) 9806 R$ = R$ + F$( 6 ) 9807 R$ = R$ + F$( 7 ) 301 DIM CP( 7 ),FL( 7 ),TY$( 7 ) 302 FL(1)=13:CP(1)=75:TY$(1)="A" 303 FL(2)=13:CP(2)=107:TY$(2)="A" 304 FL(3)=17:CP(3)=139:TY$(3)="A" 305 FL(4)=12:CP(4)=171:TY$(4)="A" 306 FL(5)=4:CP(5)=203:TY$(5)="A" 307 FL(6)=7:CP(6)=235:TY$(6)="A" 308 FL(7)=8:CP(7)=267:TY$(7)="A" 15060 FL = 13 15065 PRINT @ 75 ,STRING$(FL,46);:PRINT @ 75 ,""; 15070 TY$ = "A" 15100 GOSUB 21000 15110 IF LEN(T$)=0 THEN 700:'.RETURN TO MAINLINE IF NULL ENTRY 15200 K$=T$:'. PASS INKEY TO KEY VAR. 15210 K$ = K$ + STRING$(FL-LEN(K$),32): ' . . LEFT JUST & PAD 15220 K$ = CHR$(94) + K$ 15300 ' . . . . . LOCATE RECORD . . . . . . . 15310 P = 0 15315 KREC = 1 15320 FOR X = KREC TO LOF(2): GET #2,X:IF INSTR(P+1,KS$,K$)=0 THEN P=0: NEXT X ELSE 15340 15330 PRINT@ BOTT,BK$;"---> NOT IN FILE <---";:GOSUB 60000:GOTO 700 15340 ' . . . . GET RECORD FROM MASTER FILE . . . . 15350 KR$=KS$ 15355 KREC = X 15360 P = INSTR(P+1,KR$,K$) 15370 LR = VAL(MID$(KR$,P+LEN(K$),5)) 15380 GET #1,LR 15390 ' . . . SUBDIVIDE & PRINT RECORD . . . 15400 F$( 1 ) = MID$(FR$, 1 , 13 ) 15410 F$( 2 ) = MID$(FR$, 14 , 13 ) 15420 F$( 3 ) = MID$(FR$, 27 , 17 ) 15430 F$( 4 ) = MID$(FR$, 44 , 12 ) 15440 F$( 5 ) = MID$(FR$, 56 , 4 ) 15450 F$( 6 ) = MID$(FR$, 60 , 7 ) 15460 F$( 7 ) = MID$(FR$, 67 , 8 ) 17502 PRINT @ 75 ,F$( 1 ); 17504 PRINT @ 107 ,F$( 2 ); 17506 PRINT @ 139 ,F$( 3 ); 17508 PRINT @ 171 ,F$( 4 ); 17510 PRINT @ 203 ,F$( 5 ); 17512 PRINT @ 235 ,F$( 6 ); 17514 PRINT @ 267 ,F$( 7 ); 18500 PRINT@ BOTT,BK$;"HANGE, EXT, ELETE - "; 18510 FL = 1 18520 TY$ = "A" 18530 GOSUB 21000 18550 IF T$="C" THEN 4100 18555 IF T$="N" THEN 15320 18557 IF T$="D" THEN 19000 18560 GOTO 700 50 ' . . . . ---> PROGRAM NAME IS HUNTER <----- 1 ' RANDWRT VER. 2.2 11/23/81 2 ' (C) 1981 FUTURESOFT 3 ' PORTIONS OF THIS PROGRAM 4 ' ARE PROTECTED FROM SALE BY 5 ' U.S. COPYRIGHT LAWS 10 REM 15 REM 21 CLEAR 1500:FILES 2,512 22 BOTT = 416 26 REM 135 REM 145 REM 160 RB$=CHR$(8) 165 SB$=CHR$(232) 170 BK$=STRING$(63,32)+STRING$(63,8) 175 REM 185 DIM F$(T),F(T):' DIMENSION FIELDS 190 D$=CHR$(94)+STRING$(KL,32):' DUMMY KEY 205 A=INT(255/(KL+6)): ' NUMBER OF KEYS PER SECTOR 210 OPEN "R",1,V1$,RL:' OPEN MASTER FILE 220 OPEN "R",2,V2$:' OPEN KEY FILE 225 FIELD 1,RL AS FR$:' FIELD MASTER FILE BUFFER 227 FIELD 2,255 AS KS$:' FIELD KEY FILE BUFFER 300 PRINT CL$; 700 CLS:PRINT HOME$;:' ... PRINT SCREEN.... 4000 ' ... BEGIN MAINLINE 4003 UPDATE$="" 4004 FOR X = 1 TO T:F$(X)="":F(X)=0: NEXT X: REM .. CLEAR FIELDS 4005 PRINT @ BOTT,BK$;"DD RECORD, ET RECORD, EARCH OR ND PROGRAM "; 4010 TY$="A":FL=1 4015 GOSUB 21000 4020 IF T$="A" THEN 4100 4025 IF T$="G" THEN UPDATE$="YES":GOTO 15000 4030 IF T$="E" THEN 40000 4035 IF T$="S" OR T$="s" THEN PRINT @ BOTT,BK$;"SEARCH SOMETHING IN A IELD OR NYWHERE IN THE FILE ";:Z2=1:GOSUB 21000:IF T$="F" OR T$="f" THEN GOTO 45000 ELSE GOTO 14000 4040 PRINT CHR$(7); 4050 GOTO 700 4099 ' 4100 ' ... START OF INPUT 4101 ' 4999 ' ... SPLIT RECORD INTO FIELDS 5000 R$="" 10000 ' ... IF UPDATE SWITCH IS YES THEN SKIP NEXT SECTION 10005 IF UPDATE$="YES" THEN 12620 12000 ' 12010 ' ... RANDOM WRITE 12500 ' ... LOOK FOR SPACE TO WRITE RECORD 12510 X=0:IF LOF(2)=0 THEN 12530 12515 X=X+1:GET #2,X:IF INSTR(KS$,D$)<>0 THEN 12580 12520 IF LOF(2)=X THEN 12530 ELSE GOTO 12515 12530 X=X+1:KR$="":FORY=1TOA:KR$=KR$+CHR$(94)+STRING$(KL,32):G$=STR$(LOF(2)*A+Y):KR$=KR$+STRING$(5-LEN(G$),32)+G$:NEXTY 12540 LSETKS$=KR$:PUT #2,X 12550 LSET FR$=STRING$(RL,0):FOR Y=1TOA:PUT #1,(LOF(2)-1)*A+Y:NEXT Y:' CLEAR MASTER FILE RECORD 12580 ' ... WRITE KEY ....... 12590 KR$=KS$ 12600 P=INSTR(KR$,D$) 12610 KREC=X: ' ... PHYS REC. NUMBER 12620 '.. INSERT KEY INTO RECORD 12625 K$=CHR$(94)+K$ 12630 KR$=MID$(KR$,1,P-1)+K$+MID$(KR$,P+LEN(K$),LEN(KR$)) 12640 ' ... GET LOGICAL RECORD FROM KEY FILE 12650 LR=VAL(MID$(KR$,P+LEN(K$),5)) 12660 ' ... WRITE MASTER FILE 12670 LSET FR$=R$ 12680 PUT #1,LR 12690 REM ... WRITE KEY RECORD 12700 LSET KS$=KR$ 12710 PUT #2,KREC 13000 GOTO 4000 14000 ' ..... STRING SEARCH 14002 X=0 14005 UPDATE$="S":' ... SET UPDATE FLAG TO SEARCH 14010 PRINT @ BOTT,BK$;"SEARCH FOR ? - "; 14020 FL=30:' ... MAXIMUM LENGTH OF SEARCH STRING 14030 TY$="A":' ... SEARCH STRING IS ALPHA-NUMERIC 14035 GOSUB 21000 14037 Q$=T$ 14038 PRINT @ BOTT,BK$;"PRESS ANY KEY TO STOP SEARCH ";:FL=1:TY$="A" 14040 FOR X = 1 TO LOF(1):GET #1,X:IF INSTR(FR$,Q$)<>0 THEN 14100 14045 IF INKEY$<>""THEN700 14060 NEXT X:GOTO 700 14100 GOSUB 15390:' .. PRINT RECORD & RETURN 14200 PRINT @ BOTT,BK$;"EXT, TOP - "; 14210 TY$="A":FL=1:GOSUB 21000 14220 IF T$="N" THEN 14060 14230 IF T$="S" THEN 700 14240 GOTO 14200 14300 REM 15000 ' 15002 ' ... GET RECORD 15003 ' 15385 ' 18200 IF UPDATE$="S" THEN RETURN 19000 ' ... DELETE RECORD 19005 PRINT @ BOTT,BK$;"ARE YOU SURE (Y/N) - ";:FL=1:GOSUB 21000 19006 IF T$="Y" OR T$="y" THEN 19010 19007 IF T$="N" OR T$="n" THEN 4000 19008 GOTO 19005 19010 K$=MID$(D$,2,LEN(D$)): ' ... BLANK KEY 19020 R$=STRING$(RL,0):' BLANK MASTER FILE RECORD 19030 GOTO 12620' ... GOTO KEY AND MASTER WRITE ROUTINE 21000 ' ... ALPHA NUMERIC KEYBOARD SCAN 21005 T$="" 21010 PRINT SB$; 21015 A$=INKEY$:IF A$="" THEN 21015 21016 PRINT RB$; 21020 IF A$FL THEN T$=LEFT$(T$,LEN(T$)-1):PRINT CHR$(7);:GOTO 21010 ELSE PRINT A$;:GOTO 21010 21040 ON INSTR(CHR$(8)+CHR$(13),A$) GOTO 21050,21060 21050 IF LEN(T$)>0 THEN PRINT CHR$(8);:T$=LEFT$(T$,LEN(T$)-1):GOTO 21010 ELSE 21010 21060 PRINT RB$;:RETURN 23000 ' ... CHECK FOR VALID NUMERIC 23005 F1=0:F2=0:N=0 23010 FOR X = 1 TO LEN(T$) 23020 AX=ASC(MID$(T$,X,1)) 23030 IF AX<45 OR AX>57 THEN PRINT CHR$(7);:GOTO 23100 23040 IF AX=47 THEN 23050 IF AX=46 THEN F1=F1+1:IF F1>1 THEN PRINT CHR$(7);:GOTO 23100 23060 IF AX=45 THEN F2=F2+1:IF F2>1 THEN PRINT CHR$(7);:GOTO 23100 23070 NEXTX 23080 IF INSTR(T$,"-")>1 THEN PRINT CHR$(7);:GOTO 23100 23090 N=1 23100 RETURN 40000 PRINT @ BOTT,BK$;"press enter to end program ";:INPUT D$ 40010 END:' . . . YOU MAY GO TO ANOTHER PROGRAM FROM HERE 40020 ' 40030 ' 40040 ' 45000 REM REL PROMP 45005 UPDTE$="S" 45010 LC=0 45015 FC=0:FP=1:CP=0:BF=0 45020 PRINT @ BOTT,BK$;"PRESS ENTER TO GET TO THE FIELD YOU WANT TO SEARCH ON ..."; 45025 FL=1:GOSUB 21000 45030 PRINT @ BOTT,BK$;" ... THEN, TYPE IN WHAT YOU WANT TO SEARCH FOR."; 45035 FC=FC+1:IF FC>T THEN 4000:ELSE IF TY$(FC)="Z" THEN 45035 45040 FL=FL(FC):PRINT @ CP(FC),""; 45045 GOSUB 21000:IF T$<>"" AND TY$(FC)="N" THEN GOSUB 23000:IF N=0 THEN PRINT @ CP(FC),STRING$(FL(FC),".");:GOTO 45040 45050 IF T$<>"" THEN 45070 45055 IF BF>0 THEN 45065 45060 IF FP+FL(FC)-1>255 THEN BF=FC:FB=255-(FP-FL(FC)-1) 45065 FP=FP+FL(FC):GOTO 45035 45070 SS$=T$ 45075 IF TY$(FC)<>"N" THEN CP=4:GOTO 45115 45080 PRINT @ BOTT,BK$;"THE FIELD YOU ARE SERACHING IS A NUMBER FIELD...";:GOSUB 60000 45085 PRINT @ BOTT,BK$;"YOU MAY SEARCH FOR RECORDS THAT ARE ...";:GOSUB 60000 45090 PRINT @ BOTT,BK$;"EQUAL, LESS OR GREATER THEN THE NUMBER ENTERED (E,L OR G)";:FL=1:GOSUB 21000 45095 IF T$="" THEN 45090 45100 IF ASC(T$)>90 THEN T$=CHR$(ASC(T$)-32) 45105 CP = INSTR(" ELGelg",T$)-1: IF CP>3 THEN CP=CP-3 45110 IF CP<1 OR CP>3 THEN PRINT CHR$(7);:GOTO 45090 45115 REM 45120 X=1:GET #1,X 45125 IF T$="N" THEN PRINT @ BOTT,BK$;"press any key to stop search - ";:GOTO 45130 45130 ' 45135 IF LOF(1)=X-1 THEN 700 ELSE GET #1,X : X=X+1 45140 IF FR$=STRING$(RL,0) THEN 45135 45145 IF BF=0 THEN RS$=MID$(FR$,FP,FL(FC)):GOTO 45160 45150 IF FC=BF THEN RS$=MID$(FR$,FB,255)+MID$(FR1$,FL(FC)-FB):GOTO 45160 45155 IF FC>BF THEN RS$=MID$(FR1$,FP-255,FL(FC)) 45160 ON CP GOTO 45165,45175,45185,45195 45165 'EQUAL 45170 IF VAL(RS$)=VAL(SS$) THEN GOSUB 15390:GOTO 45210 ELSE 45200 45175 'LESS 45180 IF VAL(RS$)VAL(SS$) THEN GOSUB 15390:GOTO 45210 ELSE 45200 45195 IF INSTR(RS$,SS$)<>0 THEN GOSUB 15390:GOTO 45210 ELSE 45200 45200 IF INKEY$<>"" THEN 700 45205 GOTO 45130 45210 PRINT @ BOTT,BK$;"EXT, TOP - ";:FL=1:GOSUB 21000 45215 IF T$="N" THEN PRINT @ BOTT,BK$;"press any key to stop search - ";:GOTO 45130 45220 IF T$="S" THEN 700 45230 GOTO 45210 53000 REM COLOR COMPUTER DOES NOT PERMIT ERROR TRAPS 54000 REM 54010 REM 54100 REM 54200 REM 55000 RUN 60000 ' ..... TIME DELAY 60010 FOR Z = 1 TO 700 60020 NEXT Z 60030 RETURN p search - ";:GOTO 45130 45220 IF T$="S" THEN 700 45230 GOTO 45210 53000 REM COLOR COMPUTER DOES 0 THEN RS$=MID$(FR$,FP,FL(FC)):GOTO 45160 45150 IF FC=BF THEN RS$=MID$(FR$,FB,255)+MID$(FR1$,FL(FC)-FB):GOTO 45160 45155 IF FC>BF THEN RS$=MID$(FR1$,FP-255,FL(FC)) 45160 ON CP GOTO 45165,45175,45185,45195 45165 'EQUAL 45170 IF VAL(RS$)=VAL(SS$) THEN GOSUB 15390:GOTO 45210 ELSE 45200 45175 'LESS 45180 IF VAL(RS$)VAL(SS$) THEN GOSUB 15390:GOTO 45210 ELSE 45200 45195 IF INSTR(RS$,SS$)<>0 THEN GOSUB 15390:GOTO 45210 ELSE 45200 45200 IF INKEY$<>"" THEN 700 45205 GOTO 45130 45210 PRINT @ BOTT,BK$;"EXT, TOP - ";:FL=1:GOSUB 21000 45215 IF T$="N" THEN PRINT @ BOTT,BK$;"press any key to stop search - ";:GOTO 45130 45220 IF T$="S" THEN 700 45230 GOTO 45210 53000 REM COLOR COMPUTER DOES NOT PERMIT ERROR TRAPS 54000 REM 54010 REM 54100 REM 54200 REM 55000 RUN 60000 ' ..... TIME DELAY 60010 FOR Z = 1 TO 700 60020 NEXT Z 60030 RETURN p search - ";:GOTO 45130 45220 IF T$="S" THEN 700 45230 GOTO 45210 53000 REM COLOR COMPUTER 10 CLEAR 100:CLEAR MEM-9000 20 REM 50 DS$="T":OC=98:XK=10:XP=4 60 OPEN"I",3,"SORTCMD/DAT":INPUT#3,PF$:CLOSE 3:KILL "SORTCMD/DAT" 70 OPEN"I",3,PF$:INPUT#3,PN$,MS$,WV$,SV$,BB$,RL,S1,S2,NF,MP,SS$,CP,C1,C2,X,X,X:CLOSE 3:KILL PF$ 110 TF$=MS$:GOSUB 4550:MV$=DV$:MF$=T1$+EX$+"SKY" 120 TF$=PN$:GOSUB 4550:PV$=DV$ 130 PC$="KEYCMD/DAT":IF DS$="T" THEN PC$=PC$+PV$ ELSE PC$=PV$+PC$ 200 IF S1+(S2-1)>RL OR S1=0 OR S2=0 THEN EC=1 210 IF NF<>0 AND NF<>1 THEN EC=2 290 IF EC THEN 60000 300 IF S2 > XK THEN S2=XK 310 IF MP > S2-1 THEN MP=S2-1 311 IF MP > XP THEN MP=XP 312 IF MP < 0 THEN MP=0 340 A$=WV$:GOSUB 8000:WV$=A$ 341 A$=SV$:GOSUB 8000:SV$=A$ 342 A$=PV$:GOSUB 8000:PV$=A$ 343 A$=MV$:GOSUB 8000:MV$=A$ 360 IF DS$="C" THEN MF$=SV$+MF$ ELSE MF$=MF$+SV$ 400 KL=S2+(NF*(MP+1)):KP=KL+5 410 XL=(MEM-4000)/(KP+3):LA=XL:IF LA<10 THEN PRINT "OUT OF MEMORY":END 1140 REM 1145 REM 1150 DIM A$(LA+1) 1180 M1$="WK/TMP":IF DS$="T" THEN M1$=M1$+WV$ ELSE M1$=WV$+M1$ 1185 TP$=STRING$(S2,0):NU$=STRING$(S2,0):R$=STRING$(S2+MP," "):M0=VAL("1"+STRING$(MP,"0")):PB$="Please Stand By " 1190 PRINT @ 416,STRING$(63,32)STRING$(63,8);"QUIKPRO SORT "PB$; 1210 Z=0:NT=0:EX=INT(255/KP):DN=0:SR=0:LB=1:K3=32767:K6=65536:DIM R(25),B(25),C$(25) 1211 IF NT=0 THEN GOSUB 1600 ELSE GOSUB 1630 1213 IF NT=0 AND DN THEN GOSUB 6000:CLOSE:EC=0:GOTO 4300 1219 EC=1:NT=NT+1:R(NT)=Z+1 1220 IF NT=1 THEN OPEN"R",1,M1$:IF LOF(1)<>0 THEN CLOSE 1:KILL M1$:GOTO 1220 1230 FOR X=1 TO LA+1 1232 FIELD 1,(EC*KP-KP) AS W1$,(KP) AS W2$ 1235 LSET W2$=A$(X) 1240 EC=EC+1:IF EC>EX THEN Z=Z+1:PUT #1,Z:EC=1 1245 IF X=LA+1 THEN LSET W2$=STRING$(KP,0):Z=Z+1:PUT #1,Z 1250 NEXT:IF DN=0 THEN 1211 1280 OPEN"R",2,MF$:IF LOF(2)<>0 THEN CLOSE 2:KILL MF$:GOTO 1280 1281 EC=1:Y=1 1290 BM=EX*KP:NU$=STRING$(KP,0):TE$=NU$:NA$=STRING$(KP,255) 1300 FIELD 1,255 AS A$:FOR X=1 TO NT:A$(X)=STRING$(255,0):B(X)=0:GET #1,R(X):LSET A$(X)=A$:NEXT 1350 LSET TE$=NA$:FOR X=1 TO NT:LSET A$=A$(X):FIELD 1,(B(X)) AS D$,(KP) AS C$(X):IF C$(X)=127 THEN EC=1:PUT #2,Y:Y=Y+1 1375 B(TE)=B(TE)+KP:IF B(TE)=BM THEN R(TE)=R(TE)+1:B(TE)=0:GET #1,R(TE):LSET A$(TE)=A$ 1380 FIELD 1,(B(TE)) AS D$,(KP) AS C$(TE):IF C$(TE)=NU$ THEN GOTO 1390 1385 GOTO 1350 1390 FOR X=1 TO NT-1:IF X=>TE THEN B(X)=B(X+1):LSET A$(X)=A$(X+1):R(X)=R(X+1) 1395 NEXT:NT=NT-1:IF NT THEN 1350 1400 FIELD 2,EC*2-2 AS DK$,2 AS K$:LSET K$=STRING$(2,0):PUT #2,Y 1401 CLOSE 1:CLOSE 2:CLOSE 3:KILL M1$:EC=0 1430 GOTO 4300 1600 REM rd mstr, sel & srt 1620 OPEN"R",3,MS$,RL:FIELD#3,RL AS F$ 1625 IF LOF(3)=0 THEN CLOSE 3:EC=18:GOTO 60000 1626 IF NF=0 THEN FIELD 3,RL AS F$:FIELD 3,(KL) AS P1$,5 AS P2$:FIELD 3,(KP) AS P3$ 1627 IF NF THEN FIELD 3,1 AS P1$,(S2+MP) AS P2$,5 AS P3$:FIELD 3,(KP) AS P4$ 1630 Y=Y+1: IF Y>LOF(3) THEN 4180 ELSE GET #3,Y 1640 TP$=MID$(F$,S1,S2):IF TP$=NU$ THEN 1630 1650 ' 1980 ' 1990 ' 2000 ' 2010 ' 2020 ' 4000 IF NT=0 THEN A$(LB)=STRING$(KP,32) 4020 IF NF THEN T=VAL(TP$):LSET P1$=MID$("-0",(T<0)+2,1):RSET P2$=MID$(STR$(INT(T*M0)),2):RSET P3$=MKN$(Y): A$(LB)=P4$:IF T=>0 THEN 4150 ELSE GOSUB 9000:GOTO 4150 4040 RSET P2$=MKN$(Y):LSET P1$=TP$: A$(LB)=P3$ 4150 IF LB<>LA THEN LB=LB+1:GOTO 1630:ELSE GOSUB 4210:LB=1:RETURN 4180 DN=1:LA=LB-1:GOSUB 4210:RETURN 4210 IF LA<>0 THEN SR=1 4215 IF LA<2 THEN RETURN 4220 REM 4225 REM 4240 GOSUB 63000:REM GOTO SORT 4245 REM 4250 REM 4270 IF Y+1>LOF(3) THEN DN=1 4295 RETURN 4300 REM 4311 IF SR=0 AND EC=0 THEN EC=255:PRINT BB$"* NO SELECTED RECORDS * "; 4320 OPEN"O",1,PC$ 4321 PRINT#1,EC 4322 PRINT#1,MF$ 4323 PRINT#1,PN$ 4324 PRINT#1,SS$ 4325 PRINT#1,CP 4326 PRINT#1,C1 4327 PRINT#1,C2 4328 PRINT#1,0 4329 PRINT#1,0 4330 PRINT#1,0 4331 CLOSE 4333 IF EC=0 THEN PRINT @ 416,STRING$(63,32)STRING$(63,8)" * SORT COMPLETED * "; 4335 REM 4344 IF EC=0 AND PN$<>"" THEN PRINT @ BOTT,STRING$(63,32)STRING$(63,8)"LOADING PROGRAM ";PN$; 4345 REM 4346 IF PN$<>"" AND PN=0 THEN RUN ""+PN$ 4350 END 4550 IF DS$="T" THEN EX$="/" ELSE EX$="." 4555 IF LEN(TF$)>14 THEN EC=7:GOTO 60000 4560 DS=INSTR(TF$,":") 4570 IF DS$="T" AND DS=LEN(TF$)-1 THEN DV$=RIGHT$(TF$,2) 4580 IF DS$="C" AND DS=2 THEN DV$=LEFT$ (TF$,2) 4590 IF DS=0 THEN DV$="" 4610 IF DS$="T" AND DV$<>"" THEN T1$=LEFT$(TF$,DS-1) 4620 IF DS$="C" AND DV$<>"" THEN T1$=MID$(TF$,DS+1,LEN(TF$)) 4630 IF DV$="" THEN T1$=TF$ 4640 IF INSTR(T1$,EX$) THEN IF INSTR(T1$,EX$)=LEN(T1$)-3 THEN T1$=LEFT$(T1$,INSTR(T1$,EX$)-1) 4650 RETURN 6000 OPEN"R",2,MF$:IF LOF(2)<>0 THEN CLOSE 2:KILL MF$:GOTO 6000 6010 EC=1:Y=1 6020 FOR X=1 TO LA 6030 FIELD 2,EC*5 -5 AS DK$,5 AS K$ 6040 LSET K$=RIGHT$(A$(X),5) 6050 EC=EC+1:IF EC>50 THEN EC=1:PUT #2,Y:Y=Y+1 6060 NEXT 6070 FIELD 2,EC*5-5 AS DK$,5 AS K$:LSET K$=STRING$(5,0) 6080 PUT #2,Y:CLOSE 2 6090 RETURN 8000 IF A$="" THEN RETURN 8010 IF DS$="C" THEN 8100 8020 A$=":"+RIGHT$(A$,1) 8030 A=ASC(RIGHT$(A$,1)) 8040 IF A<48 OR A>57 THEN EC=8:GOTO 60000 ELSE RETURN 8100 A$=LEFT$(A$,1)+":" 8120 A=ASC(LEFT$(A$,1)) 8130 IF A>96 AND A<123 THEN A=A-32:MID$(A$,1)=CHR$(A) 8140 IF A<65 OR A>90 THEN EC=8:GOTO 60000 ELSE RETURN 9000 FOR X=2 TO LEN(A$(LB))-2:MID$(A$(LB),X,1)=CHR$(ABS(ASC(MID$(A$(LB),X,1))-255)):NEXT:RETURN 50000 EC=0:IF ERR/2+1=53 THEN EC=25:BB$=" ":RESUME 60000 50010 IF ERL=70 OR ERL=60 THEN PRINT BB$"> CANNOT FIND SORTCMD/DAT/PARAMETER FILE";:END 50015 IF ERL=1140 THEN EC=17:RESUME 60000 50020 IF ERR/2+1=54 AND ERL=4346 THEN EC=20:RESUME 60000 50030 IF ERL=>1620 AND ERL =<1640 THEN EC=24:RESUME 60000 50040 IF DS$="T" THEN IF ERR/2+1<>62 THEN 50500 50041 IF DS$="C" THEN IF ERR/2+1<>61 AND ERR<>67 THEN 50500 50042 CLOSE 50050 IF ERL=6050 OR ERL=6080 OR ERL=6380 OR ERL=1365 THEN 50100 50060 IF ERL=1240 OR ERL=1245 THEN 50200 50070 IF ERL=>4320 AND ERL=<4331 THEN 50300 50090 GOTO 51000 50100 EC=21:IF ERL=1365 THEN KILL M1$:KILL MF$: ELSE KILL MF$ 50109 IF IO THEN EC=26 50110 RESUME 60000 50200 EC=22:KILL M1$ 50209 IF IO THEN EC=26 50210 RESUME 60000 50300 EC=23:KILL PC$:IF DS$="T" THEN END 50310 IF IO THEN EC=26 50320 RESUME 60000 50500 IF ERR/2+1=58 THEN IO=1:GOTO 50042 51000 EC=0-(ERR/2+1):IF ERL=>500 AND ERL<4300 THEN RESUME 60000 51010 PRINT BB$"> UNDEFINED ERROR - [";EC;"] ":END 60000 REM 60010 PRINT BB$;"> "; 60020 IF EC>16 OR EC>200 THEN 60500 60100 PRINT "SORTCMD/DAT PARAMETER ERROR"; 60110 GOTO 62000 60500 ON ERROR GOTO 50000 61000 IF EC=18 THEN PRINT"MASTER FILE NOT FOUND / NO RECORDS"; 61001 IF EC=17 THEN PRINT"SRTOV3/V10 SORT FILE NOT FOUND"; 61010 IF EC=19 THEN PRINT"INSUFFICIENT MEMORY"; 61020 IF EC=20 THEN PRINT"CALLING PROGRAM NOT FOUND";:PRINT:END 61030 IF EC=21 OR EC=22 OR EC=23 THEN PRINT"INSUFFICIENT DISK SPACE"; 61035 'IF EC=23 THEN END 61040 IF EC=24 THEN PRINT"PARAMETERS DO NOT MATCH MASTER FILE"; 61050 IF EC=25 THEN PRINT"BASIC NOT OPENED WITH 3 FILE BUFFERS";:PRINT:END 61060 IF EC=26 THEN PRINT"DISK I/O ERROR / CHECK DISK";:PRINT:END 61070 IF EC>200 AND ERL=>500 THEN PRINT"UNDEFINED ERROR"; 62000 PRINT" - [";EC;"] "; 63000 REM SORT 63010 FOR IP=1 TO LA-1 63020 FOR JP=IP+1 TO LA 63025 IF A$(JP)>=A$(IP) THEN 63050 63030 X1$=A$(IP):A$(IP)=A$(JP): A$(JP)=X1$ 63050 NEXT JP:NEXT IP 63060 RETURN >200 AND ERL=>500 THEN PRINT"UNDEFINED ERROR"; 62000 PRINT" - 50020 DATA 20 50030 DATA HUNTER/DAT 50040 DATA 7 50050 DATA HUNTER 50060 DATA 0 ,"AHUNTERS ASSOCIATION", ,D, , 50070 DATA 64 ,"B", ,D, , 50080 DATA 128 ,"CLST-NAME .............", ,D, , 50090 DATA 192 ,"DFST-NAME .............", ,D, , 50100 DATA 256 ,"ESTREET .................", ,D, , 50110 DATA 320 ,"FCITY ............", ,D, , 50120 DATA 384 ,"GPROV. ....", ,D, , 50130 DATA 448 ,"HPCODE .......", ,D, , 50140 DATA 512 ,"IYELEPHONE ........", ,D, , 50150 DATA 576 ,"J", ,D, , 50160 DATA 640 ,"K", ,D, , 50170 DATA 704 ,"L", ,D, , 50180 DATA 768 ,"M", ,D, , 50190 DATA 75 ,, 13 ,A,K,,"LSTNAME", 50200 DATA 107 ,, 13 ,A,R,,"FSTNAME", 50210 DATA 139 ,, 17 ,A,R,,"STREET", 50220 DATA 171 ,, 12 ,A,R,,"CITY", 50230 DATA 203 ,, 4 ,A,R,,"PROV", 50240 DATA 235 ,, 7 ,A,R,,"PCODE", 50250 DATA 267 ,, 8 ,A,R,,"PHONE", 5 REM ..... QUIKDOC3 (c) 1981 FutureSoft ...... 7 ON ERROR GOTO 60000 10 REM .... Ver. 2.1 10/22/81 .... 20 FF$=CHR$(12) 21 LF$=CHR$(10) 25 L$="### % % ### %%" 30 RESTORE 40 READ S1 45 READ F$ 50 READ S2 60 READ P$ 100 REM . . .start mainline . . . 102 REM 105 PRINT #-2, FF$ 106 PRINT #-2, STRING$(20,ASC(LF$)) 107 PRINT #-2, " Operator's Guide for ";P$ 108 PRINT #-2, " " 109 PRINT #-2, " Data Entry/Filing System " 110 PRINT #-2, STRING$(15,LF$) 115 PRINT #-2, " (c) 1981 FutureSoft" 150 GOSUB 5000 160 PRINT #-2, " Table of Contents " 162 PRINT #-2, " ":PRINT #-2, " ":PRINT #-2, " " 163 PRINT #-2, " Section 1.0 Using Your New Progam" 164 PRINT #-2, " ":PRINT #-2, " " 165 PRINT #-2, " 1.1 First Time Use" 166 PRINT #-2, " ":PRINT #-2, " " 167 PRINT #-2, " Section 2.0 ";P$;" Record Layout" 168 PRINT #-2, " ":PRINT #-2, " " 169 PRINT #-2, " Section 3.0 Adding, Updating and Deleting Records " 170 PRINT #-2, " ":PRINT #-2, " " 171 PRINT #-2, " 3.1 Adding Records" 172 PRINT #-2, " ":PRINT #-2, " " 173 PRINT #-2, " 3.2 Getting Records" 174 PRINT #-2, " ":PRINT #-2, " " 175 PRINT #-2, " 3.2.1 Deleting Records" 176 PRINT #-2, " ":PRINT #-2, " " 177 PRINT #-2, " 3.2.2 Updating or Changing Records" 178 PRINT #-2, " ":PRINT #-2, " " 179 PRINT #-2, " 3.3 Ending Program " 190 GOSUB 5000 200 REM . . . . page 1 201 PRINT #-2, " 1.0 Using Your New Program " 202 PRINT #-2, " " 203 PRINT #-2, " Your new program will let you Add, Locate & Update, " 204 PRINT #-2, " and Delete from your File. This file is the File that you " 205 PRINT #-2, "named when you created your program. This file " 206 PRINT #-2, "is ";F$;"." 207 PRINT #-2, " " 208 PRINT #-2, " 1.1 First Time Use " 210 PRINT #-2, " " 215 PRINT #-2, " The first time that you RUN your new program, the files " 216 PRINT #-2, "that you named when you created you program will " 217 PRINT #-2, "automatically be created for you. Make sure that you do " 218 PRINT #-2, "not have another file of the same name on any of the " 219 PRINT #-2, "disks in your system or an error will occur. If you " 220 PRINT #-2, "already have a file of the same name on one of your disks and " 221 PRINT #-2, "you get an error message then you will have to KILL your old " 222 PRINT #-2, "file provided that you don't have any old data in it." 250 GOSUB 5000 300 REM PAGE 2 301 PRINT #-2, " " 302 PRINT #-2, " 2.0 ";P$;" Record Layout " 303 PRINT #-2, " " 304 PRINT #-2, " ";P$;" will allow you to Add, Locate and Update, " 305 PRINT #-2, "or Delete records from the file named ";F$;". The " 306 PRINT #-2, "record in your file has ";S2;" fields. A field is one " 307 PRINT #-2, "item of information in your file. So, your program ";P$ 308 PRINT #-2, "has ";S2;" distinct items of information contained in " 309 PRINT #-2, "each one of your records." 310 PRINT #-2, " " 311 PRINT #-2, "The form of your record will be displayed on your computer" 312 PRINT #-2, "screen, and will look like this: " 315 REM . . . print screen area . . . . 317 PRINT #-2, " ":PRINT #-2, " " 320 FOR X = 1 TO S1-S2 330 READ Z1,Z1$,Z2,Z2$,Z3$,Z4$ 340 PRINT #-2, " " 350 PRINT #-2, Z1$ 360 NEXT X 365 PRINT #-2, " " 370 PRINT #-2, "Fig. 1.0 - ";P$;" Screen and Record Layout" 375 GOSUB 5000 400 REM. . . page 3 401 PRINT #-2, " Each field in your record can only contain a certain " 402 PRINT #-2, "number of characters. Some fields will only allow a number " 403 PRINT #-2, "to be entered into them. Listed below are the fields which " 404 PRINT #-2, "are included in your record, along with the maximum length" 405 PRINT #-2, "allowed for each field. Also listed is the type of field, " 406 PRINT #-2, "either numeric (number field only) or alphanumeric (character" 407 PRINT #-2, "or number field). " 408 PRINT #-2, " " 409 PRINT #-2, " Record Fields for ";P$ 410 PRINT #-2, " " 412 PRINT #-2, "Number Description Length Type" 413 PRINT #-2, "------- ------------------------------- -------- ----" 414 LC=37:PRINT #-2, " " 415 FOR X = 1 TO S2 416 READ Z1,Z1$,Z2,Z2$,Z3$,Z4$,Z5$,D4$ 417 LC=LC-2 418 IF LC<0 THEN PRINT #-2, " ":PRINT #-2, " ";P$;" Record Fields ":GOSUB 5000 420 PRINT #-2, USING L$;X,Z5$,Z2,Z2$ 425 IF D4$="" THEN PRINT #-2, " " ELSE PRINT #-2, " CALCULATION FIELD: ";D4$ 430 NEXT X 440 PRINT #-2, " ":PRINT #-2, " " 450 PRINT #-2, " ";P$;" Record Fields " 460 GOSUB 5000 500 REM . . . next page . . . 501 PRINT #-2, " 3.0 Adding, Updating and Deleting Records " 502 PRINT #-2, " " 503 PRINT #-2, " When your ";P$;" program begins running, you will see " 504 PRINT #-2, " the screen input form as shown in Figure 1.0. At the " 505 PRINT #-2, "bottom of the screen will be displayed the functions you can" 506 PRINT #-2, "perform. " 507 PRINT #-2, " " 508 PRINT #-2, "The display will be: " 509 PRINT #-2, " " 510 PRINT #-2, " dd Record, et Record, nd Program - " 511 PRINT #-2, " " 512 PRINT #-2, "You should enter either an A, G, or E. Make sure that you " 513 PRINT #-2, "have the shift on your keyboard on so that all letters will be " 514 PRINT #-2, "entered as capital letters." 515 PRINT #-2, "" 600 OPEN "I",1,"QXDOC3/" 601 LC=35 605 IF EOF(1) THEN 700 610 LINE INPUT #1, A$ 611 LC=LC-1 612 IF LC<0 THEN GOSUB 5000 615 PRINT #-2, A$ 620 GOTO 605 700 PRINT #-2, FF$ 710 RUN "QUIKMENU" 5000 REM . . . .HEADER . . . . . 5010 LC=50 5020 PG=PG+1 5030 PRINT #-2, FF$ 5040 PRINT #-2, " " 5050 PRINT #-2, " " 5060 PRINT #-2, "Operator's Instructions for ";P$;" Page - ";PG 5070 PRINT #-2, " " 5080 PRINT #-2, " " 5090 RETURN 60000 REM ERROR TRAPS 60010 PRINT:PRINT 60020 PRINT "Error Number ";ERR/2+1;" at Line Number ";ERL 60030 PRINT:PRINT 60040 PRINT "Press to Continue "; 60050 INPUT D1$ 60060 RUN "QUIKMENU" - ";PG 5070 PRINT #-2, " " 5080 PRINT #-2, " " 5090 RETURN 60000 R