80 PRINT TAB( 3)"* UNIV. DATA MANAGEMENT SYSTEM 4.0 *": PRINT TAB( 6)"COPYRIGHT 1980 BY W.L.PASSAUER": RETURN
100 D1 = PEEK(864):P$ = CHR$( PEEK(865)):P1$ = CHR$( PEEK(866)):S$ = STR$( PEEK(867)):I = PEEK(868): FOR X = 869 TO I +868:N$ = N$ + CHR$( PEEK(X)): NEXT
120 RF$ = D$ +"READ" +N$ +",R":OF$ = D$ +"OPEN" +N$ +",L":CL$ = D$ +"CLOSE": IF D1 = 1 THEN HOME : PRINT CHR$(7): VTAB 12: HTAB 4: PRINT "LOAD ";: INVERSE : PRINT "DATA DISK";: NORMAL : PRINT " THEN PRESS 'RTN'";: GET Z$
140 PRINT : PRINT D$"OPEN"N$".V,D"D1: PRINT D$"READ"N$".V": INPUT NC,RC,RR: DIM CL(NC): FOR X = 1 TO NC: INPUT CL(X): NEXT :LL = (CL(NC) +NC): PRINT D$"OPEN"N$",L"LL",D"D1: DIM PC(NC +5),A$(NC),S$(RC),DT$(RC),H$(NC),CL%(NC),SH$(50),X4(NC),X5(NC)
190 FOR X = 1 TO NC:B1 = CL(X -1): PRINT D$"READ"N$",R"0",B"B1: CALL 783:H$(X) = MID$ (TE$,1): NEXT : PRINT D$"CLOSE": FOR X = 1 TO NC:CL%(X) = CL(X) -CL(X -1) -1: NEXT : GOSUB 40
220 PRINT CHR$(7): GOTO 5000
230 PRINT D$"PR#"F8: IF F8 = 3 AND NOT D6 THEN PRINT :D6 = 1
231 IF CT$ < >"" THEN PRINT CT$;
232 RETURN
240 PRINT D$"PR#"MO: RETURN
250 IF V$ = "V" OR S < >0 THEN 260
252 GOSUB 230: FOR LF = LN TO LI: IF LF$ = "Y" THEN PRINT CHR$(10): GOTO 257
255 PRINT
257 NEXT : IF F3$ = "Y" THEN PG = PG +1: PRINT TAB( TB)"PAGE-";PG: GOSUB 240: RETURN
260 GOSUB 240: RETURN
270 ONERR GOTO 285
280 PRINT : PRINT OF$LL",D"D1: FOR I = 1 TO RC:B1 = CL(C -1): PRINT RF$I",B"B1: CALL 783:S$(I) = MID$ (TE$,1): NEXT : PRINT CL$: POKE 216,0: RETURN
285 POKE 216,0: GOSUB 240: PRINT CHR$(7): HOME : VTAB 12: PRINT "DISK ERROR-RECORD ";: INVERSE : PRINT I;: NORMAL : PRINT " MAY BE BAD": PRINT "PRESS 'RTN'";: GET Z$: GOTO 5612
290 ONERR GOTO 325
300 PRINT OF$LL",D"D1: FOR X = 1 TO NC:B1 = CL(X -1): IF X = 1 AND F7$ = "Y" AND C1 = >CP -1 AND (P$ = "N" OR P$ = "") THEN PRINT
2905 IF S1 -Q = <0 THEN PRINT : GOSUB 240: POP : HOME : PRINT CHR$(7);: VTAB 12: PRINT "NO.TOO LARGE TO JUSTIFY ERROR!": PRINT "PRESS 'RTN'";: GET Z$: GOTO 5580
4030 IF P$ = "Y" THEN HOME : FLASH : PRINT CHR$(7): VTAB 12: HTAB 11: PRINT "TURN ON PRINTER !!": NORMAL : PRINT CHR$(7)
4040 B = 0: GOTO 370
4050 POKE 216,0: IF B = 1 THEN 4370
4055 IF P$ = "Y" THEN HOME : INPUT "PRINT RECORDS HORIZ./VERT. (H/V)? ";V$: IF V$ < >"H" AND V$ < >"V" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4055
4057 IF V$ = "V" THEN 4090
4060 HOME : GOSUB 340: PRINT
4070 INPUT "PRINT FIELD NAMES (Y/N) ? ";A$: IF A$ < >"Y" AND A$ < >"N" OR A$ = "" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4070
4080 IF A$ = "N" OR P$ = "N" THEN 4110
4090 PRINT
4100 INPUT "PRINT FILE TITLE (Y/N) ? ";F5$: IF F5$ < >"Y" AND F5$ < >"N" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4100
4110 PRINT
4120 IF P$ = "N" AND A$ = "Y" THEN INPUT "PRINT RECORDS HORIZ./VERT. (H/V)? ";W3$: IF W3$ < >"H" AND W3$ < >"V" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4120
4130 PRINT
4135 INPUT "NUMBER LINES (Y/N) ? ";WN$: IF WN$ < >"Y" AND WN$ < >"N" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4135
4137 IF WN$ = "Y" THEN 4150
4139 PRINT
4140 INPUT "PRINT RECORD NUMBERS (Y/N) ? ";W2$: IF W2$ < >"Y" AND W2$ < >"N" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4140
4150 PRINT : IF W3$ = "V" THEN 4200
4155 IF V$ = "V" THEN H1 = 1: GOTO 4195
4160 HOME : GOSUB 340: PRINT
4170 PRINT "PRINT HOW MANY FIELDS HORIZONTALLY": PRINT "BEFORE CARRIAGE RETURN ";: INPUT H1: IF H1 <1 OR H1 >NC +5 THEN PRINT CHR$(7);:CV = PEEK(37): POKE 37,(CV -2): CALL -958: GOTO 4170
4190 PRINT
4195 IF V$ = "V" THEN HOME : GOSUB 340: PRINT
4200 GOSUB 350: PRINT "FIELD SELECTION-ENTER '0' WHEN FINISHED": GOSUB 350: PRINT :CP = 0: FOR CP = 1 TO NC +5
4220 PRINT "PRINT WHICH FIELD #: ";: INPUT PC(CP): IF PC(CP) = 0 THEN 4260
4240 IF PC(CP) >NC THEN PRINT CHR$(7): PRINT "INPUT TO HIGH!!": GOTO 4220
4250 NEXT
4260 IF CP -1 <H1 THEN PRINT CHR$(7): HOME : VTAB 11: PRINT "YOU SELECTED TO PRINT "H1" FIELDS": PRINT "ACROSS, BUT ONLY CHOSE TO PRINT "CP -1: PRINT "FIELDS, PRESS 'RTN' TO TRY AGAIN. ";: GET Z$: HOME : GOTO 4170
4270 IF W3$ = "V" THEN 4370
4280 IF CP >NC THEN 4300
4290 IF PC(CP) = 0 AND CP = H1 +1 THEN 4370
4300 IF H1 = CP -1 THEN 4370
4305 IF V$ = "V" THEN 4370
4310 PRINT : IF A$ = "N" OR P$ = "N" THEN 4340
4320 INPUT "USE WRAP AROUND OPTION (Y/N) ? ";WR$: IF WR$ < >"Y" AND WR$ < >"N" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4320
4330 IF WR$ = "Y" THEN 4370
4340 PRINT : IF A$ = "N" AND P$ = "N" THEN 4370
4360 IF H1 = <CP -1 THEN INPUT "USE UNDERNEATH FORMATTING (Y/N) ? ";F7$: IF F7$ < >"Y" AND F7$ < >"N" THEN PRINT CHR$(7);: GOSUB 330: GOTO 4360
5120 HTAB 16: INPUT "WHICH: ";W9$: IF W9$ <"1" OR W9$ >"2" THEN PRINT CHR$(7);: GOSUB 330: GOTO 5120
5130 IF W9$ = "2" THEN PRINT : GOTO 5160
5140 PRINT
5150 INPUT "REGULAR OR INTERNAL SEARCH (R/I) ? ";Z2$: IF Z2$ < >"R" AND Z2$ < >"I" THEN PRINT CHR$(7);: GOSUB 330: GOTO 5150
5160 HOME : VTAB 7: HTAB 10: PRINT "* PRINT-OUT ITEMS *": PRINT : HTAB 9: PRINT "1- EQUAL TO ENTRY": HTAB 9: PRINT "2- NOT EQUAL TO ENTRY": PRINT
5170 HTAB 16: INPUT "WHICH: ";Z3$: IF Z3$ <"1" OR Z3$ >"2" THEN PRINT CHR$(7);: GOSUB 330: GOTO 5170
5171 IF P1$ = "N" THEN Z4$ = "N": GOTO 5180
5172 PRINT : INPUT "USE SUBHEADINGS (Y/N) ? ";Z4$: IF Z4$ < >"Y" AND Z4$ < >"N" THEN PRINT CHR$(7);: GOSUB 330: GOTO 5172
5180 IF Z3$ = "2" THEN PRINT : HTAB 2: INVERSE : PRINT "> YOU MAY SEARCH FOR ONLY ONE ITEM <": NORMAL
5190 IF Z3$ = "1" THEN HOME
5200 IF Z3$ = "1" OR Z$ = "Y" THEN PRINT TAB( 6)"PRESS <CTRL-Q> WHEN FINISHED": GOSUB 350:CV = PEEK(37): POKE 34,CV
5210 FOR SL = 1 TO RC: IF Z4$ = "Y" AND SL <51 THEN PRINT : PRINT "ENTER SUBHEADING OR <CTRL-Q>:":L = CO -4: GOSUB 800:SH$(SL) = B$:SH = SH +1: PRINT : IF SH$(SL) = CHR$(17) THEN SH = SH -1:SL = SL -1: TEXT : GOTO 5280
5221 PRINT : IF Z$ = "N" THEN PRINT "CHOICE ";SL;" ";:L = CL%(C): GOSUB 800:DT$(SL) = B$: GOSUB 950: IF DT$(SL) = CHR$(17) THEN SL = SL -1: TEXT : GOTO 5280
5230 IF Z$ = "N" THEN 5260
5240 PRINT "CHOICE ";SL;" ";: INPUT DT$(SL): IF DT$(SL) = CHR$(17) THEN SL = SL -1: TEXT : GOTO 5280
5250 IF Z$ = "Y" AND VAL(DT$(SL)) <1 OR VAL(DT$(SL)) >RC THEN PRINT CHR$(7);: GOSUB 330: GOTO 5240
5260 IF Z3$ = "2" THEN TEXT : GOTO 5280
5270 NEXT
5280 GOSUB 4000
5290 IF Z$ = "Y" THEN HOME : GOTO 5330
5305 IF C = SE THEN 5320
5310 GOSUB 360: GOSUB 270: HOME
5320 FX = 1: VTAB 12: HTAB 14: PRINT "> SEARCHING <":SE = C: IF Z2$ = "I" THEN 5620
5330 FOR MA = 1 TO SL:FO = 0:PA = LEN(DT$(MA)): IF PA <1 THEN PA = 1
5340 IF Z$ = "Y" THEN RS = VAL(DT$(MA)): GOTO 5495
5350 FOR RS = 1 TO RC: IF W9$ = "2" THEN 5450
5400 IF Z3$ = "2" THEN 5430
5410 IF LEFT$(S$(RS),PA) = DT$(MA) THEN 5495
5420 GOTO 5540
5430 IF LEFT$(S$(RS),PA) < >DT$(MA) THEN 5495
5440 GOTO 5540
5450 IF Z3$ = "2" THEN 5480
5460 IF S$(RS) = DT$(MA) THEN 5495
5470 GOTO 5540
5480 IF S$(RS) < >DT$(MA) THEN 5495
5490 GOTO 5540
5495 IF FX = 1 THEN HOME :FX = 0
5500 GOSUB 290: IF P$ = "N" THEN 5530
5520 GOSUB 230: GOSUB 2000: IF Z$ = "Y" THEN 5550
5525 GOTO 5540
5530 GOSUB 3000: IF Z$ = "Y" THEN 5550
5540 NEXT RS
5545 IF Z$ = "N" AND Z4$ = "N" THEN FL = 2: GOSUB 960: FOR XT = 1 TO NC:X5(XT) = 0: NEXT
5547 IF Z$ = "N" AND Z4$ = "Y" AND MA +1 = <50 THEN IF SH$(MA +1) < >"" THEN FL = 2: GOSUB 960: FOR XT = 1 TO NC:X5(XT) = 0: NEXT : GOTO 5550
5548 IF Z$ = "N" AND Z4$ = "Y" AND MA = SL THEN FL = 2: GOSUB 960: FOR XT = 1 TO NC:X5(XT) = 0: NEXT
5550 NEXT MA
5560 IF P$ = "N" OR A$ = "N" THEN 5580
5565 FK = 1:FL = 1: GOSUB 960: FOR XT = 1 TO NC:X4(XT) = 0: NEXT
5570 GOSUB 250
5580 PRINT : PRINT CHR$(7): INVERSE : PRINT "FINISHED!";: NORMAL : PRINT " A)NOTHER,R)ESTART,'RTN'MENU";: GET ZZ$: IF ZZ$ = "A" THEN PG = 0:CK = 0:LN = 0:S = 0:NO = 0: HOME : PRINT : GOTO 5290
5590 IF B = 0 THEN GOSUB 510
5610 IF ZZ$ = "R" THEN 5000
5612 IF D1 = 1 THEN HOME : PRINT CHR$(7): VTAB 12: HTAB 4: PRINT "LOAD ";: INVERSE : PRINT "REPORT DISK";: NORMAL : PRINT " THEN PRESS 'RTN'";: GET Z$
5614 HOME : VTAB 12: HTAB 11: PRINT ">> LOADING MENU <<"
5616 PRINT D$"RUN MENU,D1"
5620 FOR MA = 1 TO SL:FO = 0:PA = LEN(DT$(MA)): IF PA <1 THEN PA = 1
5640 FOR RS = 1 TO RC:F = LEN(S$(RS)): FOR X = 1 TO F: IF MID$ (S$(RS),X,PA) = DT$(MA) THEN 5710