90 PRINT TAB( 3)"* UNIV. DATA MANAGEMENT SYSTEM 4.0 *": PRINT TAB( 6)"COPYRIGHT 1980 BY W.L.PASSAUER": RETURN
110 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 :RF$ = D$ +"READ" +N$ +",R":OF$ = D$ +"OPEN" +N$ +",L":CL$ = D$ +"CLOSE"
150 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$
160 PRINT : PRINT D$"OPEN"N$".V,D"D1: PRINT D$"READ"N$".V": INPUT NC,RC,RR: DIM CL(NC +10): FOR X = 1 TO NC: INPUT CL(X): NEXT
200 LL = (CL(NC) +NC): PRINT D$"OPEN"N$",L"LL: DIM PC(NC +5),S$(RC),H$(NC),CL%(NC),A$(NC),X4(NC)
220 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 30
240 PRINT CHR$(7);: IF S$ = "12" THEN 5000
270 IF S$ = "20" THEN 7000
280 IF S$ = "10" THEN 9000
290 IF S$ = "19" THEN 6000
300 PRINT D$"PR#"F8: IF F8 = 3 AND NOT D6 THEN PRINT :D6 = 1
301 IF CT$ < >"" THEN PRINT CT$;
302 RETURN
310 PRINT D$"PR#"MO: RETURN
320 IF V$ = "V" OR S < >0 THEN 330
322 GOSUB 300: FOR LF = LN TO LI: IF LF$ = "Y" THEN PRINT CHR$(10): GOTO 327
325 PRINT
327 NEXT : IF F3$ = "Y" THEN PG = PG +1: PRINT TAB( TB)"PAGE-";PG: GOSUB 310: RETURN
330 GOSUB 310: RETURN
340 ONERR GOTO 360
350 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
360 POKE 216,0: GOSUB 310: PRINT CHR$(7): HOME : VTAB 12: PRINT "DISK ERROR-RECORD ";: INVERSE : PRINT I;: NORMAL : PRINT " MAY BE BAD": PRINT "PRESS 'RTN'";: GET Z$: GOTO 1010
790 PRINT D$"OPEN DATA FILES,D1": PRINT D$"READ DATA FILES": INPUT NR: FOR J = 1 TO NR: INPUT R$(J): NEXT : PRINT D$"CLOSE":R$(NR +1) = R$: PRINT D$"OPEN DATA FILES": PRINT D$"WRITE DATA FILES": PRINT NR +1: FOR J = 1 TO NR +1: PRINT R$(J): NEXT : PRINT D$"CLOSE": GOTO 797
795 CALL 1013: PRINT D$"OPEN DATA FILES": PRINT D$"WRITE DATA FILES": PRINT 1: PRINT R$: PRINT D$"CLOSE"
797 POKE 216,0: RETURN
800 B$ = "": PRINT : FOR I = 1 TO L: PRINT "_";: NEXT : VTAB ( PEEK(37) +2 -(L/39.9)): HTAB 1
810 FOR I = 1 TO L +1
820 GET E$
822 IF E$ = CHR$(10) THEN E$ = CHR$(92)
823 IF E$ = CHR$(11) THEN E$ = CHR$(91)
824 IF E$ = CHR$(12) THEN E$ = CHR$(95)
825 IF CL = 1 AND E$ = CHR$(17) THEN B$ = E$: RETURN
830 IF E$ = CHR$(21) THEN 820
840 IF E$ = CHR$(8) THEN GOSUB 890: GOTO 820
850 IF E$ = CHR$(13) THEN PRINT E$;: RETURN
860 PRINT E$;:B$ = B$ +E$: NEXT
870 IF RIGHT$(B$,1) < > CHR$(13) THEN GOSUB 940: GOTO 800
880 RETURN
890 IF I < = 1 THEN RETURN
900 PRINT CHR$(8);"_"; CHR$(8);
910 I = I -1
920 IF I = <1 THEN I = 1:B$ = "": RETURN
930 B$ = LEFT$(B$, LEN(B$) -1): RETURN
940 PRINT CHR$(7): INVERSE : HTAB 10: PRINT "ENTRY IS TOO LONG": NORMAL : RETURN
1010 HOME : GOSUB 90: PRINT :TA = 20 -( LEN(N$)/2): HTAB TA: INVERSE : PRINT N$: NORMAL : PRINT : PRINT TAB( 6)"MENU SELECTION LIST (REPORT)": PRINT
1060 PRINT "10-DISK SPACE";: HTAB 22: PRINT "21-DELETE A FORMAT": PRINT "11-INITIALIZE A DISK";: HTAB 22: PRINT "22-SELECT A FILE": PRINT : HTAB 17: PRINT "0-EXIT"
1070 VTAB (22): HTAB 16: INPUT "WHICH: ";S$: IF S$ = "" THEN PRINT CHR$(7): GOSUB 560: GOTO 1070
1080 S = VAL(S$): IF S = 1 OR S = 3 OR S = 4 OR S = 8 OR S = 9 OR S = 21 OR S = 22 THEN D7$ = "REPORT": GOTO 1120
1085 IF S = 12 OR S = 19 OR S = 20 OR S = 10 THEN 1150
1087 D7$ = "UTILITY": IF S >11 THEN D7$ = "REPORT"
1090 IF ASC(S$) = 48 THEN PRINT CHR$(7): HOME : VTAB 10: HTAB 7: PRINT "NICE WORKING WITH YOU....": PRINT : PRINT "PLEASE PLACE AN ";: INVERSE : PRINT "<APPLE BOOT>";: NORMAL : PRINT " DISKETTE INTO DRIVE #1 AND PRESS 'RTN'";: GET Z$: PRINT : PRINT D$"PR#6"
1100 IF S <1 OR S >22 THEN PRINT CHR$(7): GOSUB 380: GOTO 1070
1105 ONERR GOTO 1290
1112 IF D1 = 2 AND S <12 THEN PRINT CHR$(7): HOME : VTAB 11: HTAB 2: PRINT "LOAD ";: INVERSE : PRINT "UTILITY";: NORMAL : PRINT " PROGRAM DISK INTO DRIVE #1": HTAB 12: PRINT "THEN PRESS 'RTN'";: GET Z$: PRINT
1120 IF D1 = 1 THEN HOME : PRINT CHR$(7): VTAB 11: HTAB 8: PRINT "LOAD ";: INVERSE : PRINT D7$;: NORMAL : PRINT " PROGRAM DISK": HTAB 12: PRINT " THEN PRESS 'RTN'";: GET Z$
2905 IF S1 -Q = <0 THEN PRINT : GOSUB 310: POP : HOME : PRINT CHR$(7);: VTAB 12: PRINT "NO.TOO LARGE TO JUSTIFY ERROR!": PRINT "PRESS 'RTN'";: GET Z$: GOTO 1010
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 430
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 380: GOTO 4055
4057 IF V$ = "V" THEN 4090
4060 HOME : GOSUB 400: PRINT
4070 INPUT "PRINT FIELD NAMES (Y/N) ? ";A$: IF A$ < >"Y" AND A$ < >"N" OR A$ = "" THEN PRINT CHR$(7);: GOSUB 380: 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 380: 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 380: GOTO 4120
4130 PRINT
4135 INPUT "NUMBER LINES (Y/N) ? ";WN$: IF WN$ < >"Y" AND WN$ < >"N" THEN PRINT CHR$(7);: GOSUB 380: 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 380: GOTO 4140
4150 PRINT : IF W3$ = "V" THEN 4200
4155 IF V$ = "V" THEN H1 = 1: GOTO 4195
4160 HOME : GOSUB 400: 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 400: PRINT
4200 GOSUB 410: PRINT "FIELD SELECTION-ENTER '0' WHEN FINISHED": GOSUB 410: 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 380: 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 380: GOTO 4360
4370 HOME : RETURN
5000 CALL 37896: REM
5010 D6 = 0:RT = RC:LG = 0:PG = 0:CK = 0:LN = 0: FOR X = 1 TO NC:X4(X) = 0: NEXT : HOME : PRINT TAB( 9)"= LIST RECORDS ROUTINE =": GOSUB 410: PRINT : PRINT "FOR ";RC;" RECORDS:": PRINT : PRINT "START AT WHAT RECORD # 1";: HTAB 24: INPUT "";LG$: IF LG$ < >"" THEN IF ASC(LG$) = 17 THEN TEXT : GOTO 1010
5020 IF LG$ = "" THEN LG = 1: VTAB 6: HTAB 24: PRINT 1: PRINT : GOTO 5032
5030 PRINT :LG = VAL(LG$): IF LG <1 OR LG >RC THEN PRINT CHR$(7);: GOTO 5010
5032 PRINT "TO RECORD # "RC;: HTAB 13: INPUT "";FR$: IF FR$ = "" THEN FR = RC: GOTO 5035
5034 FR = VAL(FR$): IF FR <LG OR FR >RC THEN PRINT CHR$(7);: GOSUB 380: GOTO 5032
5035 GOSUB 4000
5037 ONERR GOTO 5230
5040 PRINT OF$LL",D"D1: FOR RS = LG TO FR: IF C1 >CP AND WR$ < >"Y" THEN PRINT
5080 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
5100 PRINT RF$RS",B"B1: CALL 783:A$(X) = MID$ (TE$,1): NEXT : IF P$ = "N" THEN 5140
5120 GOSUB 300: GOSUB 2000: GOTO 5150
5140 GOSUB 3000
5150 NEXT : PRINT CL$: POKE 216,0: IF P$ = "N" OR A$ = "N" THEN 5190
5155 F0 = 0:FL = 0:FM = 0:FK = 0: IF A$ < >"Y" OR TF$ = "N" THEN 5180
5160 FOR XT = 1 TO NC: IF RIGHT$(H$(XT),1) = " " THEN A$(XT) = STR$(X4(XT)): GOTO 5164
5162 A$(XT) = " "
5164 NEXT
5165 FOR XT = 1 TO NC: IF RIGHT$(H$(XT),1) < >" " THEN 5178
5175 IF LN = LI THEN GOSUB 300:F0 = 1:FM = 1: GOSUB 300: GOSUB 2780: GOSUB 2000:S = 0: GOSUB 320: GOTO 5180
5176 IF LN = LI -2 THEN GOSUB 300: GOSUB 2000:F0 = 1: GOTO 5180
5177 GOSUB 300: GOSUB 2000: GOTO 5180
5178 NEXT XT
5180 FL = 0:FM = 0:FK = 0: IF F0 = 0 THEN GOSUB 320
5185 F0 = 0
5190 PRINT CHR$(7): INVERSE : PRINT "FINISHED!";: NORMAL : PRINT " A)NOTHER COPY, 'RTN' TO MENU";: GET Z$: IF Z$ = "A" THEN PG = 0:CK = 0:LN = 0:S = 0:NO = 0: FOR X = 1 TO NC:X4(X) = 0: NEXT : HOME : PRINT : GOTO 5040
5200 IF B = 0 THEN GOSUB 570
5220 GOTO 1010
5230 I = RS: GOTO 360
6000 CALL 37896: REM
6005 E = 0: HOME : PRINT TAB( 13)"* INDEX FIELD *": GOSUB 410: VTAB 9: HTAB 11: PRINT "* LIST OCCURRENCES *": PRINT : HTAB 16: PRINT "1- FIRST": HTAB 16: PRINT "2- ALL": HTAB 16: PRINT "3- NUMBER OF": PRINT : HTAB 13: INPUT "WHICH (1-3): ";Z$
6007 IF Z$ < >"" THEN IF Z$ = CHR$(17) THEN 1010
6008 A = VAL(Z$): IF A <1 OR A >3 THEN PRINT CHR$(7): GOTO 6005
6010 A = VAL(Z$): HOME : GOSUB 400: PRINT : PRINT "INDEX WHICH FIELD #: ";: INPUT C$:
6030 C = VAL(C$): IF C <1 OR C >NC THEN PRINT CHR$(7): GOTO 6010
6040 IF P1$ = "N" THEN 6070
6050 PRINT
6060 INPUT "ON PRINTER (Y/N) ? ";P$: IF P$ < >"Y" AND P$ < >"N" THEN GOSUB 380: PRINT CHR$(7);: GOTO 6060
6070 GOSUB 420: GOSUB 340: HOME : IF P$ = "Y" THEN GOSUB 300
6080 TA = 20 -(( LEN(N$) +6)/2): PRINT TAB( TA)N$" INDEX": PRINT : PRINT H$(C);" FIELD": PRINT : FOR SR = 1 TO RC: IF S$(SR) < >"" THEN IF ASC(S$(SR)) = 192 THEN 6190
6090 IF A < >1 THEN 6300
6120 IF SR = 1 THEN 6170
6130 FOR IN = 1 TO SR -1: IF S$(SR) = S$(IN) THEN 6190
6150 NEXT IN: IF P$ = "Y" THEN 6180
6170 CV = PEEK(37): IF CV = >22 THEN 6210
6180 PRINT S$(SR)" ";: INVERSE : PRINT SR: NORMAL
6190 NEXT SR
6200 GOSUB 310: PRINT CHR$(7): INVERSE : PRINT "INDEX FINISHED!";: NORMAL : PRINT " PRESS 'RTN' TO MENU.";: GET Z$: GOTO 1010
6210 PRINT : PRINT "'R' RTN TO MENU, OR 'RTN' TO CONT.";: GET Z$: IF Z$ = "R" THEN GOSUB 310: GOTO 1010
6230 HOME : GOTO 6170
6300 FOR B = 1 TO RC
6305 IF B = 1 THEN 6340
6310 FOR C = 1 TO B -1
6320 IF S$(C) = S$(B) THEN 6380
6330 NEXT C
6340 FOR D = B TO RC
6350 IF S$(D) < >S$(B) THEN 6370
6355 IF D = B THEN PRINT S$(B)
6357 IF A = 3 THEN E = E +1: GOTO 6370
6360 INVERSE : PRINT D;: NORMAL : PRINT " ";
6370 NEXT D
6375 IF A = 3 THEN INVERSE : PRINT "("E")":E = 0: NORMAL : PRINT : GOTO 6380
6377 PRINT : PRINT
6380 NEXT B
6390 GOTO 6200
7000 REM
7010 TEXT : HOME : PRINT TAB( 7)"* CHANGE PRINTER SET-UP *": GOSUB 410: PRINT TAB( 8)"ENTER <0> WHEN COMPLETED": GOSUB 410: PRINT