5 COMMON ni() 10 CLS 20 PRINT " STATISTICAL ECOLOGY: A PRIMER ON METHODS AND COMPUTING " 30 PRINT "" 40 PRINT " I N T E R A C T I V E B A S I C P R O G R A M " 50 PRINT " S P D I V E R S . B A S " 60 PRINT "" 70 PRINT " --------------------------------------------------------" 80 PRINT " THIS PROGRAM COMPUTES: " 90 PRINT 100 PRINT " 1. RICHNESS INDICES " 110 PRINT " Margalef (R1, Eq. 8.1) " 120 PRINT " Menhinick (R2, Eq. 8.2) " 130 PRINT 140 PRINT " 2. DIVERSITY INDICES " 150 PRINT " Hill's Numbers (N0,N1,N2, Eq. 8.5) " 160 PRINT " Simpson's Index (Lambda, Eq. 8.7) " 170 PRINT " Shannon's Index (H', Eq. 8.9) " 180 PRINT 190 PRINT " 3. EVENNESS INDICES " 200 PRINT " E1-E5, Eqs. 8.11-8.15 " 205 PRINT " --------------------------------------------------------" 210 PRINT : PRINT 220 PRINT "PRESS ANY KEY TO CONTINUE" 230 IF INKEY$ = "" THEN 230 240 CLS 250 PRINT "- - - - - - - - - -PART I. DATA ENTRY- - - - - - - - - - ": PRINT 260 PRINT "This program utilizes abundance data (e.g., # of individuals, " 270 PRINT " biomass, percent cover, etc.) of S species in a sample " 280 PRINT " e.g., trees in a plot, fish in a catch, insects in a light trap," 290 PRINT " etc. " 300 PRINT 310 PRINT " EXAMPLES: " 320 PRINT " TABLE 8.2: #'s of individuals of 6 lizard species in a 1 ha plot." 330 PRINT " TABLE 8.3: #'s of individuals of 15 fish species caught in " 340 PRINT " December. " 350 PRINT " " 360 REM FOR I=1 TO 1:PRINT "":NEXT I 370 REM PRINT"PRESS ANY KEY TO CONTINUE" 380 REM IF INKEY$="" THEN 430 390 GOSUB 690 400 CLS 410 PRINT "- - - - - - -PART II. COMPUTATION OF INDICES - - - - - " 420 REM MARGALEF'S INDEX (EQ. 8.1) 430 R1 = (S - 1) / (LOG(N)) 440 REM MENHINICK'S INDEXS (EQ. 8.2) 450 R2 = S / SQR(N) 460 REM SIMPSON'S INDEX (EQ. 8.7): LAMBDA=0 470 FOR I = 1 TO S: LAMBDA = LAMBDA + ((ni(I) * (ni(I) - 1)) / (N * (N - 1))): NEXT I 480 REM SHANNON'S INDEX (EQ. 8.9: HPRIME=0 490 FOR I = 1 TO S: HPRIME = HPRIME + -(ni(I) / N) * LOG((ni(I) / N)): NEXT I 500 REM HILL'S NUMBERS (EQ. 8.5A-C) 510 N0 = S 520 n1 = EXP(HPRIME) 530 N2 = 1 / LAMBDA 540 REM EVENNESS INDICES 550 E1 = LOG(n1) / LOG(N0): 'EQ. 8.11 560 E2 = n1 / N0: 'EQ. 8.12 570 E3 = (n1 - 1) / (N0 - 1): 'EQ. 8.13 580 E4 = N2 / n1: 'EQ. 8.14 590 E5 = (N2 - 1) / (n1 - 1): 'EQ. 8.15 600 REM -----------PART III. OUTPUT OF RESULTS------------------- 610 PRINT "RICHNESS": PRINT "--------" 620 PRINT " N0 = "; N0: PRINT " R1 = "; R1: PRINT " R2 = "; R2 630 PRINT : PRINT "DIVERSITY": PRINT "---------" 640 PRINT " LAMBDA = "; LAMBDA: PRINT " H' = "; HPRIME: PRINT " N1 = "; n1: PRINT " N2 = "; N2 650 PRINT : PRINT "EVENNESS": PRINT "--------" 660 PRINT " E1 = "; E1: PRINT " E2 = "; E2: PRINT " E3 = "; E3: PRINT " E4 = "; E4: PRINT " E5 = "; E5 670 END 680 REM -----------SUBROUTINE FOR DATA ENTRY---------------------:PRINT 690 PRINT "Data INPUT options: " 700 PRINT " Option 1 - Data already exists in a STORED data file " 710 PRINT " Option 2 - Data is to be manually entered from keyboard " 720 PRINT " (and subsequently STORED, if desired)": PRINT 730 INPUT "Choose OPTION: Enter 1 OR 2 "; OPT 750 INPUT "INPUT Number of Species S= ", S 760 DIM ni(S): N = 0 761 IF OPT = 1 THEN GOTO 960 ELSE IF OPT <> 2 THEN GOTO 730 770 PRINT "" 780 PRINT " ENTER abundance data for each species " 790 PRINT 800 FOR SP = 1 TO S 810 PRINT "SPECIES__"; SP 820 INPUT " "; ni(SP) 830 N = N + ni(SP) 840 NEXT SP 850 INPUT "STORE This DATASET ON DISK ? (ENTER Y for YES / N for NO) "; A$ 860 IF A$ = "N" OR A$ = "n" THEN GOTO 1070 870 INPUT "Specify a name for this DATASET (e.g., DIVERSTY.DAT) "; OUTDAT$ 880 INPUT "Specify DISK drive: ENTER A, B, C, etc. "; DD$ 890 DD$ = DD$ + ":" 900 OUTDAT$ = DD$ + OUTDAT$ 910 OPEN OUTDAT$ FOR OUTPUT AS #1 920 FOR SP = 1 TO S 930 WRITE #1, ni(SP) 940 NEXT SP 950 GOTO 1070 960 INPUT "Specify name of DATA File (e.g., DIVERSTY.DAT) "; DATAFIL$ 970 INPUT "Specify DISK DRIVE where located: A, B, C, etc. "; DD$ 980 DD$ = DD$ + ":" 1010 FILENAM$ = DD$ + DATAFIL$ 1020 OPEN "I", #1, FILENAM$ 1030 FOR SP = 1 TO S 1040 INPUT #1, ni(SP) 1050 N = N + ni(SP) 1060 NEXT SP 1070 INPUT "Would you like to list the DATA ? (Y for Yes / N for NO) "; A$ 1080 IF A$ = "Y" OR A$ = "y" THEN GOTO 1090 ELSE GOTO 1160 1090 PRINT "LISTING OF THE DATA SET. " 1100 PRINT " " 1110 FOR SP = 1 TO S 1120 PRINT ni(SP) 1130 NEXT SP 1140 PRINT "PRESS ANY KEY TO CONTINUE" 1150 IF INKEY$ = "" THEN 1150 1160 CLOSE #1 1170 RETURN