10  REM      DOUBLE COLUMN FORMATED SYSTEM DIRECTORY
20  REM      DESIGNED FOR HP 2000 ACCESS
30  REM      REQUIRES 8 RECORD 'BASIC FORMATED' SCRATCH FILE.
70  REM
1000  DIM T$[99],T0$[99],T1$[99],M$[99]
1010  DIM F$[72],S$[95],A$[99],B$[99],P$[90]
1011  DIM C$[90],D$[90],D1$[90],M0$[90]
1020  DIM I$[75],B0$[99],B1$[99],H1$[99]
1030  FILES *,*
1040  PRINT LIN(1)"*+* FORMATED SYSTEM DIRECTORY LISTING *+*"LIN(2)
1050  I$="DIRECTORY FILE:  "
1060  F=2
1070  GOSUB 2220
1080  I$="SCRATCH FILE:  "
1090  F=1
1100  GOSUB 2220
1110  IF  END #1 THEN 1130
1120  GOTO 1160
1130  PRINT LIN(2)"  <?> SCRATCH FILE "F$" NOT LARGE ENOUGH <?>"LIN(3)
1140  GOTO 1080
1150  REM ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1160  S$="FIRST"
1170  PRINT #2;CTL(24)
1180  P=T=0
1190  I$="BEGINNING ACCOUNT (OR ALL):"
1200  F=5
1210  GOSUB 2220
1220  IF F=9 THEN 1280
1230  T0$=F$
1240  I$="ENDING ACCOUNT:  "
1250  F=6
1260  GOSUB 2220
1270  T1$=F$
1272  GOTO 1280
1275  PRINT LIN(1)"  <?> HEADING TO LONG:"LEN(F$)"CHARACTERS."
1280  PRINT LIN(1)"SPECIAL HEADING (21 CHAR. MAX.): ";
1282  LINPUT F$
1283  IF F$="" THEN 1289
1284  IF LEN(F$)>21 THEN 1275
1285  H1$[1,2]="|"
1286  H1$[2+(LEN(F$)<21),22]=F$
1287  H1$[23]="|"
1288  GOTO 1290
1289  H1$=""
1290  PRINT '10"DO YOU WANT DISC ADDRESS RATHER THAN DATE & RECORD: ";
1300  LINPUT F$
1302  T9=2
1304  IF F$[1,1]#"Y" THEN 1320
1305  T9=1
1310  REM ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1320  IF  END #2 THEN 1340
1330  GOTO 1360
1340  PRINT " <?> DIRECTORY LISTING NOT PRESENT"LIN(1)
1350  GOTO 1050
1360  LINPUT #2;D1$
1370  D1=POS(D1$[14],"/")
1380  D1$=D1$[D1+13-3,D1+13+2]
1390  GOSUB 2710
1400  READ #2;T$
1410  IF  END #2 THEN 1490
1420  FOR J1=1 TO 100000.
1430  LINPUT #2;T$
1440  IF T0$[1,4]#T1$[1,4] THEN 1470
1450  IF T$[1,4]=T1$[1,4] THEN 1510
1460  GOTO 1480
1470  IF T$[1,4] >= T0$[1,4] THEN 1510
1480  NEXT J1
1490  PRINT "  <?> ACCOUNT NOT PRESENT <?>"
1500  GOTO 1160
1510  PRINT '10"PLEASE LINE UP PAGE AT PERFORATION, THEN PRESS 'RETURN'"
1520  ENTER 240,I9,M$
1525  PRINT LIN(1)
1530  REM ******************************************************
1540  IF T=1 OR T=2 THEN 2670
1550  REM + + + + + + + + + + + + + + + + +
1560  REM:  **** FOR FIRST COLUMN ****
1570  B$=B0$
1580  READ #1,1
1590  IF  END #2 THEN 1720
1600  FOR J=1 TO 55
1610  IF S$="FIRST" THEN 1650
1620  LINPUT #2;T$
1630  IF T$[1,4]>T1$[1,4] THEN 1720
1640  IF T$[1,4]="    " THEN 1670
1650  S$="SOMETHING"
1660  B0$[1,4]=T$[1,4]
1670  PRINT #1;T$
1680  IF J#1 THEN 1700
1690  C$=B0$
1700  NEXT J
1710  GOTO 1740
1720  T=1
1730  REM ************************************
1740  IF B$#C$ THEN 1770
1750  C$[5,5]="+"
1760  B$=C$
1770  P=P+1
1780  CONVERT P TO P$[1,3]
1790  REM** NAME OF COMPUTER CENTER (1)
1794  PRINT CHR$(27);CHR$(56);
1795  PRINT CHR$(31);
1796  PRINT CHR$(12)
1800  PRINT "<<< W A - S Y S T E M S >>>"
1802  PRINT CHR$(30);
1810  PRINT TAB(49);D$;TAB(64)"|  "C$[1,5]
1820  REM** NAME OF COMPUTER CENTER (2)
1840  PRINT TAB(34)"PAGE "[1,3];TAB(49)"[] SYSTEM  DIRECTORY []"
1845  PRINT TAB(49);H1$;
1847  PRINT CHR$(27);CHR$(14);
1850  S$="account   name    len     rec wks"
1860  IF T9#1 THEN 1880
1870  S$="account   name    len     address"
1880  PRINT  USING "2(33A)";LIN(2),SPA(1),S$,TAB(39),S$,LIN(1)
1890  REM ************************************
1900  READ #1,1
1910  IF  END #2 THEN 2160
1920  FOR K=1 TO (J-1 MIN 55)
1930  READ #1;T$
1940  GOSUB 2440
1950  IF K#1 THEN 1990
1960  IF T$[1,4]#"    " THEN 1990
1970  M$[3,6]=B$[1,4]
1980  M$[7,7]="+"
1990  PRINT SPA(1);M$;
2000  REM-----------------------------------
2010  LINPUT #2;T$
2020  IF T$[1,4]>T1$[1,4] THEN 2140
2030  IF T=1 OR T=2 THEN 2170
2040  IF T$[1,4]="    " THEN 2060
2050  B0$[1,4]=T$[1,4]
2060  GOSUB 2440
2070  IF K#1 THEN 2110
2080  IF T$[1,4]#"    " THEN 2110
2090  M$[3,6]=B0$[1,4]
2100  M$[7,7]="+"
2110  PRINT TAB(39);M$;
2120  PRINT 
2130  GOTO 2180
2140  T=2
2150  GOTO 2170
2160  T=1
2170  PRINT 
2180  NEXT K
2190  PRINT LIN(4)
2200  GOTO 1540
2210  REM **************************************************
2220  PRINT LIN(1);I$;
2230  ENTER 255,R,F$
2240  PRINT LIN(1)
2260  IF R >= 0 THEN 2280
2270  STOP 
2280  IF F >= 5 THEN 2340
2285  IF F$="" THEN 2270
2290  ASSIGN F$,F,R
2300  IF R <= 1 THEN 2330
2310  PRINT "  <?> FILE -"F$"- IS MISSING OR NOT ACCESSIBLE <?>"
2320  GOTO 2220
2330  RETURN 
2340  IF F$="" THEN 2390
2345  F$=UOS$(F$)
2350  IF NUM(F$) >= 65 AND NUM(F$) <= 90 AND LEN(F$) <= 4 THEN 2380
2360  PRINT "  <?> UNACCEPTABLE INPUT OR LEADING BLANKS <?>"
2370  GOTO 2220
2380  IF F$[1,3]#"ALL" THEN 2420
2390  T0$="A000"
2400  T1$="Z999"
2410  F=9
2420  RETURN 
2430  REM *******************************************************
2440  M$[1,32]=" "
2450  M$[3,6]=T$[1,4]
2460  M$[10,15]=T$[10,15]
2470  IF T$[39,43]#"     " THEN 2500
2480  M$[19,21]=T$[49,51]
2490  GOTO 2530
2500  M$[19,21]=T$[41,43]
2510  IF T$[39,40]="00" THEN 2530
2520  M$[17,21]=T$[39,43]
2530  M$[24,25]=T$[32,33]
2540  IF T9=1 THEN 2610
2550  M$[27,29]=T$[61,63]
2560  CONVERT T$[21,23] TO T0,2630
2570  CONVERT T$[25,26] TO T1,2630
2580  T5=INT(((TIM(3)-T1)*365+TIM(2)-T0)/7)
2590  CONVERT (T5 MIN 99) TO M$[32-(INT(T5/10) MIN 1),32]
2600  GOTO 2630
2610  IF T$[53,54]="  " THEN 2630
2620  M$[28,33]=T$[49,54]
2630  RETURN 
2640  REM *****************************************************
2650  PRINT "BOO BOO"
2660  END 
2670  PRINT LIN(4+(55-K))
2680  GOTO 1160
2690  END 
2700  REM*********************************************************
2710  RESTORE 2820
2720  CONVERT D1$[1,3] TO T2,2890
2730  CONVERT D1$[5,6] TO T3,2890
2740  M0$="JanFebMarAprMayJunJulAugSepOctNovDec    "
2750  FOR M=0 TO 12
2760  READ M0
2770  IF T3/4#INT(T3/4) OR M<2 THEN 2790
2780  M0=M0+1
2790  IF M0 >= T2 THEN 2830
2800  M1=M0
2810  NEXT M
2820  DATA 0,31,59,90,120,151,181,212,243,273,304,334,365
2830  D$[1,13]=" "
2840  D$[1,3]=M0$[M*3-2,M*3]
2850  CONVERT T2-M1 TO D$[6+(SGN(10-(T2-M1)) MAX 0),7]
2860  D$[8,9]=", "
2870  CONVERT 1900+T3 TO D$[10]
2880  GOTO 2900
2890  D$[1,13]="ERROR ON DATE"
2900  RETURN 
2910  END 
