0 'QUIKPRO+II (C) 1983 J.W. TAMARGO 1 'LICENSE TO ICR FUTURESOFT 2 '3/19/82 3 'QUIKMENU VER. 2.1 4 'THIS PROGRAM IS PROTECTED BY 5 'U.S. PATENT OR COPYRIGHT LAW 6 'REPRODUCTION WITHOUT WRITTEN 7 'AUTHORIZATION BY FUTURESOFT 8 'IS EXPRESSLY FORBIDDEN AND 9 'IS A VIOLATION OF THE LAW. 10 CLEAR 4000 12 ' CL$=CHR$(28)+CHR$(31)+CHR$(28) 13 ' ON ERROR GOTO 60000 30 ' END SYSTEM PARAMS 200 CLS ' PRINT CL$ 210 PRINT " QUIKPRO+II VER. 3.1" 250 PRINT " PROGRAM MENU" 260 PRINT 270 PRINT "1) QUIKPRO" 272 PRINT " FILING PROGRAM GENERATOR" 280 PRINT "2) QUIKPRO" 282 PRINT " AUTOMATIC INSTRUCTIONS" 300 PRINT "3) QUIKPRINT" 302 PRINT " REPORT GENERATOR" 310 PRINT "4) QUIKINDEX" 312 PRINT " UTILITY TO INDEX FILE" 315 PRINT "5) read this now" 330 PRINT "6) END PROGRAM" 400 PRINT 410 PRINT " SELECT - "; 420 INPUT A$:A=VAL(A$) 430 ON A GOTO 510,520,530,540,545,550 500 SOUND 200,2 ' PRINT CHR$(7); 505 GOTO 10 510 GOSUB 2000 : RUN "QP5" 520 GOSUB 2000:RUN "QUIKDOK"' DOCUMENTATION PROGRAM 530 GOSUB 2000: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 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 ^kT 10 25 ^kC70 To do this, simply press the F key on your keyboard whenever you are ready to enter a Field at the spot that you want it. (If your computer keyboard does not have a Key on it, then press the Key ant the DOWN ARROW together and the F Key. This will be equivaalent to F.) You will then be asked... "What Field Number do you want on the line." The Field Number you enter would be the Field Number of the Field that you want from your Screen/Record Layout. (If you need to refer to the Screen/Record Layout to get information on your fields, simply press the ENTER Key until you return to your choice of options at the bottom of the screen. Then pick the L for (L)ook at Record Layout. This option is explained in a subsequent section.) When you enter a good Field Number, that field will be displayed on your screen at the point on the screen where you were editing the line. If you specify a Field Number that is too large to fit on the line, then a message will be displayed for you at the bottom of the screen. You may continue Editing you Report Form until you have designed it just the way you want it. When you have finished, simplly press the ENTER or RETURN Key when you are asked the question, "What line number do you want to work on..." You will then be given your options as listed previously. (E)dit Report, (P)rint Report Layout, (L)ook at Record Layout, (D)one-) ^k* Option 2 Print the Report Layout This option will let you print out a copy of the Report Layout that you designing on your screen. You may print the Report Layout at anytime during your edit session. Then you may continue editing if you want. Printing the Report Layout help you see exactly what your report form will look like onpaper. In fact, you might want to print out a Report Layout before you actually begin Editing your layout on the screen. This will give a blank worksheet that you can use to help you design the form you want on paper. ^k* Option 3 Look at the Record Layout This option will let you re-display the Screen/Record Layout that you are using to generate your Report. This is the Screen that you saw when you first started the program. You would use this option whenever you need to refer to you Record for information about the Fields. You can look at your Screen Layout while you are editing and then you may continue editing. ^k* Option 4 Done When you have finished, simply enter the letter D for Done when you are asked to enter your options. If you enter D, then you will continue on to the next phase of the program. NOTE: You should skip the next section of this manual which applies to Columnar Reports Only, and go to Section 7.15, Naming you Report Program. ^k* Step 3b--Columnar Reports If you picked the Columnar Report as your choice for the type of Report you want, then you should follow this section. If you are designing a Free Form Report then you should consult the previous section on Free Form Reports. ^k* Eliminationg Fields (Data) From the Report Once your Screen File has been found, you will see the Screen/Record Layout that you designed when you created your original filing program. All of the fields will be numbered. You will then be asked if you want to eliminate any Fields from the Report. This means that if you eliminate a Field, it will not be printed on your reports. You should enter the Field numbers that you want to eliminate one by one. As yoou eliminate a Field, the screen will display the '*' character in the Field that you picked to let you know that it has been eliminated. When you are done, simply enter the letter N for No when you are asked the question: ^k; "Do you want to eliminate any more Fields from the Report?" ^k; ^k* REPORT HEADING & TITLES Each Report should have Headings at the top of each page to identify those items listed in the Report. In this step, you will enter a Heading for each Field in your Report. This Heading will appear at the top of each column on your printed reports. Example: ^k; List of Friends Page 1 Date 01/01/87 Name Address Phone JIM Box 1 333-3344 BOB Box 2 334-1234 TOM 1st Street 456-1234 ^k; The words Name, Address and Phone in the example above are the Field Headings. The Heading will be printed at the top of each page on your printed reports. In addition to a Heading for each Field column that you will be printing, you may enter a Report Title. This Report Title will appear above the Field Column Headings. The Report Title is a name or description of what the Report contains. In the example, the Report Title is "List of Friends". The Date and page numbers are automatically included in your report programs, if your computer has the proper date function. When you are ready press and you will ask at the bottom of the screen to input a Report Title. ^k* THE REPORT WIDTH At this point in the program you will be asked: ^k; "What is your Report Width?" (Max No. of characters per line) Default No. is 80 ^k; You may enter any number between 1 and 131. If you do not enter a number and you press the key then the default value of 80 will automatically be used. The number you enter will be the maximum width (line length) permitted on any line of your report. Most 8-1/2" wide paper would permit a maximum line length of 65. This would leave a nice right hand margin, however you may print up to 80 characters across without a margin on either side. PLEASE NOTE the chart later in the text as a reference. ^k* LINES PER PAGE The next step allows you to choose the number of lines you want printed per page. The Default number is 50, if you only press . Most 8-1/2 x 11" pages permit 66 lines to be printed per page. However, 50 lines allows for the Title and Headings if they were entered earlier in the Report Form. When you see the following message: ^k; "How many lines do you want to print on a page?" ^k; enter the proper number, allowing for Titles and Heading if necessary. The following chart will tell you how to answer the questions for Report Width and Length for various sizes of paper. ^k; If your paper is: You enter this... Width Length Width Length inches (char) (lines) 8 1/2 x 11 65 50 8 1/2 x 14 65 65 14 x 11 131 50 ^k; ^k* TOTAL FIELDS Your Report programs may contain total of numbers. These totals will be printed at the end of your report programs. You may get totals on any Numeric Only Field. To specify for which fields you want to pront totals, simply answer Y for Yes to the question: ^k; "Do you want to total any fields (Y/N) -" ^k; ...then enter the Field Numbers of those Fields for which you want totals. When you have slected a Field to be Totaled, the letter "T" will be displayed in the Field. If you choose a Field that can't be totaled, you will get a message to tell you that it can't be totaled because it is non-numeric. When you have finished, press the key and you will be asked "Are you Done?". If you press Y for Yes you will go to the next step. N for No will send you back to the start of step you are in. ^k* NAMING YOUR PROGRAM At this point you will be ask to Name the program you have just created. The name may contain up to 8 characters, following the same steps you did when you entered a name for your Filing and Data Entry programs. ^k* USING YOUR NEW REPORT PROGRAM To use the Report program, simply type RUN followed by the program name in Quotes. When the report program starts you will see the following options at the botton of your screen: ^k; "(G)et, (S)earch, Sort, Select, (E)nd" ^k; If you specify (G)et, then you will be asked for the Key that you want for records to be printed in you report. Your report will only contain those records which have as their Key the key you specified. Your Key is the key that you specified in your original Data Entry and Filing Program. ^k* SELECTING RECORDS FOR YOUR REPORT If you specified (S)earch, Sort, Select then you may: ^k; 1. Print only thoese records in the file containing the information you want to Search for. (String Search) 2. Print only thoese records in the file where a PARTICULAR FIELD contains the information you want to Search for. (Field Search) 3. Print only those records where a numeric field is Less Than, Greater Than, or Equal To a number that you enter. (Select or Relational Search) 4. Print ALL the records in your file. 5. Any of the above printed in Sorted order either numerically or alphabetically. 6. Any of the above printed in the order the records appear in the Master File.^k; After you have entered "S" for "Search" you will be asked: ^k; "Do you want to Search for something in a (F)ield or (A)nywhere in the file -" ^k; ^k* Searching "(A)nywhere" in the file Enter the "A" for (A)nywhere in the file and you will be asked; "Search for?" You may enter any characters or numbers that you want to Search for, then press . This will Select all records that contain the numbers or characters that you entered. If you simply press instead of entering characters to Search for, you will be asked: "Print All Records? (Y/N) -" If you reply "Y" for "YES", all the records will be selected. If you reply N for NO, you will be returned to the Report Program Menu. ^k* Searching a (F)ield If you enter "F" for "(F)ield", you will be asked: ^k; "Press to get the Field you want to Search on..." "When you are at the Field you want, type in what you want to Search for." ^k; For example, if you wanted to Print all records that contain "SMITH" in the name field, the press until the cursor is at the name field and type in "SMITH". You may notice that while pressing to get to a particular field, that the cursor will skip "Display Only" calculation fields. This is because ou cannot Select on Display Only fields. If the field is Numeric you will be told: ^k; "The Field you are Searching is a Numeric Field..." "You may Select Records that are..." "(E)qual, (L)ess, (G)reater than the number you entered (Pick E, L or G) -" ^k; By Selecting "E", "L" or "G", only those records that are Equal to, Less than or Greater than will be selected. ^k* SORTING YOUR REPORT RECORDS After selecting (S)earch, Sort, Select, first you will be prompted to (S)earch, then press at (A)nywhere and you will be ask Print All. Again press and you will be asked: ^k; "Do you want your Report in sorted order (Y/N)-" ^k; You will be ask "Sort by what Field" after you have selected the field the program then will sort and print your report. Personal Note: Ihave found a slight bug and have sent the program back for corrections, However it will work up to the point of not printing a second Report. The computer will lock up and to get out you must shut it (the computer) off. ^kN your report. Personal Note: Ihave^kT 05 15 25 ^kC70 ^kD1 27 69 ^c^b ^k* INSTRUCTIONS FOR QUIKPRO+II ^k* FOR THE COLOR COMPUTER ^k* INTRODUCTION QUIKPRO+ is a complete File Maintenance/Data Entry Program Generator. A program generator actually writes the program for you. File maintenance generally refers to the addition to, updating of, or deletion from a file. File maintenance programs produced by QUIKPRO+ produce all ASCII data files. ^k* OPERATION AND STARTUP First ALWAYS MAKE A BACKUP COPY! Insert the BACKUP COPY of QUIKPRO+ into your Drive. Type in RUN "QUIKMENU". ^k* RUNNING QUIKPRO+ After typing in RUN "QUIKMENU" the QUIKPRO+ program menu should appear on your screen, assuming you have inserted the Diskette in the Drive properly. ^k* QUIKPRO+ MENU After the menu has appeared on the screen, choose one of the following: ^k; (1) QUIKPRO Filing Program Generator (2) QUIKPRO Automatic Instructions (3) QUIKPRINT - Report Program Generator (4) QUIKINDEX - File Indexing Utility Program (5) END PROGRAM ^k; MENU OPTION 1: This program is used to design your screen and create a complete BASIC Program to handle file, manipulate data, calculate and accumulate fields. THIS PROGRAM SHOULD BE RUN BEFORE ANY OF THE OTHER PROGRAM MENUS BECAUSE THE OTHERS ARE DEPENDENT ON THIS ONE. MENU OPTION 2: Print the AUTOMATIC INSTRUCTION MANUAL for the program that you created with the Program Generator above. This program option will print an operator's manual especially for each program you create. MENU OPTION 3: This option will let you create a BASIC Report Program from one of the filing programs that you might have created above in Menu Option 1. MENU OPTION 4: This is a FILE INDEXING PROGRAM. You will only need to use this program if you want to use an existing Data File that you might have had previously with a program that you created with QUIKPRO+ in Menu Option 1. You do not need to use QUIKINDEX at any other time. MENU OPTION 5: This will END PROGRAM and put your computer back into BASIC. ^k* USING THE FILING PROGRAM GENERATOR After typing RUN"QUIKMENU", choose option 1 and your screen will display a work screen as follows: ^k; A B C D E F G H I J K L M N . . . Enter the letter of the line you want to work on -? ^k; At this time the cursor (solid block or flashing block) is displayed at the bottom of the screen. You may design on the screen the particular form desired for entering data. Wach line on the screen is marked with a letter in the far left column of the screen. You may move the cursor to the line you want by entering the letter of the line and pressing . Anything previously on the line will be erased. Once the cursor is on the line, you may design (layout) the line with the information you want. ^k* DESIGNING THE SCREEN LAYOUT Once the cursor has been positioned on the line, you may begin your layout. Two types of information may be entered. ^k; 1. LITERAL DATA 2. FIELDS ^k; 1. LITERAL DATA consist of names, titles, field names, symbols or any character not used to define input fields. Literal data will actually appear on the screen in the program you create in the exact manner and position the you designed. For Example: ^k; A Employee File B Social Security Number ========= C D Name: ===================== E F Phone Number ========== G H I J K L M N . . . Enter the letter of the line you want to work on -? ^k; 2. FIELDS are thoese areas on the screen that will allow something to be entered into them in the finished program that you create. Fields are identified by = (equal sign). Continuous groups of these characters define a single input field. The length of the field is determined by the number of continuous equal signs used. CORRECTING MISTAKES ON A LINE is a very simple matter. If you make a typing mistake, you may use the Backspace or left arrow to correct mistakes. CORRECTING MISTAKES ON AN ENTIRE LINE after it has been entered is a very simple matter, also. Just re-enter the line number that you wish to correct when the system displays the "Enter a line -?" prompt at the bottom of the screen. This will erase the contents of the current line and allow you to enter a line again in the way you wish. AFTER DESIGNING YOUR SCREEN press at the "Enter a line -?" prompt. The system then will display the message: Are you done? If you respond "Y" for yes then the program will continue to the next phase. If you respone "N" for no the program will return to the previous screen. ASSINGING A PRIMARY KEY is necessary before you can add or update a record. The record first must be found. Most files contain records that are keyed on a particular pice of information in the record for locating purposes. At this point you must decide how you want to locate or access the records in you finished file. The message "Which field will be the primary key?", will appear at the bottom of the screen. Each field will have a number assigned to it. ENTER THE NUMBER OF THE FILED TO BE USED AS THE PRIMARY KEY. This will let you access information very quickly from your finished program. ASSINGING NUMBER FIELDS are fields that ONLY numbers are assigned to within the program. For example ^k; if a zip code is '73135-A', the '73135' is the ONLY information accepted by the program. ^k; You will be prompted with "Which fields are numbers only?". At this point enter the number of the field or fields to be assigned NUMBERS ONLY. ASSIGNING THE FORM OF THE NUMERIC ONLY FIELD. If a field has been assigned as 10 it will only display whole numbers. Format 7 represents a whole number with 7 digts. Format 7.2 represents a decimal numver with 7 digts to the left of the decimal and 2 to the right. In assigning the Format of a Numerical Only Field, you should remember that the total length of you Numerical Field must equal the format that you are assigning to that field. For example, if the lenth of your Numeric Only Field is 3 then the following Formats would be acceptable: 1.1, 3, and 2. Remember that the decimal must count as one of the digits in the total length. The system will display the message: ^k; "Enter the Format of the Number Field -". ^k; After you have entered your Format, you will see this display; "Are any more fields Numeric Only?" If you enter Y for "yes", then you will be ask for the field you want to be Numeric Only. If you enter N for "no", you will go to the next phase of the program. CALCULATION AND ACCUMULATION FIELDS is the next phase of the program. At this point the program will ask you: ^k; "ARE ANY FIELDS CALCULATION FIELDS?" ^k; If you enter N for "no" then you will go to the next phase of the program. If you answer Y for "yes" then the instructions continue with: ^k; "Enter the field number of a calculated field -" ^k; ENTER THE NUMBER OF A FIELD THAT YOU WANT TO CALCULATE. If you enter a field number that you did not identify as a number-only field as described in the previoys section, then you will not be able to make a field a calculating field, because calculated field must always be number-only field. If you enter a valid field number, then the computer will display: ^k; "Do you want this calculation to be (S)tored or (D)isplayed Only -" ^k; Enter an S if you want the calculated field stored in you file or a D if you want the calculated field to be displayed only on the screen. In many cases, calculations do not need to be saved in a file, but only displayed on the screen. The information to produce the desired calculation my be already stored in the file and can be retrieved. In other cases, you may want to update a total or number in a file. In this case you would use the (S)tore option. After you have indicated which type of calculation you desire, your screen will display the following: ^k; "Enter the Calculation -" ^k; ENTER YOUR CALCULATION, Add - Subtract - Multiply or Divide as follows: ^k; F#(n) - where n is the number of the field you want in the calculation. EXAMPLES: F#(1) would be field 1 on your screen. F#(2) would be field 2 on your screen, etc. Example of calculation: F#(1)/10+F#(3) Description - Divide Field 1 by 10 then add Field 3. Another Example: 10*F#(3) Description - Multiply 10 by Field 3 ^k; The program will now check to see if you have entered your calculations correctly. If not it will ask you to enter them again. NOTE: Brackets should not be used around calculations. If more expanded calculations are needed, they may be added after your program has been created and written in BASIC. If your calculation is for example: F#(3)+F#(2), the calculation will take the contents of Field 3 and add Field 2 to it, with the total being saved in Field 3. To state it another way, Field 3 keeps a running total of itself plus Field 2. After you have entered all you calculation fields, you will be ask, "Are any fields calculation fields?", when you answer N for "no" you will go to the next phase. You now will be ask to enter Field Comments. You may use up to 30 characters to describe the Field. This will allow you to describe in detail the information contained in a particular field. It will also help you locate parts of you program after it has been written to disk. Enter at the "Enter a Data File Name -" prompt, a file name containing a maximum of 8 letters. Numbers are not permited. Enter a program name, containing up to 8 letters at the prompt. If you name your program "MYPROG", then "MYPROG" is the BASIC Program that will be created. "MYPROG/SCR" - is a special file that will be used for your Automatic Documentation, etc. DO NOT DESTROY THIS FILE UNTIL YOU ARE SURE YOU DON'T NEED IT ANY LONGER!!!!! You may PRINT A SCREEN WORKSHEET if you have a printer, for future reference. You will be ask for a response to the Screen Worksheet question. If you answer Y for "yes" a worksheet will be printed. After this you will return to the main menu. It is advised at this point, you copy, using the copy command, the finished programs to a previously formated disk. You may LOAD, RUN, LIST, EDIT or COPY you new BASIC Program. ^k* YOUR NEW PROGRAM After all the previous steps have been followed, you now have a new program ready to RUN. Before running the program remove the disk and format a new disk using DSKINI0 on the CoCo with a single disk drive. Now copy, using the copy command, the programs that have been created by Quikpro+II, onto the newly formated disk. ^k* OPERATING YOUR NEW PROGRAM When your new program begins running, you will see the input form which you designed in the beginning. At the bottom of t1$)Ќ1\/G1$ Г џ(T1$,X,1): G2$ Г џ(T1$,XЋ1,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]yVG2$Гџ(T1$,џ‡(T1$),1)]Ы`… G2$Г"+" Б G2$Г"-" Б G2$Г"/" Б G2$Г"*" Б G2$Г"(" Б G2$Г"F" Б G2$Г"#" Ї 33300]ы~‚. TEST FOR GOOD SUBSCRIPT.]єˆG1Г1^ ’G1Гџž(G1Ћ1,T1$,"(")^œ… G1Г0 Ї 33200^7ЁG2Гџž(G1Ћ1,T1$,")")^JЂ… G2Г0 Ї 33300^qІ… џ‰(џ(T1$,G1Ћ1,G2Ќ1))ДГ0 Ї 33300^—Ї… џ‰(џ(T1$,G1Ћ1,G2Ќ1))ВU Ї 33300^ЄЋЅ 33170^РА‚ ... INSERT BRAKETS...^ШБXГ0^цЕXГXЋ1:… XВџ‡(T1$) Ї 33250_JК… џ(T1$,X,1)Г"/" Б џ(T1$,X,1)Г"*" Ї T1$Г"("ЋT1$:T1$Гџ(T1$,1,X)Ћ")"Ћџ(T1$,XЋ1,џ‡(T1$)):XГXЋ3_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`9‚Z3$(CF)Г"D":Z6$(CF)Г""`i‚І 55100:‡ "COMPUTATION WAS ";T1$;:І 50000`‘‚‡ @ Z1(CF),џ(џˆ(CF),2,џ‡(џˆ(CF)));`ž‚Ѕ 32000`Фœ@‡:‡ "PRESS TO CONTINUE ";`ЬœE‰D$`мœJŽ"QUIKMENU"`эУP€ZГ1Ѕ2000:‹Z`ѓУZ`њжз:ƒa жи:ƒBEEP ***aжт  200,2aжьa"з;:ƒa6з<:ƒ CLEAR BOTTOMaJзF‡ @ BOTT,BLANK$a`зP‡ @ BOTTЋ1,BLANK$aqзZ‡ @ BOTT,"";awз–a~зŸ:ƒaІъ`:ƒREM ERROR TRAPS *** NOT AVAILABLEaСъФ‚ TEST FOR SCREEN FILEaеъХ€ UWГ1 Ѕ џ‡(J$)b7ъЦ… џ(J$,UW,1)Д"A" Б џ(J$,UW,1)В"Z" Ї ‡ @ BOTT,BK$"BAD SCREEN FILE NAME";:  30,2:І 50000:š:Žb@ъЧ‹ 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 ";:Z2Г1:І 21000:cDьTЅ 40000c\юH‚ MOD 11225 & 11286ccюЋ:ƒcyюЌ:ƒRECREATE SCREENcИюБІ 55100:‡ "PLEASE WAIT,":‡ "RE-CREATING YOUR SCREEN ...";cЩюЖ€ X Г 1 Ѕ SCcчюР… џž(A$(X),".")Г0 Ї 61150d5юЪA$(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)Г"":‹ XdВюшUГ0:RLГ0:KLГ0dИюђdПі‡ e6і"‡ "USING THE COLOR COMPUTER COPY COMMAND, COPY YOUR PROGRAM AND ITS SCREEN FILE TO A FORMATTED BLANK DISKETTE"eHі1‡ "YOUR ... "emі6‡ "PROGRAM NAME IS - ";J$Ћ"/BAS"e’і@‡ "SCREEN FILE NAME- ";J$Ћ"/SCR"e˜іJ‚f,і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 ";:Z2Г1:І 16000:Ѕ 63400f№їМš:fўј ‚ REOVE #gјTH$ГT1$:T1$Г""g$ј€ IKГ1Ѕџ‡(TH$)gCј … џ(TH$,IK,1)Г"#" Ї 63540g\ј*T1$ГT1$Ћџ(TH$,IK,1)geј4‹ IKgkј>шїЗ… џЅ(1)Г0 Ї š:   30,2:‡ @ BOTT,BK$"PUT THE QUIKPRO+II DISK BACK IN THE DISK DRIVE THEN ";:Z2Г1:І 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 "JM7LNГ15220:‡#1,LN;"K$ = CHR$(94) + K$"J7(LNГ15300:‡#1,LN;"' . . . . . LOCATE RECORD . . . . . . ."JЉ72LNГ15310:‡#1,LN;"P = 0"JЩ77LNГ15315:‡#1,LN;"KREC = 1 "K47 NOT IN FILE <---";Q$;";:GOSUB 60000:GOTO 700"Kи7PLNГ15340:‡#1,LN;"' . . . . GET RECORD FROM MASTER FILE . . . ."Kі7ZLNГ15350:‡#1,LN;"KR$=KS$"L7_LNГ15355:‡#1,LN;"KREC = X "LB7dLNГ15360:‡#1,LN;"P = INSTR(P+1,KR$,K$)"Lw7nLNГ15370:‡#1,LN;"LR = VAL(MID$(KR$,P+LEN(K$),5))L—7xLNГ15380:‡#1,LN;"GET #1,LR"Lе7‚LNГ15390:‡#1,LN;"' . . . SUBDIVIDE & PRINT RECORD . . . "Lо7–FTГ1Lщ7 €XГ1ЅULі7ЊLNГ10ЋLNM7О… Z3$(X)Г"D" Б Z3$(X)Г"I" Ї 14320MP7м‡#1,LN;"F$(";X;") = MID$(FR$,";FT;",";Z2(X);")"M`7цFTГFTЋZ2(X)Mg7№‹XMt7њLNГ17000MŒ8€ X Г 1 Ѕ U:LNГLNЋ1Mб8… 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+8LNГ17500:€XГ1ЅUN78LNГLNЋ2NЂ8… Z2$(X)Г"N"Ї ‡ #1,LN;" PRINT @ ";Z1(X);",";Q$;Q$;";:PRINT USING ";Q$;Z4$(X);Q$;";F(";X;");":Ѕ 14370NЬ8‡#1,LN;"PRINT @ ";Z1(X);",F$(";X;");"Nд8"‹ XO&8,LNГ18500:‡#1,LN;"PRINT@ BOTT,BK$;";Q$;"HANGE, EXT, ELETE - ";Q$;";"OD86LNГ18510:‡#1,LN;"FL = 1 "Ok8@LNГ18520:‡#1,LN;"TY$ = ";Q$;"A";Q$O8rLNГ18530:‡#1,LN;"GOSUB 21000"OТ8†LNГ18550:‡#1,LN;"IF T$=";Q$;"C";Q$;" THEN 4100 "Oј8‹LNГ18555:‡#1,LN;"IF T$=";Q$;"N";Q$;" THEN 15320 "P.8ŒLNГ18557:‡#1,LN;"IF T$=";Q$;"D";Q$;" THEN 19000 "PM8LNГ18560:‡#1,LN;"GOTO 700"PT8š:ƒP[8›:ƒPb8œ:ƒPЭ8л… 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$)В0ЇT$Гџ(T$,1,џ‡(T$)Ќ1):‡BS$;:Ѕ16020Ri>Ј…џŠ(A$)Г13Ї OFГ0:R >Љ… A$Гџ‹(7) А OFГ128 Ї OF Г0 :„ … A$Гџ‹(7) Ї OFГ128R­>­Ѕ 16020RД>щ:ƒRЛ>ю:ƒRТN :ƒRЩN!:ƒS N%І 55100:‡"GIVE YOUR NEW PROGRAM A NAME.":‡ ">"; : І 55000S N&Z2Г8:І16000:J$ГT$S&N'‚SЕN(€XГ1Ѕџ‡(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 - ";:Z2Г1:І 16000:TщN*LNГ50:‡#1,LN;" ' . . . . ---> PROGRAM NAME IS ";J$;" <----- ":І 55100:‡"> QUIKPRO IS PREPARING YOUR":‡"PROGRAM NAMED - ";J$;" <";: І 55000TіN+Ѕ 21020TќN,‚UN/‚UN4‚UN>‚UNH‚UR‚U R‚U?R…CH$Г"1"Ї™"I",2,"RANDWRT/"UPR!…џŒ(2)Ї22000U\R&Л‰#2,A$UgR:‡#1,A$UsRDЅ21025UнU№š:ž:‡ џЁ(5,10); "YOUR FILING PROGRAM HAS BEEN":‡"SUCCESSFULLY CREATED ":І 63000:Ѕ 40000:Ž"QUIKMENU"Uуu0‚V7u5І 55100:‡"DO YOU WANT TO PRINT OUT A":‡"SCREEN WORKSHEET (Y/N) - "; : І 55000V\u6Z2Г1:І16000:R$ГT$:…R$Г"Y"Ї30008Vuu7…R$Г"N"Ї30040:„30005VНu8‡ #Ќ2,"0 ";:€XГ10ЅSWSTEP10:‡ #Ќ2,џ(џˆ(X),2,1);:‹X:‡ #Ќ2,""Vђu9€XГ1ЅSW:‡ #Ќ2,џ(џˆ(X),џ‡(џˆ(X)),1);:‹X:‡ #Ќ2,""Vўu:€XГ1ЅSCW u?‡ #Ќ2," "W%uD‡ #Ќ2,џ‹(64ЋX);A$(X)W,uN‹XW9uO‡ #Ќ2,""WnuS€XГ1ЅSW:‡ #Ќ2,џ(џˆ(X),џ‡(џˆ(X)),1);:‹X:‡ #Ќ2,""WЖuU‡ #Ќ2," ":‡ #Ќ2," ":‡ #Ќ2,"SCREEN WORKSHEET FOR PROGRAM NAME - ";J$WМuXWТub‚WШuc‚Wю}‚ . . . . COMP SECTION . . . . .X>} І 55100:‡ "ARE ANY FIELDS ":‡"COMPUTATION FIELDS (Y/N)? - ";:Z2Г1:І 16000XO}… T$Г"N" Ї Xm}… T$Г"Y" Ї 32030 :„ 32010XС}І 55100:‡ "ENTER THE FIELD NUMBER OF":‡"A COMPUTATION FIELD - ";:Z2Г2:І 16000XЯ} CFГџ‰(T$)Y}!… Z3$(CF)Г"K" Ї І 55100:‡ "CAN'T COMPUTE THE KEY FIELD";:І 50000:Ѕ 32000Y?}#… CFГ0 Ї І 55000 :Ѕ 32010Y€}%… CFВU Ї І 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: ";:Z2Г1:І 16000: … T$Г"D" Ї Z3$(CF)Г"D":Ѕ 32060Zs}(… T$ДВ"S" Ї 32039ZЈ}<І 55100:‡"ENTER COMPUTATION - ";:Z2Г35:І 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‚$ЛZ2Г1:І16000:A$ГT$9“$М…A$Г"Y"Ї86009Є%…A$Г"N"Ї97009Џ%€Ѕ94009П%ф:ƒGOTO COMP9Ь%хІ 32000:& € Y Г 1 Ѕ U : … Z3$(Y)ДВ"D" А Z3$(Y)ДВ"I" Ї RLГRLЋZ2(Y):j&"…RLВ255Ї І 55100:‡"> YOUR RECORD IS GREATER THEN 255 CHARACTERS <";:І 50000:І 61100:Ѕ 800:†&%…Z3$(Y)Г"K"ЇKLГKLЋZ2(Y):Й&*І 55100:‡"ENTER COMMENT FOR FIELD #";Y:‡ ">";:е&/Z2Г30:І16000:Z5$(Y)ГT$:м&2:ƒ:у&4‹Y:№&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$;Т&Ќ‡#1,UЋSC;Ю&о‡#1,V1$;и&ш‡#1,U;у&ђ‡#1,J$<'€XГ1ЅSC:A$(X)Гџ‹(64ЋX)ЋA$(X)<3'и‡#1,(XЌ1)­64;",";Q$;A$(X);Q$;", ,D, , ":‹X<>(<€XГ1ЅU<”)‡#1,Z1(X);",,";Z2(X);",";Z2$(X);",";Z3$(X);",";Z4$(X);",";Q$;Z5$(X);Q$;",";Z6$(X)<›)h‹X<Ђ)Ьš1<х*0І 55100:‡ "CREATING YOUR PROGRAM ...":‡"PLEASE STAND-BY ...";<њ*§™"O",1,J$Ћ"/BAS"=+LNГ20:‡#1,LN;"' "=(+LNГ25:‡#1,LN;"' "=k+LNГ110:‡#1,LN;" V1$= ";Q$;V1$;Q$;": ' .. MASTER FILE NAME ..."=Њ+LNГ112:‡#1,LN;" V2$= ";Q$;V2$;Q$;":' .. KEY FILE NAME ..."=ц+*LNГ120:‡#1,LN;"RL = ";RL;": ' ..... RECORD LENGTH ..."> +>LNГ125:‡#1,LN;"KL = ";KL;": ' ..... KEY LENGTH ....">^+RLNГ130:‡#1,LN;" T = ";U;": ' ... TOTAL NUMBER OF FIELDS ">€+TLNГ135:‡#1,LN;" HOME$ = ";B2$>Ќ+WLNГ140:‡#1,LN;" SKEY= INT(255/(KL+6)) ">В+X‚>д+YLNГ150:‡#1,LN;" BLANK$= ";B1$>і+ZLNГ155:‡#1,LN;" '" :ƒ WAS CL$?+[LNГ160:‡#1,LN;" RC = ";RC?2+\LNГ165:‡#1,LN;" DC = ";DC?W+]LNГ170:‡#1,LN;" RB$= ";Q$;RB$;Q$?|+^LNГ175:‡#1,LN;" SB$= ";Q$;SB$;Q$?ƒ+e:ƒ?Ž+fLNГ700?—+gLMГ1?Ѓ+p€XГ1ЅSC?Џ+zLNГLNЋ1?р+„‡#1,LN;" PRINT ";Q$;џ(A$(X),џ‡(A$(X))Ќ1);Q$?ч+Ž‹X?ю+“:ƒ?ѕ+˜:ƒ@+ЂLNГ4000@ +Ќ€XГ1ЅU@+ЖLNГLNЋ100@++Л‡#1,LNЋ3;"'"@<+М‡#1,LNЋ4;"'"@j+Р‡#1,LNЋ5;"'FIELD NUMBER ";X;" IS ";Z5$(X)@’+Ъ‡#1,LNЋ10;"'FIELD LENGTH IS ";Z2(X)@Й+д‡#1,LNЋ15;"'FIELD TYPE IS ";Z2$(X)@н+й… Z6$(X)ДВ"" Ї LMГLMЋ1:Ѕ 11316A4+о‡#1,LNЋ20;"PRINT @ ";Z1(X);",";Q$;џЁ(Z2(X),46);Q$;";:PRINT @ ";Z1(X);",";Q$;Q$;";"AP+ш‡#1,LNЋ25;"FL = ";Z2(X)At+ђ‡#1,LNЋ30;"TY$ = ";Q$;Z2$(X);Q$A, ‡#1,LNЋ35;"GOSUB 21000"AЙ,‡#1,LNЋ40;"IF LEN(T$)=0 THEN ";LNЋ50Aх,…XГ1Ї‡#1,LNЋ42;"IF ASC(T$)=60 THEN 700"B,…XВ1Ї‡#1,LNЋ42;"IF ASC(T$)=60 THEN ";LNЌLM­100Ћ5:LMГ1Bk,…Z2$(X)Г"N"Ї‡#1,LNЋ43;"GOSUB 23000: ' .. NUMERIC CHECK SUB ROUTINE ..."BЋ,…Z2$(X)Г"N"Ї‡#1,LNЋ44;"IF N=0 THEN GOSUB 55000 :GOTO ";LNЋ5Bь,‡#1,LNЋ45;"F$(";X;") = T$ : ' MOVE INKEY VARIABLE TO FIELD "C9,.‡#1,LNЋ50;"F$(";X;") = F$(";X;") + STRING$(";Z2(X);"-LEN(F$(";X;")),32)"Cg,3‡#1,LNЋ52;"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,LNЋ53;" F(";X;") = VAL(F$(";X;"))"D›,6… Z2$(X)Г"N" А Z6$(X)ДВ"" Ї ‡ #1,LNЋ53;" F(";X;") = ";Z6$(X)E,7… Z2$(X)Г"N" А Z6$(X)ДВ"" Ї ‡ #1,LNЋ59;" PRINT @ ";Z1(X);",";Q$;Q$;";:PRINT USING ";Q$;Z4$(X);Q$;";F(";X;");"E8,8…Z3$(X)Г"K"Ї‡#1,LNЋ58;"K$= F$(";X;")"F,9… Z6$(X)ДВ"" А Z3$(X)ДВ"D" Ї ‡ #1,LNЋ55;"F$(";X;") = STR$(F(";X;"))":‡ #1,LNЋ56;"F$(";X;")=MID$(F$(";X;"),1,";Z2(X);")":‡ #1,LNЋ57;"F$(";X;") = F$(";X;") + STRING$(";Z2(X);"-LEN(F$(";X;")),32):F(";X;")=VAL(F$(";X;"))"F,B‹XF#,G‚F),L‚F5,VLNГ9800F@,`€XГ1ЅUFL,eLNГLNЋ1F“,j… Z6$(X)ДВ"" А Z3$(X)Г"D" Ї 11380 :„ ‡ #1,LN;"R$ = R$ + F$(";X;")"Fš,t‹XFЁ,~:ƒFЈ.Ў:ƒFЖ.сQ$Гџ‹(34)Fч.ъLNГ301:‡ #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Ј.ўLNГLNЋ1:‡ #1,LN;"FL("X$")="џ(џˆ(Z2(X)),2)":CP("X$")="џ(џˆ(Z1(X)),2)":TY$("X$")="Q$TZ$Q$GА/‹ XGЗ6А:ƒGО6Е:ƒGХ6К:ƒGы6ФLNГ15060:‡#1,LN;"FL = ";Z2(KFIEL)HH6ЩLNГ15065:‡#1,LN;"PRINT @ ";Z1(KFIEL);",STRING$(FL,46);:PRINT @ ";Z1(KFIEL);",";Q$;Q$;";"Hv6ЮLNГ15070:‡#1,LN;"TY$ = ";Q$;Z2$(KFIEL);Q$H˜6иLNГ15100:‡#1,LN;"GOSUB 21000"Hш6тLNГ15110:‡#1,LN;"IF LEN(T$)=0 THEN 700:'.RETURN TO MAINLINE IF NULL ENTRY "I/6ь…Z2$(KFIEL)Г"N"ЇLNГ15120:‡#1,LN;"GOSUB 23000 :' TEST FOR NUMERIC "Iy6і…Z2$(KFIEL)Г"N"ЇLNГ15130:‡#1,LN;"IF N=0 THEN GOSUB 55000:GOTO 15000 "IЏ7LNГ15200:‡#1,LN;"K$=T$:'. PASS INKEY TO KEY VAR."IЖ7 :ƒJ$7…Z2$(KFIEL)Г"A"БZ2$(KFIEL)Г"N"ЇLNГ15210:‡#1,LN;"K$ = K$ + STRING$(FLџAl&:ƒ&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&М DMГ24&Ц SCГ13&а SWГ30&ё BLANK$ГџЁ(SWЋ1,32):Q$Гџ‹(34)'B1$Г"STRING$("Ћџˆ(SW)Ћ",32)"'=HOMEГ0:ƒ*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)+")"'нBOTTГ416 :ƒ*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)0њ…CH$Г"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 - ";:Z2Г1:І 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 ";, %Z2Г8:І 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ž,цМXГ0:Z2ГSW,№юT$Г""-  ‡ @0,""; :ƒ*PRINTHOME$;-%:ƒ*F=FRE("F")-=„€ZГ1ЅSC:‡џ‹(ZЋ64);A$(Z):‹Z-jшІ 55100:‡"ENTER THE LETTER OF THE LINE"-™щ‡"YOU WANT TO WORK ON (A-";џ‹(64ЋSC);")-";-ЇLL$Г"":‰L$-ЎQ:ƒ-ЕV:ƒ-ХА…L$Г""Ї1700-з…џ‡(L$)В1Ї800-їx…џŠ(L$)Д65БџŠ(L$)ВSCЋ64Ї800.ЊІ 55100:‡ "YOU MAY ENTER TEXT NOW".EЋ‡ "HIT DOWN ARROW FOR GRAPHICS ";.Œм‡@(џŠ(L$)Ќ65)­32Ћ1,BLANK$;:A$(џŠ(L$)Ќ64)Г"":‡@(џŠ(L$)Ќ65)­32Ћ1,"";.—@Ѕ2400.žЃ:ƒ.бЄІ 55100:‡"ARE YOU DONE ? (Y/N) "; : І 55000 .ї‰ R$:… R$Г"Y" Ї І 4800 :„ Ѕ 800/lЅ8000/ а:ƒ/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$)В0Ї‡BS$;:T$ГџŽ(T$,џ‡(T$)Ќ1):Ѕ25000к OFГ0:‡RB$;:Ѕ43001~ N… OFГ0 Ї OFГ128:І 55100:‡ " YOU ARE IN GRAPHICS MODE NOW ";:‡ @ (џŠ(L$)Ќ65)­32Ћ1,T$;::„ OF Г 0:І 55100:‡ "YOU ARE IN THE TEXT MODE";:‡ @ (џŠ(L$)Ќ65)­32Ћ1,T$;1Š €Ѕ 25001ЅЬA$(џŠ(L$)Ќ64)ГT$:T$Г""1А0Ѕ10001З“:ƒ1е”ž : ‡ @HOME,""; : €XГ1ЅSC1хјZ$(X)ГA$(X)1ь\‹X1ѓР:ƒ2-ХІ 55100:‡"-> PLEASE WAIT - PROCESSING <-";: І 5500029$€XГ1ЅSC2DˆP1ГЌ702XьPГџž(A$(X),"=")2fP…PГ0Ї59002ЃД…PЌP1В1ЇUГUЋ1:Z1(U)ГPЋ((XЌ1)­32)Ќ1:Z2$(U)Г"A":Z3$(U)Г"R"3 ц… UЋ1ВDM Ї І 55100:‡ DM;" FIELD MAXIMUM EXCEEDED":‡"MODIFY YOUR SCREEN ";:І 50000:І 61100:Ѕ 7003Z2(U)ГZ2(U)Ћ13&|P1ГP3\рA$(X)Гџ(A$(X),1,PЌ1)Ћ"."Ћџ(A$(X),PЋ1,џ‡(A$(X)))3gDЅ51003pЈX1ГX3w ‹X3}pž3д‡ @HOME,"";3™€XГ1ЅSC3Є8‡A$(X)3Ћœ‹X3ѕЮ… UГ0 Ї І 55100:‡ "-> YOU HAVE NO INPUT FIELDS <-";:І 50000:Ѕ 8004€XГ1ЅU42X$Гџ(џˆ(X),2,џ‡(џˆ(X)))4Ed‡@Z1(X),џЁ(Z2(X),".");:‡ @Z1(X),X$;4LШ‹X4R,4Y:ƒ4_4eXž4sМ€XГ1ЅSCЋU4‹ ‰#1,A,A$,B,B$,C$,C$4Ђ„A$Гџ(A$,2,џ‡(A$))4Цш…B$Г"D"Ї‡@A,A$;:„‡@A,џЁ(B,".");4ЭL‹X4гА‘4ы‰#1,A,A$,B,B$,B$,B$5x‡@A,џЁ(B,".");:‹X5 мЅ790050@І 55100:‡"WHICH FIELD NUMBER" 5LA‡"IS THE PRIME KEY - ";5lBZ2Г3:І16000:A$ГT$:AГџ‰(A$)5”Є…AВU Б AД1Ї І 55000 :І6100:Ѕ80005Ѓ Z3$(A)Г"K"5Џ :KFIELГA5Я lІ 55100:‡"ARE ANY FIELDS "5э m‡"NUMERIC ONLY (Y/N) - ";6 nZ2Г1:І16000:A$ГT$6 а…A$Г"N"Ї970060!4…A$ДВ"Y"ЇІ6100:Ѕ83006Y!˜І 55100:‡"FIELD NUMBER OF NUMERIC "6j!™‡"FIELD - ";6’!šZ2Г3:І16000:A$ГT$:AГџ‰(A$):AГџ(A)6х!ќ…AВU Б AД1Ї І 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\"ЧZ2Г4:І16000:A$ГT$7"і…A$Гџ(џˆ(џ‰(A$)),2,џ‡(A$))Ї91007“#(І6100:Ѕ89007Ц#Œ…џž(A$,".")Г0ЇBГџ‰(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$"

