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
180 LL = (CL(NC) +NC): PRINT D$"OPEN"N$",L"LL",D"D1: DIM BC(RR),PC(NC +5),A$(NC),S$(RC),H$(NC),CL%(NC),BB(RC),SE(20),C(20,20),DT$(20,20),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 5652
290 PRINT OF$LL",D"D1: FOR I = 1 TO X1:B1 = CL(C(X3,L) -1): PRINT RF$BB(I)",B"B1: CALL 783:S$(I) = MID$ (TE$,1): NEXT : PRINT CL$: RETURN
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 5620
4030 IF P$ = " POS" THEN HOME : FLASH : PRINT CHR$(7): VTAB 12: HTAB 11: PRINT "TURN ON PRINTER !!": NORMAL : PRINT CHR$(7)
4040 B = 0: GOTO 380
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 340: GOTO 4055
4057 IF V$ = "V" THEN 4090
4060 HOME : GOSUB 350: PRINT
4070 INPUT "PRINT FIELD NAMES (Y/N) ? ";A$: IF A$ < >"Y" AND A$ < >"N" OR A$ = "" THEN PRINT CHR$(7);: GOSUB 340: 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 340: 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 340: GOTO 4120
4130 PRINT
4135 INPUT "NUMBER LINES (Y/N) ? ";WN$: IF WN$ < >"Y" AND WN$ < >"N" THEN PRINT CHR$(7);: GOSUB 340: 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 340: GOTO 4140
4150 PRINT : IF W3$ = "V" THEN 4200
4155 IF V$ = "V" THEN H1 = 1: GOTO 4195
4160 HOME : GOSUB 350: 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 350: PRINT
4200 GOSUB 360: PRINT "FIELD SELECTION-ENTER '0' WHEN FINISHED": GOSUB 360: 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 340: 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 340: GOTO 4360
5060 HTAB 16: INPUT "WHICH: ";W9$: IF W9$ < >"" THEN IF ASC(W9$) = 17 THEN 5652
5070 IF W9$ <"1" OR W9$ >"2" THEN PRINT CHR$(7);: GOSUB 340: GOTO 5060
5080 IF W9$ = "2" THEN PRINT : GOTO 5110
5090 PRINT
5100 INPUT "REGULAR OR INTERNAL SEARCH (R/I) ? ";Z2$: IF Z2$ < >"R" AND Z2$ < >"I" THEN PRINT CHR$(7);: GOSUB 340: GOTO 5100
5110 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
5120 HTAB 16: INPUT "WHICH: ";Z3$: IF Z3$ <"1" OR Z3$ >"2" THEN PRINT CHR$(7);: GOSUB 340: GOTO 5120
5121 FOR X5 = 1 TO 20: HOME : IF Z3$ = "1" THEN HTAB 3: PRINT "ENTER <0> FOR LEVELS WHEN FINISHED": GOSUB 360: HTAB 6: PRINT "SEARCH >"X5"< OF >20< POSSIBLE": GOSUB 360: GOTO 5124
5123 INVERSE : HTAB 9: PRINT "ONLY ONE SEARCH ALLOWED": NORMAL
5124 IF NC >19 THEN 5130
5125 VTAB 6: PRINT "SEARCH HOW MANY LEVELS (0-"NC") ";: INPUT SE(X5): IF SE(X5) <0 OR SE(X5) >NC THEN PRINT CHR$(7): GOTO 5125
5126 IF SE(X5) = 0 THEN X5 = X5 -1: GOTO 5220
5127 IF NC <20 THEN 5140
5130 VTAB 6: INPUT "SEARCH HOW MANY LEVELS (0-20) ? ";SE(X5): IF SE(X5) <0 OR SE(X5) >20 THEN PRINT CHR$(7): GOTO 5130
5135 IF SE(X5) = 0 THEN X5 = X5 -1: GOTO 5220
5140 HOME : GOSUB 350: GOSUB 360: HTAB 11: PRINT "SEARCHING "SE(X5)" LEVEL/S": GOSUB 360: FOR Y = SA TO SE(X5)
5150 PRINT "FOR LEVEL# "Y" SEARCH FIELD #: ";: INPUT C(X5,Y): IF C(X5,Y) <1 OR C(X5,Y) >NC THEN PRINT CHR$(7);: GOSUB 340: GOTO 5150
5180 INPUT "ALL CORRECT (Y/N) ? ";Z$: IF Z$ < >"N" AND Z$ < >"Y" THEN PRINT CHR$(7);: GOSUB 340: GOTO 5180
5190 PRINT
5200 IF Z$ = "N" THEN PRINT "RESTART AT LEVEL # (1-"SE(X5)"): ";: INPUT SA: IF SA <1 OR SA >SE(X5) THEN PRINT CHR$(7);: GOSUB 340: GOTO 5200
5210 IF Z$ = "N" THEN HOME : PRINT : GOTO 5140
5215 IF Z3$ = "1" THEN HOME : NEXT X5
5220 GOSUB 4000: FOR X3 = 1 TO X5:X2 = RC:X1 = 0: VTAB 8: HTAB 9: PRINT "SEARCHING FOR ENTRY # "X3: FOR L = 1 TO SE(X3): CALL 37896: GOSUB 370: IF L = 1 THEN C = C(X3,L): GOSUB 270: GOTO 5260
5240 IF X1 <1 THEN HOME : GOTO 5590
5250 GOSUB 290:X2 = X1:X6 = X6 -X1:X1 = 00
5260 VTAB 12: PRINT TAB( 9)"> SEARCHING LEVEL "L" <":PA = LEN(DT$(X3,L)): IF PA <1 THEN PA = 1
5280 FOR RS = 1 TO X2: IF Z2$ = "I" THEN 5660
5300 IF W9$ = "2" THEN 5400
5310 IF Z3$ = "2" THEN 5360
5320 IF LEFT$(S$(RS),PA) = DT$(X3,L) THEN X1 = X1 +1:X6 = X6 +1: GOTO 5340
5330 GOTO 5560
5340 IF L <2 THEN BB(X1) = RS:BC(X6) = RS: GOTO 5560
5350 BB(X1) = BB(RS):BC(X6) = BB(RS): GOTO 5560
5360 IF LEFT$(S$(RS),PA) < >DT$(X3,L) THEN X1 = X1 +1:X6 = X6 +1: GOTO 5380
5370 GOTO 5560
5380 IF L <2 THEN BB(X1) = RS:BC(X6) = RS: GOTO 5560
5390 BB(X1) = BB(RS):BC(X6) = BB(RS): GOTO 5560
5400 IF Z3$ = "2" THEN 5450
5410 IF S$(RS) = DT$(X3,L) THEN X1 = X1 +1:X6 = X6 +1: GOTO 5430
5420 GOTO 5560
5430 IF L <2 THEN BB(X1) = RS:BC(X6) = RS: GOTO 5560
5440 BB(X1) = BB(RS):BC(X6) = BB(RS): GOTO 5560
5450 IF S$(RS) < >DT$(X3,L) THEN X1 = X1 +1:X6 = X6 +1: GOTO 5470
5460 GOTO 5560
5470 IF L <2 THEN BB(X1) = RS:BC(X6) = RS: GOTO 5560
5480 BB(X1) = BB(RS):BC(X6) = BB(RS): GOTO 5560
5490 HOME : FOR L = 1 TO X6:RS = BC(L): GOSUB 300: IF P$ = "N" THEN 5530
5520 GOSUB 230: GOSUB 2000: GOTO 5540
5530 GOSUB 3000
5540 NEXT L:FL = 1: GOSUB 960: FOR XT = 1 TO NC:X4(XT) = 0: NEXT : GOTO 5600
5560 NEXT RS: NEXT L
5590 NEXT X3: IF X6 <1 THEN HOME : GOTO 5620
5595 GOTO 5490
5600 IF P$ = "N" OR A$ = "N" THEN 5620
5610 GOSUB 250
5620 PRINT : PRINT CHR$(7): INVERSE : PRINT "FINISHED!";: NORMAL : PRINT " A)NOTHER,R)ESTART,'RTN' MENU";: GET Z$: IF Z$ = "A" THEN PG = 0:CK = 0:LN = 0:S = 0:NO = 0: HOME : PRINT : GOTO 5490
5630 IF B = 0 THEN GOSUB 520
5650 IF Z$ = "R" THEN 5000
5652 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$
5654 HOME : VTAB 12: HTAB 11: PRINT ">> LOADING MENU <<"
5656 PRINT D$"RUN MENU,D1"
5660 F = LEN(S$(RS)): FOR X4 = 1 TO F: IF Z3$ = "2" THEN 5740
5690 IF MID$ (S$(RS),X4,PA) = DT$(X3,L) THEN 5720
5700 NEXT X4: IF Z3$ = "1" THEN 5560
5720 X1 = X1 +1:X6 = X6 +1: IF L <2 THEN BB(X1) = RS:BC(X6) = RS: GOTO 5560