home *** CD-ROM | disk | FTP | other *** search
Wrap
19 WIDTH "LPT1:", 132 20 REM 25 REM 110 V1$= "C:DBDOS.DAT": REM .. MASTER FILE NAME ... 112 V2$= "C:DBDOS.ISI":REM .. KEY FILE NAME ... 117 KL% = 15 : REM ..... KEY LENGTH .... 118 T = 17 : REM ... TOTAL NUMBER OF FIELDS 119 DIM F$(T), F#(T), CX(T), CY(T), FL(T), TY$(T), K(T), KL(T), FIELDBUFFER$(T), T#(T) 180 BLANK$= STRING$(79,32): HOME$ = CHR$( 11): BOTT$ = HOME$+STRING$(0, 28)+STRING$( 22, 31):PL= 33 : FF$ = CHR$(12) 181 CL$=CHR$( 11)+CHR$( 12)+CHR$( 11):RC= 28 :DC= 31 :RB$=CHR$(32)+CHR$(29):SB$=CHR$(219)+CHR$(29):BS$=CHR$(29)+CHR$(32)+CHR$(29):HE$="" 182 FF$=CHR$(12) 195 PN$ = "C:DBDOSREP" 120 fl( 1 )= 37 :cx( 1 )= 34 :cy( 1 )= 3 :ty$( 1 )="A" 121 fl( 2 )= 15 :cx( 2 )= 4 :cy( 2 )= 4 :ty$( 2 )="A" 122 fl( 3 )= 46 :cx( 3 )= 25 :cy( 3 )= 4 :ty$( 3 )="A" 123 fl( 4 )= 46 :cx( 4 )= 25 :cy( 4 )= 5 :ty$( 4 )="A" 124 fl( 5 )= 8 :cx( 5 )= 25 :cy( 5 )= 6 :ty$( 5 )="A" 125 fl( 6 )= 58 :cx( 6 )= 11 :cy( 6 )= 8 :ty$( 6 )="A" 126 fl( 7 )= 67 :cx( 7 )= 4 :cy( 7 )= 9 :ty$( 7 )="A" 127 fl( 8 )= 67 :cx( 8 )= 4 :cy( 8 )= 10 :ty$( 8 )="A" 128 fl( 9 )= 67 :cx( 9 )= 4 :cy( 9 )= 11 :ty$( 9 )="A" 129 fl( 10 )= 67 :cx( 10 )= 4 :cy( 10 )= 12 :ty$( 10 )="A" 130 fl( 11 )= 67 :cx( 11 )= 4 :cy( 11 )= 13 :ty$( 11 )="A" 131 fl( 12 )= 67 :cx( 12 )= 4 :cy( 12 )= 14 :ty$( 12 )="A" 132 fl( 13 )= 67 :cx( 13 )= 4 :cy( 13 )= 15 :ty$( 13 )="A" 133 fl( 14 )= 67 :cx( 14 )= 4 :cy( 14 )= 16 :ty$( 14 )="A" 134 fl( 15 )= 61 :cx( 15 )= 10 :cy( 15 )= 18 :ty$( 15 )="A" 135 fl( 16 )= 67 :cx( 16 )= 4 :cy( 16 )= 19 :ty$( 16 )="A" 136 fl( 17 )= 67 :cx( 17 )= 4 :cy( 17 )= 20 :ty$( 17 )="A" 701 PRINT CL$; 702 PRINT " D B D O S" 703 PRINT " MS-DOS QUICK REFERENCE DATA BASE" 704 PRINT "╔═══════════════════════════════════════════════════════════════════════╗" 705 PRINT "║ ┌───────────────┐ Purpose: ===================================== ║" 706 PRINT "║ │===============│█ ============================================== ║" 707 PRINT "║ └───────────────┘█ ============================================== ║" 708 PRINT "║ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ======== ╔═╝" 709 PRINT "║ ─────────────── ║" 710 PRINT "║ Syntax: ========================================================== ╚═╗" 711 PRINT "║ =================================================================== ║" 712 PRINT "║ =================================================================== ║" 713 PRINT "║ =================================================================== ║" 714 PRINT "║ =================================================================== ║" 715 PRINT "║ =================================================================== ║" 716 PRINT "║ =================================================================== ║" 717 PRINT "║ =================================================================== ║" 718 PRINT "║ =================================================================== ║" 719 PRINT "║ ──────────────── ║" 720 PRINT "║ Notes: ============================================================= ║" 721 PRINT "║ =================================================================== ║" 722 PRINT "║ =================================================================== ║" 723 PRINT "╚═══════════════════════════════════════════════════════════════════════╝" 15060 FL = 15 15065 PRINT BOTT$;BLANK$;BOTT$ "Enter the key to get...";:PRINT FN CRT$( 4 , 4 );STRING$(FL,46);FN CRT$( 4 , 4 );""; 15070 TY$ = "A" 15100 HELP = 6: GOSUB 21000 15110 IF LEN(T$)=0 THEN 4000:'RETURN TO MAINLINE IF NULL ENTRY 15200 K$=T$+STRING$(KL-LEN(T$),32):'PAD ENTRY & SET TO SEARCH KEY 15211 ' Execute inquiry after reading map file 15220 GOSUB 62500:GOSUB 62000 15230 IF Found THEN GET 1,I ELSE GOTO 700 113 V3$= "C:DBDOS.MAP": REM .. MAP FILE NAME .. 15390 REM . . . SUBDIVIDE & PRINT RECORD . . . 17500 'PRINT RECORD 17502 LPRINT "COMMAND: "F$(2) 17504 LPRINT STRING$(1,10); 17506 LPRINT "PURPOSE: "F$(1) 17508 LPRINT " "F$(3) 17510 LPRINT " "F$(4) 17512 LPRINT STRING$(1,10); 17514 LPRINT "TYPE: "F$(5) 17516 LPRINT STRING$(1,10); 17518 LPRINT "SYNTAX: "F$(6) 17520 LPRINT ""F$(7) 17522 LPRINT ""F$(8) 17524 LPRINT ""F$(9) 17526 LPRINT ""F$(10) 17528 LPRINT ""F$(11) 17530 LPRINT ""F$(12) 17532 LPRINT ""F$(13) 17534 LPRINT ""F$(14) 17536 LPRINT STRING$(1,10); 17538 LPRINT "NOTES: "F$(15) 17540 LPRINT ""F$(16) 17542 LPRINT ""F$(17) 17544 LPRINT "===========================================================================" 17546 LPRINT STRING$(11,10); 28000 LPRINT FF$:PG=0:RETURN 25003 RETURN 50 REM . . . . ---> This program is C:DBDOSREP.BAS <----- 10 CLEAR 5000: DEFINT A-Z: DIM X, Y, Z: KEY OFF: KEY 1, CHR$(27) 11 STARTUP = 1 12 GOSUB 61000 13 DIM MEMLINK$(BUS) 15 ON ERROR GOTO 53000 30 CR$ = "\│/─": BK$ = " " 182 '........ CALCULATE RECORD & KEY LENGTHS 183 FOR X = 1 TO T: IF TY$(X) <> "Z" THEN RL% = RL% + FL(X) 184 IF K(X) = 1 THEN KL(X) = FL(X) 185 NEXT X 186 DEF FNCRT$ (E1, E2) = HOME$ + STRING$(E2, DC) + STRING$(E1, RC) 190 D$ = CHR$(94) + STRING$(KL%, 32) 210 CLOSE FILNUM: OPEN "R", FILNUM, V1$, RL%' Open and Field Master File 211 FOR X = 1 TO 8: BT(X) = 0: NEXT X: BUF = 0 212 BBT = 1: FOR X = 1 TO T: IF TY$(X) = "Z" THEN 216 ELSE BUF = BUF + 1 213 IF FL(X) + BT(BBT) > 255 THEN BBT = BBT + 1 214 FIELD #FILNUM, BT(1) AS D$(1), BT(2) AS D$(2), BT(3) AS D$(3), BT(4) AS D$(4), BT(5) AS D$(5), BT(6) AS D$(6), BT(7) AS D$(7), FL(X) AS F$(X) 215 BT(BBT) = BT(BBT) + FL(X) 216 NEXT X 217 FIELD #FILNUM, BT(1) AS D$(1), BT(2) AS D$(2), BT(3) AS D$(3), BT(4) AS D$(4), BT(5) AS D$(5), BT(6) AS D$(6), BT(7) AS D$(7), BT(8) AS D$(8) 218 '................................... 219 RETURN 298 GOSUB 61000: 'Init BTREE 299 GOSUB 61500: 'Open MAP & ISI 699 ' 700 ' Screen Print 4000 ' Begin Main Line 4001 IF STARTUP THEN HELP = 1: GOSUB 41000: STARTUP = 0 4003 UPDTE$ = "" 4004 FOR X = 1 TO T: T#(X) = 0: NEXT X: ' Clear Field 4005 COLOR 15, 4: LOCATE 25, 1: PRINT "* indicates a field overflow. Press F1 for help. "; : LOCATE 25, 65: PRINT USING "##,###"; NKA; : PRINT " Records"; 4009 PRINT BOTT$; BLANK$; BOTT$; "<G>et Record, <S>earch, Sort, Select, <E>nd "; 4010 TY$ = "A": FL = 1 4015 HELP = 2: GOSUB 21000 4025 IF T$ = "G" OR T$ = "g" THEN UPDTE$ = "YES": GOTO 15000 4030 IF T$ = "E" OR T$ = "e" THEN 40000 4035 IF T$ <> "S" AND T$ <> "s" THEN 4005 4036 IF NKA = 0 THEN PRINT BOTT$; BLANK$; BOTT$; "No Records In Data File."; : GOSUB 60000: GOTO 4000 4037 PRINT BOTT$; BLANK$; BOTT$; "Search in a <F>ield, <A>nywhere or <R>etrieve all records? -"; : Z2 = 1: HELP = 3 4038 GOSUB 21000: IF T$ = "F" OR T$ = "f" THEN GOTO 45000 ELSE IF T$ = "R" OR T$ = "r" THEN 14036 ELSE IF T$ <> "A" AND T$ <> "a" THEN 4005 14000 'String Search 14001 CP = 0 14002 X = 0: LC = 0: PG = 0 14005 UPDTE$ = "S" 14010 PRINT BOTT$; BLANK$; BOTT$; "Type search string - "; : ' Search 14020 FL = 30 14030 TY$ = "A" 14035 HELP = 4: GOSUB 21000: Q$ = T$: IF Q$ = "" THEN GOTO 700 ELSE 14037 14036 Q$ = "": CP = 5: UPDTE$ = "S": X = 0: LC = 0: PG = 0 14037 SS$ = Q$: GOTO 45205: 'Look for sort 14038 PRINT BOTT$; BLANK$; BOTT$; " <S>top - "; 14039 FO = 0 14040 FOR X = 1 TO INT(LOF(1) / RL%): IF INKEY$ <> "" THEN 700 ELSE GET 1, X: FO = 0 14042 IF CP > 0 AND CP < 6 THEN GOSUB 48150: GOTO 14065 14044 FOR ZT = 1 TO T: IF INSTR(F$(ZT), Q$) <> 0 AND FO = 0 THEN 14100 14045 IF INKEY$ <> "" THEN 700 14060 NEXT ZT 14065 NEXT X: GOSUB 28000: GOTO 700 14099 ' 14100 GOSUB 15390: ' Print Record and RETURN 14101 FO = 1 14200 PRINT BOTT$; BLANK$; BOTT$; " <S>top - "; 14250 GOTO 14060 14300 ' ..... remember that you have a line at 18200 ... 14999 ' 15000 ' 15002 ' Get Record 15003 PG = 0: LC = 0: NUMFND = 0 15004 IF INKEY$ <> "" THEN 700 15395 IF LC <= 0 THEN GOSUB 25000 15400 ' 18200 IF UPDTE$ = "S" THEN RETURN 18560 IF FOUND = 0 AND NUMFND = 0 THEN GOTO 700 ELSE IF FOUND <> 0 THEN NUMFND = NUMFND + 1: I = LR: GOSUB 62030: GOTO 15230 ELSE GOSUB 28000: GOTO 700 22999 ' 23000 ' Number Check Routine 23001 ' 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 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 NEXT X 23080 IF INSTR(T$, "-") > 1 THEN PRINT CHR$(7); : GOTO 23100 23090 N = 1 23100 RETURN 24999 ' 25000 ' Print Header 25001 ' 25005 PG = PG + 1 25006 LPRINT FF$ 25007 LPRINT " " 25009 LPRINT " ": LPRINT " " 25200 ' 25300 LC = PL: RETURN 40000 PRINT BOTT$; BLANK$; BOTT$; "Do you really want to end? "; : Z2 = 1: HELP = 999: GOSUB 21000: IF T$ = "N" OR T$ = "n" THEN GOTO 4001 ELSE IF T$ <> "Y" AND T$ <> "y" THEN GOTO 40000 40010 COLOR 7, 0, 0: CLS : PRINT "You have exited your report program" 40020 PRINT "and are now in MS-DOS at the system" 40030 PRINT "prompt." 40040 SYSTEM ' You may branch to another program from here 53000 ' Error Traps 53001 FOR ZX = 1 TO 3: SOUND 1000, 1: SOUND 25000, 1: NEXT ZX 53002 COLOR 14, 4: PRINT BOTT$; BLANK$; BOTT$; 53003 IF ERR = 7 OR ERR = 14 THEN LOCATE 25, 1: PRINT " OUT OF MEMORY (BASIC may not have been started with /S:2048)": END 53004 IF ERR <> 27 AND ERR <> 24 AND ERR <> 25 AND ERR <> 57 AND ERR <> 68 THEN 53009 53006 PRINT "Printer I/O Error. Abort or Retry?"; : Z$ = INPUT$(1): PRINT BOTT$; BLANK$; BOTT$; 53007 IF Z$ = "A" OR Z$ = "a" THEN PRINT "Operation aborted."; : GOTO 53050 53008 IF Z$ <> "R" AND Z$ <> "r" THEN 53006 ELSE PRINT "Retrying..."; : GOTO 53040 53009 IF ERR = 53 THEN PRINT "Your data file or a support file was not found at line"; ERL; ".": END 53010 IF ERR = 61 THEN PRINT "Disk full. No recovery possible. Program aborting.": END 53011 IF ERR = 4 THEN PRINT "Out of DATA. Probably errors in help subroutines.": END 53012 IF ERR = 6 THEN PRINT "Overflow error in line"; ERL; ". No recovery possible. Program aborting.": END 53013 IF ERR = 11 THEN PRINT "There is a division by zero in your computation in line"; ERL; ".": END 53014 IF ERR = 51 THEN PRINT "BASIC Interpreter Error. No recovery possible. Program aborting.": END 53015 IF ERR = 64 THEN PRINT "Illegal filename used in line"; ERL; ". No recovery possible. Program aborting.": END 53016 IF ERR = 67 THEN PRINT "Too many files open. Modify FILES line in CONFIG.SYS.": END 53017 IF ERR = 71 THEN PRINT "Disk not ready. Check drive door. Press ENTER to continue..."; : Z$ = INPUT$(1): GOTO 53040 53018 IF ERR = 72 THEN PRINT "Disk damaged. No recovery possible. Program aborting.": END 53019 IF ERR = 75 OR ERR = 76 THEN PRINT "Path not found. No recovery possible. Program aborting.": END 53020 PRINT "Report program error"; ERR; "trapped at line"; ERL; ". Program aborting.": END 53040 RESUME 53050 ECODE = -1: RESUME NEXT 59999 ' 60000 ' 4 Second Time Delay Loop 60001 ' 60010 COUNT# = TIMER 60020 IF INKEY$ = "" AND TIMER - COUNT# < 4 THEN 60020 60030 RETURN 187 DEF FNM$ (F, R) = STR$(F#(F) + (SGN(F#(F)) * .5#) / (10# ^ R)) + "." + STRING$(R, "0") 188 DEF FNU$ (F, R) = MID$(FNM$(F, R), 1, INSTR(FNM$(F, R), ".") - 1 + (ABS(R <> 0) * (R + 1))) 202 FILNUM = 1: GOSUB 210: GOTO 298 44999 ' 45000 ' Relational Record Selection Prompting 45005 UPDTE$ = "S" 45010 LC = 0 45015 FC = 0: CP = 0: BF = 0 45020 PRINT BOTT$; BLANK$; BOTT$; "Press RETURN to get to the Field you want to Search on ..."; 45025 FL = 1: HELP = 7: GOSUB 21000 45030 PRINT BOTT$; BLANK$; BOTT$; "When you are at the Field you want, 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): LOCATE CY(FC) + 1, CX(FC) + 1 45045 HELP = 8: GOSUB 21000: IF TY$(FC) = "N" THEN GOSUB 23000: IF N = 0 THEN PRINT FNCRT$(CX(FC), CY(FC)); STRING$(FL(FC), "."); : GOTO 45040 45050 IF T$ <> "" THEN 45070 ELSE 45035 45055 ' 45060 ' 45065 ' 45070 SS$ = T$: Q$ = T$ 45075 ' 45080 IF TY$(FC) <> "N" THEN CP = 4: GOTO 45205'sort ? 45083 ' 45084 ' Get Relation on Numeric field 45085 PRINT BOTT$; BLANK$; BOTT$; "The Field you are Searching is a Number Field..."; : GOSUB 60000 45090 PRINT BOTT$; BLANK$; BOTT$; "You may Select Records in your Report that are ... "; : GOSUB 60000 45095 PRINT BOTT$; BLANK$; BOTT$; "<E>qual, <L>ess or <G>reater than the number you entered (Pick E,L or G) - "; : FL = 1: HELP = 9: GOSUB 21000 45100 IF T$ = "" THEN 45095 45105 IF ASC(T$) > 90 THEN T$ = CHR$(ASC(T$) - 32) 45110 CP = INSTR(" ELGelg", T$) - 1: IF CP > 3 THEN CP = CP - 3 45115 IF CP < 1 OR CP > 3 THEN PRINT CHR$(7); : GOTO 45095 45199 ' 45200 ' Look for Sort (QP3SORT.EXE) 45205 IF NKA = 0 THEN T$ = "N": GOTO 45235 ELSE ON ERROR GOTO 45215'look for Sort 45210 OPEN "I", 3, "QP3SORT.EXE": CLOSE 3: GOTO 45230'if found proceed 45215 CLOSE 3: IF ERR = 53 THEN T$ = "N": RESUME 45235'if not found return 45220 IF ERR = 54 THEN RESUME 45230'if BM error proceed 45225 GOTO 53000'error traps 45228 ' 45229 ' Sort prompting if Sort is found 45230 ON ERROR GOTO 53000: SS = 0: PRINT BOTT$; BLANK$; BOTT$; "Do you want your Report in sorted order ? (Y/N)-"; : FL = 1: HELP = 10: GOSUB 21000: IF T$ = "" THEN 45230 45235 IF INSTR("Nn", T$) THEN GOTO 14038 45245 FOR X = 1 TO T: IF TY$(X) = "Z" THEN 45255 ELSE N$ = MID$(STR$(X), 2) 45250 PRINT FNCRT$(CX(X), CY(X)); N$; : IF FL(X) <> 1 THEN PRINT STRING$(FL(X) - LEN(N$), "."); 45260 ' 45265 CLOSE : PRINT BOTT$; BLANK$; BOTT$; "What Field do you want to Sort on ? - "; 45270 FL = 2: HELP = 11: GOSUB 21000: IF T$ = "" OR VAL(T$) < 1 OR VAL(T$) > T THEN 45265 45275 IF TY$(VAL(T$)) = "Z" THEN PRINT BOTT$; BLANK$; BOTT$; "> Cannot Sort on Display Only Fields <"; : GOSUB 60000: GOTO 45230 45280 SO = VAL(T$): KYD = 0 45285 FOR X = 1 TO SO - 1: IF TY$(X) <> "Z" THEN KYD = KYD + FL(X) 45290 NEXT X 45295 KYL = FL(SO) 45300 IF CP THEN PRINT FNCRT$(CX(FC), CY(FC)); SS$ 45304 ' 45310 OPEN "O", #3, "QUIKSORT.CMD" 45314 ' 45320 PRINT #3, V1$: 'Send master file's filename to the sort 45330 PRINT #3, RL%: 'with the record length 45340 PRINT #3, TY$(SO) 'and the field type 45350 PRINT #3, KYL: 'and the key length 45360 PRINT #3, KYD: 'and the key depth 45365 CLOSE 3: 'then close it. 45368 ' 45378 ' 45383 ' 45384 ' RUN Quikpro+ Sort 45385 PRINT BOTT$; BLANK$; BOTT$; " Loading Sort Program ... "; 45390 SHELL "QP3SORT": GOTO 47000 45499 ' 45500 ' Read Record / Test Relation / Print 45501 ' ... if not Sorting 45505 ON ERROR GOTO 53000 45510 X = 1: GET 1, X 45520 PRINT BOTT$; BLANK$; BOTT$; "Press any key to STOP search - "; 45530 ' 45531 GET 1, X: X = X + 1: IF INT(LOF(1) / RL%) < X - 1 THEN GOSUB 28000: GOTO 700 45540 IF F$(FC) = STRING$(FL(FC), 0) THEN 45530 45599 ' 45600 GOSUB 48000 45601 ' 45700 IF INKEY$ <> "" THEN 700 45710 GOTO 45530 46999 ' 47000 'Do that sort thing 47010 ' 47020 OPEN "R", #1, "SRTDLIST.QP3", 2 47030 FIELD #1, 2 AS PNTR$ 47090 IF LOF(1) = 0 THEN CLOSE : KILL "SRTDLIST.QP3": GOTO 47510: 'NO RECORDS! 47110 FILNUM = 2 'Open Master File 47120 GOSUB 210: UPDTE$ = "S" 47130 PRINT BOTT$; BLANK$; BOTT$; "Print in <F>orward or <R>everse order? "; : FL = 1: HELP = 13: GOSUB 21000 47140 IF T$ = "R" OR T$ = "r" THEN INC = -1 ELSE IF T$ <> "F" AND T$ <> "f" THEN 47130 ELSE INC = 1 47148 ' 47149 'Scan master file in sorted order & do that search on the sort thing 47150 MXKY = LOF(1) / 2: MFPTR = 0: IF INC = -1 THEN Y = MXKY + 1: MXKY = 0 ELSE Y = 0: MXKY = MXKY + 1 47170 PP$ = BOTT$ + BLANK$ + BOTT$ + "Scanning for matches & printing... <P>ause, <A>bort, <R>edo - ": PRINT PP$; 47180 Y = Y + INC: IF Y = MXKY THEN GOSUB 28000: GOTO 47260 47185 GET 1, Y: MFPTR = CVI(PNTR$) 47190 GET 2, MFPTR 47200 GOSUB 48000 47220 N$ = INKEY$: IF N$ <> "" THEN 47320' check for interrupt 47240 GOTO 47180 47249 ' 47250 ' another copy / return to program 47260 ' 47265 PRINT BOTT$; BLANK$; BOTT$; " Do you want to print another copy ? (Y/N) - "; 47270 FL = 1: HELP = 12: GOSUB 21000: IF T$ = "" THEN 47270 47280 IF INSTR("Nn", T$) THEN CLOSE : KILL "SRTDLIST.QP3": GOTO 47520 47290 IF INSTR("Yy", T$) THEN LC = 0: PG = 0: GOTO 47150 47300 GOTO 47260 47309 ' 47310 ' Pause / Abort /Redo 47320 N = INSTR("PARpar", N$): IF N > 3 THEN N = N - 3 47330 ON N GOTO 47360, 47390, 47440 47340 GOTO 47220 47350 ' pause 47360 PRINT BOTT$; BLANK$; BOTT$; " PRINTING PAUSED * Press any key to continue - "; 47370 A$ = INKEY$: IF A$ = "" THEN 47370 ELSE N$ = "": PRINT PP$; : GOTO 47240 47380 ' abort 47390 CLOSE 47400 KILL "SRTDLIST.QP3" 47410 GOTO 47520 47420 ' redo 47440 PRINT BOTT$; BLANK$; BOTT$; " REDO REPORT * Press any key to continue - "; 47450 A$ = INKEY$: IF A$ = "" THEN 47450 ELSE LC = 0: PG = 0: GOTO 47150 47459 ' 47460 ' if sort detected error 47470 PRINT BOTT$; BLANK$; BOTT$; "SORT DETECTED ERROR #"; EC!; ", <E>nter to continue -"; 47480 A$ = INKEY$: IF A$ = CHR$(13) THEN 47510 ELSE 47480 47489 ' 47490 'if no PRINTCMD file 47500 RESUME 47510 47510 ON ERROR GOTO 53000 47520 ST = 0: CP = 0: CLOSE : GOTO 202 47999 ' 48000 'BUILD A RELATIONAL LINE ( test & select ) 48011 ' 48080 ON CP GOTO 48150, 48150, 48150, 48180, 48090 48089 GOTO 48110 48090 ' Print all Records 48100 IF F$(1) <> STRING$(FL(1), 0) THEN GOSUB 15390 48109 RETURN 48110 ' Test for String Anywhere in file 48120 MFOUND = 0: FOR ZZ = 1 TO T: IF INSTR(F$(ZZ), SS$) THEN MFOUND = 1 48125 NEXT ZZ: IF MFOUND THEN GOSUB 15390 48130 RETURN 48139 ' 48140 ' Test for Numeric < = > 48150 ON CP GOTO 48151, 48153, 48155, 48180, 48090 48151 IF VAL(F$(FC)) = VAL(SS$) THEN GOSUB 15390 48152 RETURN 48153 IF VAL(F$(FC)) < VAL(SS$) THEN GOSUB 15390 48154 RETURN 48155 IF VAL(F$(FC)) > VAL(SS$) THEN GOSUB 15390 48156 RETURN 48169 ' 48170 ' Test for String in a Field 48180 IF INSTR(F$(FC), SS$) THEN GOSUB 15390 48190 RETURN 48200 ' 15211 ' *** Execute binary tree inquiry after reading map file 15220 GOSUB 62500: GOSUB 62000 15230 IF FOUND THEN GET 1, I ELSE GOTO 700 60999 'Initialize BTree variables 61000 I = 0: ZR = 0: LR = 0: LL = 0: NKT = 0: NKA = 0: W = 0: ROOT = 0 61010 TKL = KL + 5: BUS = 400 61030 RETURN 61500 'Open MAP and ISI files & initialize in-memory link list 61510 OPEN "R", 2, V2$, TKL 61520 FIELD 2, 2 AS LJ$, 2 AS LK$, KL AS KS$, 1 AS DF$ 61530 FIELD 2, TKL AS AM$ 61540 IF LOF(2) / TKL > BUS THEN BUI = BUS ELSE BUI = LOF(2) / TKL 61550 FOR X = 1 TO BUI: GET 2, X: MEMLINK$(X) = AM$: NEXT X 61560 IF LOF(2) = 0 THEN KE = 1 ELSE GOSUB 62500 61570 RETURN 62000 'Binary Tree inquiry 62010 I = ROOT 62020 IF I = ZR THEN FOUND = 0: GOTO 62090 62030 IF I <= BUS THEN LSET AM$ = MEMLINK$(I) ELSE GET 2, I 62040 LL = CVI(LJ$): LR = CVI(LK$): KX$ = KS$: DEL$ = DF$ 62050 IF K$ > KX$ THEN GOTO 62080 62060 IF K$ = KX$ AND DEL$ = "A" THEN FOUND = 1: GOTO 62090 62065 IF K$ = KX$ AND DEL$ = "D" AND LR <> 0 THEN I = LR: GOTO 62030 ELSE IF K$ = KX$ AND DEL$ = "D" THEN FOUND = 0: GOTO 62090 62070 IF LL <> ZR THEN I = LL: GOTO 62030 ELSE FOUND = 0: GOTO 62090 62080 IF LR <> ZR THEN I = LR: GOTO 62030 ELSE FOUND = 0 62090 RETURN 62499 'Open map file & get information, then close 62500 OPEN "R", 3, V3$, 56 62510 FIELD 3, 2 AS RT$, 2 AS NKT$, 2 AS NKA$, 50 AS FD$ 62580 GET 3, 1: ROOT = CVI(RT$): NKT = CVI(NKT$): NKA = CVI(NKA$): KE = NKT + 1 62590 CLOSE 3: RETURN 41000 'HELP SECTION ******************************************* 41010 BSV = &HB800: DEF SEG = &H40: ZZZ = PEEK(&H87): PCX = POS(0): PCY = CSRLIN 41020 IF ZZZ <> 0 THEN GOTO 41040 41030 ZZZ = PEEK(&H10): YYY = ZZZ AND 48: IF YYY = 48 THEN BSV = &HB000 41040 DEF SEG = BSV: BSAVE "$$$$$$$$.$$$", 960, 1440: RESTORE: GOTO 41800 41050 DATA 1,2,"x" 41060 DATA " DBDOS MS-DOS Quick Reference Data Base - V1.0" 41070 DATA " Copyright 1990, CBase Enterprises" 41080 DATA 2,6,"G/S/E" 41090 DATA "* GET" 41100 DATA " Print record(s) read in using key field." 41110 DATA "* SEARCH/SORT/SELECT" 41120 DATA " Print one or more records based on search criteria." 41130 DATA "* END 41140 DATA " Exit the report program." 41150 DATA 3,6,"Search Type" 41160 DATA "* Search in a FIELD" 41170 DATA " Print record if string appears in specified field." 41180 DATA "* Search ANYWHERE" 41190 DATA " Print a record if string appears in record." 41191 DATA "* RETRIEVE All Records" 41192 DATA " Prints every record in the data file." 41200 DATA 4,3,"Search String" 41210 DATA "Type in the string you wish to search for. If this" 41220 DATA "string is found anywhere in the file, the record" 41230 DATA "will be printed." 41270 DATA 6,2,"Get Record" 41280 DATA "The Get command operates on the key field. Enter" 41290 DATA "the key to search for." 41300 DATA 7,3,"Select Field" 41310 DATA "By continually pressing Return you can move the" 41320 DATA "cursor through the fields one by one. Press Return" 41330 DATA "now to move the cursor into the first field." 41340 DATA 8,5,"Selecting Field" 41350 DATA "You are selecting the field to search in. Press" 41360 DATA "Return to move the cursor to the next field up to" 41370 DATA "and through the last one. When it is on the field" 41380 DATA "you want to search, type the data you want searched" 41390 DATA "for and press Return again to begin the search." 41400 DATA 9,4,"E/L/G" 41410 DATA "Since the field you chose to search was a numeric" 41420 DATA "field, during the search, comparisons may be made." 41430 DATA "You can print records that are Equal to, Less than," 41440 DATA "or Greater than the search string you entered." 41450 DATA 10,3,"Sort Data?" 41460 DATA "You have the option of sorting the data before it" 41470 DATA "is printed. Sorting takes place on the field of" 41480 DATA "your choice." 41490 DATA 11,3,"Sort Field" 41500 DATA "Sorting on numeric fields is in ascending order. On" 41510 DATA "non-numeric fields, the sort is in alphabetical" 41520 DATA "order based on the IBM's internal ASCII code table." 41530 DATA 12,1,"Another Copy?" 41540 DATA "You may print the entire report over if necessary." 41541 DATA 13,2,"Reverse Order" 41542 DATA "You may print the records in reverse order (i.e." 41543 DATA "Z-A, 9-0, etc) or ascending order (i.e. A-Z, etc)." 41550 DATA 999,0,"x" 41800 READ HLPNUM, NUMLIN, HLPLBL$ 41810 IF NUMLIN = 0 THEN RESTORE: HELP = 1: GOTO 41800 41820 IF HLPNUM <> HELP THEN FOR TT = 1 TO NUMLIN: READ XX$: NEXT TT: GOTO 41800 41825 IF STARTUP AND HELP THEN HLPLBL$ = PN$ ELSE IF NOT STARTUP AND HELP = 1 THEN HLPLBL$ = "NO HELP FOUND" 41830 COLOR 14, 1: YYY = 12 - INT(NUMLIN / 2) - 1: XXX = 52 - LEN(HLPLBL$) 41840 LOCATE YYY - 1, 13: PRINT CHR$(201); "["; HLPLBL$; "]"; STRING$(XXX, 205); CHR$(187); 41850 FOR TT = 1 TO NUMLIN: READ XX$: IF LEN(XX$) < 52 THEN XX$ = XX$ + SPACE$(52 - LEN(XX$)) 41860 LOCATE YYY + TT - 1, 13: PRINT CHR$(186); " "; XX$; " "; CHR$(186): NEXT TT 41865 LOCATE YYY + NUMLIN, 13: PRINT CHR$(186); : COLOR 15, 1 41866 PRINT " (press any key to continue...) "; : COLOR 14, 1: PRINT CHR$(186); 41870 LOCATE YYY + NUMLIN + 1, 13: PRINT CHR$(200); STRING$(54, 205); CHR$(188); 41880 WHILE INKEY$ = "": WEND 41890 BLOAD "$$$$$$$$.$$$", 960: KILL "$$$$$$$$.$$$" 21000 'Keyboard Scan Routine 21001 ' 21010 LOCATE , , 0: T$ = "": PY = CSRLIN: PX = POS(0): CSP = 0 21020 A$ = INKEY$: IF A$ <> "" THEN 21050 21030 CSP = CSP + 1: IF CSP = 6 THEN CSP = 1 21040 PRINT MID$(CR$, CSP, 1); : LOCATE PY, PX: GOTO 21020 21050 IF A$ = CHR$(27) THEN GOSUB 41000: GOTO 21020 21060 IF A$ = CHR$(8) AND LEN(T$) > 0 THEN PRINT BK$; : PX = PX - 1: LOCATE PY, PX: T$ = LEFT$(T$, LEN(T$) - 1): GOTO 21020 ELSE IF A$ = CHR$(8) THEN T$ = A$: GOTO 21100 21070 IF A$ = CHR$(13) THEN PRINT " "; : GOTO 21100 21080 IF A$ < " " OR A$ > "~" THEN 21020 21090 IF LEN(T$) = FL THEN SOUND 1500, 1: GOTO 21020 ELSE T$ = T$ + A$: PRINT A$; : PX = PX + 1: GOTO 21020 21100 RETURN 9 COLOR 11 , 1 , 1 : 'Colors in lines 45240, 45255, and 41900 45240 IF INSTR(" Yy",T$)=0 THEN 45230 ELSE SS=1:COLOR 14 , 1 45255 NEXT : COLOR 11 , 1 41900 LOCATE PCY, PCX: COLOR 11 , 1 : RETURN 53030 COLOR 11 , 1 : RESUME NEXT 53040 COLOR 11 , 1 : RESUME 53050 COLOR 11 , 1 : RESUME 4000 4006 LOCATE 1,1:COLOR 11 , 1