RINT REPORT FORM,OOK AT RECORD,ONE ";:Z2Г1:І 16000 :„ Ѕ 61070UЗю“… T$Г"E" Б T$Г"e" Ї І 61400Uйю˜… T$Г"P" Б T$Г"p" Ї І 61300Uћю… T$Г"D" Б T$Г"d" Ї Ѕ 61200VюЂ… T$Г"L" Б T$Г"l" Ї І 6000V)юЇЅ 61070V/яV5яt‚VFя~€ X Г 1 Ѕ PLVqяˆ‡ #Ќ2, џ(џˆ(X),2);џЁ(џ‚(XД10)Ћ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 яи‚WятEGГ0WячІ 61600Wnяь‡ @ BOTT,BK$"WHAT LINE DO YOU WANT TO WORK ON (1-";PL;")- ";:Z2Г2:І 16000W†яіCLГџ(џ‰(T$)):T$Г""Wœяћ… CLДГ0 Ї CLГ0: Wъ№… CLВPL Ї ‡ @ 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№#Z2ГPWX№$І 16000XГ№(… A$Гџ‹(21) Ї SC$(CL)ГSC$(CL)ЋT$:T$Г"":Ѕ 61485XР№)Ѕ 61530Xр№-:ƒ INSERT A FIELD INTO LINEXѓ№2EFГ1:EGГ0:EHГ1X§№7T$Г""Yb№<‡ @ BOTT,BK$"WHAT FIELD NUMBER DO YOU WANT TO INSERT ( 1 -";U;")- ";:Z2Г2:І 16000:N$ГT$:T$Г""Yo№FNГџ‰(N$)Z№K… NД1 Б NВU Ї ‡ @ 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 ";:EHГ0: Ѕ 61530Zч№L… џ‡(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";:EHГ0:Ѕ 61530[3№P… Z2(N)Г1 Ї N$Гџ‹(176) :„ N$Гџ(џˆ(N),2,џ‡(џˆ(N)))ЋџЁ(Z2(N)Ќџ‡(N$),176)[L№UZ2ГPWЌџ‡(SC$(CL)ЋN$)[№V… EFГ1 Ї SP$(CL)ГSP$(CL)Ћџ‹(N)Ћџ‹(џ‡(SC$(CL))Ћ1)[ъ№Z… EFГ1 Ї SC$(CL)ГSC$(CL)ЋN$:І 61660:EFГ0:Z2ГPWЌџ‡(SC$(CL)):Ѕ 61476: :„ … EGГ0 Ї SC$(CL)ГSC$(CL)ЋT$[ї№dЅ 61400\№ :ƒ DISPLAY REPORT LAYOUT\№Ё:ƒ\"№Ѕž\5№ЊTSГCLЌџ(SCЎ2)\Q№Д… TSЋSCВPL Ї TSГPLЌSCЋ1\c№О… TSД1 Ї TSГ1\Ј№Ш€ X Г TS Ѕ TSЋSCЌ1:‡ џ(џˆ(X),2);џЁ(џ‚(XД10)Ћ1,32);SC$(X):‹ X:\Џ№в:ƒ\Е№м‚\У№с‡ @ 0,"";\и№ц€ XГTS Ѕ TSЋSCЌ1\ы№№… CLГX Ї 61690\ѓ№ђ‹ X]P№њ… EFГ1 Ї SPГXЌTS:‡ @ 0,"";:‡ @ SP­32,"";џ(џˆ(X),2);џЁ(џ‚(XД10)Ћ1,32);;SC$(X);:Ѕ 61699]г№џSPГXЌTS:‡ @ 0,"";:‡ @ SP­32,"";џ(џˆ(X),2);џЁ(џ‚(XД10)Ћ1,32);џЁ(PW,32);: ‡ @ 0,"";:‡ @ SP­32,"";џ(џˆ(X),2);џЁ(џ‚(XД10)Ћ1,32);]йё]рђ0:ƒ]цђ5‚^ ђDLNГ17500:‡ #1,LN;"' PRINT RECORD"^ђN€ X Г 1 Ѕ PL^@ђS… SC$(X)Г"" Ї YCГYCЋ1:Ѕ 62600^SђX… YCГ0 Ї 62060^†ђbLNГLNЋ2:‡ #1,LN;"PRINT #-2, STRING$("YC",10);"^ђl:ƒ^”ђv:ƒ^Єђ”TC$Г"":LTГ1^вђ™… SP$(X)Г"" Ї TC$ГQT$ЋSC$(X)ЋQT$:Ѕ 62510^яђž€ Y Г 1 Ѕ џ‡(SP$(X)) Љ 2^іђŸ:ƒ_ђЈF Г џŠ(џ(SP$(X),Y,1))_.ђВFPГ џŠ(џ(SP$(X),YЋ1,1))_5ђГ:ƒ_mђЦTC$ГTC$ЋQT$Ћџ(SC$(X),LT,FPЌLT)ЋQT$Ћ"F$("Ћџˆ(F)Ћ")"_tђЧ:ƒ_„ђкLTГFPЋZ2(F)_‹ђл:ƒ_“ѓР‹ Y_šѓё:ƒ_уѓї… LTЌ1 Д џ‡( SC$(X) ) Ї TC$ГTC$ЋQT$Ћ џ( SC$(X),LT ) ЋQT$_ъє:ƒ_ќє#:ƒ WRITE LINE`є$:ƒ`є.LNГLNЋ2`-єL‡ #1,LN;"PRINT #-2, ";TC$`6є~YCГ0`>єˆ‹ X`Eєь:ƒ`Kє№‚`Šєё… YC Ї LNГLNЋ2:‡ #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."aЃїЊ‡aКї­‡ "YOUR REPORT..."aоїВ‡ "PROGRAM NAME IS - ";J$"/BAS"bїМ‡ "SORT PROGRAM NAME IS - SORT/V10"b їЦbј € UXГ1Ѕ џ‡(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 ";:Z2Г1:І 16000:Ѕ 63600cСј„š:  30,2:‡ @ BOTT,BK$;"SCREEN FILE NOT FOUND";:І 50000:Žcјххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххџp5”цljˆ':Іˆ5”4`O3‹ІШ4oІ—ы5b5”ІL4 #OЇц3„НЧ%:ц0ФСР$ 5€ &ч мФ?С #Ц@~ЌFрр%!˜4#†—ъНЧ33ˆпюНеџoˆцр& ьˆ&_cˆчˆ9ю3Aя9 s wЬ—ьзъЦзэЮпюНеџџ t1ФІФ&()Ž LІ€ЁР&Œ W&ѕї sІBЗ v93Ј ƒ&е\С #Ц9C&зЖ w&ї wџ x9Ц4} s&ј~ЌFНШ‡НЅЧНЧmITALS. For example: A . ^k* ADDING RECORDS TO YOUR NEW PROGRAM (A)dd Record will let you do just that! After entering the A, the cursor will position itself to the first input field and wait for you to enter data into that field. Once you've entered your data the cursor will move to the next field and so on. Those fields that you defined as Numeric Only will only allow you to enter numbers. Characters or letters will not be accepted. You may back up with the left arrow to a previous field. After the record has been entered or added to the file the previous message will be shown at the bottom of the screen once again. ^k* GETTING RECORDS (G)et Record will let you locate a record for examination of updating. When the letter G has been entered, the program will ask you for the key of the record you wish to access. ^k; ENTER DATA WHICH MATCHES THE PRIMARY KEY YOU ASSIGNED ^k; If the record is not in the Data File, the a message will be displayed on 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. The program will display: ^k; "(C)hange, (D)elete -" You may: ^k; Enter C to change a record of D to delete the current record. Pressing ENTER without entering C or D will return you to the previous screen. ^k* CHANGING RECORDS If you have entered C for change, then pressing the enter key will move the cursor into the each filed of the record displayed on the screen. If you do not want to chance the field of the record shown, press enter and the cursor will advance to the next field. After you have finished with the record, pressing enter will write the updated record to the file. ^k* DELETING A RECORD If you have pressed D for Delete Record, then the record displayed on the screen will be deleted from the Data File. Following these functions the screen will return to the previous message. ^k* SEARCHING FOR RECORDS If you pick S for Search or Sort, then you will have the choice of Searche terminal screen will be displayed the functions you can perform with your new program. The display will be: ^k; "(A)dd Record, (G)et Record, (S)earch, (E)nd program" ^k; Enter your choice, making sure that all letters are entered as CAPITALS. For example: A . ^k* ADDING RECORDS TO YOUR NEW PROGRAM (A)dd Record will let you do just that! After entering the A, the cursor will position itself to the first input field and wait for you to enter data into that field. Once you've entered your data the cursor will move to the next field and so on. Those fields that you defined as Numeric Only will only allow you to enter numbers. Characters or letters will not be accepted. You may back up with the left arrow to a previous field. After the record has been entered or added to the file the previous message will be shown at the bottom of the screen once again. ^k* GETTING RECORDS (G)et Record will let you locate a record for examination of updating. When the letter G has been entered, the program will ask you for the key of the record you wish to access. ^k; ENTER DATA WHICH MATCHES THE PRIMARY KEY YOU ASSIGNED ^k; If the record is not in the Data File, the a message will be displayed on 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. The program will display: ^k; "(C)hange, (D)elete -" You may: ^k; Enter C to change a record of D to delete the current record. Pressing ENTER without entering C or D will return you to the previous screen. ^k* CHANGING RECORDS If you have entered C for change, then pressing the enter key will move the cursor into the each filed of the record displayed on the screen. If you do not want to chance the field of the record shown, press enter and the cursor will advance to the next field. After you have finished with the record, pressing enter will write the updated record to the file. ^k* DELETING A RECORD If you have pressed D for Delete Record, then the record displayed on the screen will be deleted from the Data File. Following these functions the screen will return to the previous message. ^k* SEARCHING FOR RECORDS If you pick S for Search or Sort, then you will have the choice of Searching in the following ways: ^k; Search for Something Anywhere in the file (commonly called a String Search) or Search for something in a particular Field of the File. ^k; ^k* SORT If you have entered S for Sort, just press once again and you will be prompted again. See printing a report layout. ^k* SEARCHING FOR SOMETHING IN A FIELD If you Search for something n a Field, then you will be instructed to move the cursor in the field you want to search on. When the cursor is at the field that you want, type in whatever it is that you want to Search for in that field. If you find what you want, the entire record will be displayed on the screen. (E)ND THE PROGRAM by pressing the E and you will put back to BASIC. ^k* AUTOMATIC INSTRUCTIONS can be printed for each program created. Select the Automatic Instruction Generator and you will be ask for the name of the program you created. If the program doesn't exits, you will be told on the screen. You must enter the file name with the extension SCR for the instruction manual, for example: DATAFILE/SCR. You don't need to enter the /SCR after the program name. The instruction manual will be printed to your printer. ^k* REPORT PROGRAM GENERATOR In order to create a Report Program, you will again need the Screen (SCR) File of the original Filing or Data Base program you have already created. You will re-call your screen with the Screen File program. For example if you created a program named 'PROGRAM' your screen file would be 'PROGRAM/SCR'. If it cant be found, your screen will display: SCREEN FILE CANNOT BE FOUND. Next you will be ask what kind of Report? Columnar or Free Form. You may enter C or F respectively. A Free Form report will let you design a form of you choosing on your screen. On this form yo may enter Text and also include Fields from your File in your report. You may create....... ^k; From Letters, Mailing Cards, Labels or any other form... ^k; ^k* FREE FORM REPORTS Once you've picked Free Form Reports you will be ask several questions. REPORT LENGTH ask "How many lines will this report use?". Your answer may be any number from 1 to 99. The number you enter would be џQ) • 100:• џ“Ќ9000)‚)82DS$Г"T":OCГ98:XKГ10:XPГ4)m<™"I",3,"SORTCMD/DAT":‰#3,PF$:š 3:в "SORTCMD/DAT")РF™"I",3,PF$:‰#3,PN$,MS$,WV$,SV$,BB$,RL,S1,S2,NF,MP,SS$,CP,C1,C2,X,X,X:š 3:в PF$)юnTF$ГMS$:І 4550:MV$ГDV$:MF$ГT1$ЋEX$Ћ"SKY"* xTF$ГPN$:І 4550:PV$ГDV$*F‚PC$Г"KEYCMD/DAT":… DS$Г"T" Ї PC$ГPC$ЋPV$ :„ PC$ГPV$ЋPC$*nШ… S1Ћ(S2Ќ1)ВRL Б S1Г0 Б S2Г0 Ї ECГ1*‰в… NFДВ0 А NFДВ1 Ї ECГ2*š"… EC Ї 60000*А,… S2 В XK Ї S2ГXK*Ъ6… MP В S2Ќ1 Ї MPГS2Ќ1*р7… MP В XP Ї MPГXP*є8… MP Д 0 Ї MPГ0+TA$ГWV$:І 8000:WV$ГA$+(UA$ГSV$:І 8000:SV$ГA$+BVA$ГPV$:І 8000:PV$ГA$+\WA$ГMV$:І 8000:MV$ГA$+ˆh… DS$Г"C" Ї MF$ГSV$ЋMF$ :„ MF$ГMF$ЋSV$ +ІKLГS2Ћ(NF­(MPЋ1)):KPГKLЋ5+тšXLГ(џ“Ќ4000)Ў(KPЋ3):LAГXL:… LAД10 Ї ‡ "OUT OF MEMORY":Š+шt‚+юy‚+§~Œ A$(LAЋ1),5œM1$Г"WK/TMP":… DS$Г"T" Ї M1$ГM1$ЋWV$ :„ M1$ГWV$ЋM1$,‘ЁTP$ГџЁ(S2,0):NU$ГџЁ(S2,0):R$ГџЁ(S2ЋMP," "):M0Гџ‰("1"ЋџЁ(MP,"0")):PB$Г"Please Stand By ",УІ‡ @ 416,џЁ(63,32)џЁ(63,8);"QUIKPRO SORT "PB$;-КZГ0:NTГ0:EXГџ(255ЎKP):DNГ0:SRГ0:LBГ1:K3Г32767:K6Г65536:Œ R(25),B(25),C$(25)-4Л… NTГ0 Ї І 1600 :„ І 1630-]Н… NTГ0 А DN Ї І 6000:š:ECГ0:Ѕ 4300-xУECГ1:NTГNTЋ1:R(NT)ГZЋ1-ЏФ… NTГ1 Ї ™"R",1,M1$:… џЅ(1)ДВ0 Ї š 1:в M1$:Ѕ 1220-РЮ€ XГ1 Ѕ LAЋ1-цаа 1,(EC­KPЌKP) џЇ W1$,(KP) џЇ W2$-ігд W2$ГA$(X).иECГECЋ1:… ECВEX Ї ZГZЋ1:Х #1,Z:ECГ1.Iн… XГLAЋ1 Ї д W2$ГџЁ(KP,0):ZГZЋ1:Х #1,Z.]т‹:… DNГ0 Ї 1211.‹™"R",2,MF$:… џЅ(2)ДВ0 Ї š 2:в MF$:Ѕ 1280.˜ECГ1:YГ1.Щ BMГEX­KP:NU$ГџЁ(KP,0):TE$ГNU$:NA$ГџЁ(KP,255)/а 1,255 џЇ A$:€ XГ1 Ѕ NT:A$(X)ГџЁ(255,0):B(X)Г0:Ф #1,R(X):д A$(X)ГA$:‹/wFд TE$ГNA$:€ XГ1 Ѕ NT:д A$ГA$(X):а 1,(B(X)) џЇ D$,(KP) џЇ C$(X):… C$(X)ГДTE$ Ї д TE$ГC$(X):TEГX/‰P‹:д A$ГA$(TE)/лUа 2,EC­2Ќ2 џЇ DK$,2 џЇ K$:з K$Гџ(TE$,2):ECГECЋ1:… ECВ127 Ї ECГ1:Х #2,Y:YГYЋ10(_B(TE)ГB(TE)ЋKP:… B(TE)ГBM Ї R(TE)ГR(TE)Ћ1:B(TE)Г0:Ф #1,R(TE):д A$(TE)ГA$0ddа 1,(B(TE)) џЇ D$,(KP) џЇ C$(TE):… C$(TE)ГNU$ Ї Ѕ 13900piЅ 13500Гn€ XГ1 Ѕ NTЌ1:… XГВTE Ї B(X)ГB(XЋ1):д A$(X)ГA$(XЋ1):R(X)ГR(XЋ1)0Эs‹:NTГNTЌ1:… NT Ї 13500џxа 2,EC­2Ќ2 џЇ DK$,2 џЇ K$:д K$ГџЁ(2,0):Х #2,Y1yš 1:š 2:š 3:в M1$:ECГ01&–Ѕ 43001?@‚ rd mstr, sel & srt1^T™"R",3,MS$,RL:а#3,RL џЇ F$1Y… џЅ(3)Г0 Ї š 3:ECГ18:Ѕ 600001ФZ… NFГ0 Ї а 3,RL џЇ F$:а 3,(KL) џЇ P1$,5 џЇ P2$:а 3,(KP) џЇ P3$2[… NF Ї а 3,1 џЇ P1$,(S2ЋMP) џЇ P2$,5 џЇ P3$:а 3,(KP) џЇ P4$2+^YГYЋ1: … YВџЅ(3) Ї 4180 :„ Ф #3,Y 2QhTP$Гџ(F$,S1,S2):… TP$ГNU$ Ї 16302Xr:ƒ2_М:ƒ2fЦ:ƒ2mа:ƒ2tк:ƒ2{ф:ƒ2™ … NTГ0 Ї A$(LB)ГџЁ(KP,32)3Д… NF Ї TГџ‰(TP$):д P1$Гџ("-0",(TД0)Ћ2,1):з P2$Гџ(џˆ(џ(T­M0)),2):з P3$ГџІ(Y): A$(LB)ГP4$:… TГВ0 Ї 4150 :„ І 9000:Ѕ 41503?Шз P2$ГџІ(Y):д P1$ГTP$: A$(LB)ГP3$3p6… LBДВLA Ї LBГLBЋ1:Ѕ 1630::„ І 4210:LBГ1:3‹TDNГ1:LAГLBЌ1:І 4210:3žr… LAДВ0 Ї SRГ13­w… LAД2 Ї 3Г|‚3Й‚3вІ 63000:‚ GOTO SORT3и•‚3оš‚3ѕЎ… YЋ1ВџЅ(3) Ї DNГ13ћЧ4Ь‚ 4>з… SRГ0 А ECГ0 Ї ECГ255:‡ BB$"* NO SELECTED RECORDS * ";4Mр™"O",1,PC$4Xс‡#1,EC4dт‡#1,MF$4pу‡#1,PN$4|ф‡#1,SS$4‡х‡#1,CP4’ц‡#1,C14ч‡#1,C24Їш‡#1,04Бщ‡#1,04Лъ‡#1,04Сыš4џэ… ECГ0 Ї ‡ @ 416,џЁ(63,32)џЁ(63,8)" * SORT COMPLETED * ";5я‚5Nј… ECГ0 А PN$ДВ"" Ї ‡ @ BOTT,џЁ(63,32)џЁ(63,8)"LOADING PROGRAM ";PN$;5Tљ‚5uњ… PN$ДВ"" А PNГ0 Ї Ž ""ЋPN$ 5{ўŠ5žЦ… DS$Г"T" Ї EX$Г"/" :„ EX$Г"."5ПЫ… џ‡(TF$)В14 Ї ECГ7:Ѕ 600005ваDSГџž(TF$,":")5џк… DS$Г"T" А DSГџ‡(TF$)Ќ1 Ї DV$Гџ(TF$,2)6%ф… DS$Г"C" А DSГ2 Ї DV$ГџŽ (TF$,2)69ю… DSГ0 Ї DV$Г""6d… DS$Г"T" А DV$ДВ"" Ї T1$ГџŽ(TF$,DSЌ1)6— … DS$Г"C" А DV$ДВ"" Ї T1$Гџ(TF$,DSЋ1,џ‡(TF$))6Ў… DV$Г"" Ї T1$ГTF$6і … џž(T1$,EX$) Ї … џž(T1$,EX$)Гџ‡(T1$)Ќ3 Ї T1$ГџŽ(T1$,џž(T1$,EX$)Ќ1)6ќ*7*p™"R",2,MF$:… џЅ(2)ДВ0 Ї š 2:в MF$:Ѕ 600077zECГ1:YГ17F„€ XГ1 Ѕ LA7eŽа 2,EC­5 Ќ5 џЇ DK$,5 џЇ K$7z˜д K$Гџ(A$(X),5)7ЂЂECГECЋ1:… ECВ50 Ї ECГ1:Х #2,Y:YГYЋ17ЈЌ‹7гЖа 2,EC­5Ќ5 џЇ DK$,5 џЇ K$:д K$ГџЁ(5,0)7тРХ #2,Y:š 27шЪ7ј@… A$Г"" Ї 8 J… DS$Г"C" Ї 81008!TA$Г":"Ћџ(A$,1)84^AГџŠ(џ(A$,1))8[h… AД48 Б AВ57 Ї ECГ8:Ѕ 60000 :„ 8oЄA$ГџŽ(A$,1)Ћ":"8‚ИAГџŠ(џŽ(A$,1))8­Т… AВ96 А AД123 Ї AГAЌ32:џ(A$,1)Гџ‹(A)8дЬ… AД65 Б AВ90 Ї ECГ8:Ѕ 60000 :„ 9#(€ XГ2 Ѕ џ‡(A$(LB))Ќ2:џ(A$(LB),X,1)Гџ‹(џ‚(џŠ(џ(A$(LB),X,1))Ќ255)):‹:9RУPECГ0:… ERRЎ2Ћ1Г53 Ї ECГ25:BB$Г" ":RESUME 600009УZ… ERLГ70 Б ERLГ60 Ї ‡ BB$"> CANNOT FIND SORTCMD/DAT/PARAMETER FILE";:Š9СУ_… ERLГ1140 Ї ECГ17:RESUME 600009ђУd… ERRЎ2Ћ1Г54 А ERLГ4346 Ї ECГ20:RESUME 60000:$Уn… ERLГВ1620 А ERL ГД1640 Ї ECГ24:RESUME 60000:JУx… DS$Г"T" Ї … ERRЎ2Ћ1ДВ62 Ї 50500:zУy… DS$Г"C" Ї … ERRЎ2Ћ1ДВ61 А ERRДВ67 Ї 50500:€Уzš:ИУ‚… ERLГ6050 Б ERLГ6080 Б ERLГ6380 Б ERLГ1365 Ї 50100:кУŒ… ERLГ1240 Б ERLГ1245 Ї 50200:ўУ–… ERLГВ4320 А ERLГД4331 Ї 50300; УЊЅ 51000;8УДECГ21:… ERLГ1365 Ї в M1$:в MF$: :„ в MF$;IУН… IO Ї ECГ26;ZУОRESUME 60000;jФECГ22:в M1$;{Ф!… IO Ї ECГ26;ŒФ"RESUME 60000;ЊФ|ECГ23:в PC$:… DS$Г"T" Ї Š;ЛФ†… IO Ї ECГ26;ЬФRESUME 60000;юХD… ERRЎ2Ћ1Г58 Ї IOГ1:Ѕ 50042<&Ч8ECГ0Ќ(ERRЎ2Ћ1):… ERLГВ500 А ERLД4300 Ї RESUME 60000 UNDEFINED ERROR - [";EC;"] ":Š ";<„ъt… ECВ16 Б ECВ200 Ї 60500<ЉъФ‡ "SORTCMD/DAT PARAMETER ERROR";<ЖъЮЅ 62000<ЫьTˆ ERROR Ѕ 50000=юH… ECГ18 Ї ‡"MASTER FILE NOT FOUND / NO RECORDS";=1юI… ECГ17 Ї ‡"SRTOV3/V10 SORT FILE NOT FOUND";=WюR… ECГ19 Ї ‡"INSUFFICIENT MEMORY";=‡ю\… ECГ20 Ї ‡"CALLING PROGRAM NOT FOUND";:‡:Š=Сюf… ECГ21 Б ECГ22 Б ECГ23 Ї ‡"INSUFFICIENT DISK SPACE";=йюk:ƒIF EC=23 THEN END>юp… ECГ24 Ї ‡"PARAMETERS DO NOT MATCH MASTER FILE";>Jюz… ECГ25 Ї ‡"BASIC NOT OPENED WITH 3 FILE BUFFERS";:‡:Š>|ю„… ECГ26 Ї ‡"DISK I/O ERROR / CHECK DISK";:‡:Š>ЊюŽ… ECВ200 А ERLГВ500 Ї ‡"UNDEFINED ERROR";>Пђ0‡" - [";EC;"] ";>Ъі‚ SORT>мі"€ IPГ1 Ѕ LAЌ1>яі,€ JPГIPЋ1 Ѕ LA? і1… A$(JP)ВГA$(IP) Ї 63050?<і6X1$ГA$(IP):A$(IP)ГA$(JP): A$(JP)ГX1$?JіJ‹ JP:‹ IP?PіTГ26 Ї ‡"DISK I/O ERROR / CHECK DISK";:‡:Š>ЊюŽ… ECВ200 А ERLГВ500 Ї ‡"UNDEFINED ERROR";>Пђ0‡" - [";EC;"] ";>Ъі‚ SORT>мі"€ IPГ1 Ѕ LAЌ1>яі,€ JPГIPЋ1 Ѕ LA? і1… A$(JP)ВГAџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџthe maximum number of lines that could be printed in your letter, form or label. ^k; 8 1/2 X 11 standard letter size paper has 66 lines per page. 8 1/2 X 14 legal size paper has 84 lines per sheet. 7/8 or 1" label has 6 lines per label. #10 envelope has 25 lines. ^k; ^k* REPORT WIDTH Next, you will need to enter the Width that you want for the report in you created program. This Width is expressed in characters per line. The maximum of 80 is allowed with the Color Computer. This will permit you to design Free Form Reports on forms that are the Width of a letter size, i.e. 8 1/2 inches wide. Of course, you may enter a Width that is less than the maximum allowed. ^k* DESIGNING THE REPORT You'll be able to Design your Report using a method similar to the one you used to Design your Screen when creating your Filing Programs. You will see a form appear on the screen that looks like this: ^k; 1 2 3 4 5 6 7 . . (E)dit Report, (P)rint Report Layout, (L)ook at Record Layout, (D)one - ^k; We show only 7 lines in the example above, however, there are as many as you screen will permit. Each number displayed down the left hand side of you screen corresponds to the same line number on your report. The options at the Bottom of the Screen are: ^k; E - Edit the Report P - Print the Report layout L - Look at Record layout D - Done (with the Report design) ^k; ^k* EDITING REPORT LAYOUT FORM If you choose E, then you will be able to Edit the Report Layout. You will see the message: ^k; "What line do you want to work on (1-n)" ^k; ....displayed at the bottom of the screen. The letter "n" is the number of lines that you entered previously as the maximum number of lines for the report. You may enter any number between 1 and n. When you do, you will see the cursor go to the number of the line that you entered, or you may press and the options will be displayed again at the bottom of the screen. Once you are on the line that you entered, you may type in anything that you want printed on that line in your report. Whatever you type will appear in your report jus as you type it. You will be in what is called the TEXT MODE. Of course, you will want to enter some Fields of data from you files into the reports that you create. ^kN rinted on that line in your report. Whateve = 140 SKEY= INT(255/(KL+6)) 150 BLANK$= STRING$( 30,32) 155 ' 160 RC = 0 165 DC = 0 170 RB$= "" 175 SB$= "Я" 701 PRINT " DISK INVENTORY" 702 PRINT "" 703 PRINT " NAME ............... EXT ..." 704 PRINT " DISK # .... TYPE ...." 705 PRINT "" 706 PRINT "" 707 PRINT "" 708 PRINT "" 709 PRINT "" 710 PRINT "" 711 PRINT "" 712 PRINT "" 713 PRINT "" 4103 ' 4104 ' 4105 'FIELD NUMBER 1 IS NAME OF PROG 4110 'FIELD LENGTH IS 15 4115 'FIELD TYPE IS A 4120 PRINT @ 70 ,"...............";:PRINT @ 70 ,""; 4125 FL = 15 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$( 15 -LEN(F$( 1 )),32) 4152 PRINT @ 70 , F$( 1 ); 4158 K$= F$( 1 ) 4203 ' 4204 ' 4205 'FIELD NUMBER 2 IS EXT OF PROG 4210 'FIELD LENGTH IS 3 4215 'FIELD TYPE IS A 4220 PRINT @ 90 ,"...";:PRINT @ 90 ,""; 4225 FL = 3 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$( 3 -LEN(F$( 2 )),32) 4252 PRINT @ 90 , F$( 2 ); 4303 ' 4304 ' 4305 'FIELD NUMBER 3 IS DISK # OF PROG 4310 'FIELD LENGTH IS 4 4315 'FIELD TYPE IS N 4320 PRINT @ 104 ,"....";:PRINT @ 104 ,""; 4325 FL = 4 4330 TY$ = "N" 4335 GOSUB 21000 4340 IF LEN(T$)=0 THEN 4350 4342 IF ASC(T$)=60 THEN 4205 4343 GOSUB 23000: ' .. NUMERIC CHECK SUB ROUTINE ... 4344 IF N=0 THEN GOSUB 55000 :GOTO 4305 4345 F$( 3 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4350 F$( 3 ) = F$( 3 ) + STRING$( 4 -LEN(F$( 3 )),32) 4352 PRINT @ 104 , F$( 3 ); 4353 F( 3 ) = VAL(F$( 3 )) 4403 ' 4404 ' 4405 'FIELD NUMBER 4 IS TYPE OF PROG 4410 'FIELD LENGTH IS 4 4415 'FIELD TYPE IS A 4420 PRINT @ 116 ,"....";:PRINT @ 116 ,""; 4425 FL = 4 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 I 16 CARRT/DAT 3 CARRT 0 ,"AADRS-....................", ,D, , 64 ,"BCR-..", ,D, , 128 ,"CCOMMENT:...", ,D, , 192 ,"D", ,D, , 256 ,"E", ,D, , 320 ,"F", ,D, , 384 ,"G", ,D, , 448 ,"H", ,D, , 512 ,"I", ,D, , 576 ,"J", ,D, , 640 ,"K", ,D, , 704 ,"L", ,D, , 768 ,"M", ,D, , 5 ,, 20 ,A,R,,"1", 35 ,, 2 ,N,K,##,"2", 72 ,, 3 ,A,R,,"3", :...", ,D, , 192 ,"D", ,D, , 256 ,"E", ,D, , 320 ,"F", ,D, , 384 ,"G", ,D, , 448 ,"H", ,D, , 512 ,"I", ,D, , 576 ,"J", ,D, , 640 ,"K", ,DID$(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" - 20 ' 25 ' 110 V1$= "CARRT/DAT": ' .. MASTER FILE NAME ... 112 V2$= "CARRT/ISI":' .. KEY FILE NAME ... 120 RL = 25 : ' ..... RECORD LENGTH ... 125 KL = 2 : ' ..... KEY LENGTH .... 130 T = 3 : ' ... 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 "ADRS-...................." 702 PRINT "CR-.." 703 PRINT "COMMENT:..." 704 PRINT "" 705 PRINT "" 706 PRINT "" 707 PRINT "" 708 PRINT "" 709 PRINT "" 710 PRINT "" 711 PRINT "" 712 PRINT "" 713 PRINT "" 4103 ' 4104 ' 4105 'FIELD NUMBER 1 IS 1 4110 'FIELD LENGTH IS 20 4115 'FIELD TYPE IS A 4120 PRINT @ 5 ,"....................";:PRINT @ 5 ,""; 4125 FL = 20 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$( 20 -LEN(F$( 1 )),32) 4152 PRINT @ 5 , F$( 1 ); 4203 ' 4204 ' 4205 'FIELD NUMBER 2 IS 2 4210 'FIELD LENGTH IS 2 4215 'FIELD TYPE IS N 4220 PRINT @ 35 ,"..";:PRINT @ 35 ,""; 4225 FL = 2 4230 TY$ = "N" 4235 GOSUB 21000 4240 IF LEN(T$)=0 THEN 4250 4242 IF ASC(T$)=60 THEN 4105 4243 GOSUB 23000: ' .. NUMERIC CHECK SUB ROUTINE ... 4244 IF N=0 THEN GOSUB 55000 :GOTO 4205 4245 F$( 2 ) = T$ : ' MOVE INKEY VARIABLE TO FIELD 4250 F$( 2 ) = F$( 2 ) + STRING$( 2 -LEN(F$( 2 )),32) 4252 PRINT @ 35 , F$( 2 ); 4253 F( 2 ) = VAL(F$( 2 )) 4258 K$= F$( 2 ) 4303 ' 4304 ' 4305 'FIELD NUMBER 3 IS 3 4310 'FIELD LENGTH IS 3 4315 'FIELD TYPE IS A 4320 PRINT @ 72 ,"...";:PRINT @ 72 ,""; 4325 FL = 3 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$( 3 -LEN(F$( 3 )),32) 4352 PRINT @ 72 , F$( 3 ); 9801 R$ = R$ + F$( 1 ) 9802 R$ = R$ + F$( 2 ) 9803 R$ = R$ + F$( 3 ) 301 DIM CP( 3 ),FL( 3 ),TY$( 3 ) 302 FL(1)=20:CP(1)=5:TY$(1)="A" 303 FL(2)=2:CP(2)=35:TY$(2)="N" 304 FL(3)=3:CP(3)=72:TY$(3)="A" 15060 FL = 2 15065 PRINT @ 35 ,STRING$(FL,46);:PRINT @ 35 ,""; 15070 TY$ = "N" 15100 GOSUB 21000 15110 IF LEN(T$)=0 THEN 700:'.RETURN TO MAINLINE IF NULL ENTRY 15120 GOSUB 23000 :' TEST FOR NUMERIC 15130 IF N=0 THEN GOSUB 55000:GOTO 15000 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 , 20 ) 15410 F$( 2 ) = MID$(FR$, 21 , 2 ) 15420 F$( 3 ) = MID$(FR$, 23 , 3 ) 17002 F( 2 ) = VAL(F$( 2 )) 17502 PRINT @ 5 ,F$( 1 ); 17504 PRINT @ 35 ,"";:PRINT USING "##";F( 2 ); 17506 PRINT @ 72 ,F$( 3 ); 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 CARRT <----- 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 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 53000ERED (E,L OR G)";:FLГ1:І 21000N2А'… T$Г"" Ї 45090NUА,… џŠ(T$)В90 Ї T$Гџ‹(џŠ(T$)Ќ32)NƒА1CP Г џž(" ELGelg",T$)Ќ1: … CPВ3 Ї CPГCPЌ3NЉА6… CPД1 Б CPВ3 Ї ‡ џ‹(7);:Ѕ 45090NАА;‚ NПА@XГ1:Ф #1,XOАE… T$Г"N" Ї ‡ @ BOTT,BK$;"press any key to stop search - ";:Ѕ 45130OАJ:ƒO:АO… џЅ(1)ГXЌ1 Ї 700 :„ Ф #1,X : XГXЋ1OUАT… FR$ГџЁ(RL,0) Ї 45135OАY… BFГ0 Ї RS$Гџ(FR$,FP,FL(FC)):Ѕ 45160OОА^… FCГBF Ї RS$Гџ(FR$,FB,255)Ћџ(FR1$,FL(FC)ЌFB):Ѕ 45160OчАc… FCВBF Ї RS$Гџ(FR1$,FPЌ255,FL(FC))P Аhˆ CP Ѕ 45165,45175,45185,45195PАm:ƒEQUALPJАr… џ‰(RS$)Гџ‰(SS$) Ї І 15390:Ѕ 45210 :„ 45200PUАw:ƒLESSPˆА|… џ‰(RS$)Дџ‰(SS$) Ї І 15390:Ѕ 45210 :„ 45200P–А:ƒGREATERPЩА†… џ‰(RS$)Вџ‰(SS$) Ї І 15390:Ѕ 45210 :„ 45200PћА‹… џž(RS$,SS$)ДВ0 Ї І 15390:Ѕ 45210 :„ 45200QА… џ’ДВ"" Ї 700QА•Ѕ 45130QPАš‡ @ BOTT,BK$;"EXT, TOP - ";:FLГ1:І 21000Q™АŸ… T$Г"N" Ї ‡ @ BOTT,BK$;"press any key to stop search - ";:Ѕ 45130QЌАЄ… T$Г"S" Ї 700QЙАЎЅ 45210QіЯ‚ COLOR COMPUTER DOES NOT PERMIT ERROR TRAPSQќв№‚Rвњ‚RгT‚RгИ‚RжиŽR,ъ`:ƒ ..... TIME DELAYR>ъj€ Z Г 1 Ѕ 700RFъt‹ ZRLъ~0Q™АŸ… T$Г"N" Ї ‡ @ BOTT,BK$;"press any key to stop search - ";:Ѕ 45130QЌАЄ… T$Г"S" Ї 700QЙАЎЅ 45210QіЯ‚ COLOR COMPUTER DOES NOT PERMIT ERROR TRAPSQќв№‚R 20 REM 25 REM 110 V1$= "PHONEBK/DAT": REM .. MASTER FILE NAME ... 112 V2$= "PHONEBK/ISI":REM .. KEY FILE NAME ... 120 RL = 109 : REM ..... RECORD LENGTH ... 125 KL = 12 : REM ..... KEY LENGTH .... 130 T = 9 : 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$= " MY PHONE BOOK" 177 FF$=CHR$(12): REM *** FORM FEED CODE 179 PL = 55 200 PN$ = "NUMBERS" 301 DIM CP( 9 ),FL( 9 ),TY$( 9 ) 302 FL( 1)= 12 :CP( 1)= 74:TY$( 1)="A" 303 FL( 2)= 10 :CP( 2)= 107:TY$( 2)="A" 304 FL( 3)= 22 :CP( 3)= 136:TY$( 3)="A" 305 FL( 4)= 12 :CP( 4)= 165:TY$( 4)="A" 306 FL( 5)= 2 :CP( 5)= 184:TY$( 5)="A" 307 FL( 6)= 5 :CP( 6)= 201:TY$( 6)="A" 308 FL( 7)= 12 :CP( 7)= 267:TY$( 7)="A" 309 FL( 8)= 12 :CP( 8)= 299:TY$( 8)="A" 310 FL( 9)= 22 :CP( 9)= 360:TY$( 9)="A" 701 PRINT CL$; 702 PRINT " PHONE BOOK" 703 PRINT "" 704 PRINT "LAST NAME:............" 705 PRINT "FIRST NAME:.........." 706 PRINT "ADDRESS:......................" 707 PRINT "CITY:............ STATE:.." 708 PRINT "ZIP CODE:....." 709 PRINT "" 710 PRINT "HOME PHONE:............" 711 PRINT "WORK PHONE:............" 712 PRINT "" 713 PRINT "COMMENT:......................" 714 PRINT "" 15060 FL = 12 15065 PRINT @ BOTT,BK$;"ENTER ONE 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 , 12 ) 15410 F$( 2 ) = MID$(FR$, 13 , 10 ) 15420 F$( 3 ) = MID$(FR$, 23 , 22 ) 15430 F$( 4 ) = MID$(FR$, 45 , 12 ) 15440 F$( 5 ) = MID$(FR$, 57 , 2 ) 15450 F$( 6 ) = MID$(FR$, 59 , 5 ) 15460 F$( 7 ) = MID$(FR$, 64 , 12 ) 15470 F$( 8 ) = MID$(FR$, 76 , 12 ) 15480 F$( 9 ) = MID$(FR$, 88 , 22 ) 17502 PRINT #-2, STRING$( 0 ,32); F$( 1 ); 17504 PRINT #-2, STRING$( 1 ,32); F$( 2 ); 17506 PRINT #-2, STRING$( 1 ,32); F$( 3 ); 17508 PRINT #-2, STRING$( 1 ,32); F$( 4 ); 17510 PRINT #-2, STRING$( 1 ,32); F$( 5 ); 17512 PRINT #-2, " ":LC=LC-1 17514 PRINT #-2, STRING$( 0 ,32); F$( 6 ); 17516 PRINT #-2, STRING$( 3 ,32); F$( 7 ); 17518 PRINT #-2, STRING$( 3 ,32); F$( 8 ); 17520 PRINT #-2, STRING$( 3 ,32); F$( 9 ); 17522 PRINT #-2, " ":LC=LC-1 18560 GOTO 15320 25012 PRINT #-2, STRING$( 0 ,32);"ONE"; 25014 PRINT #-2, STRING$( 10 ,32);"TWO"; 25016 PRINT #-2, STRING$( 8 ,32);"THREE"; 25018 PRINT #-2, STRING$( 18 ,32);"FOUR"; 25020 PRINT #-2, STRING$( 9 ,32);"FI"; 25022 PRINT #-2, " " 25024 PRINT #-2, STRING$( 0 ,32);"SIX"; 25026 PRINT #-2, STRING$( 5 ,32);"SEVEN"; 25028 PRINT #-2, STRING$( 10 ,32);"EIGHT"; 25030 PRINT #-2, STRING$( 10 ,32);"NINE"; 25032 PRINT #-2, " " 25180 PRINT #-2, STRING$( 65 ,61) 25008 PRINT #-2, HE$;CHR$(32);CHR$(32);"PAGE - " ;PG 28000 REM TOTAL OUT AND LAST LINE SUBROUTINE 28005 PRINT #-2, STRING$( 65 ,61) 28012 PRINT #-2, " " 28014 PRINT #-2, " " 28016 RETURN 50 REM . . . . ---> Program Name is NUMBERS <----- 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 APS 53005 REM 53010 REM 5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ

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. џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххХЩЩ 0УФСЧ!Ф#$ЦЦ'Т)*+,-.ШС1534Х6СџџџџџџџџџџџџџQUIKMENUBASџШRANDWRT џQP5 BASoQUIKPRT4BAS(ХRANDPRT NEWџjV10B џТQUIKIDEXBASџПQXDOC3 џ еQUIKDOC3 џ"єHELPFUL BASџ%рQUIKDOK BASџ&гSORT V102T###########/QUIKPRO TXTџ дQUIKPRO1TXTџмARRT SCRџ7gARRT BASџ8Иџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџхххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх 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" џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 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&'‚&j•2400:A$Гџ‹(0):T$Г"":L$Г"":QT$Гџ‹(34):Œ KI$:Œ K0:KI$ГџЁ(255,0)&zSB$Гџ‹(232)&ˆRB$Гџ‹(8)&’ SCГ13&œ SWГ31&Б 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(Lњ…CH$Г"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"Z2Г8:І 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)-";:Z2Г1:І16000+Ц+… T$Г"N" Ї 560+к,… T$ДВ"Y" Ї 550,I-‡ @ BOTT,BK$;"ENTER FIELD NUMBER TO ELIMINATE - ";:Z2Г3:І 16000:… џ‰(T$)Д1 Б џ‰(T$)ВU Ї ‡ џ‹(7);:Ѕ 550,x.Z7$(џ‰(T$))Г"0":‡ @ Z1(џ‰(T$)),"*";:Ѕ 550,„0Ѕ 9760,Špž,дž,œ€XГ1ЅSC,Ї8‡A$(X),Ўœ‹X,џЮ… UГ0 Ї ‡ @ BOTT,BK$;"> YOU HAVE NO INPUT FIELDS <";:  30,3:І 50000:Ѕ 800- €XГ1ЅU-'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";:Z2Г1:І 16000. l… T$Г"C" Б T$Г"c" Ї 550.Cv… T$Г"F" Б T$Г"f" Ї LBГ1:І 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):KFIELГY/]&&… Z7$(Y)Г"0" Ї 9780/—&(… LBГ1 Ї V2$Г џ(V1$,1, џž(V1$,"/")Ќ1)Ћ"/ISI":Ѕ 9780/Я&*‡@ BOTT,BK$;"ENTER HEADING FOR FIELD # ";Y;" ->";/ю&/Z2ГZ2(Y):І16000:Z5$(Y)ГT$/є&2‚0&4‹ Y:… LBГ1 Ї І 20000:Ѕ 101000u&5‡ @ BOTT,BK$;"PRESS ENTER WHEN YOU ARE READY TO ENTER THE REPORT HEADING";:Z2Г1:І 160000&6‡ @ BOTT,BK$;:Z2ГSW:І 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 )-";:Z2Г3:І 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? - ";:Z2Г3:І 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§'LPГ1:€ Y Г 1 Ѕ U: … Z7$(Y)Г"0" Ї 100703D'$… U(LP)ЋZ2(Y)Ћ1ВPW Ї U2(LP)Гџ((PWЌ(U(LP)ЌU1(LP)))ЎU1(LP)):LPГLPЋ13z'.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Й'j‚3Р'o:ƒ3Ц't‚3з'u… LB Ї 105004!'y‡ @ BOTT,BK$;"DO YOU WANT TO TOTAL ANY FIELDS (Y/N): ";:Z2Г1:І 1600047'~… T$ДВ"Y" Ї 105004ƒ'ˆ‡ @ BOTT,BK$;"ENTER A FIELD NUMBER TO BE TOTALED: ";:Z2Г2:І 160004н'… T$Г"" Ї ‡ @ BOTT,BK$;"ARE YOU DONE (Y/N) ";:Z2Г1:І 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Л+LNГ20:‡#1,LN;"REM "6д+LNГ25:‡#1,LN;"REM "7!+LNГ110:‡#1,LN;" V1$= ";џ‹(34);V1$;џ‹(34);": REM .. MASTER FILE NAME ..."7j+LNГ112:‡#1,LN;" V2$= ";џ‹(34);V2$;џ‹(34);":REM .. KEY FILE NAME ..."7Њ+*LNГ120:‡#1,LN;"RL = ";RL ;": REM ..... RECORD LENGTH ..."7ш+>LNГ125:‡#1,LN;"KL = ";KL ;": REM ..... KEY LENGTH ...."8(+RLNГ130:‡#1,LN;" T = ";U;": REM ... TOTAL NUMBER OF FIELDS "8J+TLNГ135:‡#1,LN;" HOME$ = ";B2$8z+WLNГ140:‡#1,LN;" SUBKEY = INT(255/(KL +6)) "8“+XLNГ145:‡#1,LN;" REM"8Џ+YLNГ150:‡#1,LN;" = ";B1$8ы+ZLNГ155:‡ #1,LN;" BK$= STRING$(63,32)+STRING$(63,8); "9+[LNГ160:‡ #1,LN;"REM "9/+\LNГ165:‡ #1,LN;"BLANK$ = BK$" 9\+]LNГ170:‡#1,LN;" RB$= ";џ‹(34);RB$;џ‹(34)9‰+^LNГ175:‡#1,LN;" SB$= ";џ‹(34);SB$;џ‹(34)9Й+aLNГ176:‡ #1, LN ; "HE$= ";џ‹(34);HE$;џ‹(34)9є+bLNГ177:‡ #1, LN"FF$=CHR$(12): REM *** FORM FEED CODE":+cLNГ179:‡ #1, LN;"PL = ";PL:+d‚:+e‚:%,~‚:+.Ў‚:2.р:ƒ:S.хLNГ200:‡ #1,LN"PN$ = "Q$J$Q$:„.ъLNГ301:‡ #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);%.ўLNГLNЋ1:‡ #1,LN;"FL("X$")="Z2(X)":CP("X$")="џˆ(Z1(X))":TY$("X$")="Q$TZ$Q$;-/‹ X;8/DLNГ701;Q/I‡ #1,LN;"PRINT CL$;";b/N€ X Г 1 Ѕ SC;˜/XLNГLNЋ1:‡ #1,LN;"PRINT "Q$џ(A$(X),2,џ‡(A$(X)))Q$; /b‹ X;І6А‚;Ќ6Е‚;В6К‚;и6ФLNГ15060:‡#1,LN;"FL = ";Z2(KFIEL)&7LNГ15200:‡#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 "?7…Z2$(KFIEL)Г"A"БZ2$(KFIEL)Г"N"ЇLNГ15210:‡#1,LN;"K$ = K$ + STRING$(FL-LEN(K$),32): REM . . LEFT JUST & PAD "?*7LNГ15220:‡#1,LN;"K$ = CHR$(94) + K$"?l7(LNГ15300:‡#1,LN;"REM . . . . . LOCATE RECORD . . . . . . ."?ˆ72LNГ15310:‡#1,LN;"P = 0"?Љ77LNГ15315:‡#1,LN;"KREC = 1 "@7 END OF FILE <---";џ‹(34);";:GOSUB 28000:GOSUB 60000:GOTO 4000"@л7PLNГ15340:‡#1,LN;"REM . . . . GET RECORD FROM MASTER FILE . . . ."@љ7ZLNГ15350:‡#1,LN;"KR$=KS$"A7_LNГ15355:‡#1,LN;"KREC = X "AF7dLNГ15360:‡#1,LN;"P = INSTR(P+1,KR$,K$)"A|7nLNГ15370:‡#1,LN;"LR = VAL(MID$(KR$,P+LEN(K$),5))A7xLNГ15380:‡#1,LN;"GET #1,LR "Aн7‚LNГ15390:‡#1,LN;"REM . . . SUBDIVIDE & PRINT RECORD . . . "Aц7–FTГ1Aё7 €XГ1ЅUAў7ЊLNГ10ЋLNB$7О… Z3$(X)Г"D" Б Z3$(X)Г"I" Ї 14320BX7м‡#1,LN;"F$(";X;") = MID$(FR$,";FT;",";Z2(X);")"Bh7цFTГFTЋZ2(X)Bo7№‹XB|7њLNГ17000B”8€ X Г 1 Ѕ U:LNГLNЋ1Bђ8… 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 Ї LNГLNЋ2:‡ #1,LN;" T(";X;") = T(";X;") + F(";X;")"C…8‹ XCж8… LBГ1 Ї І 62000:Ѕ 14480: :„ LNГ17500:€YГ1ЅLP:TBГ0:€XГ1ЅU:… U(Y)Г0 Ї 14375Cђ8… џ‰(Z7$(X))ДВY Ї 14370Cў8LNГLNЋ2D†8… Z2$(X)Г"N" А џ‰(Z7$(X))ГY Ї ‡ #1,LN;"PRINT #-2, STRING$(";TB;",32);:PRINT #-2,USING ";џ‹(34);Z4$(X);џ‹(34);";F(";X;");":Ѕ 14365DЯ8… џ‰(Z7$(X))ГY Ї ‡#1,LN;" PRINT #-2, STRING$(";TB;",32); F$(";X;");"Dм8TBГU2(Y)Dф8"‹ XE&8$LNГLNЋ2:‡ #1,LN;"PRINT #-2, ";џ‹(34);џ‹(32);џ‹(34);":LC=LC-1"E38'TBГ1:‹ YEd8LNГ18560:‡ #1,LN;" GOTO 15320 ":… LB Ї 14813Ej8›‚Ep8œ‚Ev8Є‚Eˆ8жU(5)Г0:U(6)Г0E•9:LNГ25010EЇ9;U(5)Г0:U(6)Г0EН9=€ Y Г 1 Ѕ LP:TBГ0EЭ9?€ X Г 1 Ѕ UFJ9D… џ‰(Z7$(X))ГY Ї LNГLNЋ2:‡ #1,LN;" PRINT #-2, STRING$(";TB;",32);";џ‹(34);Z5$(X);џ‹(34);";":TBГU2(Y)ЋZ2(X)Ќџ‡(Z5$(X))FR9I‹ XFŠ9NLNГLNЋ2:‡ #1,LN;" PRINT #-2, ";џ‹(34);џ‹(32);џ‹(34)F’9X‹ YFЧ9bLNГ25180:‡ #1,LN;"PRINT #-2, STRING$(";PW;",61)"G"9lLNГ25008:‡ #1, LN;" PRINT #-2, HE$;CHR$(32);CHR$(32);";џ‹(34);"PAGE - ";џ‹(34);" ;PG "G)9а:ƒGУ9нLNГ28000:… LBГ1 Ї ‡#1,LN;"RETURN": Ѕ 14850 : :„ ‡ #1,LN;" REM TOTAL OUT AND LAST LINE SUBROUTINE ":LNГ28005:‡ #1,LN;" PRINT #-2, STRING$(";PW;",61)Gа9оLNГ28010Gц9р€ Y Г 1 Ѕ LP:TBГ0Gі9т€ X Г 1 Ѕ UH9ф:ƒ IF Z8(X)=-1 THEN 14827H79ц… џ‰(Z7$(X))ДВY Ї 14828Hc9ч… Z8(X)ГЌ1 Ї TBГU2(Y)ЋZ2(X)ЋTB:Ѕ 14828Ho9шLNГLNЋ2Hа9ъ‡ #1,LN;"PRINT #-2, STRING$(";TB;",32);:PRINT #-2, USING ";џ‹(34);Z4$(X);џ‹(34);";T(";X;");"Hн9ыTBГU2(Y)Hх9ь‹ XI9юLNГLNЋ2:‡ #1,LN;" PRINT #-2, ";џ‹(34);џ‹(32);џ‹(34)I%9№‹ YID9ђLNГLNЋ2:‡ #1,LN;" RETURN "Ij:… LBГ1 Ї LNГ25003:‡#1,LN;"RETURN"Iv<ŒЅ20010I|<‚I„>€:ƒ*IŠ>‚I’>‚:ƒ*IЈ>ƒ… Z2В255 Ї Z2Г255Iг>„A$Гџ‹(0): џ(KI$,1,255)ГџЁ(255,0):K0Г0Iц>…џ(A$,1)Гџ‹(0)J8>Ї SB$;:€ QXГ1Ѕ12:‹ QX:‡ RB$;:€ XГ1 Ѕ 25:џ(A$,1)Гџ’:… џŠ(A$) Ї Ѕ 16100 :„ ‹J>>”‚JK>ВЅ 16010Jc>ф… џŠ(A$)Д32 Ї 16500JŸ>ј… K0ГZ2 Ї 16005 :„ K0ГK0Ћ1:џ(KI$,K0)ГA$:‡ A$;:Ѕ 16005JЛ@s:ƒ Handle Control CodesJС@t‚Jя@~… џŠ(A$)Г8 А K0 Ї K0ГK0Ќ1:‡ BS$;:Ѕ 16005K@и… џŠ(A$)Г13 Ї 16900KA<… џŠ(A$)Г21 Ї 16900K,A Ѕ 16005K;B:ƒ Return KMBT$ГџŽ(KI$,K0)KTB@:ƒKZB^K`N ‚KfN!‚KЇN%‡@ BOTT,BK$;џ‹(7);"Give your new Report program a name - ";KЮN&Z2Г8:І16000:J$ГT$:… T$Г"" Ї 20005LNN(€XГ1Ѕџ‡(J$):…џ(J$,X,1)Д"A"Бџ(J$,X,1)В"Z"Ї‡ @ BOTT,BK$;"PROGRAM NAME MUST CONTAIN ONLY CAPITAL LETTERS ";:І50000:Ѕ20000LXN)‹ X:LТN*LNГ50:‡#1,LN;" REM . . . . ---> Program Name is ";J$;" <----- ":‡@ BOTT,BK$;"---> WAIT <---";џ‹(7);LиN+Ѕ21020:™"O",2,J$LъN,™"I",1,"TEMP"LћN/…џŒ(1)Ї21000MN4Л‰#1,A$MN>‡#2,A$MNHЅ20015M%Rš1MBR…CH$Г"2"Ї™"I",1,"SEQWRT"MdR…CH$Г"1"Ї™"I",2,"RANDPRT/NEW"MƒR‡ @ BOTT,BK$;"ALMOST DONE"M•R!…џŒ(2)Ї 21300MЁR&Л‰#2,A$MЌR:‡#1,A$MИRDЅ21025MОS4‚MФS9šMЪS>‚MаSH‚MжSM‚MмS˜‚MтS‚N SЂ™"O",1,"SORT/V10" : ™"I",2,"V10B/"NSЌ… џŒ(2) Ї 21450N3SЖЛ ‰#2,A$ : ‡#1,A$N@SРЅ 21420NFSЪšNЭU№ž:š:‡ "YOUR REPORT PROGRAM HAS BEEN SUCCESSFULLY CREATED ":І 63400:‡:‡ "PRESS TO CONTINUE";:Z2Г1:І 16000:Ž "QUIKMENU"Nгu0‚Nрu1… LB Ї O/u5‡ @ BOTT,BK$;"DO YOU WANT TO PRINT OUT A PRINT WORKSHEET (Y/N) ? - ";OTu6Z2Г1:І16000:R$ГT$:…R$Г"Y"Ї32000Omu7…R$Г"N"Ї32600:„30005OСu8‡ #Ќ2,"0 ";:€XГ10ЅSWSTEP10:‡ #Ќ2,џ(џˆ(X),2,1);" ";:‹X:‡ #Ќ2,""Oіu9€XГ1ЅSW:‡ #Ќ2,џ(џˆ(X),џ‡(џˆ(X)),1);:‹X:‡ #Ќ2,""Pu:€XГ1ЅSCPu?‡ #Ќ2," "P)uD‡ #Ќ2,џ‹(64ЋX);A$(X)P0uN‹XP=uO‡ #Ќ2,""PruS€XГ1ЅSW:‡ #Ќ2,џ(џˆ(X),џ‡(џˆ(X)),1);:‹X:‡ #Ќ2,""PЙuU‡ #Ќ2," ":‡ #Ќ2," ":‡ #Ќ2,"Print Worksheet for Program Name - ";J$PШuW‡ #Ќ2, FF$PЮuXPдub‚Pкuc‚Pр}‚Pђ}U(5)Г0:U(6)Г0Q} ‡ #Ќ2, FF$Q}‡ #Ќ2, " "Q}‡ #Ќ2, HE$Q.}(‡ #Ќ2, " "Q=}2‡ #Ќ2, " "QS}<€ Y Г 1 Ѕ LP:TBГ0Qd}F€ X Г 1 Ѕ UQЌ}H… џ‰(Z7$(X))ГY Ї ‡ #Ќ2, џЁ(TB,32);Z5$(X);:TBГU2(Y)ЋZ2(X)Ќџ‡(Z5$(X))QД}Z‹ XQУ}d‡ #Ќ2, " "QЫ~,‹ YQх~‡ #Ќ2, " ":‡ #Ќ2, " "Qї~ТU(5)Г0:U(6)Г0R~є€ Y Г 1 Ѕ LP:TBГ0:€ 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 Ї TBГU2(Y)RЭ0‹ X:‡ #Ќ2, " ":TBГ1:‹ YRм:‡ #Ќ2, FF$RтXSœ@‡ @ BOTT,BK$"PRESS TO CONTINUE";SœE‰D$SœJŽS3УP€ Z Г 1 Ѕ 900:‹ ZS9УZSZюH:ƒ FREE FORM REPORTING '''''T юR‡ @ BOTT,BK$"HOW LONG IS YOUR FORM OR LABEL IN NUMBER OF LINES-MAX IS 99 ";:Z2Г2:І 16000: PLГџ‰(T$):… PLД1 Б PLВ99 Ї ‡ @ BOTT,BK$"MUST BE BETWEEN 1 & 99";:І 50000:Ѕ 61010TТю\‡ @ BOTT,BK$"WHAT IS THE WIDTH OF YOUR REPORT ( 1 TO 77) CHARACTERS ";:Z2Г2:І 16000:PWГџ‰(T$):… PWД1 Б PWВ77 Ї ‡ @ BOTT,BK$"MUST BE A NUMBER BETWEEN 1 & 77";:І 50000:Ѕ 61020TЬюf‡ CL$Uюp… PLДSC Ї Œ SC$(SC),SP$(SC) :„ Œ SC$(PL),SP$(PL)UюzDU$ГџЁ(PW,32)U ю„І 61600U•юŽ… CLГ0 Ї ‡ @ BOTT,BK$;"DIT REPORT,