Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
COMPUTER PROGRAMS, TO CALCULATE BASAL AREA INCREMENT FROM TREE RINGS
by Richard L. Phipps and Michael L Field
U.S. GEOLOGICAL SURVEYWater-Resources Investisations Report 89 40281989
DEPARTMENT OF THE INTERIORMANUEL LUJAN, JR., Secretary
U.S. GEOLOGICAL SURVEYDallas L Peck, Director
For additional information Copies of this report can bewrite to: purchased from:
Chief Hydrologist Western Distribution BranchU.S. Geological Survey Open-File Services SectionWater Resources Division U.S. Geological Survey461 National Center Box 25425, Federal CenterReston, Virginia 22092 Lakewood, Colorado 80225
CONTENTS
Page
Abstract................................................................... 1
Introduction............................................................... 1
Calculations performed by program AREA..................................... 2
Running the programs ....................................................... 4
Input files........................................................... 5
Output files.......................................................... 7
Test run of tree-ring data from Signal Knob................................ 8
References cited........................................................... 8
Appendix A: Examples of AREA input and output files....................... 13
Appendix B: Source code listings for programs............................. 47
ILLUSTRATIONS
Figure 1
2.
3.
4.
Mean and 95-percent confidence limits of smoothed BAI (the nonclimatic component of BAI) of a pitch pine collection from Signal Knob near Front Royal, Virginia. Plot data are from the SIGNAL.CRN file created by AREA from the SIGNAL.RW and SIGNAL.RAD files. Data of the SIGNAL.RAD file are of incomplete radius lengths determined as the sum of the measured ring widths..........................
Mean and 95-percent confidence limits of smoothed BAI of the Signal Knob collection. Plot data are from the KNOB.CRN file created by AREA from the SIGNAL.RW file and measurements of total radius contained in the KNOB.RAD file............................................
Mean raw BAI of the Signal Knob collection. Based on ring width and total radius. Plot data are from the KNOB.CRN file......................................................
Mean tree-ring indices (climatic component) of the Signal Knob collection. Plot data are from the KNOB.CRN file..,
10
10
ill
Page
Figure 5. Ring widths of sample SIG 02-1 of the Signal Knob collec tion. Plot data are from the KNOB.IND file................. 11
6. Raw BAI of sample SIG 02-1 of the Signal Knob collection.Plot data are from the KNOB.IND file........................ 11
7. Smoothed BAI of sample SIG 02-1 of the Signal Knob collec tion. Plot data are from the KNOB.IND file................. 12
8. Tree-ring indices (climatic component) of sample SIG 02-1 of the Signal Knob collection. Plot data are from the KNOB.IND file............................................... 12
iv
COMPUTER PROGRAMS TO CALCULATE BASAL-AREA INCREMENT FROM TREE RINGS
by Richard L. Phipps and Michael L. Field
ABSTRACT
Two major programs, AREA and PLOT, and two minor programs, MAKERAD and TRING, intended for use on personal computers, are de scribed. AREA performs preliminary data processing of ring-width data and calculates standardized ring widths and areas with and with out the variance attributable to climate. PLOT-provides a means of examining results from AREA graphically. MAKERAD calculates radius length from ring widths, and TRING arranges a string of ring-width data into a format acceptable by AREA Examples are given of input to, and output from, program AREA.
INTRODUCTION
AREA is a computer program to describe growth quantity from tree rings. The program has been written to handle the preliminary data processing of tree-ring data on desktop computers. AREA calculates basal-area increment, BAI (Phipps and Whiton, 1988). AREA also calculates standardized ring widths, or indices (Fritts, 1976), and sets up files that may be used as inputs to other programs such as PLOT. PLOT is a program that provides the means for graphically examining raw ring widths, standardized indices, and BAI data for individual cores and for collections (mean chronologies). TRING takes ring- width data from measurement equipment or directly from the keyboard and ar ranges it into a standard format for input to AREA. MAKERAD calculates radius lengths from ring-width data and creates a file in a format that may be used as input to program AREA. The basic calculations and the input and output files for AREA are described. AREA, PLOT, MAKERAD and TRING are interactive and are not intended to require operating instructions.
The original version of AREA was written in FORTRAN1 by Beth Cotter (pre sently with Electronic Data Systems, Herndon, Virginia). John C. Whiton (pre sently with the American Association of Dental Schools, Washington, D.C.) added some enhancements to AREA, including a routine to allow printer plots of results. The initial work of Cotter and Whiton provided the starting point from which the present programs have been developed. PLOT, MAKERAD, TRING, and the present version of AREA were all written by Michael Field.
The use of brand names is for information, and does not constitute endorse ment by the U.S. Geological Survey.
CALCULATIONS PERFORMED BY PROGRAM AREA
A raw ring-width series may be thought of as year-to-year variation in tree growth, correlative with climatic and other environmental factors, and superimposed on a growth trend. Thus, in a very generalized way, the year-to- year variation may be regarded as the climatic component, and the growth trend may be regarded as the nonclimatic component. An estimation of the noncli- matic component may be obtained by fitting a smooth curve to the raw ring- width series. This is commonly accomplished with a cubic spline smoothing function (Cook and Peters, 1981). The climatic component, vc , can then be obtained by simply taking the difference between raw ring width, t/r , and the smoothed ring width, or nonclimatic component, w . A standardized climatic component, C, can be calculated by scaling the climatic component to the non- climatic component:
v - v - \r, and (1)
Because year-to-year variation in ring width is roughly proportional to ring width, standardization has the effect of more-or-less evenly distributing variance with time.
The mean of a standardized climatic component series is 0 if the smooth ing function has been perfectly applied. The minimum possible value of the standardized climatic component is -1.0 when v 0. By adding 1.0 to the standardized climatic component, a standardized ring-width index, I , that contains no negative values, may be calculated:
iw - c + i
(3)
This is a form of the equation that has been used for years in dendrochronol ogy to calculate indices. The indices may be thought of as an estimate of the standardized climatic component to which a constant of 1.0 has been added.
Because the indices are dimensionless, they are of little value in des cribing growth quantity. Though the nonclimatic component of ring width con tains one dimension, this is also of little value unless a second dimension is added. For example, a wide ring represents more growth than a narrow ring, but only so long as both rings are on radii of approximately equal length. Tree-ring area is two-dimensional and, like basal area, BA (total cross sec tional area at basal height), can be used to describe growth quantity. Just as ring width is an annual increment of radius length, tree-ring area can be referred to as basal -area increment, BAI .
Basal-area increment, BAI, is calculated from ring width, v, and radius length, R. BAI at year, t, is calculated from an equation of the difference in area between two circles:
BAI t - ir (Rt2 - Rt _i )
where ^t-1 " ^t " wf
BAI is calculated in AREA inward from the outside year. Ring widths and radii are both handled in AREA as hundredths of millimeters, whereas BAI is handled as square centimeters.
Just as raw ring widths were described, raw basal area increment, BAIr , may be thought of as composed of a climatic component superimposed on a non- climatic component. Again, as with ring widths, a cubic spline may be used to smooth BAI and produce an estimate of the nonclimatic component, BAI^. Indi ces, or the climatic component, Ig^j, can then be calculated as the ratio of raw BAI to smoothed BAI:
JBAI - BAIr / BAIs' < 6 >
This is the method of calculating indices used in AREA. Indices calcu lated from BAI data are nearly the same, but not exactly equal to indices calculated from ring widths; that is, Iv / *BAI' ^s alrea<*y stated, the smoothed widths or areas are but estimates, or approximations, of the true nonclimatic component. One might be hard pressed to judge which of the two methods gives results that more accurately represent the true climatic component.
In practice, there are essentially no differences in indices of the mean collection chronologies calculated by the two methods. However, in AREA, calculations from BAI may give erroneously large index values for the inner most 6-10 years of some individual cores. If the slope of the smoothed BAI trend is great and the initial values of the trend are near zero, then calcu lation of indices involves division by numbers near zero. Division by numbers near zero seems to be the cause of the erroneously large index values. Until this problem is resolved, the initial 6-10 index values for cores in which initial BAI values are near zero should be disregarded.
The manner of fitting a smooth curve to either ring-width or raw BAI data is a bit of a guessing game. The objective to the guessing game is to fit a curve to the data such that indices calculated from the curve contain as much of the climatic component as possible with as little of the nonclimatic com ponent as possible. Stating this in a different way, the more accurately the smooth curve represents the nonclimatic component, the more accurately the indices represent the climatic component. If the curve is too stiff, it might not include all of the nonclimatic component, meaning that the indices might contain considerably more than just climatic information. If the curve is too flexible, it might contain a significant portion of the climatic component, meaning that indices contain only a portion of the climatic information.
The climatic component (indices) can be correlated with climate. Intui tively, for any given tree-ring collection, the most accurate estimates of the nonclimatic component (smooth curves) are those that yield indices most highly
correlated with climate. Indeed, for the time being, though the nonclimatic component of either BAI or widths can be estimated without calculating indi ces, the accuracy of the estimates can only be tested by correlating indices with climatic data.
Program AREA uses a cubic spline to smooth BAI. The cubic spline may be described as removing 50 percent of the variance of the raw BAI for cycles less than a given number of years. Thus, any given spline may be described in terms of years. For example, a 20-year spline yields a more flexible curve than does a 200-year spline. Biasing and others (1981) have shown that for the typical deciduous forest collection in which most sampled trees are 150 to 250 years old, a 60-year spline applied to ring-width data seems to remove the most nonclimatic information while retaining the most climatic information in the indices. For this reason, a 60-year spline is customarily used with the BAT data. Though any spline may be specified in AREA, the one chosen is ap plied to data of all cores of the collection. As more is learned regarding the nonclimatic component, improved approximations of the nonclimatic compo nent will no doubt be made, first by using a different spline for each core, and perhaps ultimately by using something other than a smoothing function. Because AREA can be run easily and quickly, certain insights may be gained into how certain trees are behaving by comparing results from a stiff spline (for example, 100-year), a more normal spline (60-year), and a flexible spline (20-year).
Smoothed BAI (the nonclimatic component) is individually determined for each core selected for calculation. The mean smoothed BAI is calculated by year as the mean of the smoothed BAI of all selected cores. The standard error of the mean of each year is calculated and adjusted by a multiplier from a t-table to give the 95-percent confidence limits of each yearly mean. This calculation is based on the number of cores, not the number of trees. If comparisons of data between cores within trees indicate less independence than data between trees, then a more accurate estimate of the 95-percent confidence limits could be obtained by basing the calculations on number of trees instead of number of cores.
BAI calculations are based on the assumption that the transverse area of a tree ring can be estimated as the difference between two perfect circles where ring width is the difference in radius length between the two circles (eq. 4). A better estimate may be obtained by using more than one ring width. However, the improved estimate is more accurate if the areas are individually calculated for each width and then averaged, rather than averaging the widths before calculating area.
RUNNING THE PROGRAMS
The programs may be placed on a single 360K floppy disk. Two minor pro grams that can also be included on the same disk are TRING and MAKERAD. Com piled versions of the programs are compact enough to allow inclusion on the program disk of a menu program enabling any of the programs to be accessed from a single menu. Source code listings of all four programs, AREA, PLOT, MAKERAD, and TRING, are included in Appendix B.
The programs, AREA and PLOT, were written in C programming language, compiled using Microsoft C 5.0, and have been run with both DOS and MS-DOS. However, a graphics card is needed for PLOT. The screen plots are only in black and white with a CGA card, but are in selectable colors with an EGA card. PLOT was written for, and has only been run on, the HP-7475A plotter. PLOT should, however, work on a number of other HP plotter models and possibly on some other brands that use the HP-GL instruction set.
Input Files
Just as the area of a circle is a function of radius length, the area of a tree ring, BAI, is dependent upon radius length. Thus, in addition to a ring-width file, AREA requires radius data. Radius data may be input to AREA from a file created by either AREA or MAKERAD, or may be keyed in directly while executing AREA.
1. [NAME].RAD file. The radius file contains data of total radius length of each core to be used in calculations. A radius file may be created by either AREA or MAKERAD. These programs calculate radius length as the sum of ring widths of each core. Thus, this method of calculating radii is ac curate only if the cores are measured to pith. If the cores from which the width data were obtained were not measured to pith, or there are other reasons to use radius lengths not equal to the sum of the ring widths, radius lengths may be entered into AREA by hand (no radius file is needed or created), or entered into AREA as a special file. A radius file may be set up as follows:
a. File name -- 1-8 alphanumeric characters with a .RAD extension,
b. First line of file -- File title or message.
c. Data format -- The first 8 columns (left justified) are the core ID number. The next 6 columns (right justified) are the radius length in hundredths of millimeters. Enter data for one core per line. The following data are for two pairs of cores from a .RAD file created by MAKERAD of a white oak collection obtained at Limberlost in the Shenandoah National Park:
LIMBERLOST WHITE OAK10031 25553 361 1618 1978 177910032 31729 362 1617 1978 173210051 26234 392 1587 1978 169610052 27986 385 1594 1978 1690
In addition to core ID (identification number) and radius length, a .RAD file created by MAKERAD will include (unlabeled) number of rings, inside date, outside date, and year at which a radius length of 10 cm is reached. This last value is estimated to be the radius length at which many deciduous spe cies reach canopy size in a mixed-age stand.
A .RAD file created directly by AREA will contain the same information as one created by MAKERAD with the exception that the 10-cm radius is only a default value. That is, any length, including zero, may be specified.
The Limberlost cores, used in the example above, were not measured to pith. Total radius of each core was measured with a millimeter rule, and the data were entered into a special .RAD file. Lines from the special file, corresponding to the example above, were:
LIMBERLOST WHITE OAK10031 2720010032 3400010051 3200010052 38000
oRadius is given in mm x 10" . Hence, the radius of core number 10031, measur ed to the nearest mm as 272, was entered into the special file as 27200.
AREA will only calculate data for cores specified in the radius file. Thus, even if a ring-width file is quite large, it is possible to calculate data for only a few selected cores by setting up a special radius file con taining only radii of the selected cores. For example, MAKERAD may be used to calculate radii of all the cores in the ring-width file of a collection. A word processor can then be used to edit the file to take out the radii of the cores in which there is no interest. Core ID's used in a radius file should be arranged in the same sequential order as the cores in the ring-width file.
2. [NAME] .RW file. The ring-width file is composed of measurement data usually generated from some type of tree-ring measurement equipment. Program TRING (included in Appendix B) takes ring-width measurements from either key board entry or measurement equipment and arranges the data into the following format:
a. File name -- 1-8 alphanumeric characters with a .RW extension.
b. Data format -- similar to the standard Arizona format for ring- width data. The Laboratory of Tree-Ring Research at the University of Arizona has established a format for input of ring-width data to all of their programs for standardizing tree rings.
The first line of the file is a file title or message. CAUTION: Arizona files may not include a file title line.
The rest of the file is composed of data. Originally, Arizona's data were input on punch cards for use in FORTRAN programs. Thus, the format is column dependent. The following example was modified from a ring-width file of pitch pine cores collected at Signal Knob near Front Royal, Virginia:
SIGNAL KNOB PITCH PINESIG022 1843 142 218 187 219 290 306 188SIG022 1850 192 207 280 300 229 178 156 208 225 141SIG022 1860 52 125 152 99900SIG131 1968 27 29SIG131 1970 32 24 26 31 36 15 5 23 19 16SIG131 1980 0 0 99900
The first 8 columns of each line (left justified) contain the cor'e ID number. The rest of the line contains data for a single decade. Columns 8-12 are the
beginning year of data for the decade. In the example, the first year of data of the 1840's decade for sample SIG022 is 1843. Ring-width data (in mm X 102 ) are entered (right justified) in 10 fields of 6. If the year of the last ring width of a core is not a year ending in 9, then the following year is entered as 99900. Some Arizona-type files may use 999 instead of 99900.
In summary, if ring-width files created by an Arizona program are being used, the files should be checked to be sure that they contain:
1) a title line, and
2) 99900 as end of core code.
3. [NAMEJ.ELW file. AREA can handle ring-width data that have been separated into two measurements per ring. The format for the data file is similar to that described above for total ring width except that a full line contains data for a pentad, not a decade. On each line, the odd entries (1st, 3rd, and so forth) are for the inner portion of each ring (earlywood) and the even entries (2nd, 4th, and so forth) are for the outer portion (latewood). A few lines of data from a file of measurements of a loblolly pine collection from the Great Dismal Swamp on the Virginia - North Carolina border are given as an example:
Lynn Ditch loblolly - earlywood/latewood3562 1828 205 31 549 753562 1830 200 140 422 134 2423562 1835 273 150 180 111 83
6794
269139
13080
302147
123122
3562 19653562 1970
2714
226
255
2710
4114
The outside year of the example is 1973.
196
247
15 89 99900
18
Output Files
Program AREA always creates a mean collection chronology file (.CRN) in our own format and a mean chronology file of indices (.1X1) in the Arizona format.
1. [NAME].CRN file. Mean collection chronology file that contains num ber of cores by year, raw BAT, smooth BAI, upper and lower confidence limits of the yearly means of the smoothed data, and ring-width indices. Means are by year for the range of years specified while executing AREA. This file may be printed in two different formats from program PLOT.
2. [NAMEJ.IX1 file. Index file #1, composed of mean chronology indices for the range of years specified. This file is in the standard Arizona format for indices, and is intended for use as an input file for other programs (such as RESPONS).
3. [NAME].IND file. Program AREA will, as options, create files contain ing data of individual cores. This file contains original ring widths, raw
BAI, smoothed BAI, and indices of all individual cores specified in the radius file. This file includes data of all years of each core regardless of what years were specified for the .CRN file. Because no means are calculated, no confidence limits are included. If the radius file contains data of many cores, and the ring-width data for these cores represent many years, this file can be quite long.
4. [NAME].1X2 file. Index file #2 contains indices of all individual cores in the standard Arizona format suitable for use as input to other pro grams (such as COFECHA).
TEST RUN OF TREE-RING DATA FROM SIGNAL KNOB
Tree-ring increment cores were taken from pitch pine (Pinus rigida Mill.) trees at Signal Knob at the northern end of Massanutten Mountain near Front Royal, Virginia. The samples were collected by John Whiton prior to the grow ing season in 1982. Two cores were collected from each of 16 trees. The cores were sanded, crossdated, and measured in accordance with standard pro cedures (Phipps, 1985; Stokes and Smiley, 1968). At least one core from each of four of the trees was unacceptable for measurement. The final collection is composed of 2 cores from each of 12 trees.
Signal Knob data were used as input data files to AREA and the output files from AREA were used in PLOT to create graphs of the results. Both the input and output files for the Signal Knob collection are contained in Appen dix A. Examples of graphs produced by PLOT of Signal Knob data calculated by AREA are presented in figures 1-8.
REFERENCES CITED
Biasing, T. J. and Duvick, D. N. , 1983, Filtering the effects of competition from ring-width series: Tree-Ring Bulletin, v. 43, p. 19-30.
Cook, E. R. and Peters, K. , 1981, The smoothing spline: a new approach to standardizing forest interior tree-ring width series for dendroclimatic studies. Tree-Ring Bulletin: v. 41, p. 45-53.
Fritts, H. C., 1976, Tree Rings and climate: Academic Press, London, 567p.
Phipps, R. L. , 1985, Collecting, preparing, crossdating, and measuring tree increment cores. U.S. Geological Survey Water Resources Investigations Report 85-4148, Reston, VA., 48p.
Phipps, R. L. and Whiton, J. C., 1988, Decline in long-term growth trends of white oak: Canadian Journal of Forest Research, v. 18, p. 24-32.
Stokes, M. A. and Smiley, T. L. , 1968, An introduction to tree-ring dating. University of Chicago Press, Chicago, 73p.
LUsLU DC CJ
21
18
15
12
£ C/D<m
1895 1910 1925 1940 1955 1970 1985 2000
Figure 1. Mean and 95-percent confidence limits of smoothed BAI (the nonclimatic component of BAT) of a pitch pine collection from Signal Knob near Front Royal, Virginia. Plot data are from the SIGNAL.CRN file created by AREA from the SIGNAL.RW and SIGNAL.RAD files. Data of the SIGNAL.RAD file are of incomplete radius lengths determined as the sum of the measured ring widths.
LU SLU DC CJ
21
18
15
12
a C/D< CD
1895 1910 1925 1940 1955 1970 1985 2000
Figure 2. Mean and 95-percent confidence limits of smoothed BAI of the Signal Knob collection. Plot data are from the KNOB.CRN file created by AREA from the SIGNAL.RW file and measurements of total radius contained in the KNOB.RAD file.
(D O
**1
rt
P«
S"S
P 2
IND
EX
rt P> rt l-t
PJ
(D
i-c n>
0>
i
o <w
3H
«
s-a n> H-
o
W
(D
25
(A
O
O 3 (D 3
rt o M) ff (D §
rt
n>
o rt
u>
P>
BA
SAL
AREA INCREMENT
2 s
o
>.
rt £ CO
D* 9
-n>
g3^.
Os
°** o
o
-! ohh
ft
p.
H«
M
O9
3 p> (A
(D a
o 3
rt a
rcco
C
(D HI
n o So CO
M
O O ro 5- a> en
H«
OQ ff o
BASA
L AREA IN
CREM
ENT
OD
ru
en
O
rt a *
dpo
p«
rt
OQ
Pd
£
I"Spi
a>
Ml o
pa
rt O
Q P^
a>
<
MI
en o Mi a> en
p«
OP ff § o o
WID
TH
(mm)
(i)
Jx
Ol
O)
-J
28
2 ^
LU
S 20CECJ
LU CE
16
IS
cn a CD
4
1825 1850 1875 1900 1925 1950 1975 2000
Figure 7. Smoothed BAI of sample SIG 02-1 of the Signal Knob collection. Plot data are from the KNOB.IND file.
xLUa
1825 1850 1875 1900 1925 1950 1975 2000
Figure 8. Tree-ring indices (climatic component) of sample SIG 02-1 of the Signal Knob collection. Plot data are from the KNOB.IND file.
12
APPENDIX A
EXAMPLES OF AREA INPUT AND OUTPUT FILES
Page Input files:
SIGNAL.RW............................................................. 15
SIGNAL.RAD............................................................ 19
KNOB.RAD.............................................................. 19
Output files:
SIGNAL.CRN............................................................ 20
KNOB.CRN.............................................................. 21
KNOB.IND.............................................................. 23
KNOB.1X1.............................................................. 42
KNOB.1X2 .............................................................. 42
13
Input file SIGNAL.RW
SIGNAL KNOB PITCH PINESIG01-1SIG01-1SIG01-1SIG01-1SIG01-SIG01-SIG01-SIG01-SIG01-SIG01-2SIG01-2SIG01-2SIG01-2SIG01-2SIG01-2SIG01-2SIG01-2SIG01-2SIG01-2SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-1SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SIG02-2SI 603- 1SIG03-1SIG03-SIG03-SIG03-SIG03-SIG03-SIG03-SIG03-SIG03-SIG03-2SIG03-2SIG03-2SIG03-2SIG03-2SIG03-2SIG03-2SIG03-2SIG03-2SIG03-2SIG03-2
190019101920193019401950196019701980189019001910192019301940195019601970198018501860187018801890190019101920193019401950196019701980184318501860187018801890190019101920193019401950196019701980189019001910192019301940195019601970198018801890190019101920193019401950196019701980
11914024413124024723211688
1159878
14910625917725310180
2848932
209907049
14782
119107
5026
01421925233
171723536846391977524
038818040
23511026392846971
5211194443
188100222131
556265
177109231107313258212
5942
13312848
14251
2401732104843
26916112895
112148
55162
087852740
21820712510094
1197540
1130
807353140
1754852
19735
273175843029
44511511035
18721
272114574015
13320417811118521314444
999001768995
14066
12217110762
9990026725011219014313410712983774934
599900
18728015260
122889463784563494918
9990014718015618460
11190
12529
999003771798781
14355
121716633
99900
349310198215187180181139
133156191174141172186145149
302148108149166116103198111
73645749
21930010880
1331124642574859555755
216171228217191124188127112
266183173111140121135120
9174
235183163168107197141106
145177127161157102206110123
25119025
193208117
911858948342323
290229156
211281246256605139452025
211232124192232
451437054
11727319598
14013752
1482847
3894
20920431725510577
1061354
193241287202103118
21231449
107492572
1129799492726
306178269
25109391348498771511434
31022821118721715511589
117
2218820
141123124131883256
9316220717928522911980
1344370
1761992471568669
14813667
18375
11112196867351254
18815610044
13652568346515961146
7192
2351901321801728884
33267
101206123
611461353262
210160244248288176255
58
16210099
164259243117220
44
1993041021511691501501037381327214
2082031031127284
116525672572718
108171243168189180118101
50
1792131521911029898975331
274191312322324214172102
26316693
22722134520217096
233254231259
93192162165137117623015
2251411861484595
1176896
102763917
248208221312281250137
5461
1721541841912381771621245633
28429331234626317811674
15516715820331122118312254
2061911423241061411362191579545
425
141156174236
418098
10310362551724
320203201286357200674312
25614218120821829314634449
15
Input file SIGNAL.RW, continued
SIG05-SIG05-SIG05-SIG05-SIG05-SIG05-SIG05-SIG05-SIG05-2SIG05-2SIG05-2SIG05-2SIG05-2SIG05-2SIG05-2SIG05-2SIG05-2SIG05-2SIG05-2SIG06-SIG06-SIG06-SIG06-SIG06-SIG06-SIG06-SIG06-SIG06-SIG06-SIG06-SIG06-2SIG06-2SIG06-2SIG06-2SIG06-2SIG06-2SIG06-2SIG06-2SIG06-2SIG06-2SIG06-2SIG08-SIG08-SIG08-SIG08-SIG08-SIG08-SIG08-SIG08-SIG08-SIG08-SIG08-SIG08-2SIG08-2SIG08-2SIG08-2SIG08-2SIG08-2SIG08-2SIG08-2SIG08-2SIG08-2SIG09-1SIG09-1SIG09-1SIG09-1SIG09-1SIG09-1SIG09-1SIG09-1
1910192019301940195019601970198018801890190019101920193019401950196019701980188218901900191019201930194019501960197019801880189019001910192019301940195019601970198018871890190019101920193019401950196019701980189019001910192019301940195019601970198018901900191019201930194019501960
32552916033073819111734
2844829
1142061802401841776517
48352
11413614196
171138826227
2891792
10611481
1371321004752
4711261461832101342072501391086858
1491391961581531901179956
179127182224
8418311093
362527145303376209
9519
350196996
199206266206158286
26859
182141126
0135112624122
30055
157105120
0115102874532
358148183171207172247184166384197
200107204119162138136
4118
181182159172
018512478
32949912617029224967
9990020511069
11415718225917314543
99900210107158155133
7285
1356533
999003411021261381076045977144
9990066120018117117112511616611188
999001791691421541211131779079
99900187122191110
161028485
512380243106262360110
13916712711620328515316813784
17214722621319012670
10291
100
1961102551551248676856580
228231199129174114196161128
200170125120173109179132116
2512012339682
12011490
319309242106216209104
223178157110161222136173110100
31319615911716314754985166
18920717882
13812146924455
23519515112216688
118118133
20522010194
15469
126120156
25614096
14782429346
28431932323728716568
2439915
120236208167227126
71
237119109167165159103954663
213134120129149131104864561
13615814284
12524917211547
12214713999
14819618110053
9762
17114611515212648
34627824927424812685
291116
51171209138182209
9647
230195204183158
81116924732
62715316114111189
133954552
1941591981311271401589675
1852291731391062111749380
881501561271121428643
41137929632821425647
21019113725621919318011814431
360263234218116124140
616638
27922419116886
119129736130
270248157114165141
9116169
26217714913018419496
14057
116200236130167124
70111
379438333395316213
99
26420812816130224128618310888
218293178184156147107
3153
2041962201321581481221065978
25527819318015123720813599
25818620719618425914011959
19222818319019814410699
35338537068118214540
3492121762112592181661106819
193160158185201127483820
23415815614515218798644836
1801831712202202071486330
225184199224251195865320
174137158175188106
7563
16
Input file SIGNAL.RW, continued
SIG09-1SIG09-1SIG09-2SIG09-2SIG09-2SIG09-2SIG09-2SIG09-2SIG09-2SIG09-2SIG09-2SIG09-2SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-1SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG11-2SIG12-1SIG12-1SIG12-1SIG12-1SIG12-1SIG12-SIG12-SIG12-SIG12-SIG12-SIG12-SIG12-2SIG12-2SIG12-2SIG12-2SIG12-2SIG12-2SIG12-2SIG12-2SIG12-2SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-1SIG13-2
1970198018901900191019201930194019501960197019801863187018801890190019101920193019401950196019701980187018801890190019101920193019401950196019701980188218901900191019201930194019501960197019801900191019201930194019501960197019801870188018901900191019201930194019501960197019801870
6734
3411542472462322132111351058265
20531421498
14614286
14216011056257
246157
411071075286
115496345
3026128
258264
9313712712480
12528
25118958
112123112744624
393212
9413314789
15816583329
35
030
2871272432491392421901167764
10515
239204114124167
01481639426
040
21912262
12083
0113113671416
31468
130207211
2111715812730
11691
18816622
10610396445570
32622713911317259
1651296429
064
4899900
31020623028668
228144120
1499900
8460
41319393
15614931
10013310048
9990058
37514680
136682489805226
99900300121116352177
51124120
7339
9990050
26116152
1361348259
99900138519252
7314217677
1031085523
99900111
38
25915224819811112714911090
15691
2502101951707880
10911710870
144216190148158834767
1058362
308141194227467288
11717474
108269
259983
13512585
19233329599
1531561251031176339
208
25
25520724620512499
1486872
16688
289224144106824876
1336396
11521421313864705242734966
20618519416750
13253
12277
107
9915038
14445
1296080
150391289
9182
135116
721224931
208
48
23819411819117725516360
103
2071381901411441369084
16413367
111
15913312497
1075571
106806275
30138
288248
7714376
11347
127
179210
65125110130
5577
18835118695
1091391271511083515
198
32
821181751831651761306876
22422227613615514210943
10913631
109
193263
7695
113813766
1033464
32337
27414112614440
1185679
226143130106107875335
25749415388
13513593
1151013019
242
20
135160171226203266
9811041
22020018317317910682
15110210028
234240174192114795178696540
32287
20121310616349808474
232206105143130628135
347388224140143116140145885619
290
40
12724622314621329317814459
3232341911841281801301791746054
38626214925199
10865
1201044139
189230230171180166178105114
3111801561321561419480
4594022011501191532111601822720
467
16
199208183237243214
9412062
2312581332251281581551861055042
261244112200110104110130
732946
1542091911741871521459349
227167152150141826720
3543461641231051481841271132917
404
17
Input file SIGNAL.RW, continued
SIG13-2SIG13-2SIG13-2SIG13-2SIG13-2SIG13-2SIG13-2SIG13-2SIG13-2SIG13-2SIG13-2SIG14-SIG14-SIG14-SIG14-SIG14-SIG14-SIG14-1SIG14-1SIG14-1SIG14-1SIG14-1SIGU-2SIG14-2SIG14-2SIG14-2SIG14-2SIGH-2SIG14-2SIG14-2SIG14-2SIG14-2SIG14-2SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-1SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2SIG16-2
188018901900191019201930194019501960197019801880189019001910192019301940195019601970198018801890190019101920193019401950196019701980186218701880189019001910192019301940195019601970198018501860187018801890190019101920193019401950196019701980
3842584296
12287
108886232
056019246
143216134176172805741
507190
241162791742091611093724
26525
29449
10212215394
14994908941
2072620
216423181
13289
118103855341
3591984970
1386673
1027624
037910384
129201150161142733518
3781514576
349126179164110
218
42468
19410615794
16639
16885906744
3128834
13248
12589
128488893904130
57021762
113111
5152859626
9990031215986
14815811079
1258857
9990032116086
11022496
1171379334
999002411612811881311331089297719957
99900251248112179122
91101120
6171796129
99900
2792701111211298644787431
29518315919614116669
12310467
29627110718918921393
13912762
21219724421913716214215284789070
2031821591351861001101267071
1157737
331330
9369
1099139625236
17921519213412119673
1547467
269289158152171207
7814210253
15945
22925514581
12811358545453
19814959
1352018971
1208771864934
242173898390
11160
1023415
2842021721541611711201427573
3512191451581591911571288237
20566
172152182116132122137825366
29715178
135112101929297
1291103968
43519792
1021025746
13336
5
39021420715514883
1351116067
89725222020118269
133113
6144
2101602661721691201308694
1003544
18820717925710516092
10746
106892735
36716214480879071
1014623
340352248172170129147796748
441313223229182104195937431
19813322019621013411012395635414
30126711211713818713811086
115723212
44614917064
13312687
1194319
311285235223260174200107
7063
2952892952102951832241354344
2501772451861651531731211285777
2332222741651782341691171471351263271
42810313196
14212084763016
346271213265229228162684048
436289225182276196221922030
191215202217147148173136806637
20016916419510715012014312993773439
18
Input file SIGNAL.RAD
SIGNAL KNOB PITCHSIG01-1SIG01-2SIG02-1SIG02-2SIG03-1SIG03-2SIG05-1SIG05-2SIG06-1SIG06-2SIG08-1SIG08-2SIG09-1SIG09-2SIG11-1SIG11-2SIG12-1SIG12-2SIG13-1SIG13-2SIG14-1SIG14-2SIG16-1SIG16-2
15405136771514312673142511334819219162111332212640159131333911038154451620012150143979561166251443616196177861605415544
PINE829213213992102721021001029592929211911210082112112102102120132
190018901850184318901880191018801882188018871890189018901863187018821900187018701880188018621850
198119811981198119811981198119811981198119811981198119811981198119811981198119811981198119811981
19471953191419281941194119391937193919461938195019611940191919481939
0191419191926192019181915
Input file KNOB.RAD
SIGNAL KNOB PITCH PINESIG01-1 17500SIG01-2 19500SIG02-1 19500SIG02-2 16500SIG03-1 17500SIG03-2 13500SIG05-1 19500SIG05-2 17200SIG06-1 15000SIG06-2 14000SIG08-1 19000SIG08-2 16500SIG09-1 16500SIG09-2 19000SIG11-1 18200SIG11-2 17000SIG12-1 15000SIG12-2 12200SIG13-1 20500SIG13-2 18700SIG14-1 17200SIG14-2 21000SIG16-1 21000SIG16-2 18000
19
Output file SIGNAL.CRN
SIGNAL KNOB PITCH PINE
NUMBER OF CORES: HS= 0.220190019101920193019401950196019701980
232424242424242424
232424242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
BASAL AREA INCREMENT (not 1900 2.061 3.388 3.261 1910 4.367 4.000 5.528 1920 8.519 8.913 7.676 1930 6.316 3.636 4.458 1940 11.410 11.571 7.657 1950 13.057 11.369 9.542 1960 9.274 8.900 8.098 1970 6.037 3.374 3.713 1980 4.030 2.409
smoothed): 4.532 4.618
4.480 6.829 7.983 4.730 9.504
6.5167.2517.7906.777
10.22810.1987.126
3.6485.3176.8918.837
10.630
6.5496.426
4.7226.2567.2466.1459.499
10.669 10.3645.953 5.1085.978 4.916
6.217 7.493 6.535 7.394 7.454 7.429 7.291 10.715 11.098 8.587 11.343 13.285
10.736 14.176 13.039 7.588 12.217 7.884 8.934 7.332 5.169 3.30a 5.664 3.039
MEAN 1900 1910 1920 1930 1940 1950 1960 1970 1980
BAI TREND: 4.431 4.554 5.531 5.680 7.002 7.142 8.313 8.436 9.435 9.516 9.756 9.712 8.640 8.456 6.464 6.221 3.961 3.706
4.677 5.829 7.279 8.559 9.587 9.652 8.263 5.975
4. 5. 7. 8. 9. 9. 8. 5.
801 978 414 680 650 576 060 728
4.926 6.127 7.547 8.800 9.703 9.484 7.849 5.479
5.051 6.276 7.678 8.918 9.745 9.378 7.631 5.229
5.177 6.424 7.808 9.033 9.776 9.257 7.407 4.977
5.303 6.571 7.937 9.143 9.793 9.122 7.177 4.724
5.429 6.717 8.064 9.247 9.796 8.973 6.943 4.470
5.555 6.860 8.189 9.345 9.784 8.813 6.705 4.216
UPPER 95% CONFIDENCE LIMIT:1900 5.545 5.647 5.751 5.856 5.963 6.072 6.182 6.294 6.407 6.521 1910 6.495 6.622 6.753 6.887 7.025 7.167 7.312 7.461 7.612 7.764 1920 7.919 8.074 8.230 8.386 8.543 8.700 8.857 9.014 9.172 9.329 1930 9.485 9.642 9.800 9.957 10.114 10.269 10.421 10.569 10.712 10.849 1940 10.977 11.096 11.205 11.304 11.392 11.468 11.531 11.577 11.606 11.616 1950 11.606 11.574 11.523 11.450 11.358 11.247 11.117 10.968 10.803 10.621 1960 10.423 10.210 9.984 9.745 9.495 9.235 8.966 8.689 8.406 8.117 1970 7.825 7.530 7.233 6.935 6.638 6.341 6.045 5.752 5.462 5.176 1980 4.895 4.620
LOWER190019101920193019401950196019701980
INDEX190019101920193019401950196019701980
95% CONFIDENCE LIMIT:3.3174.5666.0867.1407.8927.9076.8575.1033.027
VALUE:0.4650.7901.2170.7601.2091.3381.0730.9341.017
3.4604.7376.2097.2307.9357.8496.7024.9122.793
0.7440.7041.2480.4311.2161.1711.0520.5420.650
3.6044.9056.3287.3177.9707.7816.5414.717
0.6970.9481.0550.5210.7990.9890.9800.621
3.5.6.
747069442
7.4037.7.6.4.
0.1.0.0.0.1.1.1.
996701374520
944090978898702068265244
3.8895.2296.5517.4878.0137.6106.2024.320
0.9370.7310.9050.9070.4881.0020.8341.173
4.0315.3856.6577.5688.0227.5086.0274.116
0.7220.8470.8970.9911.0911.1380.7801.143
4.1715.5366.7607.6448.0217.3975.8473.908
0.9120.9740.9280.6800.9721.1200.6900.988
4.3125.6816.8597.7168.0097.2755.6653.696
1.1721.1250.9190.9391.0960.8321.2450.699
4.4505.8226.9557.7827.9867.1445.4803.478
1.3801.110
.329
.227
.447
.361
.056
.267
4.5885.9567.0497.8417.9527.0055.2933.256
1.1771.0831.3551.4221.3330.8950.7710.721
20
Output file KNOB.CRN
SIGNAL KNOB PITCH PINE
NUMBER OF CORES: MS= 0.221190019101920193019401950196019701980
232424242424242424
232424242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
2324242424242424
BASAL AREA INCREMENT (not smoothed):1900 3.725 5.671 5.417 7.383 7.414 5.653 7.162 9.490 11.442 9.820 1910 6.609 5.962 8.149 9.673 6.488 7.499 8.785 10.282 10.292 10.220 1920 11.657 12.045 10.290 9.765 9.209 9.208 9.656 9.624 13.986 14.480 1930 8.222 4.612 5.703 10.016 10.206 11.372 7.980 11.114 14.462 16.872 1940 14.415 14.574 9.605 8.591 5.897 13.476 11.880 13.365 17.554 15.801 1950 15.656 13.796 11.577 12.485 11.493 12.923 12.504 9.129 14.722 9.572 1960 11.246 10.731 9.662 12.070 7.770 7.085 6.078 10.703 8.758 6.159 1970 7.238 3.972 4.439 8.523 7.623 7.123 5.778 3.896 6.667 3.623 1980 4.768 2.861
MEAN BAI TREND:1900 7.531 7.611 7.695 7.781 7.871 7.964 8.059 8.158 8.258 8.3601910 8.227 8.356 8.487 8.620 8.754 8.889 9.025 9.160 9.295 9.4291920 9.561 9.691 9.819 9.945 10.070 10.193 10.315 10.436 10.556 10.6751930 10.792 10.910 11.027 11.144 11.259 11.373 11.482 11.587 11.685 11.7751940 11.856 11.926 11.985 12.034 12.071 12.095 12.106 12.101 12.079 12.0401950 11.982 11.905 11.809 11.696 11.564 11.415 11.250 11.069 10.873 10.6621960 10.439 10.202 9.955 9.697 9.431 9.156 8.875 8.589 8.297 8.0021970 7.703 7.401 7.098 6.793 6.486 6.177 5.867 5.556 5.244 4.9311980 4.618 4.305
UPPER 95X CONFIDENCE LIMIT:1900 8.927 8.970 9.016 9.068 9.126 9.188 9.256 9.329 9.406 9.4881910 9.394 9.491 9.593 9.701 9.815 9.935 10.060 10.191 10.325 10.4631920 10.604 10.747 10.892 11.038 11.185 11.334 11.484 11.635 11.786 11.9381930 12.089 12.242 12.396 12.550 12.704 12.856 13.004 13.149 13.286 13.4161940 13.535 13.644 13.740 13.825 13.896 13.954 13.995 14.018 14.021 14.0021950 13.960 13.894 13.806 13.695 13.562 13.407 13.232 13.036 12.822 12.5891960 12.339 12.074 11.793 11.499 11.192 10.875 10.549 10.215 9.875 9.5281970 9.178 8.825 8.471 8.116 7.762 7.408 7.055 6.705 6.359 6.0161980 5.679 5.347
LOWER 95X CONFIDENCE LIMIT:1900 6.134 6.253 6.373 6.494 6.616 6.739 6.863 6.987 7.110 7.2331910 7.059 7.222 7.382 7.539 7.693 7.843 7.989 8.130 8.265 8.3941920 8.517 8.634 8.746 8.852 8.954 9.052 9.146 9.238 9.326 9.4121930 9.495 9.577 9.658 9.738 9.815 9.890 9.960 10.025 10.084 10.1351940 10.176 10.209 10.231 10.243 10.245 10.236 10.216 10.184 10.138 10.0781950 10.004 9.915 9.813 9.696 9.567 9.424 9.269 9.102 8.924 8.7361960 8.538 8.331 8.117 7.896 7.669 7.437 7.201 6.962 6.720 6.4751970 6.227 5.977 5.725 5.469 5.210 4.947 4.679 4.406 4.129 3.8461980 3.557 3.262
INDEX 1900 1910 1920 1930 1940 1950 1960 1970 1980
VALUE: 0.495 0.803 1.219 0.762 1.216 1.307 1.077 0.940 1.032
0.745 0.714 1.243 0.423 1.222 1.159 1.052 0.537 0.665
0.704 0.960 1.048 0.517 0.801 0.980 0.971 0.625
0.949 1.122 0.982 0.899 0.714 1.068 1.245 1.255
0.942 0.741 0.915 0.906 0.489 0.994 0.824 1.175
0.710 0.844 0.903 1.000 1.114 1.132 0.774 1.153
0.889 0.973 0.936 0.695 0.981 1.111 0.685 0.985
1. 1. 0. 0. 1. 0. 1. 0.
163 122 922 959 104 825 246 701
1.386 1.107 1.325 1.238 1.453 1.354 1.055 1.271
1.175 1.084 1.356 1.433 1.312 0.898 0.770 0.735
21
Output file KNOB.IND
SIGNAL KNOB PITCH PINE
RING 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.119 0.140 0.244 0.131 0.240 0.247 0.232 0.116 0.088
SIG01-1 0.177 0 0.109 0 0.231 0 0.107 0 0.313 0 0.258 0 0.212 0 0.059 0 0.042
MS= .133 .204 .178 .111 .185 .213 .144 .044
0.344 0.349 0.310 0.198 0.215 0.187 0.180 0.181 0.139
1900= 0.235 0.183 0.163 0.168 0.107 0.197 0.141 0.106
0.00 0.038 0.094 0.209 0.204 0.317 0.255 0.105 0.077
CM. 0.093 0.162 0.207 0.179 0.285 0.229 0.119 0.080
0. 0. 0. 0. 0. 0. 0. 0.
210 160 244 248 288 176 255 058
0.274 0.191 0.312 0.322 0.324 0.214 0.172 0.102
0.284 0.293 0.312 0.346 0.263 0.178 0.116 0.074
AREA 1900 1910 1920 1930 1940 1950 1960 1970 1980
1.6113.5869.1606.763
15.53519.88721.79812.0799.629
SPLINE 1900 1.767 1910 4.807 1920 8.091 1930 11.794 1940 15.576 1950 17.723 1960 16.740 1970 13.088 1980 8.385
SIG012.5612.8779.0175.604
20.80421.18220.2156.1764.613
SIG012.0695.1198.443
12.18215.89817.77216.47312.6367.906
-1
2.054 5.586 7.177 5.889
12.586 17.803 13.892 4.620
-1
2.371 5.433 8.799
12.573 16.202 17.787 16.179 12.177
5.9178.9898.217
11.62812.94015.26717.64614.676
2.6735.7509.160
12.96516.48517.76915.86011.713
4.4165.5906.9499.2887.503
16.94213.88911.273
2.9756.0719.525
13.35716.74617.71815.51911.244
0.7472.9539.155
11.51722.65122.29210.4248.233
3.2776.3969.895
13.74716.98317.63415.15610.772
I.8655.2209.338
10.32120.90420.368II.898 8.593
3.5806.726
10.26914.13217.19317.51714.77510.297
4.4125.317
11.35314.63221.64215.87825.7956.255
3.8857.060
10.64614.51117.37417.36914.3769.821
6.1746.558
15.06119.57424.97119.56817.63011.052
4.1917.399
11.02714.88017.52317.18913.9609.343
6.89710.50615.67321.75920.75416.49511.9958.059
4.4987.743
11.40915.23517.64016.97913.5308.865
INDEX190019101920193019401950196019701980
SIG01-10.9120.7461.1320.5730.9971.1221.3020.9231.148
1.2380.5621.0680.4601.3091.1921.2270.4890.583
01000100
.866
.028
.816
.468
.777
.001
.859
.379
2.2141.5630.8970.8970.7850.8591.1131.253
1.4840.9210.7300.6950.4480.9560.8951.003
0.2280.4620.9250.8381.3341.2640.6880.764
0.5210.7760.9090.7301.2161.1630.8050.835
1.1360.7531.0661.0081.2460.9141.7940.637
1.4730.8861.3661.3151.4251.1381.2631.183
1.5331.3571.3741.4281.1770.9710.8870.909
RING 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.115 0.098 0.078 0.149 0.106 0.259 0.177 0.253 0.101 0.080
SIG01-2 MS= 0.133 0.176 0.128 0.089 0.048 0.095 0.142 0.140 0.051 0.066 0.240 0.122 0.173 0.171 0.210 0.107 0.048 0.062 0.043
0 0. 0. 0. 0. 0. 0. 0. 0. 0.
.399 133 156 191 174 141 172 186 14? 149
1890= 0.145 0.177 0.127 0.161 0.157 0.102 0.206 0.110 0.123
0.00 0.106 0.013 0.054 0.193 0.241 0.287 0.202 0.103 0.118
CM. 0.134 0.043 0.070 0.176 0.199 0.247 0.156 0.086 0.069
0.162 0.100 0.099 0.164 0.259 0.243 0.117 0.220 0.044
0.263 0.166 0.093 0.227 0.221 0.345 0.202 0.170 0.096
0.155 0.167 0.158 0.203 0.311 0.221 0.183 0.122 0.054
AREA 1890 1900 1910 1920 1930
4.2494.5534.1768.9597.511
1940 21.3271950 17.0181960 27.2041970 11.7801980 9.760
SIG01-5.0186.0372.5898.6683.639
20.13916.82422.886
5.6215.263
26.8114.2595.1668.6704.733
10.37616.81411.7687.282
5.2767.585
10.55910.94710.20414.78718.49816.06217.599
5.8798.7917.148
10.29911.5098.857
20.74012.27314.633
4.3810.6533.070
12.56017.96725.27220.59711.56114.128
5.6392.1694.007
11.65815.11122.16416.0829.7048.302
6.9685.0895.719
11.03820.04022.17912.16225.0355.309
11.6648.5865.429
15.55717.43332.12621.19919.55311.626
7.0788.8129.348
14.18725.05220.97219.42714.1446.565
23
Output file KNOB.IND, continued
SPLINE 1890 4.902 1900 5.490 1910 6.534 1920 8.956 1930 12.662 1940 16.560 1950 18.476 1960 17.326 1970 13.765 1980 9.157
SIG01-4.9595.5576.7049.283
13.06916.87318.49617.05713.3308.681
25.0175.6286.8899.623
13.48017.16218.48416.76412.886
5.0745.7077.0909.974
13.89317.42818.44116.44912.436
5.1325.7927.307
10.33614.30517.66918.36816.11411.979
5.1895.8877.541
10.70614.71217.88218.26515.76111.516
5.2475.9927.791
11.08515.11118.06618.13315.39111.049
5.3066.1088.059
11.47115.49818.21817.97315.00610.578
5.3666.2378.342
11.86315.87118.33817.78414.60510.106
5.4266.3788.642
12.26016.22618.42317.56914.1919.632
INDEX1890190019101920193019401950196019701980
0.8670.8290.6391.0000.5931.2880.9211.5700.8561.066
SIG01-2 1.012 1.358 1.087 0.757 0.386 0.750 0.934 0.901 0.278 0.351 1.194 0.605 0.910 0.910 1.342 0.702 0.422 0.565 0.606
1. 1. 1. 1. 0. 0. 1. 0. 1.
040 329 489 098 734 848 003 976 415
1.146 1.518 0.978 0.996 0.805 0.501 1.129 0.762 1.222
0.844 0.111 0.407 1.173 1.221 1.413 1.128 0.734 1.227
1 0 0 1 1 1 0 0 0
.075
.362
.514
.052
.000
.227
.887
.630
.751
1 0 0 0 1 1 0 1 0
.313
.833
.710
.962
.293
.217
.677
.668
.502
2.174 1.377 0.651 1.311 1.098 1.752 1.192 1.339 1.150
1.304 1.382 1.082 1.157 1.544 1.138 1.106 0.997 0.682
RING WIDTHS18501860187018801890190019101920193019401950196019701980
0.2840.0890.0320.2090.0900.0700.0490.1470.0820.1190.1070.0500.0260.000
SIG02-1 MS=0.2690.1610.1280.0950.1120.1480.0550.1620.0000.0870.0850.0270.0040.000
0.2670.2500.1120.1900.1430.1340.1070.1290.0830.0770.0490.0340.005
0.5330.3020.1480.1080.1490.1660.1160.1030.1980.1110.0730.0640.0570.049
1850=0.2510.1900.0250.1930.2080.1170.0910.1850.0890.0480.0340.0230.023
0.000.2120.3140.0490.1070.0490.0250.0720.1120.0970.0990.0490.0270.026
CM.0.1480.1360.0670.1830.0750.1110.1210.0960.0860.0730.0510.0250.004
0000000000000
.199
.304
.102
.151
.169
.150
.150
.103
.073
.081
.032
.072
.014
0.2330.2540.2310.2590.0930.1920.1620.1650.1370.1170.0620.0300.015
0.2060.1910.1420.3240.1060.1410.1360.2190.1570.0950.0450.0040.025
AREA 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
8.0283.7871.766
12.9556.5975.6594.329
13.9988.573
13.13912.3945.9643.1560.000
SIG02-8.0716.9777.1265.9798.281
12.067 4.877
15.584 0.000 9.662 9.897 3.227 0.486 0.000
18.461
11.1576.320
12.12910.68711.0449.542
12.5278.7208.5915.7264.0700.608
10.1106.7906.1699.670
12.5679.6519.254
19.43111.7308.1797.5026.8405.963
SPLINE 1850 8.023 1860 8.254 1870 8.558 1880 9.284 1890 10.038 1900 10.270 1910 10.863 1920 11.774 1930 11.683 1940 10.449 1950 8.334 1960 5.706
SIG028.0448.2828.5989.38110.07310.30310.95211.83111.59910.2738.0815.445
-18.065 8.311 8.645 9.476
10.102 10.341 11.046 11.874 11.507 10.089 7.823 5.185
8.0878.3418.7009.568
10.12510.38511.14411.90311.4059.8977.5624.927
8.8398.9191.438
12.73315.9919.8208.231
18.3789.4615.3963.9962.7662.804
8.1088.3718.7639.657
10.14510.43511.24311.91511.2959.6967.2984.671
7.77415.2372.8317.1603.8072.1096.549
11.23110.36811.1765.7713.2513.174
8.1308.4018.8349.740
10.16210.49211.34311.91311.1779.4887.0324.417
5.5946.7923.895
12.4135.8569.414
11.0809.6899.2428.2806.0233.0140.489
7.73915.6025.984
10.40113.32512.84413.86310.4607.8819.2273.7878.7041.711
8.1538.4308.9149.816
10.17910.55511.44211.89511.0509.2726.7664.166
8.1768.4609.0019.885
10.19710.62511.53711.86210.9149.0496.5003.916
9.37813.48113.79418.1737.409
16.64715.13116.89514.88113.4007.3563.6361.835
8.2018.4909.0929.945
10.21810.69911.62511.81610.7698.8186.2343.667
8.57510.4048.646
23.3288.511
12.37212.83022.68817.19810.9445.3540.4853.061
8.2278.5229.1889.996
10.24210.77911.70511.75610.6148.5795.9703.421
24
Output file KNOB.IND, continued
19701980
30
.176
.783
INDEX18501860187018801890190019101920193019401950196019701980
RING184318501860187018801890190019101920193019401950196019701980
AREA184318501860187018801890190019101920193019401950196019701980
10010001011100
.001
.459
.206
.395
.657
.551
.399
.189
.734
.257
.487
.045
.994
.000
WIDTHS000000000000000
.142
.192
.052
.033
.171
.072
.035
.036
.084
.063
.091
.097
.075
.024
.000
2.9330.544
2.692 2.452 2.213 1.975 1.736 1.498 1.260 1.021
SIG02-11.0030.8430.8290.6370.8221.1710.4451.3170.0000.9401.2250.5930.1660.000
.049
.3420.731
.280
.058
.0680.8641.0550.7580.8520.7320.7850.226
SIG02-2 MS=0.2180.2070.1250.1000.0940.1190.0750.0400.1130.0000.0800.0730.0530.0140.000
0.1870.2800.1520.0600.1220.0880.0940.0630.0780.0450.0630.0490.0490.018
1.2500.8140.7091.0111.2410.9290.8301.6321.0280.8260.9921.3882.432
0.4370.2190.3000.1080.0800.1330.1120.0460.0420.0570.0480.0590.0550.0570.055
1.0901.0650.1641.3191.5760.9410.7321.5420.8380.5570.5480.5921.267
1843=0.2900.2290.1560.0210.1280.1240.0620.0560.0600.0510.0390.0450.0200.025
0.9561.8140.3200.7350.3750.2010.5770.9430.9281.1780.8210.7361.607
0.000.3060.1780.2690.0250.1090.0390.0130.0480.0490.0870.0710.0510.0140.034
0.6860.8060.4371.2650.5750.8920.9680.8150.8360.8930.8900.7240.281
CM.0.1880.1560.1000.0440.1360.0520.0560.0830.0460.0510.0590.0610.0140.006
0.9471.8440.6651.0521.3071.2091.2020.8820.7221.0200.5832.2231.142
0.2080.2030.1030.1120.0720.0840.1160.0520.0560.0720.0570.0270.018
1.1431.5881.5171.8270.7251.5561.3021.4301.3821.5201.1800.9911.457
0.2250.1410.1860.1480.0450.0950.1170.0680.0960.1020.0760.0390.017
1.0421.2210.9412.3340.831
.148
.096
.930
.620
.2760.8970.1422.998
0.1410.1560.1740.2360.0410.0800.0980.1030.1030.0620.0550.0170.024
SIG02-23621
105227589720
.478
.602
.457
.860
.601
.069
.628
.848
.027
.548
.364
.343
.510
.455
.000
SPLINE184318501860187018801890190019101920193019401950196019701980
677766555565431
.971
.258
.288
.038
.994
.637
.786
.478
.713
.956
.230
.971
.834
.092
.213
5.5867.3785.9755.6795.9068.4505.6583.1749.5240.0007.3967.0705.3291.4330.000
5.02910.4087.3983.4377.7486.3067.1415.0206.6213.9785.8534.7654.9421.845
6.16911.6985.3454.6188.5538.0963.5153.3604.8624.2575.5045.3665.7685.650
8.6339.3107.8491.2198.3369.0564.7584.4985.1404.5393.6504.4042.0292.574
9.6827.464
13.8941.4557.1802.8681.0013.8714.2157.7816.6705.0071.4223.507
6.2406.7055.2812.5709.0633.8394.3236.7283.9704.5835.5666.0101.4230.620
9.17810.9146.0647.5515.3446.5229.4754.5045.0516.8225.6372.7471.860
10.2357.733
11.11910.0993.3567.4299.6425.9168.7059.7217.5483.9771.759
6.5768.701
10.59816.3883.0696.3008.1439.0169.4045.9415.4851.7362.486
SIG02-27.0177.2867.2687.0176.9906.5585.7205.4865.7385.9866.2385.8974.6772.9081.022
7.0637.3087.2477.0006.9816.4735.6625.5005.7616.0176.2395.8134.5132.724
7.1077.3257.2236.9886.9656.3845.6125.5205.7836.0496.2335.7204.3452.538
7.1507.3357.1996.9816.9436.2935.5695.5435.8056.0816.2205.6184.1722.352
7.1907.3397.1726.9796.9136.2015.5355.5705.8286.1136.2005.5083.9962.164
7.2267.3387.1456.9816.8746.1105.5095.5995.8516.1446.1725.3893.8181.975
7.3327.1176.9866.8286.0215.4915.6295.8766.1726.1365.2633.6381.786
7.3217.0896.9916.7735.9375.4805.6585.9016.1976.0905.1283.4571.595
7.3067.0626.9946.7095.8585.4755.6865.9286.2166.0354.9853.2751.405
25
Output file KNOB.IND, continued
INDEX184318501860187018801890190019101920193019401950196019701980
SIG02-20.4990.9100.3370.2641.5160.7640.4540.5201.2300.9311.3431.5651.5540.7940.000
0.7961.0130.8220.8090.8451.2890.9890.5791.6600.0001.1861.1991.1390.4930.000
0.7121.4241.0210.4911.1100.9741.2610.9131.1490.6610.9380.8201.0950.677
0.8681.5970.7400.6611.2281.2680.6260.6090.8410.7040.8830.9381.3282.226
1.2071.2691.0900.1751.2011.4390.8540.8110.8850.7460.5870.7840.4861.095
1.3471.0171.9370.2081.0390.4630.1810.6950.7231.2731.0760.9090.3561.621
0.8640.9140.7390.3681.3180.6280.7851.2010.6790.7460.9021.1150.3730.314
1.2521.5330.8681.1060.8871.1881.6830.7670.8181.1121.0710.7551.042
1111011111111
.398
.091
.591
.491
.565
.356
.704
.002
.405
.596
.472
.150
.103
0.9001.2321.5152.4430.5241.1511.4321.5211.5130.9841.1000.5301.770
RING 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.388 0.180 0.040 0.235 0.110 0.263 0.092 0.084 0.069 0.071
SIG03-1 0.175 0 0.048 0 0.052 0 0.197 0 0.035 0 0.273 0 0.175 0 0.084 0 0.030 0 0.029
MS= .147 .180 .156 .184 .060 .111 .090 .125 .029
0.486 0.216 0.171 0.228 0.217 0.191 0.124 0.188 0.127 0.112
0 0 0 0 0 0 0 0 0
1890= .211 .232 .124 .192 .232 .045 .143 .070 .054
0.00 0.310 0.228 0.211 0.187 0.217 0.155 0.115 0.089 0.117
CM. 0.071 0.092 0.235 0.190 0.132 0.180 0.172 0.088 0.084
0.108 0.171 0.243 0.168 0.189 0.180 0.118 0.101 0.050
0.248 0.208 0.221 0.312 0.281 0.250 0.137 0.054 0.061
0.320 0.203 0.201 0.286 0.357 0.200 0.067 0.043 0.012
AREA 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
8.3946.2581.804
13.2667.665
21.4338.4788.4237.2917.778
SIG03-4.0951.7032.360
11.3882.455
22.70816.2738.4673.1793.186
13.5896.5167.181
10.8574.2269.3678.444
12.6823.079
SPLINE 1890 4.536 1900 6.282 1910 8.424 1920 11.066 1930 13.341 1940 14.533 1950 13.706 1960 11.222 1970 8.143 1980 5.109
SIG034.7046.4718.674
11.32413.52314.54213.51810.9237.8384.804
-1
4.873 6.665 8.931
11.577 13.695 14.528 13.314 10.620 7.534
5.5206.378
10.77013.07813.60410.55517.80212.98611.939
5.0426.8649.193
11.82413.85814.49313.09510.3147.232
5.6758.9475.995
11.81816.8323.854
13.6907.2015.785
5.2137.0699.459
12.06414.00814.43812.86110.0056.931
8.8459.123
10.42211.73316.05013.37411.1039.200
12.596
5.3857.2799.729
12.29814.14314.36412.6149.6946.629
2.1113.774
11.93712.1469.908
15.72116.7619.1459.096
3.2717.155
12.70810.92814.37715.92411.60610.5565.436
5.5597.4949.999
12.52414.26314.27212.3559.3826.326
5.7357.717
10.27012.74214.36314.15912.0849.0706.023
7.7908.951
11.88020.76621.79022.45513.5855.6706.653
5.9147.946
10.53812.95114.44314.02711.8048.7605.718
10.6228.998
11.07119.57328.39918.2466.6874.5281.311
6.0968.181
10.80413.15114.50013.87611.5168.4505.414
INDEX 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
1.851 0.996 0.214 1.199 0.575 1.475 0.619 0.751 0.895 1.523
SIG03-1 0.871 0.263 0.272 1.006 0.182 1.562 1.204 0.775 0.406 0.663
0.737 0.978 0.804 0.938 0.309 0.645 0.634 1.194 0.409
1 0 1 1 0 0 1 1 1
.095
.929
.172
.106
.982
.728
.359
.259
.651
1.089 1.266 0.634 0.980 1.202 0.267 1.064 0.720 0.835
1.643 1.253 1.071 0.954 1.135 0.931 0.880 0.949 1.900
0.380 0.504 1.194 0.970 0.695 1.102 1.357 0.975 1.438
0.570 0.927 1.237 0.858 1.001 1.125 0.960 1.164 0.903
1.317 1.127 1.127 1.603 1.509 1.601 1.151 0.647 1.163
1.742 1.100 1.025 1.488 1.958 1.315 0.581 0.536 0.242
RING WIDTHS SIG03-2 HS= 0.480 1880= 0.00 CM.1880 0.521 0.445 0.377 0.266 0.117 0.221 0.332 0.179 0.172 0.2561890 0.119 0.115 0.179 0.183 0.273 0.088 0.067 0.213 0.154 0.1421900 0.044 0.110 0.087 0.173 0.195 0.020 0.101 0.152 0.184 0.1811910 0.043 0.035 0.081 0.111 0.098 0.141 0.206 0.191 0.191 0.208
26
Output file KNOB.IND, continued
1920193019401950196019701980
AREA 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
0.1880.1000.2220.1310.0550.0620.065
1.3502.3161.2701.5788.5255.513
13.9819.4354.3155.0665.494
0.1870.0210.2720.1140.0570.0400.015
SI GO3 2.504 2.323 3.228 1.293 8.700 1.166
17.552 8.298 4.492 3.281 1.272
0.1430.0550.1210.0710.0660.033
-23.0953.7812.6073.0216.8013.0667.9575.2095.2272.714
0.1400.1210.1350.1200.0910.074
2.7214.0735.3254.2076.7836.8138.9878.8777.2516.112
0.1400.1370.0520.1480.0280.047
I.338 6.468 6.227 3.779 6.906 7.825 3.492
II.072 2.242 3.900
0.1230.1240.1310.0880.0320.056
2.7612.1850.6525.5436.1697.1848.8736.6492.5684.665
0.1230.0610.1460.1350.0320.062
4.7251.6963.3328.3236.2643.570
10.01610.2952.5745.187
0.1020.0980.0980.0970.0530.031
2.8355.5795.1357.9555.2675.7846.7987.4684.2782.603
0.2380.1770.1620.1240.0560.033
2.9144.2116.4118.184
12.54310.59911.3709.6324.5392.777
0.2180.2930.1460.0340.0440.009
4.6814.0156.5149.173
11.80217.97810.3882.6583.5800.759
SPLINE 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
2.277 3.068 3.897 5.073 6.593 7.862 8.650 8.139 6.418 4.426 2.575
SIG03-2 2.357 2.437 3.145 3.224 3.994 4.095 5.216 5.364 6.737 6.877 7.968 8.071 8.667 8.668 8.010 7.870 6.214 6.009 4.238 4.051 2.390
2.517 3.303 4.201 5.516 7.013 8.170 8.652 7.718 5.804 3.866
2.597 3.382 4.311 5.671 7.145 8.265 8.622 7.556 5.600 3.681
2.676 3.462 4.426 5.827 7.274 8.353 8.577 7.384 5.398 3.497
2.755 3.545 4.546 5.984 7.399 8.434 8.518 7.204 5.199 3.312
2.834 3.629 4.671 6.140 7.521 8.507 8.444 7.015 5.002 3.128
2 34 6 7 8 8 6 4 2
.912
.715
.800
.294
.639
.568
.356
.820
.808
.944
2.990 3.805 4.934 6.445 7.752 8.616 8.254 6.621 4.616 2.759
INDEX18801890190019101920193019401950196019701980
SIG03-20.5930.7550.3260.3111.2930.7011.6161.1590.6721.1452.134
1.0620.7380.8080.2481.2910.1462.0251.0360.7230.7740.532
1.2701.1730.6360.5630.9890.3800.9180.6620.8700.670
1.0811.2331.2670.7630.9670.8341.0391.1501.2491.581
0.5151.9121.4440.6660.9670.9470.4051.4650.4001.059
1.0320.6310.1470.9510.8480.8601.0340.9000.4761.334
1.7150.4780.7331.3910.8470.4231.1761.4290.4951.566
1.1.1.1.0.0.0.1.0.0.
000537099296700680805
.001
.133
.335
.300
.642
.237
.361064 1.412855 0.944832 0.944
1.5661.0551.3201.4231.5222.0871.2590.4010.7760.275
RING WIDTHS1910 0.3251920193019401950196019701980
AREA 1910 1920 1930 1940 1950 1960 1970 1980
0.5290.1600.3300.7380.1910.1170.034
SIG05-10.3620.5270.1450.3030.3760.2090.0950.019
MS= 0.329 0.499 0.126 0.170 0.292 0.249 0.067
0.288 1910= 0.512 0.319 0.380 0.309 0.243 0.106 0.262 0.360 0.110
0.2420.1060.2160.2090.104
0.00 CM. 0.284 0.346 0.319 0.278 0.323 0.237 0.287 0.165 0.068
0.2490.2740.2480.1260.085
0.4110.3790.2960.3280.2140.2560.047
0.3790.4380.3330.3950.3160.2130.099
SIG05-10.906 1.790 2.341 4.996 3.946
13.845 15.541 16.324 13.480 11.6318.067 7.449 6.580 12.973 13.288
21.970 20.775 11.909 7.517 7.588 63.666 33.753 26.825 24.525 20.543 19.906 22.045 26.623 39.179 23.119 13.727 11.210 7.940 13.097 12.4524.158 2.327
0.3530.3850.3700.6810.1820.1450.040
4.051 5.620 7.653 7.998 8.26112.636 11.534 16.506 20.200 18.75118.309 14.562 17.817 20.702 23.82017.221 20.349 24.980 30.980 55.71327.750 24.396 21.362 32.070 18.75518.446 14.201 29.160 24.576 16.8938.179 10.264 5.695 12.041 4.883
SPLINE SIG05-11910 2.767 3.439 4.111 4.782 5.452 6.119 6.784 7.446 8.102 8.7521920 9.395 10.030 10.656 11.273 11.881 12.481 13.075 13.663 14.247 14.826
27
Output file KNOB.IND, continued
1930 15.403 15.980 16.558 17.137 17.718 18.298 18.875 19.448 20.015 20.5721940 21.118 21.649 22.165 22.662 23.138 23.587 24.002 24.375 24.699 24.9641950 25.165 25.298 25.362 25.361 25.294 25.166 24.977 24.729 24.423 24.0611960 23.645 23.176 22.656 22.086 21.467 20.802 20.096 19.350 18.569 17.7571970 16.917 16.054 15.172 14.275 13.365 12.445 11.517 10.583 9.645 8.7041980 7.762 6.819
INDEX19101920193019401950196019701960
0.3271.4740.5241.0402.5300.8420.8110.536
SIG05-10.520 0.5691.5490.4660.9601.3340.9510.698
1.5320.3970.5371.0581.1750.523
1.0451.1960.7570.3320.9671.7740.917
0.7240.9790.7500.3280.8121.0770.932
0.662 0.828 1.028 0.987 0.9441.0121.0010.7301.1030.8870.657
0.8820.7710.8480.9770.7070.891
1.2080.9161.0250.8641.5070.538
1.4181.0341.2541.3131.3231.248
1.2651.1582.2320.7790.9510.561
0.341
RING 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.284 0.048 0.029 0.114 0.206 0.180 0.240 0.184 0.177 0.065 0.017
SI 605- 2 MS= 0.350 0.205 0.019 0.110 0.069 0.069 0.096 0.114 0.199 0.157 0.206 0.182 0.266 0.259 0.206 0.173 0.158 0.145 0.028 0.043 0.006
0.461 0.139 0.167 0.127 0.116 0.203 0.285 0.153 0.168 0.137 0.084
1880= 0.223 0.178 0.157 0.110 0.161 0.222 0.136 0.173 0.110 0.100
0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0.00 243 099 015 120 236 208 167 227 126 071
CM. 0.291 0.116 0.051 0.171 0.209 0.138 0.182 0.209 0.096 0.047
0.210 0.191 0.137 0.256 0.219 0.193 0.180 0.118 0.144 0.031
0.264 0.208 0.128 0.161 0.302 0.241 0.286 0.183 0.108 0.088
0.349 0.212 0.176 0.211 0.259 0.218 0.166 0.110 0.068 0.019
AREA 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
2.0181.0770.8954.2339.610
10.81517.59215.80717.1496.7931.836
2.3872.9773.8405.7739.078
SPLINE 1880 1890 1900 1910 1920 1930 12.682 1940 15.187 1950 15.687 1960 13.632 1970 9.341 1980 4.134
SIG05-3.1840.4302.1503.6289.537
12.62819.92117.95015.4752.9340.648
SIG05-2.4463.0403.9706.0499.449
13.00015.33815.60313.2868.8413.600
22.2232.5362.1804.3847.700
11.37819.82315.28014.3404.516
22.5053.1064.1136.3409.823
13.30515.46815.49212.9178.335
1.6573.9954.0904.544
10.18518.23611.90815.01913.6708.856
2.5643.1774.2686.645
10.19713.59715.57515.35312.5277.823
2.9124.4515.1964.3878.262
14.55810.70915.65111.06110.600
2.6223.2524.4376.964
10.56913.87415.66115.18812.1187.307
3.5292.5620.5054.873
12.40513.92113.30920.82212.7637.564
2.6813.3324.6217.294
10.93914.13615.72514.99511.6906.785
4.7153.080I.726 7.100
II.2789.386
14.70419.4579.7925.025
2.7403.4184.8217.636
11.30414.38215.76614.77411.2476.260
3.7335.2564.718
10.97312.11213.32814.74711.10614.7963.322
2.7983.5115.0367.987
11.66214.61115.78414.52710.7885.731
5.0865.9844.5147.112
17.19716.97123.85017.39711.1829.463
2.8573.6125.2668.345
12.01214.82215.77814.25310.3165.201
7.3956.3796.3759.567
15.20515.66614.07910.5597.0782.049
2.9163.7215.5128.709
12.35315.01515.74613.9559.8334.668
INDEX18801890190019101920193019401950196019701980
0.8450.3620.2330.7331.0590.8531.1581.0081.2580.7270.444
SI 605-1.3020.1420.5410.6001.0090.9711.2991.1501.1650.3320.180
20.8870.8160.5300.6910.7840.8551.2820.9861.1100.542
0.6461.2580.9580.6840.9991.3410.7650.9781.0911.132
1.1111.3691.1710.6300.7821.0490.6841.0310.9131.451
1.3160.7690.1090.6681.1340.9850.8461.3891.0921.115
1.7210.9010.3580.9300.9980.6530.9331.3170.8710.803
1101100010
.334 1
.497
.937 (
.374 (
.039
.912
.934
.765
.371
.580
.780
.657).8573.852.432.145.512.221.084.820
2.5361.7141.1571.0991.2311.0430.8940.7570.7200.439
28
Output file KNOB.IND, continued
RING WIDTHS18821890190019101920193019401950196019701980
AREA18821890190019101920193019401950196019701980
0.4830.0520.1140.1360.1410.0960.1710.1380.0820.0620.027
5.8251.2993.9806.3298.0406.402
12.69311.2247.1645.6382.539
SPLINE18821890190019101920193019401950196019701980
INDEX18821890190019101920193019401950196019701980
RING18801890190019101920193019401950196019701980
AREA1880189019001910
3.6734.8176.4027.8748.7969.1109.0648.3806.8525.0223.163
1.5860.2700.6220.8040.9140.7031.4001.3391.0461.1230.803
WIDTHS0.2890.0170.0920.1060.1140.0810.1370.1320.1000.0470.052
SIG06-10.2680.0590.1820.1410.1260.0000.1350.1120.0620.0410.022
SIG06-13.8651.4956.5246.6857.2910.000
10.150
HS= 0.396000000000
.210
.107
.158
.155
.133
.072
.085
.135
.0650.033
3257746
9.198 115.4453.7422.072
SIG06-13.8144.9676.5637.9948.8529.1209.0298.2636.6724.8412.973
SIG06-11.0130.3010.9940.8360.8240.0001.1241.1130.8160.7730.697
53
3568898864
0000000100
SIG06-20.3000.0550.1570.1050.1200.0000.1150.1020.0870.0450.032
0000000000
.344
.767
.832
.493
.804
.840
.450
.191
.734
.019
.955
.119
.722
.109
.902
.127
.987
.135
.490
.658
.845
.540
.868
.924
.877
.530
.718
.376
.884
.648
0.1720.1470.2260.2130.1900.1260.0700.1020.0910.100
2.9453.9188.615
10.54311.3418.5485.3468.5318.0739.192
4.0965.2746.8808.2188.9469.1348.9387.9996.3064.476
0.7190.7431.2521.2831.2680.9360.5981.0671.2802.054
MS= 0.384.341.102.126.138.107.060.045.097.071.044
0.1960.1100.2550.1550.1240.0860.0760.0850.0650.080
1882=0.3130.1960.1590.1170.1630.1470.0540.0980.0510.066
5.8365.4366.2535.9129.910
10.0984.1458.2584.5476.101
4.2385.4327.0358.3208.9849.1378.8827.8536.1224.291
1.3771.0010.8890.7111.1031.1050.4671.0520.7431.422
1880=0.1890.2070.1780.0820.1380.1210.0460.0920.0440.055
0.000.2370.1190.1090.1670.1650.1590.1030.0950.0460.063
4.8283.4184.3798.588
10.20211.0767.9578.0634.1155.849
4.3815.5927.1868.4179.0179.1388.8207.7005.9384.106
1.1020.6110.6091.0201.1311.2120.9021.0470.6931.425
0.000.2130.1340.1200.1290.1490.1310.1040.0860.0450.061
CM.0.2300.1950.2040.1830.1580.0810.1160.0920.0470.032
5.0235.7938.3969.6129.9295.7039.0417.8634.2182.981
4.5255.7537.3348.5069.0449.1348.7507.5415.7533.919
1.1101.0071.1451.1301.0980.6241.0331.0430.7330.761
CM.0.6270.1530.1610.1410.1110.0890.1330.0950.0450.052
0.3600.2630.2340.2180.1160.1240.1400.0610.0660.038
8.5308.1929.952
11.7257.3908.811
11.0245.2435.9473.548
4.6705.9157.4778.5899.0669.1268.6727.3755.5703.731
1.8261.3851.3311.3650.8150.9651.2710.7111.0680.951
0.2790.2240.1910.1680.0860.1190.1290.0730.0610.030
0.2180.2930.1780.1840.1560.1470.1070.0310.053
7.12012.9479.795
11.89511.22211.7079.2532.8034.963
6.0787.6158.6659.0859.1128.5857.2055.3873.542
1.1711.7001.1301.3091.2321.3641.2840.5201.401
0.2040.1960.2200.1320.1580.1480.1220.1060.0590.078
0.1930.1600.1580.1850.2010.1270.0480.0380.020
6.5537.2988.861
12.17414.68510.2244.1743.4441.878
6.2407.7478.7339.0999.0928.4877.0305.2043.353
1.0500.9421.0151.3381.6151.2050.5940.6620.560
0.2340.1580.1560.1450.1520.1870.0980.0640.0480.036
SIG06-22.7320.4533.2574.860
3.3911.4785.6814.884
4246
.541
.791
.671
.524
2.9413.0839.7587.470
3.0646.0087.0544.013
3.7234.0334.8686.399
12.6124.7436.6737.114
6.4067.2098.1288.639
4.9946.5669.6466.912
6.0505.4697.0247.719
29
Output file KNOB.IND, continued
1920193019401950196019701980
6.1615.0109.3789.8678.0513.9614.555
6.5740.0007.9637.7007.0553.8052.812
5.9383.7383.1397.3835.7933.733
6.9725.3975.3306.5185.3316.818
7.8727.6723.2437.1063.6244.711
8.6348.4107.3826.6913.7195.247
6.5235.7759.5407.4453.7324.491
5.1077.8009.3595.7595.0792.599
9.504 9.2919.825 12.6108.947 7.2558.422 5.1194.934 4.0306.783 3.144
SPLINE 1880 3.867 1890 4.761 1900 5.671 1910 6.409 1920 6.830 1930 7.074 1940 7.277 1950 7.051 1960 6.162 1970 4.975 1980 3.844
SIG06-2 3.960 4. 4.848 4. 5.759 5. 6.463 6. 6.859 6. 7.097 7. 7.279 7. 6.991 6. 6.046 5. 4.860 4. 3.731
052 937 845 514 887 121 276 923 928 746
4.144 5.028 5.928 6.562 6.913 7.147 7.268 6.849 5.808 4.633
4.235 5.119 6.009 6.607 6.939 7.173 7.256 6.767 5.687 4.520
4.325 5.212 6.085 6.650 6.962 7.197 7.239 6.680 5.566 4.408
4.415 5.305 6.158 6.691 6.985 7.220 7.215 6.586 5.446 4.295
4.502 5.397 6.227 6.729 7.008 7.241 7.185 6.487 5.326 4.183
4.589 5.490 6.292 6.765 7.030 7.257 7.148 6.383 5.208 4.070
4.675 5.581 6.352 6.799 7.052 7.269 7.104 6.274 5.091 3.957
INDEX 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
0.706 0.095 0.574 0.758 0.902 0.708 1.289 1.399 1.307 0.796 1.185
SIG06-2 0.856 0.305 0.986 0.756 0.958 0.000 1.094 1.101 1.167 0.783 0.754
1.121 0.565 0.799 1.002 0.862 0.525 0.431 1.066 0.977 0.786
0 0 1 1 1 0 0 0 0 1
.710
.613
.646
.138
.008
.755
.733
.952
.918
.472
0.724 1.174 1.174 0.607 1.135 1.070 0.447 1.050 0.637 1.042
0.861 0.774 0.800 0.962 1.240 1.168 1.020 1.002 0.668 1.190
2.857 0.894 1.084 1.063 0.934 0.800 1.322 1.130 0.685 1.046
1.423 1.336 1.305 1.284 0.729 1.077 1.302 0.888 0.953 0.621
1.088 1.196 1.533 1.022 1.352 1.354 1.252 1.320 0.947 1.667
1.294 0.980 1.106 1.135 1.318 1.735 1.021 0.816 0.792 0.794
RING 1887 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.471 0.126 0.146 0.183 0.210 0.134 0.207 0.250 0.139 0.108 0.068
SIG08-1 0.358 0.148 0.183 0.171 0.207 0.172 0.247 0.184 0.166 0.038 0.041
MS= 0.661 0.200 0.181 0.171 0.171 0.125 0.116 0.166 0.111 0.088
0.336
0.228 0.231 0.199 0.129 0.174 0.114 0.196 0.161 0.128
1887=
0.235 0.195 0.151 0.122 0.166 0.088 0.118 0.118 0.133
0.00
0.136 0.158 0.142 0.084 0.125 0.249 0.172 0.115 0.047
CM.
0.194 0.159 0.198 0.131 0.127 0.140 0.158 0.096 0.075
0.270 0.248 0.157 0.114 0.165 0.141 0.091 0.161 0.069
0 0 0 0 0 0 0 0 0
.255
.278
.193
.180
.151
.237
.208
.135
.099
0.180 0.183 0.171 0.220 0.220 0.207 0.148 0.063 0.030
AREA 1887 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
9.8333.6736.0759.891
13.65910.00417.52923.94714.74312.3038.086
SPLINE 1887 7.742 1890 7.891 1900 8.587 1910 9.626 1920 10.829 1930 12.458 1940 14.463 1950 15.647 1960 14.708
SI COS8.4064.4427.8039.433
13.73513.00621.26917.87617.7664.3464.889
SIG087.7917.9438.6799.737
10.96512.65314.64315.65814.494
-117.6366.2227.9259.617
11.5509.569
10.12116.31011.97610.100
-17.841 7.998 8.775 9.850
11.105 12.853 14.813 15.645 14.261
7.39910.41311.4238.834
13.48310.02919.48017.50814.777
8.0578.8749.964
11.25013.05614.97215.60714.010
7.9689.0518.8338.451
13.0417.797
11.84412.93515.464
8.1208.977
10.08011.40213.26015.11915.54613.741
4.7707.5098.4385.8739.934
22.32617.42112.6915.491
7.0057.715
11.9779.248
10.19412.72416.16710.6588.791
8.1879.081
10.19911.56013.46615.25315.46213.457
8.2589.188
10.31911.72613.67215.37115.35513.159
10.14312.3519.6728.136
13.39512.9399.382
18.0048.119
8.3349.296
10.44311.90013.87715.47115.22512.847
10.00014.30412.10213.01212.40822.03121.64115.22211.701
8.4149.405
10.56812.08014.07815.55215.07412.523
7.3059.681
10.91816.18018.33519.53115.5647.1433.558
8.4989.515
10.69712.26614.27415.61114.90112.188
30
Output file KNOB.IND, continued
1970 11.844 11.492 11.133 10.768 10.397 10.021 9.642 9.259 8.874 8.4871980 8.100 7.712
INDEX1887 '1890 (1900 (191019201930 (19401950196019701980 (
II. 270 '3.466 ().707 (.028 (.261
3.803.212.530.002.039 (
3.998 (
JIG08-11. 079J.5591.8991.969.253.028.452.142.226
J.3781.634
2.2490.7780.9030.9761.0400.7440.6831.0420.8400.907
0.9181.1731.1460.7851.0330.6701.2481.2501.372
0.9811.0080.8760.7410.9830.5160.7620.9411.487
000001100
.583
.827
.827
.508
.738
.464
.127
.943
.548
0.8480.8401.1610.7890.7460.8281.0530.8100.912
1.2171.3290.9260.6840.9650.8360.6161.4010.877
1.188 (1.5211.1451.0770.8811.4171.4361.215 (1.319 (
3.860.017.021.319.284.251.044
3.586J.419
RING 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.058 0.149 0.139 0.196 0.158 0.153 0.190 0.117 0.099 0.056
SIG08-2 MS= 0.097 0.179 0.200 0.169 0.107 0.142 0.204 0.154 0.119 0.121 0.162 0.113 0.138 0.177 0.136 0.090 0.041 0.079 0.018
0.286 0.200 0.170 0.125 0.120 0.173 0.109 0.179 0.132 0.116
1890= 0.205 0.220 0.101 0.094 0.154 0.069 0.126 0.120 0.156
0. 0. 0. 0. 0. 0. 0. 0. 0.
0.00 122 147 139 099 148 196 181 100 053
CM. 0.185 0.229 0.173 0.139 0.106 0.211 0.174 0.093 0.080
0.262 0.177 0.149 0.130 0.184 0.194 0.096 0.140 0.057
0.258 0.186 0.207 0.196 0.184 0.259 0.140 0.119 0.059
0.225 0.184 0.199 0.224 0.251 0.195 0.086 0.053 0.020
AREA 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
I.163 4.706 5.985
10.298 9.827
II.05015.72710.7519.7765.789
SPLINE 1890 3.617 1900 5.425 1910 6.930 1920 8.430 1930 10.137 1940 11.857 1950 12.663 1960 11.596 1970 9.128 1980 5.897
SIG08-1.9916.5364.690
10.9757.505
11.86011.56512.6054.0671.865
SI 608-3.8055.5897.0728.588
10.31811.99812.64311.4008.8305.558
23.8305.7196.3358.4587.7228.371
15.0098.4057.865
23.9935.7507.2168.749
10.50012.12912.60311.1918.526
4.5185.9345.6816.694
11.2018.150
15.37812.42011.620
4.1805.9077.3618.912
10.68112.24912.54110.9708.214
4.8917.9484.6625.307
10.1295.198
10.94611.38615.760
4.3666.0607.5089.079
10.86112.35812.45910.7377.897
3.0365.4806.5215.6499.875
14.92815.8989.5575.389
4.5506.2117.6579.248
11.03912.45412.35810.4937.573
4.7838.8088.2868.0357.157
16.34115.4778.9458.168
4.7326.3587.8089.422
11.21412.53412.23910.2397.243
7.1417.0347.2877.625
12.59115.2718.621
13.5685.844
4.9106.5037.9629.598
11.38512.59612.1019.9756.910
7.4547.603
10.35511.69712.80420.75612.67611.6296.071
5.0866.6478.1169.776
11.55012.64011.9479.7016.574
6.8427.735
10.20913.66317.80915.9057.8485.2082.063
5.2586.7898.2729.956
11.70812.66211.7799.4186.236
INDEX 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
0.321 0.867 0.864 1.222 0.969 0.932 1.242 0.927 1.071 0.982
SIG08-2 0.523 0.959 1.169 0.995 0.663 0.878 1.278 0.967 0.727 0.735 0.989 0.690 0.915 1.191 1.106 0.751 0.461 0.923 0.336
1 1 0 0 1 0 1 1 1
.081
.005
.772
.751
.049
.665
.226
.132
.415
1 1 0 0 0 0 0 1 1
.120
.312
.621
.585
.933
.421
.879
.060
.996
0 0 0 0 01 10 0
.667
.882
.852
.611
.894
.199
.286
.911
.712
1.011 1.385 1.061 0.853 0.638 1.304 1.265 0.874 1.128
1.454 1.082 0.915 0.794 1.106 1.212 0.712 1.360 0.846
.466
.144
.276
.196
.109
.642
.301
.139
.234
.372
.521
.256.061 0.666.199 0.553
0.923 0.331
RING WIDTHS 1890 0.179 1900 0.127 1910 0.182 1920 0.224 1930 0.084
SIG09-1 MS= 0.481 1890= 0.00 CM. 0.181 0.187 0.251 0.256 0.097 0.088 0.182 0.122 0.201 0.140 0.062 0.150 0.159 0.1720.000
0.1910.1100.016
0.2330.0960.082
0.0960.1470.082
0.1710.1460.115
0.1560.1270.112
0.1160.2000.2360.1300.167
0.1920.2280.1830.1900.198
0.1740.1370.1580.1750.188
31
Output file KNOB.IND, continued
1940195019601970
0.1830.1100.0930.067
0.1850.1240.0780.000
1980 0.034 0.030
AREA 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
6.2445.782
10.08914.9316.363
15.1209.9628.9946.7933.515
SPLINE 1890 6.357 1900 7.684 1910 9.039 1920 9.870 1930 10.118 1940 10.371 1950 9.786 1960 8.067 1970 5.583 1980 2.829
SIG09-6.5188.4638.985
11.6790.000
15.49911.3217.5860.0003.107
SIG09- 6.488 7.823 9.156 9.909
10.142 10.365 9.662 7.845 5.310 2.554
0.1020.0840.0850.048
16.9505.790
11.0037.5671.2178.6377.7248.3104.884
16.6187.9629.2679.943
10.17010.3479.5267.6165.036
0.1200.1140.0900.038
9.6759.743
13.7336.6666.263
10.24510.5538.8483.877
6.7488.1029.3709.971
10.20110.3179.3797.3814.761
0.0420.0930.0460.025
10.2756.9365.757
10.3196.3053.6078.6694.5422.555
6.8798.2429.4669.997
10.23410.2779.2217.1394.485
0.1520.1260.0480.048
4.0013.111
10.39910.3838.913
13.14711.8324.7544.917
7.0108.3819.554
10.01910.26810.2269.0526.8914.209
0.1420.0860.0430.032
3.6817.6279.6479.1418.761
12.4138.1334.2713.286
0.1240.0700.1110.020
4.92610.38914.8859.462
13.20910.9436.655
11.0782.057
7.1428.5199.634
10.04010.30110.1628.8736.6393.932
7.2758.6559.706
10.05910.33010.0878.6856.3823.656
0.1440.1060.0990.040
8.34012.15011.78314.02015.88812.83010.1359.9464.122
7.4108.7889.769
10.07810.3539.9998.4876.1203.380
0.1060.0750.0630.016
7.7587.458
10.34213.11415.3149.5277.2146.3611.652
7.5478.9169.823
10.09710.3679.8998.2815.8533.105
INDEX 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
0.982 0.752 1.116 1.513 0.629 1.458 1.018 1.115 1.217 1.242
SIG09-1 1.005 1.050 1.082 0.727 0.981 1.187 1.179 0.761 0.000 0.120 1.495 0.835 1.172 0.811 0.967 1.091 0.000 0.970 1.217
1 1 1 0 0 0 1 1 0
.434
.202
.466
.668
.614
.993
.125
.199
.814
1 0 0 1 0 0 0 0 0
.494
.842
.608
.032
.616
.351
.940
.636
.570
0 0 1 1 0 1 1 0 1
.571
.371
.088
.036
.868
.286
.307
.690
.168
0 0 1 0 0 1 0 0 0
.515
.895
.001
.911
.850
.221
.917
.643
.836
0.677 1.200 1.534 0.941 1.279 1.085 0.766 1.736 0.563
.125 1.028
.383 0.836
.206 1.053
.391 1.299
.535 1.477
.283 0.962
.194 0.871
.625 1.087
.219 0.532
RING 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.341 0.154 0.247 0.246 0.232 0.213 0.211 0.135 0.105 0.082
SIG09-2 0.287 0.127 0.243 0.249 0.139 0.242 0.190 0.116 0.077 0.064
MS= 0.310 0.206 0.230 0.286 0.068 0.228 0.144 0.120 0.014
0.277 0.259 0.152 0.248 0.198 0.111 0.127 0.149 0.110 0.090
1890= 0.255 0.207 0.246 0.205 0.124 0.099 0.148 0.068 0.072
0.00 0.238 0.194 0.118 0.191 0.177 0.255 0.163 0.060 0.103
CM. 0.082 0.118 0.175 0.183 0.165 0.176 0.130 0.068 0.076
0. 0. 0. 0. 0. 0. 0. 0. 0.
135 160 171 226 203 266 098 110 041
0.127 0.246 0.223 0.146 0.213 0.293 0.178 0.144 0.059
0.199 0.208 0.183 0.237 0.243 0.214 0.094 0.120 0.062
AREA 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
7.9825.675
11.92415.09617.38618.19120.82014.56512.0129.735
SIG09-7.2844.792
12.10515.66810.57921.01418.98712.6078.8537.627
28.4497.989
11.79918.4775.219
20.13514.54213.1311.614
7.5226.065
13.09513.0938.582
11.35715.18412.11610.403
7.8188.494
13.37213.8159.6798.923
15.2207.5288.359
7.6658.2056.549
13.10913.98323.26816.9226.666
12.014
2.7235.1069.873
12.77513.21316.29813.6157.5838.908
4.5767.0639.834
16.06716.49025.00110.33412.3274.821
4.40911.17413.10010.55017.58128.05418.92516.2536.955
7.1139.744
10.98417.41120.40520.83110.07413.6437.333
SPLINE SIG09-21890 5.523 5.705 5.887 6.070 6.255 6.442 6.633 6.829 7.030 7.238 1900 7.453 7.674 7.903 8.138 8.379 8.626 8.878 9.134 9.394 9.656 1910 9.919 10.182 10.444 10.705 10.964 11.221 11.476 11.729 11.978 12.224
32
Output file KNOB.IND, continued
1920 12.465 12.701 12.931 13.155 13.373 13.586 13.794 13.998 14.198 14.3951930 14.589 14.780 14.969 15.156 15.341 15.522 15.697 15.863 16.018 16.1581940 16.282 16.387 16.472 16.535 16.576 16.592 16.583 16.545 16.479 16.3831950 16.257 16.105 15.927 15.725 15.502 15.260 15.000 14.726 14.439 14.1401960 13.831 13.515 13.193 12.866 12.536 12.205 11.872 11.539 11.205 10.8701970 10.534 10.199 9.864 9.530 9.198 8.866 8.536 8.207 7.878 7.5511980 7.224 6.897
INDEX SIG09-21890190019101920193019401950196019701980
RING1863187018801890190019101920193019401950196019701980
AREA186318701880189019001910192019301940
1.4450.7611.2021.2111.1921.1171.2811.0531.1401.348
WIDTHS0.0650.2050.3140.2140.0980.1460.1420.0860.1420.1600.1100.0560.025
1.2770.6241.1891.2340.7161.2821.1790.9330.8681.106
111101000
SIG11-10.1050.0150.2390.2040.1140.1240.1670.0000.1480.1630.0940.0260.000
000000000000
.435
.011
.130
.429
.349
.222
.913
.995
.164
MS=.084.060.413.193.093.156.149.031.100.133.100.048
1.2390.7451.2230.9950.5660.6870.9660.9421.092
0.3910.1560.0910.2500.2100.1950.1700.0780.0800.1090.1170.1080.070
1.2501.0141.2201.0330.6310.5380.9820.6000.909
1863=0.1660.0880.2890.2240.1440.1060.0820.0480.0760.1330.0630.096
1.1900.9510.5840.9650.9011.4021.1090.5461.355
0.000.2070.1380.1900.1410.1440.1360.0900.0840.1640.1330.0670.111
0.4110.5750.8600.9260.8420.9830.9080.6391.044
CM.0.2240.2220.2760.1360.1550.1420.1090.0430.1090.1360.0310.109
0.6700.7730.8381.1481.0401.5110.7021.0680.587
0.2200.2000.1830.1730.1790.1060.0820.1510.1020.1000.028
0.6271.1891.0940.7431.0981.7021.3111.4500.883
0.3230.2340.1910.1840.1280.1800.1300.1790.1740.0600.054
0.9831.0090.8991.2101.2631.2720.7121.2550.971
0.2310.2580.1330.2250.1280.1580.1550.1860.1050.0500.042
SIG11-10.8304.0059.3859.9105.6299.806
10.7987.206
12.583
1.3970.3037.5599.7156.6238.434
12.8620.000
13.249
11
1395
101129
.167
.228
.908
.431
.464
.748
.623
.609
.030
2.2861.9058.939
10.52811.63311.8866.1406.7619.914
2.6001.892
10.82311.5358.7447.5036.4964.0766.957
3.4853.0657.4027.4238.8749.7307.1797.167
15.136
4.0755.182
11.1567.2789.698
10.2848.7633.686
10.153
5.4418.3839.976
11.00213.1448.5937.062
14.189
8.53910.12710.63711.9089.522
14.75411.28217.006
6.50911.5657.542
14.8509.625
13.11813.59017.884
1950 15.558 16.015 13.191 11.696 13.400 13.511 13.931 10.525 18.105 11.0171960 11.616 9.987 10.685 11.611 6.807 7.266 3.372 10.917 6.580 5.5011970 6.180 2.876 5.320 7.785 10.726 12.475 12.325 3.178 6.143 4.7911980 2.857 0.000
SPLINE 1863 1.258 1870 3.638 1880 6.861 1890 8.922 1900 9.636 1910 9.787 1920 9.527 1930 9.513
SIG11-1 1.599 3.975 7.138 9.041 9.669 9.775 9.497 9.568
1.940 4.312 7.401 9.147 9.699 9.758 9.469 9.638
2.280 4.648 7.648 9.240 9.725 9.738 9.445 9.723
2.620 4.981 7.879 9.322 9.748 9.714 9.428 9.823
2.960 5.312 8.093 9.393 9.766 9.687 9.418 9.936
3. 5. 8. 9. 9. 9. 9.
10.
299 638 291 455 781 657 417 062
5.958 8.473 9.510 9.790 9.626 9.425
10.198
6.269 8.638 9.557 9.795 9.593 9.443
10.341
6.571 8.788 9.599 9.793 9.560 9.472
10.4891940 10.63840.787 10.931 11.070 11.202 11.322 11.430 11.521 11.594 11.6461950 11.676 11.682 11.664 11.623 11.558 11.469 11.357 11.223 11.068 10.8931960 10.699 10.488 10.263 10.024 9.774 9.516 9.249 8.977 8.700 8.4191970 8.134 7.846 7.556 7.261 6.963 6.661 6.353 6.041 5.726 5.4091980 5.090 4.770
INDEX1863187018801890
SIG11-10.6601.1011.3681.111
0.8740.0761.0591.074
0.6020.2851.8791.031
1011
.002
.410
.169
.139
0.9920.3801.3741.237
1.1770.5770.9150.790
1.2350.9191.3460.770
0.9130.9891.049
1.3621.1721.113
0.9911.3160.786
33
Output file KNOB.IND, continued
1900 1910 1920 1930 1940 1950 1960 1970 1980
0.584 1.002 1.133 0.757 1.183 1.333 1.086 0.760 0.561
RING WIDTHS187018801890190019101920193019401950196019701980
AREA187018801890190019101920193019401950196019701980
0.0070.2460.1570.0410.1070.1070.0520.0860.1150.0490.0630.045
0.685 0.863 1.354 0.000 1.228 1.371 0.952 0.367 0.000
0.563 1.101 1.228 0.271 0.826 1.131 1.041 0.704
1.196 1.221 0.650 0.695 0.896 1.006 1.158 1.072
SIG11-2 MS= 0.3890.0400.2190.1220.0620.1200.0830.0000.1130.1130.0670.0140.016
0.0580.3750.1460.0800.1360.0680.0240.0890.0800.0520.026
0.1440.2160.1900.1480.1580.0830.0470.0670.1050.0830.062
0.897 0.772 0.689 0.415 0.621 1.159 0.696 1.540
1870=0.1150.2140.2130.1380.0640.0700.0520.0420.0730.0490.066
0.909 1.005 0.762 0.721 1.337 1.178 0.764 1.873
0.991 1.065 0.931 0.366 0.888 1.227 0.365 1.940
1.124 1.365 0.912 0.692 1.232 0.938 1.216 0.526
1.216 0.993 1.562 1.091 1.467 1.636 0.756 1.073
1.516 1.007 1.385 1.296 1.536 1.011 0.653 0.886
0.00 CM.0.1590.1330.1240.0970.1070.0550.0710.1060.0800.0620.075
0.1930.2630.0760.0950.1130.0810.0370.0660.1030.0340.064
0.2340.2400.1740.1920.1140.0790.0510.0780.0690.0650.040
0.3860.2620.1490.2510.0990.1080.0650.1200.1040.0410.039
0.2610.2440.1120.2000.1100.1040.1100.1300.0730.0290.046
SIG11-20.213
10.1558.8162.6647.8528.6104.4497.643
10.8794.9076.5224.796
SPLINE187018801890190019101920193019401950196019701980
INDEX187018801890190019101920193019401950196019701980
RING188218901900
5.4358.2589.5319.3568.7307.5886.7647.0107.4656.9075.6524.308
1.2269.3606.9584.0498.8926.7290.000
10.11310.7706.7341.4531.708
1.79516.7288.4505.260
10.1875.5452.0598.0217.6745.2462.701
4.54810.03611.1979.838
11.9806.8074.0436.071
10.1338.4086.458
3.72610.23212.8229.2974.8975.7754.4903.8207.0854.9846.901
5.2886.5047.5966.6068.2454.5596.1579.6917.8036.3287.876
6.63313.1894.7036.5278.7866.7493.2216.070
10.1063.4806.748
8.35612.41510.90413.3658.9456.6224.4547.2096.8076.6744.231
14.53513.9669.489
17.8227.8349.1165.701
11.16510.3174.2234.135
10.35813.3957.224
14.4848.7778.8489.708
12.1977.2822.9944.889
SIG11-25.7418.4749.5589.3108.6337.4726.7387.0737.4626.7975.5194.169
6.0478.6709.5719.2628.5307.3616.7247.1357.4476.6825.388
6.3518.8469.5729.2128.4217.2566.7247.1977.4196.5625.256
6.6519.0029.5619.1598.3077.1586.7377.2557.3796.4375.124
6.9469.1399.5429.1038.1907.0676.7617.3107.3276.3104.990
7.2349.2559.5159.0428.0706.9866.7967.3587.2636.1804.856
7.5119.3529.4818.9767.9496.9156.8407.4007.1886.0494.720
7.7759.4309.4438.9027.8286.8546.8927.4327.1035.9164.583
8.0259.4899.4018.8207.7076.8036.9497.4547.0095.7844.446
SIG11-20.0391.2300.9250.2850.8991.1350.6581.0901.4570.7101.1541.113
WIDTHS0.3020.0610.028
0.2131.1050.7280.4351.0300.9010.0001.4301.4430.9910.2630.410
0.2971.9290.8830.5681.1940.7530.3061.1241.0300.7850.501
0.7161.1351.1701.0681.4230.9380.6010.8441.3661.2811.229
SIG12-1 MS= 0.4450.3140.0680.130
0.3000.1210.116
0.3080.1410.194
0.5601.1371.3411.0150.5900.8070.6660.5270.9600.7741.347
1882=0.2060.1850.194
0.7610.7120.7960.7261.0070.6450.9111.3261.0651.0031.578
0.9171.4250.4940.7221.0890.9660.4740.8251.3910.5631.390
.112
.328
.150
.489
.1250.9580.6510.9740.9471.1030.896
1.8691.4811.0052.0021.0011.3300.8271.5021.4520.7140.902
1.2911.4120.7681.6421.1391.3011.3971.6361.0390.5181.100
0.00 CH.0.3010.0380.288
0.3230.0370.274
0.3220.0870.201
0.1890.230
0.1540.209
34
Output file KNOB.IND, continued
19101920193019401950196019701980
AREA18821890190019101920193019401950196019701980
0.2580.2640.0930.1370.1270.1240.0800.125
1.4311.1530.7179.812
13.7515.6139.3099.425
10.1977.050
11.641
SPLINE18821890190019101920193019401950196019701980
INDEX18821890190019101920193019401950196019701980
RING190019101920193019401950196019701980
AREA190019101920193019401950196019701980
1.6503.0955.1427.2108.0628.0218.1718.4358.4488.1318.137
0.8670.3730.1391.3611.7060.7001.1391.1171.2070.8671.431
WIDTHS0.0280.2510.1890.0580.1120.1230.1120.0740.046
0.2070.2110.0210.1170.1580.1270.0300.116
SIG12-12.0951.3133.392
0.3520.1770.0510.1240.1200.0730.039
2.5812.4093.117
8.175 14.52011.3051.2758.043
11.86710.5442.654
10.890
SIG12-11.8303.2815.3677.3638.0738.0238.1928.4598.4198.1148.148
SIG12-11.1450.4000.6321.1101.4000.1590.9821.4031.2520.3271.337
9.6993.1088.6199.1186.1073.459
2.0103.4705.5947.5018.0758.0288.2138.4798.3878.103
1.2840.6940.5571.9361.2010.3871.0491.0750.7280.427
0.2270.0460.0720.0880.1170.1740.074
3.2382.9235.4019.7762.5534.4166.1758.977
14.6906.589
2.1903.6635.8197.6248.0728.0398.2358.4948.3518.096
1.4790.7980.9281.2820.3160.5490.7501.0571.7590.814
SIG12-2 MS= 0.3900.0910.1880.1660.0220.1060.1030.0960.0440.055
0.0500.2610.1610.0520.1360.1340.0820.059
0.1080.2690.0250.0990.0830.1350.1250.085
0.1670.0500.1320.0530.1220.0770.107
2.4984.0255.6387.3992.7908.1803.7439.4526.5629.589
2.3703.8616.0417.7308.0648.0538.2608.5058.3148.094
1.0541.0420.9330.9570.3461.0160.4531.1110.7891.185
0.2480.0770.1430.0760.1130.0470.127
4.1300.8538.805
11.3114.3278.9855.3978.8384.023
11.474
2.5504.0636.2587.8218.0558.0708.2878.5098.2778.096
1.6200.2101.4071.4460.5371.1130.6511.0390.4861.417
1900= 0.000.0990.1500.0380.1440.0450.1290.0600.080
0.1790.2100.0650.1250.1100.1300.0550.077
0000000
5086792947
24678
.141
.126
.144
.040
.118
.056
.079
.065
.840
.861
.603
.162
.178
.855
.315
.812
.189
.731
.270
.469
.897
.0468.0908888
1010010100
.316
.509
.242
.100
.855
.197
.370
.836
.890
.135
.343
.095
.584
.888
0.2130.1060.1630.0490.0800.0840.074
5.7012.0086.800
10.2126.102
10.5463.5116.3657.2556.769
2.9124.4826.6717.9598.0378.1108.3468.5028.2098.107
1.9580.4481.0191.2830.7591.3000.4210.7490.8840.835
0.2300.1710.1800.1660.1780.1050.114
4.5268.093
11.3479.993
11.84012.00814.3079.131
10.496
4.6986.8628.0068.0298.1318.3778.4908.1798.115
0.963.179.417.245.456.433.685.116.293
0.1910.1740.1870.1520.1450.0930.049
3.8547.6429.676
10.35712.51611.14711.8018.1454.536
4.9197.0438.0408.0248.1518.4078.4728.1538.125
0.7841.0851.2031.2911.5361.3261.3930.9990.558
CM.00000000
.226
.143
.130
.106
.107
.087
.053
.035
0.2320.2060.1050.1430.1300.0620.0810.035
0.3110.1800.1560.1320.1560.1410.0940.080
0.2270.1670.1520.1500.1410.0820.0670.020
SIG12-20.4676.8067.4932.7085.9747.4357.5595.3693.504
1.5515.3576.7661.0335.7266.2996.5423.2094.207
0.8747.8056.7282.4537.4508.2955.6334.322
1.9428.4921.0594.7174.6048.4718.6696.264
1.8454.9331.6186.9712.5148.2014.1965.937
3.4927.1442.7886.1576.2008.3713.8665.753
4555
.696
.023
.656
.2986.103532
.661
.744
.627
5.1547.4624.6467.2597.5124.0635.7552.635
7.4406.7387.0306.8159.1559.3316.7316.051
5.8146.4346.9977.8778.4065.4844.8311.519
35
Output file KNOB.IND, continued
SPLINE1900 3.1741910192019301940195019601970
4.6845.4135.7086.2266.5906.2235.199
1980 3.930
INDEX190019101920193019401950196019701980
0.1471.4531.3840.4740.9591.1281.2151.0330.892
SIG12-23.337 3.501
4.905 5.472 5.795 6.329 6.587 6.056 4.955
4.7995.4455.7506.2796.5936.1435.0783.800
SIG12-20.465 0.250
1.591 1.229 0.423 1.177 1.259 0.930
1.1161.2430.1800.9120.9551.0650.6321.107
3.6635.0015.4975.8446.3776.5725.9634.831
3.8245.0865.5225.8956.4226.5485.8654.705
3.9815.1625.5485.9496.4646.5145.7624.577
4.1355.2285.5756.0056.5026.4725.6564.449
4.2835.2865.6056.0616.5356.4225.5464.319
4.4255.3355.6366.1176.5616.3635.4334.190
4.5595.3775.6716.1726.5796.2975.3174.060
0.872
0.5301.6980.1930.8070.7221.2891.4541.297
0.4820.9700.2931.1820.3911.2530.7151.262
0.8771.3840.5031.0350.9591.2850.6711.257
1.1360.9611.0140.8820.9390.8750.6620.591
1.203 '1.412 10.829 11.1981.1500.6331.0380.610
1 .681.263.247.114.395.466.239.444
1.2751.1961.2341.2761.2780.8710.9090.374
RING 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.024 0.393 0.212 0.094 0.133 0.147 0.089 0.158 0.165 0.083 0.032 0.009
SIG13-1 0.070 0.326 0.227 0.139 0.113 0.172 0.059 0.165 0.129 0.064 0.029 0.000
MS= 0.138 0.519 0.252 0.073 0.142 0.176 0.077 0.103 0.108 0.055 0.023
0.243 0.192 0.333 0.295 0.099 0.153 0.156 0.125 0.103 0.117 0.063 0.039
0 0 0 0 0 0 0 0 0 0 0
1870= .150 .391 .289 .091 .082 .135 .116 .072 .122 .049 .031
0.00 0.188 0.351 0.186 0.095 0.109 0.139 0.127 0.151 0.108 0.035 0.015
CM. 0.257 0.494 0.153 0.088 0.135 0.135 0.093 0.115 0.101 0.030 0.019
0.347 0.388 0.224 0.140 0.143 0.116 0.140 0.145 0.088 0.056 0.019
0.459 0.402 0.201 0.150 0.119 0.153 0.211 0.160 0.182 0.027 0.020
0.354 0.346 0.164 0.123 0.105 0.148 0.184 0.127 0.113 0.029 0.017
AREA 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
0.58615.43413.4587.233
11.16313.4848.974
17.17719.28910.3244.0741.159
SPLINE 1870 7.650 1880 12.661 1890 14.752 1900 13.419 1910 12.079 1920 12.283 1930 13.244 1940 14.124 1950 13.408 1960 10.231 1970 5.576 1980 0.833
INDEX1870 0.0771880 1.21918901900
SIG131.730
13.53914.72310.7989.572
15.9505.976
18.10615.1997.9913.6980.000
SIG13-8.187
13.05314.73013.22812.03412.36313.35214.14713.2029.7985.0990.360
-13.501
22.93316.7235.719
12.14216.5147.833
11.38912.8066.8872.936
18.722
13.41014.67313.04412.00512.44913.46114.15112.9699.3524.622
5.07015.60520.0847.810
13.22414.80012.79511.45613.9557.9134.987
9.25613.72914.58512.87011.99312.53913.56914.13612.7108.8964.147
4.12219.21320.2067.2337.148
12.93111.9618.048
14.6436.1723.971
9.78414.00714.46812.70811.99512.63313.67414.10112.4258.4313.672
5.36618.06613.2827.6079.567
13.43413.19216.98313.0414.4171.923
7.69526.73711.0887.097
11.95313.1639.725
13.03012.2623.7932.438
1910
0.9120.5390.924
SIG13-10.211 0.401
1.710 1.140 0.438
1.0371.0000.8160.795 1.011
0.5481.1371.3770.6071.103
0.4211.3721.3970.5690.596
10.30514.24214.32712.56112.01312.72913.77514.04512.1167.9613.198
0.5211.2680.9270.6060.796
10.81514.43314.16712.43112.04412.82813.86913.96711.7827.4872.724
11.04822.07516.49911.39112.78611.40214.74216.54810.7367.0952.441
11.31014.57813.99112.31712.08812.92913.95413.86611.4267.0112.251
15.77723.86915.07412.34110.73815.16822.45118.41322.3583.4282.572
11.78514.67913.80512.22112.14413.03314.02613.73911.0476.5331.778
13.07221.35712.48710.2259.549
14.81319.80614.73013.9873.6872.188
12.23714.73613.61312.14212.20913.13814.08413.58710.6486.0541.305
0.7121.8530.7830.5710.992
0.9771.5141.1790.9251.058
1.3391.6261.0921.0100.884
1.0681.4490.9170.8420.782
36
Output file KNOB.IND, continued
1920193019401950196019701980
1.0980.6781.2161.4391.0090.7311.392
1.2900.4481.2801.1510.8160.7250.000
1.3260.5820.8050.9870.7360.635
1.1800.9430.8101.0980.8901.203
1.0240.8750.5711.1790.7321.081
1.0550.9581.2091.0760.5550.602
1.0260.7010.9331.0410.5070.895
0.8821.0561.1930.9401.0121.084
1.1641.6011.3402.0240.5251.446
1.1271.4061.0841.3140.6091.676
RING 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.035 0.384 0.258 0.042 0.096 0.122 0.087 0.108 0.088 0.062 0.032 0.000
SIG13-2 0.064 0 0.359 0 0.198 0 0.049 0 0.070 0 0.138 0 0.066 0 0.073 0 0.102 0 0.076 0 0.024 0 0.000
MS= .111 .570 .217 .062 .113 .111 .051 .052 .085 .096 .026
0.283 0.208 0.279 0.270 0.111 0.121 0.129 0.086 0.044 0.078 0.074 0.031
1870= 0.208 0.331 0.330 0.093 0.069 0.109 0.091 0.039 0.062 0.052 0.036
0.00 0.198 0.242 0.173 0.089 0.083 0.090 0.111 0.060 0.102 0.034 0.015
CM. 0.242 0.435 0.197 0.092 0.102 0.102 0.057 0.046 0.133 0.036 0.005
0.290 0.367 0.162 0.144 0.080 0.087 0.090 0.071 0.101 0.046 0.023
0.467 0.446 0.149 0.170 0.064 0.133 0.126 0.087 0.119 0.043 0.019
0.404 0.428 0.103 0.131 0.096 0.142 0.120 0.084 0.076 0.030 0.016
AREA 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
0.94216.12416.9583.2758.095
10.9828.458
11.1079.4126.9943.7170.000
SPLINE 1870 8.623 1880 13.171 1890 14.626 1900 12.422 1910 10.132 1920 9.178193019401950196019701980
8.9528.8148.5697.3624.6421.365
SIG13- 1.742
15.91313.298 3.835 5.939
12.535 6.448 7.549
10.970 8.607 2.792 0.000
SIG13-9.117
13.50814.52612.1439.9769.1428.9378.7968.5167.1464.3251.031
23.082
26.92914.8574.8749.652
10.1705.0015.3989.192
10.9243.029
29.609
13.80814.38811.8719.8359.1108.9238.7778.4516.9154.004
5.98313.92518.8998.786
10.42411.9168.4714.5818.4758.4603.617
10.09914.06814.21611.6099.7089.0838.9108.7598.3736.6683.681
6.25517.15523.720
421986150
9.0144.0706.763
6.20712.97812.7097.1527.2408.437
11.065281180
6.11.
5.965 3.9104.208 1.756
10.58414.28514.01211.3589.5959.0598.8978.7408.2816.4073.354
11.06014.45713.78311.1209.4969.0388.8858.7208.1736.1353.025
7.92024.25314.7017.4468.9569.6245.7124.830
14.6754.1480.586
11.52414.58513.53210.8959.4109.0198.8728.6998.0475.8522.695
9.97621.38612.27211.7617.0708.2609.0617.482
11.2195.3112.696
11.97214.66513.26610.6849.3369.0018.8598.6767.9045.5602.364
17.17627.12911.43214.0525.685
12.71912.7719.211
13.3004.9772.229
12.39914.69812.98810.4879.2748.9848.8468.6477.7415.2602.031
15.96427.2097.984
10.9538.576
13.70312.2558.9398.5413.4791.879
12.80014.68512.70510.3039.2228.9688.8308.6127.5614.9541.698
INDEX 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
0.109 1.224 1.159 0.264 0.799 1.197 0.945 1.260 1.098 0.950 0.801 0.000
SIG13-2 0.191 0.321 1.178 1.950 0.915 1.033 0.316 0.411 0.595 0.981 1.371 1.116 0.721 0.561 0.858 0.615 1.288 1.088 1.204 1.580 0.646 0.756 0.000
0.592 0.990 1.329 0.757 1.074 1.312 0.951 0.523 1.012 1.269 0.983
0 1 1 0 0 1 1 0 0 0 1
.591
.201
.693
.653
.624
.120
.013
.466
.817
.931
.255
0.561 0.898 0.922 0.643 0.762 0.933 1.245 0.720 1.368 0.637 0.580
0 1 1 0 0 1 0 0 1 0 0
.687
.663
.086
.683
.952
.067
.644
.555
.824
.709
.217
0.833 1.458 0.925 1.101 0.757 0.918 1.023 0.862 1.419 0.955 1.141
RING WIDTHS1880 0.5601890190019101920
0.1920.0460.1430.216
SIG14-1 MS= 0.261 1880= 0.00 CM. 0.379 0.312 0.295 0.179 0.284 0.390 0.103 0.159 0.183 0.215 0.202 0.214 0.084 0.1290.2C1
0.0860.1480.158
0.1590.1960.141
0.1920.1340.121
0.1720.1540.161
0.2070.1550.148
0.3400.3520.2480.1720.170
1.3851.8460.8801.3400.6131.4161.4441.0651.7180.9461.098
0.3110.2850.2350.2230.260
1.2471.8530.6281.0630.9301.5281.3881.0381.1300.7021.107
0.3460.2710.2130.2650.229
37
Output file KNOB.IND, continued
1930194019501960
0.1340.1760.1720.080
0.1500.1610.1420.073
0.1100.0790.1250.088
0.1660.0690.1230.104
0.1960.0730.1540.074
0.1710.1200.1420.075
0.0830.1350.1110.060
0.1290.1470.0790.067
0.1740.2000.1070.070
0.2280.1620.0680.040
1970 0.057 0.035 0.057 0.067 0.067 0.073 0.067 0.048 0.063 0.0481980 0.041 0.018
AREA 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
4.5185.4241.9077.448
13.6339.943
14.78615.8777.9765.9414.421
SPLINE 1880 4.488 1890 6.174 1900 7.789 1910 9.478 1920 11.089 1930 12.118 1940 12.281 1950 11.495 1960 9.489 1970 6.987 1980 4.516
SIG144.1763.0053.5176.829
12.94911.26413.69613.2487.3133.658I.944
SIG14-4.6596.3377.9519.648
II.22512.17412.24611.3489.2456.7394.266
-14.1154.7703.6477.964
10.3578.3506.780
11.7668.8615.974
14.8306.5008.1169.817
11.35412.22212.20211.1878.9986.493
4.4535.6866.865
10.7589.375
12.7455.954
11.67410.5347.048
5.0016.6628.2839.986
11.47612.26112.14911.0128.7486.248
2.9696.9508.5017.4948.145
15.2716.332
14.7507.5377.076
5.1726.8258.452
10.15411.59112.29112.08810.8248.4966.002
5.1236.7947.8128.752
10.98013.52010.48113.7337.6747.742
5.3426.9878.622
10.31911.69912.31212.01810.6248.2435.756
7.8617.4779.6498.959
10.2376.629
11.89910.8236.1657.135
5.5117.1488.794
10.48311.80012.32411.93910.4137.9915.510
7.63312.92511.91410.11911.92910.38813.0877.7506.9105.129
5.6797.3098.965
10.64211.89312.32811.84810.1937.7385.263
7.61811.03511.64613.39618.59614.17818.02410.5597.2506.754
9.18910.96710.85616.32516.73018.86514.7846.7484.1575.162
5.8467.4699.137
10.79811.97812.32211.7449.9647.4865.015
6.0107.6299.307
10.94712.05212.30611.6279.7297.2364.766
INDEX 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
1.007 0.878 0.245 0.786 1.229 0.820 1.204 1.381 0.841 0.850 0.979
SIG14-1 0.896 0.474 0.442 0.708 1.154 0.925 1.118 1.167 0.791 0.543 0.456
0.852 0.734 0.449 0.811 0.912 0.683 0.556 1.052 0.985 0.920
0.890 0.854 0.829 1.077 0.817 1.039 0.490 1.060 1.204 1.128
0.574 1.018 1.006 0.738 0.703 1.242 0.524 1.363 0.887 1.179
0.959 0.972 0.906 0.848 0.939 1.098 0.872 1.293 0.931 1.345
1.426 1.046 1.097 0.855 0.868 0.538 0.997 1.039 0.771 1.295
1.344 1.768 1.329 0.951 1.003 0.843 1.105 0.760 0.893 0.975
1 1 1 1 1 1 1 1 0 1
.303
.477
.275
.241
.553
.151
.535
.060
.968
.347
1.529 1.437 1.166 1.491 1.388 1.533 1.272 0.694 0.574 1.083
RING 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
WIDTHS 0.507 0.190 0.024 0.116 0.279 0.174 0.209 0.161 0.109 0.037 0.024
SIG14-2 0.378 0.151 0.045 0.076 0.349 0.126 0.179 0.164 0.110 0.021 0.008
MS= 0.321 0.160 0.086 0.110 0.224 0.096 0.117 0.137 0.093 0.034
0.355 0.296 0.271 0.107 0.189 0.189 0.213 0.093 0.139 0.127 0.062
1880= 0.269 0.289 0.158 0.152 0.171 0.207 0.078 0.142 0.102 0.053
0.00 0.351 0.219 0.145 0.158 0.159 0.191 0.157 0.128 0.082 0.037
CM. 0.897 0.252 0.220 0.201 0.182 0.069 0.133 0.113 0.061 0.044
0.441 0.313 0.223 0.229 0.182 0.104 0.195 0.093 0.074 0.031
0 0 0 0 0 0 0 0 0 0
.295
.289
.295
.210
.295
.183
.224
.135
.043
.044
0.436 0.289 0.225 0.182 0.276 0.196 0.221 0.092 0.020 0.030
AREA 1880 1890 1900 1910 1920 1930 1940 1950 1960
11.0468.9541.4848.319
22.99716.80622.25718.74513.566
SIG14-9.2867.2772.7925.496
29.45512.28819.28019.26213.766
28.5917.8685.3718.019
19.3099.430
12.71116.22011.698
8.49613.6936.748
13.95616.53721.12910.16516.57816.063
8.19815.11110.09511.38715.15520.8078.567
17.06112.974
11.38111.8009.403
11.99014.25719.43717.36015.48710.478
32.60213.95114.51815.48016.5147.078
14.82813.7587.822
17.88217.88415.02717.94616.72210.72521.94111.3839.520
12.64417.05920.35816.74727.54619.03725.49816.6215.548
19.68917.58415.89514.73826.26720.62325.46611.3922.584
38
Output file KNOB.IND, continued
19701980
4.7883.164
SPLINE 1880 12.040 1890 12.218 1900 12.362 1910 13.712 1920 16.045 1930 17.499 1940 17.574 1950 16.275 1960 12.810 1970 7.925 1980 2.874
2.7211.055
SIG14- 12.069 12.216 12.424 13.923 16.257 17.560 17.516 16.027 12.363 7.417 2.369
4.411 8.063 6.912 4.836 5.762 4.067 5.782 3.950
212.09712.21512.50214.14416.45517.60817.44515.75511.9036.910
12.12612.21612.59814.37516.63817.64317.36115.45911.4316.405
12.15212.22012.71214.61416.80717.66717.26315.14010.9475.900
12.17612.22712.84314.85716.96117.67917.14914.79910.4545.396
12.19512.23912.99015.10317.10017.68017.01814.4389.9554.892
12.20812.25613.15215.34717.22417.67016.86714.0579.4504.387
12.21512.28213.32615.58817.33217.65016.69413.6588.9433.883
12.21812.31613.51315.82117.42317.61816.49713.2428.4343.379
INDEX 18801890190019101920193019401950196019701980
0.9170.7330.1200.6071.4330.9601.2661.1521.0590.6041.101
SIG14-2 0.769 0.7100.5960.2250.3951.8120.7001.1011.2021.1130.3670.446
0.6440.4300.5671.1730.5360.7291.0300.9830.638
0.7011.1210.5360.9710.9941.1980.5851.0721.4051.259
0.6751.2370.7940.7790.9021.1780.4961.1271.1851.171
0.9350.9650.7320.8070.8411.0991.0121.0461.0020.896
2.6731.14011000001
.118
.025
.966
.400
.871
.953
.786
.178
1.4651.4591.1431.1690.9710.6071.3010.8101.0070.927
1.0351.3891.5281.0741.5891.0791.5271.2170.6201.489
1.6111.4281.1760.9321.5081.1711.5440.8600.3061.169
RING1862187018801890190019101920193019401950196019701980
WIDTHS0.2650.0250.2940.0490.1020.1220.1530.0940.1490.0940.0900.0890.041
SIG16-1 MS=0.4240.0680.1940.1060.1570.0940.1660.0390.1680.0850.0900.0670.044
0.2410.1610.2810.1880.1310.1330.1080.0920.0970.0710.0990.057
0.357 1862=0.2120.1970.2440.2190.1370.1620.1420.1520.0840.0780.0900.070
0.1590.0450.2290.2550.1450.0810.1280.1130.0580.0540.0540.053
000000000000
0.00.205.066.172.152.182.116.132.122.137.082.053.066
CM.0.2100.1600.2660.1720.1690.1200.1300.0860.0940.1000.0350.044
0.1980.1330.2200.1960.2100.1340.1100.1230.0950.0630.0540.014
0.2500.1770.2450.1860.1650.1530.1730.1210.1280.0570.077
0.1910.2150.2020.2170.1470.1480.1730.1360.0800.0660.037
AREA 1862 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
8.456I.080
15.3383.2247.872
10.677 14.6309.780 16.621II.14211.13911.4005.393
SPLINE 1862 7.044 1870 8.152 1880 10.114 1890 11.883 1900 12.869 1910 13.144 1920 13.124 1930 13.015 1940 12.673 1950 11.540
SIG16 14.4472.956
10.4187.026
12.2448.291
16.0394.074
18.907 10.123 11.1908.6155.800
SIG16 7.174 8.316
10.323 12.019 12.923 13.144 13.119 12.998 12.596 11.391
-18.7157.115 15.510 12.636 10.335 11.825 10.5289.648 10.9988.491 12.3687.351
-17.304 8.489 10.527 12.147 12.970 13.143 13.112 12.981 12.509 11.238
7.9688.928
13.87014.99910.92414.55413.95416.0579.5719.364
11.2979.056
7.4368.671
10.72412.26813.01213.14013.10412.96212.41311.081
6.1612.073
13.35817.84511.6907.339
12.68712.0316.6356.5056.8026.877
7.5698.861
10.91412.38013.04813.13813.09412.94012.30910.922
8.1783.064
10.24910.83114.86010.58113.19113.08015.7569.9136.6948.588
7.7079.059
11.09612.48313.07813.13613.08412.91312.19810.760
8.6527.542
16.21712.43113.98511.03513.0989.276
10.87912.1474.4305.741
7.8499.264
11.27012.57813.10213.13413.07212.88112.07910.595
8.4116.392
13.74814.39317.62812.43011.16613.34811.0517.6856.8511.829
7.9979.474
11.43512.66313.12113.13213.06012.84311.95410.427
12.31511.28218.33015.84515.46015.65818.93514.15715.6907.251
10.082
9.68711.59212.74013.13413.13113.04612.79611.82210.256
9.67313.96915.39718.76013.91815.28619.12316.0229.8598.4224.858
9.90111.74112.80913.14113.12813.03112.74011.68410.080
39
Output file KNOB.IND, continued
1960 9.900 1970 7.973 1980 5.933
INDEX1862187018801890190019101920193019401950196019701980
RING18501860187018801890190019101920193019401950196019701980
AREA18501860187018801890190019101920193019401950196019701980
1.2000.1321.5170.2710.6120.8121.1150.7511.3110.9661.1251.4300.909
WIDTHS0.2070.0260.0200.2160.0420.0310.0810.1320.0890.1180.1030.0850.0530.041
9.717 9.530 7.773 7.573 5.727
SIG16-12.0140.3551.0090.5850.9480.6311.2230.3131.5010.8891.1521.1081.013
1.1930.8381.4731.0400.7970.9000.8030.7430.8790.7561.2980.971
SIG16-2 MS=0.3120.0880.0340.1320.0480.1250.0890.1280.0480.0880.0930.0900.0410.030
0.2510.2480.1120.1790.1220.0910.1010.1200.0610.0710.0790.0610.029
9.340 7.371
1.0721.0301.2931.2230.8401.1081.0651.2390.7710.8451.2101.229
0.4100.2030.1820.1590.1350.1860.1000.1100.1260.0700.0710.1150.0770.037
9.147 7.167
0.8140.2341.2241.4410.8960.5590.9690.9300.5390.5960.7440.960
1850=0.1980.1490.0590.1350.2010.0890.0710.1200.0870.0710.0860.0490.034
8.953 6.962
1.0610.3380.9240.8681.1360.8061.0081.0131.2920.9210.7481.234
0.000.2970.1510.0780.1350.1120.1010.0920.0920.0970.1290.1100.0390.068
8.758 6.757
1.1020.8141.4390.9881.0670.8401.0020.7200.9011.1460.5060.850
CM.0.1880.2070.1790.2570.1050.1600.0920.1070.0460.1060.0890.0270.035
8.563 6.551
1.0520.6751.2021.1371.3440.9460.8551.0390.9240.7370.8000.279
0.3010.2670.1120.1170.1380.1870.1380.1100.0860.1150.0720.0320.012
8.367 6.345
1.2710.9731.4391.2061.1771.2001.4801.1981.5300.8671.589
0.2330.2220.2740.1650.1780.2340.1690.1170.1470.1350.1260.0320.071
8.170 6.139
0.9771.1901.2021.4281.0601.1731.5011.3710.9781.0310.791
0.2000.1690.1640.1950.1070.1500.1200.1430.1290.0930.0770.0340.039
SIG16-23.3290.7940.825
10.6592.4892.0786.087
10.8227.953
11.19210.4109.0935.8404.624
SPLINE18501860187018801890190019101920193019401950196019701980
4.6345.4196.2397.2247.9768.4868.9689.2629.3119.4129.1257.7155.6143.672
INDEX18501860
0.7180.146
5.5262.7181.4086.6582.8588.4396.735
10.5984.3108.4049.4579.6784.5303.390
4.8907.9224.6909.2047.3306.2057.704
10.0295.4986.8168.0766.5883.210
4.2446.0606.7947.075
11.3566.8798.463
10.6286.3386.848
11.8268.3504.104
4.3895.1162.5617.189
12.5166.1755.503
10.2157.9206.8798.8985.3333.778
7.0455.3273.4207.3047.0847.0687.1787.8938.886
12.58011.4494.2557.579
4.7467.5357.993
14.2216.713
11.3287.2319.2464.235
10.4159.3192.9523.912
8.06110.1175.1036.6118.928
13.44310.9469.5817.953
11.3797.5753.5041.343
6.6318.753
12.8179.470
11.69317.13213.56810.27413.70213.46413.3353.5117.965
5.9646.8717.897
11.4127.125
11.1639.743
12.67412.1369.3428.1983.7374.389
SIG16-24.7145.4986.3287.3178.0338.5369.0059.2779.3149.4169.0397.5165.4113.483
4.7945.5776.4227.4078.0888.5879.0409.2889.3199.4158.9417.3105.210
4.8735.6576.5187.4938.1428.6399.0749.2979.3279.4098.8297.1005.012
4.9535.7386.6177.5748.1948.6929.1069.3039.3389.3978.7066.8864.817
5.0315.8196.7197.6518.2448.7449.1389.3069.3509.3778.5696.6714.624
5.1105.9016.8227.7248.2938.7949.1689.3089.3649.3498.4206.4564.432
5.1875.9846.9257.7928.3418.8439.1969.3099.3799.3108.2606.2424.241
5.2656.0677.0277.8578.3898.8889.2219.3109.3929.2608.0886.0304.051
5.3426.1527.1277.9188.4378.9309.2449.3109.4049.1997.9065.8203.862
SIG16-21.1720.494
1.0201.420
0.8711.071
0.8860.892
1.4000.915
0.9291.277
1.5541.691
1.2601.443
1.1161.117
40
Output file KNOB.IND, continued
187018801890190019101920193019401950196019701980
0.1321.4760.3120.2450.6791.1680.8541.1891.1411.1791.0401.259
0.2230.9100.3560.9890.7481.1420.4630.8931.0461.2880.8370.973
0.7301.2430.9060.7230.8521.0800.5900.7240.9030.9010.616
1.0420.9441.3950.7960.9331.1430.6790.7281.3391.1760.819
0.3870.9491.5280.7100.6041.0980.8480.7321.0220.7740.784
0.5090.9550.8590.8080.7850.8480.9501.3421.3360.6381.639
11010001100
.172
.841
.809
.288
.789
.993
.452
.114
.107
.457
.883
0.7370.8481.0701.5201.1901.0290.8481.2220.9170.561 (0.317
.824
.205
.394
.927
.471
.104
.459
.454
.649).5821 .966
1.1081.4410.8441.2501.0541.3611.2911.0161.0370.6421.136
Output file KNOB.IX1
SIGNAL KNOB PITCH PINECRNIDX1900 494 23 745 23 703 23 948 23 941 23 709 23 888 231163 231385 231174 23CRNIDX1910 803 24 713 24 960 241122 24 741 24 843 24 973 241122 241107 241083 24CRNIDX19201219 241242 241048 24 981 24 914 24 903 24 936 24 922 241324 241356 24CRNIDX1930 761 24 422 24 517 24 898 24 906 24 999 24 694 24 959 241237 241432 24CRN IDX19401215 241222 24 801 24 713 24 488 241114 24 981 241104 241453 241312 24CRNIDX19501306 241158 24 980 241067 24 993 241132 241111 24 824 241354 24 897 24CRN IDX19601077 241051 24 970 241244 24 823 24 773 24 684 241246 241055 24 769 24CRNIDX1970 939 24 536 24 625 241254 241175 241153 24 984 24 701 241271 24 734 24CRNIDX19801032 24 664 249990 09990 09990 09990 09990 09990 09990 09990 0
41
Output file KNOB.1X2
SIGNAL KNOB PITCH PINESIG01-1900 911SIG01-1910 746SIG01- 19201 132SIG01-1930 573SIG01-1940 997SIG01 -19501 122SIG01-19601302SIG01-1970 922SIG01- 19801 148SIG01-1890 866SIG01-1900 829SIG01-1910 639SIG01-19201000SIG01-1930 593SIG01-19401287SIG01-1950 921SIG01-19601570SIG01-1970 855SIG01 -19801065SIG02-18501000SIG02-1860 458SIG02-1870 206SIG02-18801395SIG02-1890 657SIG02-1900 551SIG02-1910 398SIG02-19201188SIG02-1930 733SIG02- 19401 257SIG02-19501487SIG02-19601045SIG02-1970 993SIG02-1980 0S I G02- 18439990SIG02-1850 909SIG02-1860 337SIG02-1870 264SIG02-18801515SIG02-1890 763SIG02-1900 454SIG02-1910 519SIG02-19201230SIG02-1930 931SIG02-19401342SIG02-19501564SIG02-19601553SIG02-1970 793SIG02-1980 0SIG03-18901850SIG03-1900 996SIG03-1910 214SIG03-19201198SIG03-1930 574SIG03-19401474SIG03-1950 618SIG03-1960 750SIG03-1970 895SIG03-19801522SIG03-1880 593SIG03-1890 755SIG03-1900 325SIG03-1910 310SIG03-19201293SIG03-1930 701SIG03-19401616SIG03-19501159SIG03-1960 672SIG03- 19701 144
012370 562010680 4600130801191012270 4880 58301011010860 3860 9330 278011930 909013410 4210 606010030 8420 8280 6370 822011710 445013170 00 940012240 5920 1650 009990010120 8220 8090 844012880 9890 578016590 00118501199011390 4920 00 8700 2630 272010050 18101561012030 7750 4050 663010620 7380 8080 247012910 14602025010350 7220 774
0 866010280 8150 4680 776010000 8580 37909990013570 7560 7490 9000 3510 6040 9090 7010 5650999001049013420 7310127901057010670 863010540 7570 8510 7310 7850 225099900999001424010200 491011090 974012610 912011490 6610 9380 819010950 677099900 7360 9770 8040 9370 3080 6440 634011940 4080999001269011720 6360 5630 9890 3790 9180 6610 8690 669
02213015630 8970 8960 7840 859011120125209990010390132901489010970 7340 848010030 9760141509990012500 8140 70901010012410 9290 83001632010280 8260 9920138802431099900 498015970 7390 66001227012680 6260 6080 8400 7030 8820 938013270222509990010940 92901171011060 9810 728013590125901650099900108101233012670 7620 9670 83301038011500124901580
014840 9200 7290 6950 4480 9560 894010020999001145015170 9780 9960 8040 501011290 761012210999001090010650 16401318015760 9410 732015420 8370 5560 5470 59201267099900 79501269010900 17401200014390 8540 8110 8850 7460 5860 7830 486010940999001088012650 6330 979012010 266010640 7190 834099900 51501912014440 6660 9660 9460 405014650 40001059
0 2270 4610 9250 83701333012640 6870 764099900 8440 1100 407011730122101413011270 73301226099900 956018130 3200 7350 3740 2010 5770 9420 927011770 8200 73501607099900 71201017019370 208010380 4620 1800 6940 72301272010750 9090 35501620099900164201253010710 954011340 9310 8800 9490190009990010310 6300 1470 9510 8480 860010340 9000 47501333
0 5210 7760 9090 73001215011620 8050 83409990010740 3610 5140105101000012260 8860 6300 751099900 6860 8050 436012640 5750 8910 9680 8140 8360 8920 8900 7230 281099900 8680 9130 7390 368013180 6280 784012010 6780 7450 901011150 3720 313099900 3790 503011930 9690 69401101013560 9740143709990017150 4780 732013900 8460 42301175014290 49501565
011350 7530106601008012450 914017940 63609990013130 8330 7090 96201293012170 676016680 501099900 946018440 664010520130601208012010 8810 722010190 5820222201142099900120701251015330 868011050 88701187016830 7660 81801111010710 75501041099900 5700 927012370 85701000011240 960011630 90209990010000153701099012950 7000 6790 805010640 8550 832
014730 8860136501315014240113801262011820999002173013760 65001311010980175101192013380115009990011430158701517018270 7250155501301014290138101519011790 991014560999001346013970109001590014910 565013550170401002014040159601472011500110209990013170112601127016030150801600011500 647011630999001000011330133501300016420123701360014120 9440 943
01533013560137301428011760 9710 8860 90909990013040138101081011570154301138011050 9960 6810999001042012200 941023330 83101147010960193001620012750 8960 14102997099900 8630 9000123201515024420 523011500143101520015120 984011000 53001770099900174201099010240148801958013140 5800 5350 24209990015650105501320014230152202086012580 4010 7750 274
00000000000000000000000000000000000000000000000000000000000000000000
43
Output file KNOB.1X2, continued
SIG03-19802133SIG05-1910 327SIG05-19201473SIG05-1930 523SIG05-19401040S I G05- 19502529SIG05-1960 841SIG05-1970 811SIG05-1980 535SIG05-1880 845SIG05-1890 361SIG05-1900 232SIG05-1910 733SIG05-19201058SIG05-1930 852SIG05-19401158SIG05-19501007SIG05-19601258SIG05-1970 727SIG05-1980 444S I G06- 18829990SIG06-1890 269SIG06-1900 621SIG06-1910 803SIG06-1920 914SIG06-1930 702SIG06-19401400SIG06- 19501339SIG06-19601045SIG06-19701122SIG06-1980 802SIG06-1880 706SIG06-1890 95SIG06-1900 574SIG06-1910 758SIG06-1920 902SIG06-1930 708SIG06-19401288SIG06-19501399SIG06- 19601306SIG06-1970 796SIG06- 19801 185S I G08- 18879990SIG08-1890 465SIG08-1900 707SIG08-19101027SIG08-19201261SIG08-1930 803SIG08- 19401 211SIG08- 19501 530SIG08-19601002SIG08-19701038SIG08-1980 998SIG08-1890 321SIG08-1900 867SIG08-1910 863SIG08-19201221SIG08-1930 969SIG08-1940 931SIG08-19501241SIG08-1960 927SIG08-19701070SIG08-1980 981SIG09-1890 982SIG09-1900 752SIG09-19101116SIG09-19201512SIG09-1930 628
0 5310 520015490 4660 959013340 9510 6980 341013010 1410 5410 599010090 9710129801150011640 3310 180099900 3000 9940 8360 8230 001124011130 8160 7730 6960 8560 3040 9860 7550 9580 00109401101011660 7820 753099900 5590 8990 96801252010270145201141012250 3780 6330 523011690 663012770 7270 9880 914011050 4600 33501004010810 981011780 0
099900 569015310 3970 53701057011750 523099900 8870 8160 5290 6910 7830 855012810 986011100 54109990015850 5400 8670 9230 8760 5300 717013750 8830 64809990011200 5650 799010010 8620 5240 431010660 9770 78609990099900 7770 9030 976010400 7440 683010420 8390 907099900 9590 9940 8770 9660 7350 690011900 7510 92209990010500 727011870 7610 119
0999001044011950 7560 3310 967017730 917099900 646012570 9580 6830 998013410 7640 978010910113109990010130 7420125201282012670 9350 598010660128002053099900 7090 6130164601138010080 7550 7330 9510 9170147109990099900 91801173011460 785010320 6690124801249013720999001080010040 7710 751010480 665012260113201414099900143301202014650 6680 613
099900 7230 9780 7490 3270 812010760 931099900111001368011710 6300 781010490 683010300 91201450099900 845010000 8880 71001103011050 466010510 74201421099900 72301173011730 60701134010690 447010500 6370104209990099900 981010080 8760 7410 9830 5150 7610 941014870999001120013110 6200 5840 9320 4200 878010600199509990014930 8410 608010320 616
099900 66101012010000 730011020 8860 65709990013160 7680 1090 668011340 9840 846013880109101114099900 7180 6110 6090102001131012120 902010470 69301424099900 8600 7730 7990 962012400116801019010010 6680119009990099900 5820 8260 8270 5080 73701463011260 9430 547099900 6670 8820 8510 6100 89401198012860 9100 711099900 5700 37101088010360 868
099900 8280 8820 7710 8470 9760 7060 89109990017200 9010 3580 9290 9970 6520 932013160 8700 8020999001376010070114401129010970 62401033010420 7330 76009990028560 89401083010630 9330 79901322011300 6850104509990099900 8480 839011600 7880 7450 827010520 8090 911099900101001385010610 8520 63801303012640 87301127099900 5150 895010010 9100 850
0999001027012080 916010240 863015060 5380999001333014960 93601373010380 9120 9340 764013710 57909990011020138401330013650 8150 965012710 710010670 95009990014220133501305012830 72801077013020 8870 9530 621099900126901217013280 9260 6830 9650 8360 616014010 8760999001454010810 9150 79401105012120 712013600 845099900 67701200015330 94001278
099900 9870141701034012540131301323012480999001780016560 8570 8520143101144015110122001083018190999001110011710170001130013090123101363012840 520014010999001088011960153301021013510135301251013190 947016660999001078011880152001145010770 881014160143501215013180999001465011430127501196011080164201060011980 923099900112501382012060139101534
099900 9430126401157022310 7790 9510 560099900253501714011560109801230010430 8940 7560 7190 4390999001826010500 941010140133701615012040 5930 6610 56009990012940 97901105011350131701734010210 8150 7910 79409990022490 8590101701020013190128401251010440 5860 419099900130101139012340137201521012560 6660 5520 33009990010270 836010520129801477
00000000000000000000000000000000000000000000000000000000000000000000
44
Output file KNOB.1X2, continued
S I G09- 19401457SIG09-19501017SI G09- 19601 114SIG09-19701216SIG09-19801242SIG09-18901445SIG09-1900 761SIG09-19101202SIG09-19201211SIG09-19301191SIG09-19401117SIG09-19501280SIG09-19601053SIG09- 19701 140SIG09-19801347SIG1 1-18639990SIGH-18701101SIG1 1-18801367SIGH-18901110SIG11-1900 584SIGH-19101002SIGH-19201133SIG1 1-1930 757SIGH-19401182SIGH -19501 332SIG11 -19601085SIGH-1970 759SIGH-1980 561SIGH-1870 39SIGH -18801229SIGH-1890 925SIGH-1900 284SIGH-1910 899SIGH-19201134SIG1 1-1930 657SIG11 -19401090SIGH-19501457SIGH-1960 710SIGH-19701153SIGH-19801113SIG12-18829990SIG12-1890 372SIG12-1900 139SIG12-19101360SIG12-19201705SIG12-1930 699SIG12-19401139SIG12-19501117SIG12-19601207SIG12-1970 867SIG12-19801430SIG12-1900 147SIG12-19101453SIG12-19201384SIG12-1930 474SIG12-1940 959SIG12-19501128SIG12-19601214SIG12-19701032SIG12-1980 891SIG13-1870 76SIG13-18801219SIG13-1890 912SIG13-1900 539SIG13-1910 924SIG13-19201097SIG13-1930 677SIG13-19401216
01495011710 9660 001216012760 62401188012330 71501282011780 9320 86801105099900 7601058010740 6850 862013540 001228013700 9520 3660 00 213011040 7270 434010290 9000 001429014430 9900 2630 409099900 4000 63201110014000 1580 98101402012520 327013360 46401116012420 1790 9120 955010640 631011060 211010370 9990 8160 795012900 44701279
0 8340 810010910 96909990014350101001129014280 348012220 9130 9950 16309990099900 28401879010310 56301101012270 2700 82601130010410 704099900 296019290 8820 567011940 7530 30601124010300 7850 501099900 8670 6940 55701935012010 38701049010750 7280 426099900 24901591012290 42301177012590 9300 872099900 40101710011390 43801011013260 5810 804
0 99201125011980 81409990012390 745012230 9950 5660 6860 9650 94101091099900 6590 409011680113901196012200 6500 6950 895010060115801072099900 716011340116901067014220 9380 6010 84301365012810122809990011450 7970 928012820 3160 5490 74901056017590 813099900 530016980 1920 8070 721012880145301296099900 54701136013770 60601102011800 9420 810
0 3500 9400 6360 56909990012490101301219010330 6300 5380 9810 6000 908099900 8730 37901373012370 8970 7720 6890 4140 621011590 69601540099900 5600113601340010140 5890 8060 6660 5260 9600 774013460999001284010420 9330 9570 345010150 453011110 78901184099900 4820 9690 292011820 391012520 71501261099900 42101371013960 5690 595010230 8740 570
01285013070 6890116809990011890 9510 5830 9640 90001402011080 54601355099900 6010 5770 9140 7900 908010040 7620 72101336011780 76301872099900 7610 7110 7960 725010060 6450 9100132501065010020157809990014780 21001406014460 537011130 651010380 48601417099900 876013830 502010340 959012840 67001256099900 520012680 9270 6050 796010550 95701209
012210 9160 6430 835099900 4100 5750 8600 9260 8410 9820 9070 6380104309990010020 919013450 7690 991010640 9300 3660 888012260 36401940099900 916014250 4940 721010880 9650 4730 824013910 5630138909990010540 196013690 8360 890011340 343010940 5830 88709990011350 960010140 8820 9380 8740 6610 590099900 711018520 7820 5700 992010260 7010 932
010840 766017350 562099900 6700 7730 8380114701039015110 701010680 587099900 9920 9130 9890104901123013650 9110 692012310 937012160 5260999001112013270115001489011250 9570 6510 9740 946011030 89609990016190 44801019012830 759013000 4200 7480 8830 8350999001203014110 82801197011490 632010370 609099900 97601514011790 924010570 8810105601193
01283011940162501219099900 62701189010930 743010970170201310014500 8820999001177013620117201112012150 992015620109001466016350 75601072099900186901481010040200201000013300 82701502014520 7130 90209990018540 963011790141701244014560143301685011160129309990016810126301247011140139501466012380144409990013380162601091010090 884011630160001340
0 9620 871010860 531099900 982010090 8980120901262012710 712012550 97109990012340 990013160 7850151601006013840129501535010110 6530 8850999001290014110 7680164201138013000139601636010380 5170109909990019570 7830108501203012900153501325013930 9990 5580999001275011960123301276012770 8700 9080 3740999001068014490 9170 8420 782011270140601084
00000000000000000000000000000000000000000000000000000000000000000000
45
Output file KNOB.1X2, continued
SIG13-19501438SIG13-19601009SIG13-1970 730SIG13-19801392SIG13-1870 109SIG13-18801224SIG13-18901159SIG13-1900 263SIG13-1910 798SIG13-19201196SIG13-1930 944SIG13-19401260SIG13-19501098SIG13-1960 950SIG13-1970 800SIG13-1980 0SIG14-18801006SIG14-1890 878SIG14-1900 244SIG14-1910 785SIG14-19201229SIG14-1930 820SIG14-19401203SIG14-19501381SIG14-1960 840SIG14-1970 850SIG14-1980 978SIG14-1880 917SIG14-1890 732SIG14-1900 120SIG14-1910 606SIG14-19201433SIG14-1930 960SIG14-19401266SIG14-19501151SIG14-19601059SIG14-1970 604SIG14-19801100S I G16- 18629990SIG16-1870 132SIG16-18801516SIG16-1890 271SIG16-1900 611SIG16-1910 812SIG16-19201114SIG16-1930 751SIG16-19401311SIG16-1950 965SI G16- 19601 125SIG16- 19701429SIG16-1980 908SIG16-1850 718SIG16-1860 146SIG16-1870 132SIG16-18801475SIG16-1890 312SIG16-1900 244SIG16-1910 678SIG16-19201168SIG16-1930 854SIG16-19401189SIG16-19501140SIG16- 19601 178SIG16-19701040SIG16-19801259
011510 8150 7250 00 191011770 9150 3150 595013710 7210 85801288012040 6450 00 8960 4740 4420 707011530 92501118011670 7910 5420 4550 7690 5950 2240 394018110 6990110001201011130 3660 445099900 355010090 5840 9470 630012220 313015010 888011510110801012011720 4940 2220 9090 3550 9880 747011420 4620 89201046012870 8370 973
0 9870 7360 635099900 32001950010320 4100 981011160 5600 61401087015790 756099900 8510 7330 4490 8110 9120 6830 555010510 9840 919099900 7100 6440 4290 566011730 5350 728010290 9820 63809990012000 83801473010400 7960 8990 8020 7430 8790 755012970 9700999001020014200 730012420 9060 7220 852010790 5890 7230 9030 9010 61609990
010970 88901202099900 5920 989013290 75601073013110 9500 52201012012680 982099900 8900 8530 828010770 816010390 490010600120401128099900 700011200 5350 9700 993011970 58501072014050125809990020130102901293012220 8390110701064012380 7710 8450120901228099900 87001071010420 944013940 7960 932011430 6790 72701339011760 81809990
011780 73101081099900 59001200016920 6530 62301120010130 4650 8160 93101254099900 57401018010050 7380 702012420 523013620 88701178099900 674012360 7940 7790 901011770 49601126011850117109990011930 23401223014410 8950 5580 9680 9290 5390 5950 7430 959099900 8860 8910 3870 949015270 7100 604010980 8480 732010220 7740 78409990
010760 5540 601099900 5610 8970 9220 6430 7620 933012450 720013670 6370 580099900 9590 9720 9060 8480 938010980 872012920 93001344099900 9340 9650 7320 8070 840010990101201046010020 89609990010710 3380 9230 867011360 8050100801012012910 9210 7470123309990014000 9150 5080 9540 8590 8080 7850 8480 95001341013360 6370163909990
010400 5060 895099900 68701662010860 6830 951010670 6430 555018230 7080 217099900142601046010970 8540 8670 5370 996010390 7710129409990026730113901117010240 9650 4000 8710 9520 78501177099900 8140 814014380 988010670 840010010 7200 900011460 5050 849099900 9280127601171018410 809012880 7880 9930 45201114011060 4570 88209990
0 9390101101084099900 833014580 925011000 7570 917010220 862014190 95501140099900134401768013280 950010030 842011040 7600 8930 97409990014640145901142011690 9700 606013000 809010070 92609990010610 6740120201136013430 9460 855010390 9240 7360 8000 2790999001554016900 7360 848010700152001190010290 847012220 9170 5610 31609990
020230 524014460999001385018450 880013400 613014150144301065017180 946010970999001303014770127401240015520115001534010590 968013460999001035013880152701074015890107801527012160 620014890999001102012710 973014380120601177012000147901197015290 866015880999001259014420182301205013930192701471011030145801453016480 5820196609990
013130 608016760999001247018520 628010630 929015270138701037011290 7020110609990015280143701166014910138801532012710 6930 57401083099900161101427011760 9310150701170015430 8600 3060116909990010510 976011890120201427010600117301501013710 978010300 79109990011160111601108014410 8440125001054013610129001015010360 6420113609990
00000000000000000000000000000000000000000000000000000000000000000
46
APPENDIX B
SOURCE-CODE LISTINGS FOR PROGRAMS
Page Program AREA.............................................................. 49
Program PLOT.............................................................. 65
Program MAKERAD........................................................... 115
Program TRING............................................................. 117
47
Source-code listing for program AREA
/**/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
Program namePurpose
InputOutput
ProgrammerCreated for
Files used
Date CreatedModifications
PurposeDateProgrammer
****** ******************************************AREA.CCreates area and index files from a standardring width file and radius data. Radius datamay be created by AREA or from a MAKERAD file.Standard ring width file in MM./100Raw and smoothed BAI data for input to PLOTand standard index files.Michael L. FieldTree-Ring LaboratoryMail Stop #461U.S. Geological SurveyReston, Virginia 22029BAREA.CGETRADS.CGETRINGS.CNORMAL. CSPLINE.CURT FLS.CCOMMON. C
i
'
i
*/V*/*/*/*/*/V*/*/*/*/*/*/*/*/*/*/*/*/*/V*/*/*/
^****************************************»*»*«***«***********»»****»*^
^include <stdio.h> fldefine TRUE 1 fldefine FALSE 0 JWefine CR 013 JWefine LF 010
mainO <static double rbaiMOOO]; static double sbai [10003; static double ringwidth[2000]; static double iindex[10003; static int cores[1000]; static double average[1000]; static double means[1000]; static double upperHOOO]; static double lower[1000]; static double sum[1000][3]; static double sum[1000] [2]; static double stdevMOOO];
static float ttable valsD = {0.0,12.706, 4.303, 3.182, 2.776, 2.571, 2.447, 2.365, 2.306, 2.262, 2.228, 2.201, 2.179, 2.160, 2.145, 2.131, 2.120, 2.110, 2.101, 2.093, 2.086, 2.080, 2.074, 2.069, 2.064, 2.060, 2.056, 2.052, 2.048, 2.045, 2.042>;
char rwfile[41],radfile[41],bafile[41],crnfile[41],outfile[41],idx1file[41];char inline[81], id[9], idrw[9], idrad[9], title[81], temp str[93;char ixfile[41], default_nam[4l3;char *cf, c, answ, *cp;int syr, eyr, subl, file_len, rdone, elw;int i, j, k, basp, rad, Torm, qdone, ci, nyr, n2, tt;int first yr, last yr, year cnt, crit yr*0, canopy, canopy year;int ind fTle=FALSE, idx file=FALSE, sta file=FALSE;int all_ok = TRUE;double radius, spline Ien, ttable, crit va1=0.0, ms, ynf, sdv;FILE *rwd, *rdd, *bd,~*sd, *ixd, *ixd1;~FILE *setupinf(), *setupout();char *fgets(), *gets(), *strcat(), *strcpy();char version[19];double atofO, fabs(), sqrt();
49
Source -code of program AREA, continued.
extern int indexO;
pr i ntf ( "\n\n\n\n\n\n" ) ;printf (N BASAL AREA INCREMENT PROGRAM\nN); printf(" TREE-RING LABORATORYW); printf(N U.S. GEOLOGICAL SURVEY\n">; printf(N WATER RESOURCES DIVISIONW); printf(" RESTON, VIRGIN I A\n\n\n"); printf(N (Press enter to continue)"); gets(temp_str);
printf ( M **** Press enter to select default answers ****\n\n");printf ("Enter the name of the ring-uidth(.RU) file: ");gets(rwfile);if ((rwd * setupinf(rwfile, "rb")) == (FILE *)NULL)
exitO; elu = 0; cp = rwfile; i = 0; while (i<41 && *cp != '.' && *cp != '\0')
default_nam[i++] = *cp++; default_nam[il = '\0'; fgets(tTtlef 80, rwd); i = strlen(title); while ((c=titleti]) ~ ' ' \ \ c == '\010' || c « '\013' || c = '\n' )
i--;title[i-2] = '\0';printf ("\nThis is the included title:\nXs\n", title);printf (" Title OK? (Y/N f default=Y)");gets(temp_str);if (temp str[0] == 'n' || temp_str[0] == 'N')
{printf ("Enter new title: ");gets(title);>
printf ("\nOoes the ring-width file contain Early and Late rings?"); printf("\n (Y/N f default=N) "); gets(temp_str); if (temp_str[01 « 'y' || temp_str[0] « 'Y')
{printf ("Do you want to process (E)arly or (L)ate rings (E/L)? ");gets(temp_str);if (temp str[0] == 'e' || temp_str[0] ~ 'E')
elw = T;else
elw = 2;>
printf ("\nOutput file name will be : Xs\n",default_nam); printf (" Name OK? (Y/N f default=Y)"); gets(temp_str); if (temp_str[0] = 'n' || temp_str[0] = 'N')
{printf (" Enter the name of the output files: ");gets(default_nam);>
file_len = index(default_namr "."); if (file_len 1= -1)default_nam[file_len] = '\0';
strcpy(crnfilef default_nam); strcat(crnfile, ".crn"); strcpy(idx1filef default_nam); strcat(idx1filef H .ix1");printf ("\nThe mean chronology file will be named Xs.\n",crnfile); if ((sd = setupout(crnf i le f "w")) «= (FILE *)NULL)exit();
fprintf(sdf "Xs\n" f title); ixdl = fopen(idx1filef "w"); sta_file = TRUE;
50
Source-code of program AREA, continued.
printf("\nCreate individual cores(.IND) file? (Y/N, default=Y>»>;gets(temp_str);if (temp_str[0] != 'n' && temp_str[0] != 'N')
{strcpy(bafile, default_nam);strcat(bafile, ».ind">;if «bd = setupout(bafile, "w")) == (FILE *)NULL> exitO;
fprintfCbd, "%s\n",title);ind_file = TRUE;>
printf("\nCreate index(.IX2) file? (Y/N, default=Y>">; gets(temp str); if (tempjstrEO] != 'n' && temp str[0] != 'N')
{strcpyd'xfile, default nam);strcat(ixfile, ».1x2">7if ((ixd = setupoutd'xfile, "w")) == (FILE *>NULL> exitO;
fprintf(ixd,"%s\n",title);idx file = TRUE;>
canopy = FALSE; canopy_year = 0;printf7"\nDo you want to use the estimated canopy radius(Y/N, default=N>? ">; gets(temp str); if (temp str[0] == 'Y' || temp str[0] = 'y'>
Cprintf("\nDo you want trees (I)n the canopy or (U)nder the canopy? ">;gets(temp str);if (temp_str[0] == 'I' || temp_str[0] == 'i')
canopy~= 1;else
canopy = 2;printf("\nRadius length to enter canopy (default=10 cm.): ");gets(temp_str);if((i=strlen(temp_str)) > 0) crit_val = atof(temp_str);
else crit_val = 10.0;
printf( M\nDo you want to use a year for the canopy value(Y/N, default=N)? ");gets(temp str);if (temp str[0] == 'Y' || temp strCO] == 'y')
Cprintf(" Enter canopy year: "); gets(temp_str); canopy year = atoi(temp str); >
>spline_len = 60;printf("\nEnter spline length in years(default=60 years): "); gets(temp str); if (temp_str[0] != '\0')
spline_len = atof(temp_str);printf("\nEnter first year for mean chronology(.CRN) file: "); gets(temp_str); syr = atoT(temp_str);printf("Enter last year for mean chronology(.CRN) file: "); gets(temp_str); eyr = atoi(temp_str); n2 = eyr-syr+1; rdone = FALSE; qdone = FALSE; while (!rdone)
Cprintf(M\nYou must select a radius file from the following:\n\n");printf(" 1. TerminateXn 2. Enter old file name\n");printf(" 3. Create and use new file\n 4. Manually enter info\n\n">;printf(M Choice: M );
51
Source-code of program AREA, continued.
while «answ = getcharO) < '0' && answ > '5'); c = getcharO; if (answ == '1')exitO;
if (answ != '4') <.if (answ == '2' || answ '3')
{printf ("Enter radius file name(default=%s.RAD): ",default_nam); gets(radfile); if (strlen(radfile) < 2)
<.strcpy(radfile, default nam); strcat(radfile, ".rad")7
if (answ == '2') <. if ((rdd=setupinf(radfile, »r"» != (FILE *)NULL)
<.rdone = TRUE;cf = fgetsd'nline, 80, rdd); /* discard title of radius file */>
>if (answ == '3')
<. if ((rdd=setupout(radfile, "w")) != (FILE *)NULL)
<.rdone = TRUE;fprintf(rddf "%s\n», title);getrads(rwd, rdd, crit val, elw);f close (rdd);rdd = fopen(radfile,f close (rwd);rwd = fopen(rwfile,cf = fgetsd'nline, 80, rdd); /* discard title of radius file */cf = fgetsd'nline, 80, rwd);
else <.rdone = TRUE; break;
while (iqdone) <.all ok = TRUE; if Tansw != '4')
<.cf » fgetsd'nline, 85, rdd); if (feof(rdd)) qdone - TRUE;
else <i = strlen(inline); inline [i-1] = '\0'; substrd'drad, inline, 1, 8); substr(temp str, inline, 10, 6); radius = at of (temp str)/1000.0; inline [42] = '\0';" printf ("\nWorking core %s", inline);
else <.printf ("Enter core id - (<ret> to quit): "); gets(idrad);
52
Source -code of program AREA, continued.
if ((ci=strlen(idrad)) > 0 ) C for (i=ci; i<8; i++)
idradtij « ' '; idrad[8] * '\0'; printfC'Enter radius: "); gets(temp_str);radius * at of (temp str)/1000.0; >
elseqdone = TRUE;
>if (! qdone)
Cif (all ok)
C getrings(rwd, idrad, &first_yr, &last_yr,
ringwidth, &all_pk7 &year_cnt, &crit_yr, crit_yal, elw); if (canopy != 0)
Cprintf(" X4d»,crit_yr); if (canopy *= 1)
if (crit yr = 0 j j (canopy year > 0 && crit yr >= canopy year))
printf(" NOT USED\07»); all ok = FALSE;
else Cif (canopy == 2 && crit yr > 0)
Cif (canopy year == 0 || canopy year >= crit yr)
printfC1 NOT USEDX0711 ); all ok = FALSE;
if (all ok) Cb_area(year_cnt, ringwidth, radius, rbai, elw); splin(rbai, sbai, year cnt, spline ten, &all ok); if (all ok)
Cms=0.0;for (i=1; i <= year_cnt; i-M-)
i index [i] = rbaiti] / sbai[i];for (i=2; i< year cnt; i
if ((i index! i] == 0) && (i index [i>1] == 0))ms = ms+1;
elsems=ms + fabs(2*(iindex[i]-iindex[i-1])/(iindex[i]+iindex[i+1]));
>ms= ms/(year cnt-1); if (ind fileT
C fprintf(bd, "\nRING WIDTHS %s MS=%7.3f %4d=X7.2f CM.\n»,
idrad, ms, crit yr, crit val); if (elw < 2)
writef(bd, ringwidth, year_cnt+1 , first_yr, last_yr); else
writef(bd, &ringwidth[1000], year cnt+1, first yr, last yr); fprintf(bd, M\nRBAI %s\n", idrad); writef(bd, rbai, year cnt+1, first yr, last yr); fprintf(bd, M\nSBAI ~ %s\n», idrad);
53
Source -code of program AREA, continued.
writef(bd, sbai, year cnt+1, first_vr, last yr); fprintf(bd, "\nINDEX ~ Xs\n", idrad); writef(bd, i index, year cnt+1, first yr, last yr); if (idx file)
{wrtidxd'xd, i index, cores, year cnt+1, first yr, last yr, idrad);>
fprintf(bd, "\nNORMAL INDEX Xs\n", idrad); normal (year_cnt, i index, &ynf, &sdv); writef(bd, i index, year cnt+1, first_yr, last yr); >
nyr = first_yr; for <k=1; k~<= year cnt; k++)
<. if (nyr >= syr && nyr <= eyr)
<.subl = nyr-syr+1;sum[sub1] [1] = sun[sub1] [1]+sbai Ck];sum[sub1] [2] = sun[sub1] [2]+ (sbai [k]*sbai [k] );sum[sub1][3] = suntsubU C3]+1;summCsubl] [1] = summ[sub1] [1]+rbai[k];sumnCsubl] [2] = sumnCsubl] [2]+(rbai tk]*rbai [k] );>
nyr = nyr+1;
> /* end qdone */ ms = 0.0;for <k=1; k <= n2; k++)
<. if <sum[k] [3] > 0)
<.means [k] = sun[k] [1] / sun[k][31;average [k] = sunm[k] [1] / sun[k] [3] ;iindex[k] = average [k] / means [k];>
else<means [k] = 0;average [k] = 0;i index [k] =1;>
if (sun[k] [3] < 30.0)<tt = sun[k][3];ttable = ttable valsCtt];>
elsettable = 2.0;
if (sun[k][3J <= 1.0)stdevCk] = 0.0;
else<.stdevCk] =sqrt((sun[k] [2]-((sun[k] [1]*sun[k] [1] )/sum[k] [3]))
/(sun[k][3]-1));stdevCk] =ttable/sqrt(sun[k] [3] )* stdevCk] ;>
upper [k] = stdevCk] + means Ck]; lower Ck] = means Ck] - stdevCk]; cores Ck] = sumCk]C3]; >
for <i=2; i<n2; i
if ((i index [i] == 0) && (iindexCi+1] == 0)) ms = ms+1;
54
Source-code of program AREA, continued.
else ms=ms -i- fabs(2*(iindex[i]-iindex[i-1])/(iindex[i]-n-index[i>1]));
>ms=ms/(n2-1);fprintf(ixd1 f "%s\n", title);wrtidx(ixd1 f i index, cores, n2+1, syr, eyr, "CRNIDX11 ); if (sta file)
CfprintfCsd, "\nNUHBER OF CORES: MS=X7.3f\n",ms);writei(sd, cores, n2+1, syr, eyr);fprintf(sd, "\nRBAI\n");writef(sd, average, n2+1, syr, eyr);fprintfCsd, "\nSBAI\n");writef(sd, means, n2+1, syr, eyr);fprintfCsd, "\hUPPER 9SXX CONFIDENCE LIMIT:\n");writef(sd, upper, n2+1, syr, eyr);fprintf(sd, "\nLOUER 9SXX CONFIDENCE LIMIT:\n");writef(sd, lower, n2+1, syr, eyr);fprintf(sd, "\nINDEX VALUE:\n»);writef(sd, i index, n2+1, syr, eyr);fprintf(sd, "\nNORMALIZED INDEX:\n");normal (n2, i index, &ynf, &sdv);writef(sd, i index, n2+1, syr, eyr);>
printfC'Xn11 ); fclose(rwd); f close (rdd) ; fclose(bd); fclose(sd); fclose(ixd); f closed* xd1);
index(s, t)char stl, t[];Cint i, j, k;for(i=0; s[i] != '\0'; i
for(j=i, k=0; t[k] !='\0' && s[j]==t[k]; j++,if <t[k] == '\0') return(i);
> return(-1);
cls()<.printf ("\033C2J11 );fflush(stdout);
I* File name : BARE A. C */
b_area(years, rw, radius, a, elw)
int years; double *rw; double radius; double *a; int elw;
int i;double rlen_prev, rlen_curr;rlen_prev = radius;
55
Source-code of program AREA, continued.
for (i=years-1; i>«0; i--)
if (elw = 0)
rlen_curr = rlenjjrev - rw[i+1];a[i+T] » 3.14159*((rlenjjrev*rlenjjrev) - (rlen_curr*rlen_curr));rlenjjrev » rlen_curr;
else
if (elw >- 1)
rlen_curr » rlenjjrev - rw[i+1+1000];rlenjjrev » rlen_curr;rlen curr * rlenjjrev - rw[i+1];aCi+T] = 3.14159*((rlenjjrev*rlenjjrev) - (rlen_curr*rlen_curr)>;rlenjjrev = rlen_curr;
else
rlen curr » rlenjjrev - rw[i+1+1000];aCi+T] » 3.14159*((rlenjjrev*rlenjjrev) - (rlen_curr*rlen_curr));rlenjjrev » rlen_curr;rlen_curr = rlenjjrev - rwCi+1];rlenjjrev * rlen_curr;
/* Filename : GETRADS.C/^
^include <stdio.h> #define TRUE 1 fttefine FALSE 0
getradsd'd, od, c_val, elw)
FILE *id, *od; float c_val; int elw;
char idnunber[91, line[101]; char c * ' '; char tempstr[9] f *cf; char *fgets(), *substr();
int i, j, value, years; int ci, first year, last year, crit year; int done » FALSE, first * TRUE; int ci_val; unsigned int total; crit_year » 0; years » 0;ci val = c val*1000; while (Idone)
<.cf > fgetsOine, 100, id); lineBO] - '\0'; if (feof(id))
<. fprintf(od,»%s X6u X4d X4d X4d X4d\n",
idnunber, total, years, first year, last year, crit year); done » TRUE;
56
Source-code of program AREA, continued.
break;>
substr(tempstr, I ine, 1,8); if (strcmp(tempstr, idnumber) != 0)
{if ( ! first ) { fprintf(od,"Xs X6u X4d X4d X4d X4d\n".
idnumber, total, years, first year, last year, crit year); >
substr( idnumber, line, 1,8);substr(tempstr,line,9,4);first_year = atoi(tempstr);last year = first_year-1;total * 0;crit_year = 0;years * 0;first * FALSE;>
substr(tempstr, line, 12, 1); if (!elw)
j = 10 - (atoi(tempstr)XIO); else
j = (5 - (atoi(tempstr)X5))*2; for (i=1; i<j+1; i
substr(tempstr, line, (7+(i*6)), 6); if(strcmp(teinpstr, " 99900") == 0)break;
total = total + atoi(tempstr); if(elw > 0)
substr(tempstr, line, (7+(i*6)), 6);total 3 total + atoi(tempstr);>
last_year » last_year+1; years * years +1; if(crit_year == 0 && total >= ci_val)crit year = last year;
>> /* end while */
> /* end */
/A******************************************** ***********************/ /* File name : GETRINGS.C */
^include <stdio.h> ^define TRUE 1 ^define FALSE 0
getrings(rwd, idrad, first_yr, last_yr, rw, all_ok, year_cnt, cyr, cval, elw)
FILE *rwd;char idradl];int *first_yr, *last_yr;
double *rw;int *all_ok, *year_cnt, *cyr, elw;double cval;
int i, j, rend, rwdone=FALSE, first=TRUE; int ci, lyr, yrs, temp_yr, atoiO; char *fgets();char check_end[7],idrw[9], c, *cf; char rwline[101], tempstr[10];
57
Source-code of program AREA, continued.
double atofO, cvt = 0.0;
strcpy(check_end, » 99900");*first yr = 0; lyr = 0; yrs = 0;*cyr » 0; while <! rwdone)
<cf = fgets(rwline, 100, rwd); /* read ringwidth line */ rwline [80] = '\0';if (feof(rwd)) /* EOF means id not found - ERROR */ <*all ok = FALSE; rwdone = TRUE; break; >
else <substr(idrw, rwline, 1, 8);if ((rend = strcmp(idrw, idrad)) == 0) /* rw id */
<if (*first yr <= 0)
<substr(tempstr, rwline, 9, 4);*first_yr = atoi(tempstr); /* first year of core */ lyr = atoi(tempstr); first = FALSE; if (!elw)
i = 10-(lyrX10>; else
i = (5-(lyr%5»*2; >
elsei = (strlen(rwline>-13>/6;
for (j = 1; j<=i;
substr(tempstr, rwline, 13+((j-1)*6>, 6); if (strcnp(tempstr, check end) == 0)
<.lyr = lyr + yrs - 1;*last_yr = lyr;*ycar_cnt = yrs; rwdone = TRUE; break; >
else <.yrs = yrs + 1; /* number of years in core */ rw[yrs] = atof(tempstr)/1000.0; cvt=cvt+rw[yrs]; if (elw != 0)
substr(tempstr, rwline, 13+((j-1)*6), 6); rw[yrs+1000] = atof (tempstr)/! 000.0;
cvt=cvt+rw[yrs]; >
if( *cyr == 0 && cvt >= cval)*cyr=lyr»yrs-1;
>> /* end for */
> /* end compare id */ if ((first && rend != 0)
<i=strlen( rwline);j=fseek(rwd, ((long)(i*(-1))), SEEK_CUR); rwdone = TRUE;
58
Source -code of program AREA, continued.
lyr = lyr + yrs - 1;*last_yr = lyr;*year_cnt = yrs; break; >
> /* end not EOF */ > /* end while */
> /* end getrings */
/ a******************************************************************/
/* File name : NORMAL. C */ /«*******************************************************************/
^include <math.h>
normal (n, x, xm, sd>int n;double *x, *xm, *sd;
double an, sun, sumsq, var; double sqrtO; int i;
if (n <= 1)<puts ("\nNumber of years is one or less. Program is terminal ing.\n\n">;exitO;>
an = (double)n; sum = 0.0; sumsq = 0.0; for (i=1; i<=n; i+*>
sum = sum*x[i];sumsq=sumsq*((x[i])*(x[i]»;>
*xm - sum/an;var = (sumsq-an*((*xm)*(*xm»)/(an-1.0); if (var < 0.0)
var = var*(-1.0);*sd = sqrt((double>var>; if (*sd =» 0.0)
return; for (i=1; i<=n; i+O
x[i] = (x[i]-(*xm»/(*sd); return;
**** a*********************************************** *****»//* File name : SPLINE. C */ /********************************************************************/
ftfefine TRUE 1
ftfefine FALSE 0
splin(y, spl, n, spline, all_ok>
double *y» *spl; int n;double spline; int *all_pk;
int i, j, k, nc, ncpl, nm2, m, i1, i2, I, jm1; int imncpl, nc1, iw, kl, nl, k1;
59
Source -code of program AREA, continued.
double a [1000] [3], b[1000]; double d1, d2, rn, tot, p; double pet = 0.50000000; double pi = 3.1415926535897935; double p1,p2,p3,p4,p5; double c1[5], c2[4]; double cos(), sqrtO, fabsO;
cl [11=1. 000000;c1 [2] =-4. 000000;d 01=6.000000;c1 [4] =-2. 000000;c2 [11=0.000000;c2 [21 =0.33333333333333;c2 [3] =1 .33333333333333;
if ( n > 1800 M n < 4) {if (n > 1800)
{printf ("XnXcXcSpline capacity (1800) exceeded. \n\A7"); printf (" Program terminating.\n"); all_ok = FALSE; return; >
>nm2 = n-2; p= ((1.0/(1.0-pct)-1.0)*6.0*((cos(pi*2.0/spline)-1.0)*(cos(pi*2.0/spline)-1.0)))
/(cos(pi*2.0/spline)+2.0); for (i=1; i<=nm2;
<.for (j=1; j<4;
<.c1[j]+p*c2[j];
c1[4] *
nc = 2;/* Begin LUDAPB */rn = 1.0/(rm2*16.0);d1 = 1.0;d2 = 0.0;ncp! = nc + 1;for (i=1; i<=nm2;
imncpl = i-ncp1; if ( 1-iimcp1 > 1)
elsei1 = 1;
for (j=i1; j<=ncp1; j<.I = imncpl + j;i2 = ncpl - j;tot = a[i][j];jm1 = j - 1;if (jm1 > 0)
for (k=1; k<=jm1; k++) <m = i2 + k; tot = tot - (a[i][k] * a[l][m]);
60
Source-code of program AREA, continued.
if (j « ncpD
if (a[i] [j] + tot * rn <= a[i] [j])
spl[1] = 9999.0;printf("%c%cSpline matrix not positive def inite. \n\A7");printf(" Program is terminating.\n");all_ok = FALSE;return;
else
a[i][j] « 1.0 / sqrt(tot); /* Update the determinant */ d1 = d1 * tot; if (fabs(d1) > 1.00000)
while (fabs(d1) > 1.000)
d1 = d1 * 0.062500; cE = d2 + 4.0;
if (fabs(d1) <= 0.062500)
while (fabs(d1) <= 0.062500)
d1 = d1 * 16.0; d2 » cE - 4.0;
a[i][j] = tot * a[l][ncp1];
else t a[i][j] = tot * a[l][ncp1];
/* End LUDAPB / Begin LUELPB */ /* Solution LY = B */ if (all ok)
nc1 * nc + 1; iw = 0; I =0; for (i=1; i <= nm2; i
ttot = b[i]; if (nc > 0)
t if (iw \- 0)
1=1+1; if (I > nc)
I =nc; k = ncl - I; kl = i - I;
for (j=k; j <= nc; j
tot = tot - (b[kl] * a[i][j]); kl = kl + 1;
elseif (tot != 0.0)
iw = 1;
61
Source-code of program AREA, continued.
bCi] * tot * a[i][nc1];
/* Solution UX = Y */ if (all ok)
Cb[nm2] = b[nm2] * a[nm2] nl « nm2 + 1; for (i=2; i <= nm2; i
Ck = n1 - i; tot = b[k] ; if (nc > 0.0)
Ckl = k + 1; if(k+nc > nm2)
k1 * ra2; else
k1 = k+nc;I - 1;for (j=kl; j<=k1;
Ctot = tot - <b[j] * a[j][nc1-U);1=1+1;
b[k] - tot * a[k][nc1];
/* end LUELPB */ if (all ok)
Cfor (i = 3; i <= nm2; i
splCi] » b[i-2]
splC2] = d[4] * b[1] + b[2]; spl[n-1] * b[rm2-1] + c1[4] * b[nm2]; spUn] = b[nm2]; for (i=1; i <=n; i
/*»*»»«*»*»*»*»*«*»*»*»»****»*»*******»*»*»*»*****»*»*»*»*»*****»*»**//* File name : URT FLS.C */ /****************************************^
#include <stdio.h>#define TRUE 1 ftdefine FALSE 0
writef(fp, prtarr, j, fyM, IdecD int j, fyrl, Idecl; FILE *fp; double prtarr[];
Cint I, i, jb, je; int done = FALSE; prtarr[j] = 99.99; jb = 1;je » (10 - (fyM X 10)); while (Idone)
Cif (i ~ j)Cdone = TRUE;break;
62
Source-code of program AREA, continued.
fprintf(fp, "%4d",fyr1); for (i=jb; i <= je; i++)
if (i « j)
<done * TRUE; break; >
fprintf(fp, "X7.3f ", prtarr [i] );
fprintf(fp, "\n"); if (i <« 10)
fyrl « fyr! + i - 1; else
fyrl « fyr! + 10; jb = je + 1; je = je + 10;
writei(fp, prtarr, j, fyrl, Idee!) int j, fyrl, Idecl; FILE *fp; int prtarr rj;
int I, i, jb, je, tenp; int done = FALSE; prtarr [j] « 9999; jb « 1;je « (10 - (fyrl X 10)); while (Idone)
if (i =» j)
done = TRUE; break; >
fprintf(fp, «%4dH ,fyr1); for (i=jb; i <- je; i++)
if (i -- j)
done = TRUE; break; >
temp = prtarr [i]; fprintf(fp, "X7d",tenp); >
fprintf(fp, «\n"); if (i <- 10)
fyrl * fyrl + i - 1; else
fyrl = fyrl + 10; jb = je + 1; je * je + 10;
wrtidx (fp, prtarr, cor, j, fyr, lyr, id)
FILE *fp;double prtarr [];int cor[], j, fyr, lyr;char id[];
int I, i, jb, je, fdec, Idee, tempi;
63
Source-code of program AREA, continued.
int done » FALSE;
fdec * (fyr/10>*10; Idee = (lyr/10)*10; id [6] = '\0'; jb * 1;je * fyr X 10; if (je ! = 0)
<fprintf(fp, "XsXAd", id, fyr);for (i«jb; i<=jt; i++)
fppintf(fp, "9990 0");>
for (i«1; i<=j
if«(fyp+i-1)%10) *» 0)fprintf<fp, "X8X4d" f id, fyr+i-1);
tempi = prtarr[i]*1000; fprintf(fp, "nWcBOd", tempi, cor[i]); if (((fyr*i-1)%10) « 9)
fprintf(fp, if (i « j-1)
break; >
je * 10-(lyrX10); if (je != 0)
for (i=1; i<je;fprintf(fp, "9990 0");
fprintf(fp, "\n");
64
Source-code listing for program PLOT.
/**/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
ft***************-
Program namePurposeInputOutput
ProgrammerCreated for
Files used
Date CreatedModifications
PurposeDateProgrammer
>**********************»*****«***»»***»******»*<PLOT.CMenu-driven program to plot tree-ring data.Data file created by program AREA.To HP 7475A plotter.Michael L. FieldTree-Ring LaboratoryMai I Stop #461U.S. Geological SurveyReston, Virginia 22092
: CHNG ALL.CFIL ARRS.CLIST ALL.CPLT UTIL.CPRINT_ALL.CP PLOT.CREAD FLS.CS PLOT.CURITEF.CCOMMON. C
:
:::
Mr*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/
*/*/*/*/*/*/*/*/*/*/
^include <stdio.h> ^include <graph.h> ^include <string.h> ^include <math.h> #include <bios.h> ^include <stdlib.h> include "plot^ver.h"
/* Functions - prototypes and macros */
int menu(int, int, char* []); /* Menus */void box(int, int, int, int);void itemized'nt, int, char*, int);
/* Control pen and color */
unsigned cursor(unsigned);
/* Constants */
ftfefine^defineftfefine^defineMdefine^define TCURSOROFF^define LASTATR 15^define NLASTATR 14
/* Scan codes */
fldefine ^define ^define ^define ftfefine
PIDEFAULT TRUE FALSE NULL
0x2020
3.141593
100
-1
UP 72DOWN 80LEFT 75RIGHT 77ENTER 28
/* Structures for configuration and other data */
struct videoconfig vc;
65
Source-code listing for program PLOT, continued.
/* Initial and work arrays for remapable colors. */
long i Colors [] = {BLACK, BLUE, GREEN, CYAN,
"RED, "MAGENTA, BROUN, WHITE,"GRAY, "LIGHTBLUE, LIGHTGREEN, LIGHTCYAN.ILIGHTRED, "LIGHTMAGENTA. _LIGHTYELLOU, _BRIGHTWHITE >;
long wColors[256];
/* Array and enum for main menu */
char *mnuMain[] = C"1. Read Chronology(.CRN) file.", "2. Read Individual(.IND) file.", "3. Read Tektronics data file.", "4. Read Other Data(.DAT) file.", "5. Input datum from keyboard.", "6. Directory listing.", "7. Set up plotter port.", "8. Quit.",
NULL >;
enum C READS, READI, READT, READD, KYBD, DIRL, PORT, QUIT >;
/* Array for plot menu */
char *mnuPlot[] = <"1. Change title.","2. Change labels, axis or window values.","3. Plot and graph routines.","4. List data, status info, or ascii file.","5. Save keyboard file to disk.","6. Main menu.","7 . Quit.",NULL >;
char *mnuDevice[] = {"1. Screen Plot.","2. HP-7475 8-1/2 x 11.","3. HP-7475 11 x 14.","4. Prev menu. 11 ,NULL >;
char *mnuchng[] = "1. Change X label.", "2. Change Y label.", "3. Change X axis.", "4. Change Y axis.", "5. Change X data window.", "6. Change Y data window.", "7. Prev menu.", NULL >;
char *mnuPgraph[] = { "1. Plot BAI.", "2. Plot Ring widths.", "3. Plot Indices.", "4. Prev menu.", NULL >;
char *mnulndtyp[] = {"1. Standard index.", "2. Normalized index.", "3. Previous menu.", NULL >;
66
Source-code listing for program PLOT, continued.
char *mnuLmain[] = <."1. List data.", "2. List status.", "3. List ascii file.", "4. Prev menu. 11 , NULL >;
char *mnuLdata[] * < "1. Screen.", "2. Printer.", "3. Prev menu.", NULL >;
char *mnuPort[] = <. "1. Port.", "2. * Characters.", "3. Stop bits.", "4. Parity.", "5. Baud rate.", "6. Main menu.", NULL >;
char *mnuPport[] = < "1. Coral.", "2. Com2.", "3. Prev menu.", 4. Main menu.", NULL >;
char *mnuChar[] H {"1. 7 characters. 11 , "2. 8 CHARACTERS.", "3. Prev menu.", "4. Main menu.", NULL >;
char *mnuStop[] = {"1. 1 stop bit.", "2. 2 stop bits.", "3. Prev menu.", 4. Main menu11 , NULL >;
char *mnuParity[] * { "1. None.", "2. Odd.", "3. Even.", "4. Prev menu.", "5. Main menu.", NULL >;
char *mnuBaud[] = { "1. 300", "2. 600", "3. 1200", "4. 2400", "5. 4800", "6. 9600", "7. Prev menu.", "8. Main menu.", NULL >;
/* Arrays for video modes */
char "imuModesn = { "MRES4COLOR ", "MRESNOCOLOR", "HRESBW", "MRES16COLOR",
67
Source-code listing for program PLOT, continued.
"HRES16COLOR",MERESCOLORM ,MVRES2COLOR","VRES16COLOR 11 ,"MRES256COLOR",NULL >;
/* Array for modes */
int modest] = {MRES4COLOR,
~MRESNCCOLOR, "HRESBU,MRES16COLOR,HRES16COLOR,
"ERESCOLOR, "VRES2COLOR,VRES16COLOR,
~MRES256COLOR, ~ERESNOCOLOR,DEFAULT >;
/* Structure for menu attributes (variables for color and monochrome) */
struct mnuAtr {int fgNormal, fgSelect, fgBorder;long bgNormal, bgSelect, bgBorder;int centered;char nw[2], ne[2], se[2], sw[2], ns[2], ew[2l;
> menus = {0, 15, 4,3, 4, 3,TRUE,
M\xda", "\xbf», "\xd9", "\xcO", "\xb3", "\xc4"
struct mnuAtr bwmenus = { 0x70, Oxf, 0x70, 0x7, 0x70, 0x7, TRUE,
"\xda", M\xbf", "\xd9", "\xcO", "\xb3", "\xc4"
char mess1[] = { "Basal Area plotting routines" > ; char mess2[] = <.
"Move to menu selection with cursor keys, press ENTER to select" >; char mess3[] { "(Press enter key to continue)\n" >; char mess4[] = <. "File successfully read.\n" >; char messSQ = C "\nEnter Chronology file name: " >; char mess6[] - { "\nEnter Individual file name: " >; char messoaC] = { "\nEnter Individual file name (default=" >; char mess6b[] = { '): " >;char mess7[] = { "\nEnter TEKTRONICS file name: " >; char mess9[] = { "\nEnter Other Data file name: " >; char mess8[] = { "\nPROBLEM READING FILE.W >; char mess10[] = { "\n File successfully written." >;
int Imess1 = sizeof(messl), Imess2 = sizeof(mess2), Imess3 = sizeof(mess3), Imess4 = sizeof(messA);
short style[16] = C0x1, 0x3, 0x7, Oxf, Ox1f, Ox3f, Ox7f, Oxff, Oxlff, Ox3ff, Ox7ff, Oxfff, Oxlfff, Ox3fff, Ox7fff, Oxffff>;
/* COM PORT SETUP */
static int port; static int rxtx; static int stop; static int parity; static int baud;
68
Source-code listing for program PLOT, continued.
main ()<static char title[81], rsname[41], temp ind[41];static char x lab[41] « "YEAR";static char yjab[41] * "BASAL AREA INCREMENT";static char core[9];static int t1, t2, t3, x1, x2, y1, y2, sc, cxy, Imnu, pmnu;static int years, first_yr, last_yr, Ipt;static int all_ok * TRIE, Pdone,~Mdone, Idone, Bdone, Cdone;static int Ddone, Ldone, Lmdone;static int i, j, k, I, m, line_cnt, cyr;static int first;static int tempi;static int p1, p2;static int w1, w2, w3, w4, q1, q2, q3;static int chngd x1 x2 = FALSE, chngd y1 y2 = FALSE;static int chngd~w1_w2 = FALSE, chngd_w3_w4 = FALSE;static float ys, xs, xadd, yadd, yscale, xscale;static double y min, y max;static double rings[750], rbai[750], sbai[750];static double up[750], low[750], index[7501;static double nindex[750];static double q4, ms, cval;
char *gets(), *p;char c;char c4;char temp[5];char temp_str[8];char temp~dir[41];char dirnam[128];char choice3 [2], choice4[2];
int choice, choice2, crow, ccol; int tmode, vmode, done; long bcolor;
FILE *rs;FILE *setupinf(), *setupout();
int idunyl, idumy2, iduny3, idumy4, indtyp; double ddumyl, dduir/2, ddumy3; char cdumy1[81], cdumy2[9];
indtyp * 0;port * 0;rxtx « 3;stop * 0;parity » 24;baud * 224;_bios_serialcom(_COM_INIT, port, (rxtx | stop | parity | baud));_getvTdeoconf i g(Ivc);crow * vc.numtextrows / 2;ccol * vc.numtextcols / 2;
/* Select best text and graphics modes and adjust menus
switch (vc.adapter) { case _MDPA :
putsC'No graphics mode available.\n">;exit(O);
case _CGA :mnuModes[3] * NULL;vmode * _HRESBU;break;
case EGA :mnuNodes[6] * NULL;
69
Source -code listing for program PLOT, continued
if (vc. memory > 64) vmode = _ERESCOLOR;
else vmode = _HRES16COLOR;
break; case VGA :
vmode = J/RES16COLOR;break;
case HCGA :vmode = _MRES256COLOR;break;
>switch (vc.mode)
case _TEXTBW80 :
menus = bwmenus; case TEXTBW40 :
Isetvideomode(_TEXTBU80);break;
case TEXTC40 :tmode = JTEXTC80;break;
case TEXTHONO : case _ERESNOCOLOR :
menus = bwmenus;tmode = TEXTC80;vmode = ~ERESNOCOLOR;mnuMaintT] = NULL;break;
default:tmode = TEXTC80;
set vi deomode< tmode); ~settextposition(7,40 - (Imess! / 2»; _outtext(mess1 );_settextposition(9,40-(sizeof(version)/2)); _out text ( ver s i on ) ;"set textpositiond 1,40 - (Imess3 / 2)); _outtext(mess3); gets (temp str);
_settextposition(2,40 - (Imess2 / 2»; _outtext(mess2);
/* Select and branch to menu choices */ for (;;)
Mdone = FALSE; while (! Mdone)
chngd x1 x2 = FALSE; chngd~y1~y2 = FALSE; chngd~w1~w2 = FALSE; chngd~w3~w4 = FALSE; tempJndTO] = '\0'; choice = menu(crow,ccol,nruMain);
if (vmode = 6 1 1 vmode = 14 1 1 vmode « 16 1 1 vmode = 18) xs = 2;
elsexs * 1;
if (vmode ==15 || vmode == 16)ys = 1.75;
else if (vmode =» 17)ys = 2.4;
elseif (vmode = 18) ys = 2.0;
70
Source-code listing for program PLOT, continued.
else ys = 1;
setvideomode ( DEFAULTNGDE); switch (choice)"
case QUIT :exit(O);break;
case READS : /* read chron file */all ok = TRUE;.setvideomode (_DEFAULTMOOE);_outtext(mess5)J
if «rs = setupinf( rsname, "r"» != (FILE *)NULL) < read_crn(rs, rings, rbei, sbai, up, low, index, n index, &years,
&first_yr, &last_yr, &y_max, title, &all_ok, fans); fclose(rs); if (all ok)
<tempi = strlen(rsname); for (i=tempi; i>=0; i--)
tif (rsnameCi] == '.')
tsubstr(temp ind, rsname, 1, i+1); strcat(temp~ind, "ind"); break; ~
clsO;_settextposition(10,40 - (ImessA / 2));outtext (messA);
~settextposition(11,40 - (Imess3 / 2»; _outtext(mess3); gets(temp_str); Ndone = TRUE; >
else < puts("\a");
_outtext (messS);outtext (" File may be wrong type.");
~settextposition(11,40 - (Imess3 / 2)); _outtext(mess3); gets(temp str);
elsetputs("\a»);cls(>;cntnueO;>
break;case READ I : /* read individual file */
all ok = TRUE;_setvideomode (_DEFAULTMODE); ~outtext(mess6)7 gets( rsname); if ((rs = setupinf( rsname, »r")) != (FILE *)NULL)
<:read_ind(rs, up, rbai, sbai, index, n index, &years,
&first_yr, &last_yr, &y_max, title, fans, &cyr, &cval7 &all_ok, core);
fclose(rs);
71
Source-code listing for program PLOT, continued.
if (all ok) C strcpy(temp_ind, rsname);
_outtext (mess4);~settextposition(11,40 (Imess3 / 2)); "out text (mess3); gets(tenp str); Mdone = TRUE;
else
puts("\a»);_outtext(mess8);~outtext(" End of file reached before finding core.\n");~outtext(" File may be wrong type or\n");_outtext(" core may not be in file.Xn11 );~outtext(mess3);get s( temp str);
else{puts(»\a»);cls();cntnueO;>
break;case READT : /* read tektronics file */
_setvideom>de (_DEFAULTMOOE); ~outtext(mess7)7 gets( rsname); if <(rs = seti4>inf( rsname, Mr")) != (FILE *)NULL)
Cread_tek(rs, rbei, &years f fcfirst^yr, &last_yr, &y_max f title);fclose(rs);
outtext (mess4);~settextposition(11,40 - (Imess3 / 2));~outtext(mess3);get s( temp str);Mdone * TRUE;>
else<put*(»\a");cls();cntnueO;>
break;case REAOD : /* read other data file */
all ok * TRUE;_setvideomode (_DEFAULTMOOE); _outtext(mess9)7 gets( rsname); if ((rs * seti4>inf( rsname, »r")) != (FILE *)NULL)<read_oth(rs f rbai, &years f &first_yr, &la8t_yr f
&y_max, title, &all_ok);""fclose(rs);if (all ok)
_outtext (messA);~settextposition(11 f40 - (Imess3 / 2));_outtext(mess3);gets(tenp_str);cntnueO;"
72
Source -code listing for program PLOT, continued.
Ndone TRUE; >
else < puts<"\a");
_outtext (messS);_outtext (" File may be wrong type.");cntnueO;
else{puts< M\a");cls();cntnueO;>
break; case KYBD : /* get data from keyboard */
setvideomode ( DEFAULTMODE); put s< "Enter title: "); gets(title);
puts( "Enter first year: ");gets(temp_str);first_yr * atoi(temp_str);last_yr * first_yr-ljyears = 0;yjnin « 0.0;y~max = 0.0;
done = FALSE;puts( N\n Enter QUIT to terminate values. \n">;whileOdone)
- «. last_yr+1); gets(temp str); if (tefflp_str[0] « 'Q' || temp_str[0] == 'q')done = TRUE;
else{years * years+1;last^yr « last_yr+1;rbaiTyears] = atof(temp_str);if ( r be i [years] > yjnax)
y max = rbai [years] ;
cntnueO; Mdone = TRUE; break;
case DIRL : /* list directory */ ^setvideomode <J>EFAULTMODE);print f( M\n\n\nEnter full pathname (enter=current): M ); gets(temp_dir);
strcpy(dirnam, "dir M );if «i = strlen(tefflp_dir)) != 0)
strcat(dirnam, temp dir); strcat(dirnamt « /p")7 i * systenKdirnam); cntnueO; gets(temp_str); break;
case PORT : /* set up plotter port */ setvideomode( tmode);
_outtext( M\nRoutine not completed yet\n");
73
Source-code listing for program PLOT, continued.
cntnueO; Cdone = FALSE; while (! Cdone)
pi = menu(crou, ccol, mnuPort); suitch(pl)
<.case 5 : Cdone = TRUE; break;
case 0 : Bdone = FALSE; uhi led Bdone)
p2 = menu(crow, ccol, mnuPport); suitch(p2)
<. case 3 :
Bdone = TRUE;Cdone = TRUE;break;
case 0 :port = 0;break;
case 1 :port = 1;break;
case 2 :Bdone = TRUE;break;
default :break;
break; case 1 :
Bdone = FALSE; uhi led Bdone)
C
p2 = menu(crou, ccol, mnuChar); suitch(p2)
<. case 3 :
Bdone = TRUE;Cdone = TRUE;break;
case 0 :rxtx = COM CHR7;break; "
case 1 :rxtx = _COM_CHR8;break;
case 2 :Bdone = TRUE;break;
break; case 2 :
Bdone = FALSE; uhi le(! Bdone)
p2 = menu(crou, ccol, mnuStop); suitch(p2)
74
Source-code listing for program PLOT, continued.
case 3 :Bdone = TRUE;Cdone = TRUE;break;
case 0 :stop = COM STOP1;break; ~
case 1 :stop « _COM_STOP2;break;
case 2 :Bdone = TRUE;break;
default :break;
break; case 3 :Bdone = FALSE; whi led Bdone)
p2 « menu(crow, ccol, mnuParity); suitch(p2)
C case 4 :
Bdone * TRUE;Cdone = TRUE;break;
case 0 :parity = _COM_NOPARITY;break; " "
case 1 :parity = COM OODPARITY;break;
case 2 :parity = COM EVENPARITY;break;
case 3 :Bdone « TRUE;break;
default :break;
break; case 4 :
Bdone » FALSE; while (! Bdone)
p2 « Menu(crow, ccol, mnuBaud); suitch(p2)
< case 7 :
Bdone = TRUE;Cdone = TRUE;break;
case 0 :baud = COM 300;break; ~
case 1 :baud » _COM_600;break; "
case 2 :baud » _COM_1200;break;
75
Source-code listing for program PTJDT, continued.
case 3 :baud * COM 2400;break; ~
case 4 :baud * _COM_4800;break;
case 5 :baud = _COM_9600;break;
case 6 :Bdone = TRUE;break;
default :break;
break; >
_bios serialcom(_COM INIT, port, (rxtx | stop | parity | baud)); >
default : break;
> /* end switch choice */
> /* end while Mdone */ indtyp = 0; y1 = 0;y_tics(&t2, y_maxf &y2); x~tics(&t1, &x1, &x2, years, first yr); qT = x1; q2 - x2; q3 * y2; w1 = x1; w2 = x2; w3 = y1; w4 - y2;idumyl = f irst_yr; iduny4 = years; listjnf (title, x_lab, y_lab, first_yr, last_yr, yjnax, q1, q2, q3,
x1, x2, y2, w1, w2, w3, w4, ms, cyr, cval, choice); gets(temp);
_settextposition(2,40 - (Imess2 / 2)); out text (mess2); Pdone = FALSE; i = strlen(title); title[i+1] = '\0'; while (! Pdone)
<.choiceZ = menu(crow,ccol,mnuPlot); _setvideonode (_DEFAULTMCOE); switch (choiceZT
case 6 : /* QUIT */
exit(O);case 0 : /* CHNG T */
chng_t(title);~ break;
case 1 : /* CHNG */ Cdone = FALSE; while (! Cdone)
cxy = menu(crow, ccol, itnuchng); cxy = cxy+10; switch (cxy)
76
Source-code listing for program PLOT, continued.
case 16 :Cdone = TRUE;break;
case 10 : /* change x label */chng_x(x_lab);break;
case 11 : /* change y label */chng_y(y_lab);break;
case 12 : /* change x axis values */chngd_x1_x2 = TRUE;chng_x_vals(&x1, 4x2, &t1);break;
case 13 : /* change y axis values */chngd_y1_y2 = TRUE;chng_y_vals(&y1, &y2, &t2);break;
case 14 : /* change x window */chngd_w1_w2 = TRUE;chng_x_win(&w1, &w2, &x1, &x2);break;
case 15 : /* change y window */chngd_w3_w4 = TRUE;chng_y_win(&w3, &w4, &y1, &y2);break;
default :break;
break;case 2 : /* plot and graph routines
Ddone = FALSE; while (! Ddone)
pnrtu = menu(crow, ccol, mnuPgraph); pmnu = pmnu+20; switch(pmnu)
<case 23 : /* prev menu */
Ddone = TRUE; break;
case 20 : /* bai */ Cdone = FALSE; while (! Cdone)
<_setvi deomode( tmode) ; sc = menu(crow, ccol, mnuDevice); first = TRUE; if (sc == 3)
<plot_stp(x2, y2, &port); Cdone = TRUE; break; >
if (!chngd_y1_y2) <y_tics(&t2, y_max, &y2); y1 = y min; >
if (Ichngd_w3 w4) <w3 = y1; w4 = y2; >
if (!chngd_x1_x2) x_tics(&t1, &x1, &x2, idumy4, idumyD;
77
Source-code listing for program PLOT, continued.
if (Ichngd w1 w2)<:w1 = x1;w2 = x2;>
_setvideomode (vmode); If (sc == 0)
<:yscale = (16.0*ys)/t2;xscale = (40.0*xs)/t1;_settextcolor( RED);g labs(title, x lab, y lab, x1, y2, t1, t2, 2, 0);_settextcolor(_UHITE);~g_tics(xs, ys,~4.0, 28, 16.0, 7, w1, w2, w3, w4,
xscale, yscale, xl, x2, yl, y2, tl, t2); g xyadd (&xadd, &yadd, idumyV, xl, y2, &j); J~= 1; >
else t/* DO PLOT */ setvideomode ( DEFAULTMODE);
pj)lot(title, x_lab, y_lab, x1, x2, y1, y2, t1, t2, 4, FALSE,u1, w2, w3, u4,~sc, &port, FALSE);
setvideomode ( DEFAULTMODE); >
p = itoa(choice, choice3, 10); c4 - / /.while <c4 != '?' && c4 != 'p')
<.settextcolor( RED);
switch (choice3[0])<:case '0' :
_outtext("(R)bai (S)bai (U)pper (L)ow\n"); break;
case '1' :_outtext("(R)bai <S)bai\n"); break;
case '2' : case '3' : case '4' :
c4 = 'X';_outtext(" \n"); break;
default : break;
> /* end switch choices */ settextcolor( WHITE);
If (choices [0]~== '2' \\ choice3[0] == '3' || choice3[0] " ' <. if (Ifirst)c4 = getch();
> else
c4 = getchO; switch(c4)
<.case 'R' : case f r f : case 'X' :
if <c4 == 'X')first = FALSE;
if (sc = 0)g_line(j,xadd, yadd, xscale, yscale, iduny4,
rbai, vmode, 1);
78
Source-code listing for program PLOT, continued.
else {/* DO PLOT */pit lne(rbai, idumyl, idumy4, x2, y2, 1.0, Sport); clsb; >
break; case '$' : case 's' :
if (sc == 0) g_line(j,xadd, yadd, xscale, yscale, idumy4,
sbai, vmode, 1); else
C/* DO PLOT */pit lne(sbai, idumyl, idumy4, x2, y2, 1.0, Sport); clsb; >
break; case 'U' : case 'u' :
if (sc ~ 0) g_line(j,xadd, yadd, xscale, yscale, idumy4,
up, vmode, 1); else
{/* DO PLOT */pit lne(up, idumyl, idumy4, x2, y2, 1.0, Sport); clsb; >
break; case 'L' : case 'I' :
if (sc == 0) g_line(j, xadd, yadd, xscale, yscale, idum/4,
low, vmode,1); else
{/* DO PLOT */pit lne(low, idumyl, idumy4, x2, y2, 1.0, &port); clsb; >
break;/* DO PLOT */
case 'C' : case 'c' :
choices[0] = '0'; c4 = '0'; _outtext(mess5); gets(rsname);if ((rs = setupinf(rsname, "r")) != (FILE *)NULL)
{all_ok = TRUE; choice = READS; chngd x1 x2 = TRUE; chngd~y1~y2 = TRUE; chngd~w1~w2 = TRUE; Chngd~w3~w4 = TRUE; read_crn(rs, rings, rbai, sbai, up, low, index,
nindex, &idum/4, &idumy1, &idum/2, &dduny1, cdumyl, &all_ok, &ddumy2>;
fclose(rs); if (all ok)
{if (sc == 0) g_xyadd (&xadd, &yadd, idum/1, x1, y2, &j);
79
Source-code listing for program PLOT, continued.
else
puts(»\a»); _outtext(mess8) ; gets(temp);
else{putsC'\a»);gets(temp);>
break; case 'I' : case '}' :
choices [0] = 'V;_outtext(mess6a);_outtext( tenp_i nd) ;_outtext(mess6b);get s( rsname);if <rsname[0] == '\0')strcpy( rsname, temp_ind);
elsestrcpyCtemp ind, rsname);
if ((rs = setupinf( rsname, "r")) != (FILE *)NULL)<:choice = READ I; chngd x1 x2 = TRUE; chngd~y1~y2 = TRUE; chngd~w1~w2 = TRUE; chngd~w3~w4 = TRUE;read_ind?rs, op, rbai, sbai, index, nindex, &iduny4,
&idumy1, &idumy2, &ddumy1, cdum/1, &ddumy2, &iduny3, &ddumy3, &all_ok, cduny2);
fclose(rs); ~ if (all ok){if (sc == 0) g xyadd (&xadd, &yadd, idunyl, x1, y2, &j);
> else
{puts(»\a»);_outtext (mess8);gets(tenf));
else {puts(»\a»); gets(tenp); >
break; case 'T' : case 't' :
_outtext(mess7); gets( rsname);if ((rs = setipinf( rsname, »r")) != (FILE *)NULL)
<choice = REAOT; chngd x1 x2 = TRUE; chngd~yl"y2 = TRUE;
!wCw2 = TRUE; lwSj* = TRUE;
read_tek?rs, rbai, &idumy4, & idunyl, &idumy2,&ddumy1, cdumyl);
fclose(rs);
80
Source-code listing for program PLOT, continued.
if (sc == 0)g xyadd (&xadd, &yadd, idunyl, x1, y2, &j);
> else
{puts(»\a»);gets(temp);>
if (sc == 0)g_line(j,xadd, yadd, xscale, yscale, idumy4,
rbai, vmode, 1); else
<:/* DO PLOT */pit lne(rbai t idumyl, idumy4, x2, y2, 1.0, &port); clsb; >
break; case '0' : case 'o' :
_outtext(mess9>; gets(rsname);if ((rs = setupinf(rsname. "r"» != (FILE *)NULL)
{choice = READD; chngd_x1 x2 = TRUE; chngd_y1~y2 = TRUE; chngd_w1~w2 = TRUE; chngd_w32«4 = TRUE; read_oth(rs, rbai, &idum/4, & idunyl, &idum/2,
&ddum/1, cdum/1, &all_ok); fclose(rs); if (sc == 0) g_xyadd (&xadd, &yadd, idum/1, x1, y2, &j);
> else
<:puts(«\a«);gets(temp);>
if (sc == 0)g_line( j,xadd, yadd, xscale, yscale, iduny4,
rbai, vmode, 1); else
{/* DO PLOT */plt_lne(rbai, idum/1, idum/4, x2, y2, 1.0, Sport);
gets(terap); break;
case 'P' : case 'p' :
plot_stp(x2, y2, &port); break;
default : break;
> /* end switch choice4 */_outtext("\nFiles[(C)hron (I)nd (T)ek (O)ther] (P)rev menu "); > /* end while */
>break;
case 21 : /* ring-widths */ Cdone = FALSE; while (! Cdone)
_setvideomode( tmode) ;sc = menu(crow, ccol, mnuDevice);
81
Source-code listing for program PLOT, continued.
if (sc == 3){Cdone = TRUE;break;>
all ok = TRUE; if ^choice == READ I)
{q4 = 0;for (i=1; i<=idumy4; i
if (up[i] > q4) q4 =
strcpy(y lab, "WIDTH (mm)"); Idone = ?ALSE; if ("chngd y1 y2)
q4 = 0;for (i=1; i<=idumy4;
if (up[il > q4)q4 = upti];
>y_tics(&t2, q4*10, &y2);
y1 = y min; >
if (! chngd w3 w4) {w3 = y1; w4 = y2; >
if (!chngd_x1_x2)x tics(&t1, &x1, &x2, i dun/4, idunr/1);
if ?! chngd w1 w2) <.w1 = x1; u2 = x2; >
if (sc == 0) {setvideomode (vmode);
yscale = (16.0*ys)/t2; xscale = (40.0*xs)/t1;g_labs(title, x_lab, y_lab, x1, y2, t1, t2, 2, 0); g_tics(xs, ys, 4.0, 28, 16.0, 7, w1, w2, w3, w4,
xscale, yscale, x1, x2, y1, y2, t1, t2); g xyadd (&xadd, &yadd, idumyl, x1, y2, &j); >~
else <I* DO PLOT */ _setvideomode (_DEFAULTMODE); p_plot(title, x~lab, y lab, x1, x2, y1, y2, t1, t2, 4,
FALSE, wT, w2, w3, w4, sc. Sport, FALSE); out text (mess3);
>while (! Idone)
{if (all ok) if (sc == 0)
{g_xyadd (&xadd, &yadd, idumyl, x1, y2, &j); g~line(j,xadd, yadd, xscale, yscale, idunr/4,
up, vmode, 10);
82
Source-code listing for program PLOT, continued.
else {/* DO PLOT */ plt_lne(up, idumyl, idumyt, x2, y2, 10.0, &port);
_outtext("\nFiles[(I)ncn (P)rev menu\n"); c = getchO; switch (c)
{case 'P' : case 'p' :
plot_stp(x2, y2, Sport); I done = TRUE; break;
case 'I' : case 'i' :
_outtext(mess6a);_outtext(temp_ind);_outtext (mess6b) ;gets(rsname);if <rsname[0] == '\0')
strcpy(rsname, temp_ind); else
strcpy(temp_ind, rsname); if ((rs = setupinf( rsname, "r"» != (FILE *)NULL)
<:choice = READ I;chngd_x1_x2 = TRUE;chngd_y1_y2 = TRUE;chngd_w1_w2 = TRUE;chngd_w3_w4 = TRUE;read_ind(rs, up, rbai, sbai, index, n index, &idumy4,
&idum/1, &idumy2, &ddumy1, cdum/1, &ddumy2, &idumy3, &ddumy3, &all_ok, cdumy2);
fclose(rs);if (all_ok)
else {puts(»\a»); _outtext (messS); get s( temp); >
> /* end good file */ else
<.puts(»\a»); gets(temp); >
break; default :
break; >
> /* end whi le */ > /* end if READI */
else <._setvideomode (_DEFAULTMODE);_outtext("\nOnly Individual (.IND) files contain r ing- widths. \n") ; gets (temp); Cdone = TRUE; >
strcpy(y_lab, "BAI"); chngd_x1_x2 = FALSE; chngd_y1_y2 = FALSE;
83
Source-code listing for program PLOT, continued
chngd w1 w2 = FALSE;chngd~w3~w4 = FALSE;>
break;case 22 : /* indices */
Cdone = FALSE; while (ICdooe)
_setvideomode(tmode);Tndtyp = 0;indtyp = menu(crou, ccol, mnulndtyp);
if (indtyp == 2) {Cdone = TRUE; break; >
sc = menu(crow, ccol, mnuDevice); cls();if (sc == 3)
{Cdone = TRUE; break; >
if (choice != READT) {if (choice == READD || choice == KYBD)
for (i=0; i<=idumy4; i++)index [i] = rbai[ij;
strcpy(y lab, "INDEX"); if (! chngd u3 w4)
w3 = y1; ifd'ndtyp = 0)
w4 = 2; else
u4 = 4; >
if (!chngd_x1_x2)x tics(&t1, &x1, &x2, idum/4, idum/1);
if 7 ! chngd u1 w2)<:w1 = x1; w2 = x2; >
if (sc == 0) {_set vi deomcxte( vmode) ; ifd'ndtyp = 0)
yscale = 56*ys; elseyscale = 18.66*ys;
xscale = (40.0*xs)/t1; ifd'ndtyp == 0)
g_labs(title, x_lab,y_lab, x1, 2, t1, 1, 7, 0);g_tics(xs, ys, 5.6, 20, 55.75, 0, u1, w2, w3, w4,
xscale, yscale, x1, x2, y1, 2, t1, 1);>
else g_labs(title, x_lab,y lab, x1, 2, t1, 1, 7, 1);g_tics(xs, ys, T.866,~60, 18.66, 6, w1, w2, w3, w4,
xscale, yscale, x1, x2, y1, 4, t1, 1);>
g_xyadd (&xadd, &yadd, idumyl, x1, 2, &j); _setlinestyle(style[12] );
84
Source-code listing for program PLOT, continued.
ifd'ndtyp == 0)moveto(0, (int)(55.5*ys»; ~lineto«int)(312*xs) f (int)(55.5*ys»; >
else {moveto(0, (int)(37.32*ys»; ~lineto((int)(312*xs), (int)(37.32*ys»; moveto(0, (int)(74.64*ys»; Jineto((int)(312*xs), (int)(74.64*ys»; >
_setlinestyle(style[15] ); >
else {/* DO PLOT */ ifd'ndtyp == 0) p_plot(title, x_lab, y_lab, x1, x2, y1, 2, t1, 1, 10,
TRUE, wl7 w2, w3, w4, sc, Sport, indtyp); else
p_plot(title, x_lab, y_lab, x1, x2, -3, 3, t1, 1, 10,TRUE, wC w2, -3, 3, sc, &port, indtyp);
>I done = FALSE; all_ok = TRUE; while (Hdone)
<if (all_ok)
< if(indtyp == 0)yadd = 2;
elseyadd = 4;
if (sc == 0) {if (indtyp == 0)
{g_xyadd (&xadd, &yadd, idum/1, x1, 2, &j); g_line(j, xadd, yadd, xscale, yscale, iduin/4,
index, vmode, 1); >
else g_xyadd (&xadd, &yadd, idum/1, x1, 3, &j); g_line(j, xadd, yadd, xscale, yscale, idumy4,
n index, vmode, 1);
else {/* DO PLOT */ if(indtyp == 0) pit lne( index, idumyl, idumy4, x2, 2,
1.0, &port); else
pit lne(nindex, idumyl, idumy4, x2, 3, 1.0, &port);
_outtext("\nFiles[(C)hron (I)nd (O)ther] (P)rev menu\n">;c = getchO;if (c == 'P' || c == 'p')
<plot stp(x2, y2, &port);Idone = TRUE;break;
85
Source-code listing for program PLOT, continued.
else
if (c = 'c' Me == 'C')
_puttext(mess5);gets(rsname);all ok = TRUE;if T(rs = setupinf(rsname, "r"» != (FILE *)NULL)
<choice = READS;chngd x1 x2 = TRUE;chngd~Hl~H2 = TRUE;chngcfw3j<4 = TRUE;read_crn(rs, rings, rbai, sbai, up, low, index, n index,
&idumy4, &idumy1, &idunry2, &ddumy1, cdumyl, &all_ok, &ddumy2);
fcloseCrs);if (all ok)
else {puts("\a">; _outtext (messS); gets(temp);
else <puts("\a»); gets(temp);
else<:if (c == 'I' || c == 'i')
<_outtext(mess6a); _out text < temp_i nd) ; _out text (messob) ; gets(rsname); all ok = TRUE; if TrsnameEO] == '\0')strcpy(rsname, temp_ind);
else ~strcpy(temp ind, rsname);
if «rs = setupinf( rsname, "r"» != (FILE *)NULL)<choice = READ I;chngd_x1_x2 = TRUE;chngdlw1~w2 = TRUE;chngdlw3_w4 = TRUE;read_ind(rs, up, rbai, sbai, index, nindex, &idum/4,
&idumy1, &idum/2, &ddumy1, cdumyl, &ddum/2, &idum/3, &ddumy3, &all_ok, cdumy2);
fclose(rs);if (all_ok)
else {puts("\a">; _outtext (messS); gets(temp);
86
Source-code listing for program PLOT, continued.
else{puts(»\a»);gets (temp);>
> /* end of if i */ else
{ if (c == '0' || c == 'o'>
{_outtext(mess9);gets(rsname);all_ok = TRUE;if «rs = setupinf(rsname, "r")) != (FILE *)NULL)
<.choice = READT;read_oth(rs, index, &idumy4, &idumy1, &idumy2,
&ddumy1, cdumyl, &all_ok);fclose(rs);if (all_ok)
<.y
else {putsO'Xa11 ); _outtext (messS); gets (temp);
else <.puts(»\a»); gets (temp);
> /* end check i */ > /* end check input */
> /* end idone */ >
else {puts("\a»);_outtext ("\nCannot be TEKTRONICS file.\n»); gets(temp); >
strcpy(y_lab, "BAI"); >
chngd_x1_x2 = FALSE; chngd_y1_y2 = FALSE; chngd_w1_w2 = FALSE; chngd_w3_w4 = FALSE; break;
>> /* end ddone */
break;case 3 : /* Listing routines */
Lmdone = FALSE; while (! Lmdone)
Imnu = menu (crow, ccol, mnuLmain); Imnu = lmnu+30; switch(lmnu)
{ case 33 :
Lmdone = TRUE; break;
87
Source-code listing for program PLOT, continued.
case 30 : /* LDATAS */ Ldone = FALSE; while (! Ldone)
Ipt = menu(crow, ccol, mnuLdata); if (Ipt == 2)
{Ldone = TRUE;break;
if (Ipt == 0) Cif (choice == READS)
list_crn(first_yr, years, rings, rbai, sbai, up, low, index, n index, title);
else {if (choice == READ I)
list_ind(first_yr, years, up, rbai, sbai, index,nindex, title, core);
else {if (choice > READI && choice < DIRL)
list tek(rbai, years, first_yr, title);
else{if (choice == READS) prnt_crn(f irst_yr, years, rings, rbai, sbai,
up, low, index, nindex, title); else
{if (choice == READI) prnt_ind(first_yr, years, up, rbai, sbai, index,
nindex, title); else
{if (choice > READI && choice < DIRL) prnt_tek(rbai, years, first_yr, title);
break;case 31 : /* LSTAT */
Ldone = FALSE; while (! Ldone)
Ipt = menu(crow, ccol, mnuLdata); if (Ipt == 2)
<Ldone = TRUE; break; >
if (Ipt == 0)list_inf(title, x_lab, y_lab, first_yr, last_yr, y_max,
q1, q2, q3, x1, x2, y2, w1, w2, w3, w4, ms, cyr, cval, choice);
elseprnt_inf( title, x_lab, y_lab, first_yr, last_yr, y_max,
q1, q2, q3, xl, x2, y2, wl7 w2, w3, w4, ms, cyr, cval, choice);
88
Source-code listing for program PLOT, continued.
gets (temp);>
break; case 32 :
Ldone = FALSE; while (! Ldone)
C
Ipt = menu(crow, ccol, mnuLdata); if (Ipt == 2)
CLdone = TRUE;break;>
if (Ipt < 2)C
dirnamtO] = '\0';printf ("\n\nEnter file name (including full path): ");gets(temp dir);if (Ipt == 0)
Cstrcpy(dirnam, "type ");street (dirnam, temp_dir);street (dirnam, " | more");>
else strcpy(dirnam, "print ");street (dirnam, temp dir);
i = system(dirnam);cntnueO;gets (temp dir);
break; > /* end switch Imnu */
> /* end while Undone */ break;
case 4 : /* SKEYF */ if (choice == 4)
<all_ok = TRUE; _outtext(mess9); gets(rsname);if ((rs = setupout(rsname, "w")) != (FILE *)NULL)
fprintf(rs, "Xs\n\n", title) ; writef(rs, rbai, years+1, first_yr, last^yr); fclose(rs); if (all ok) <puts("\a"); _clearscreen(0); _outtext (messlO); _outtext (mess3); Mdone = TRUE; >
else puts("\a"); _outtext (messS);_outtext (" File may be wrong type."); out text (mess3);
89
Source-code listing for program PLOT, continued.
else
puts(»\a»); _outtext (mess3);
else t_outtext( "\nOnly Keyboard entries can be saved. 11 ); >
gets(temp); break;
case 5 : /* MAIN */ Pdone = TRUE; break;
default : break;
>_setvideomode (tmode); >
/* end pmenu */ > /* end main for */
/* Put menu on screen.Starting <row> and <column>.Array of menu <items> strings.Global structure variable <menus> determines:
Colors of border, normal items, and selected item. Centered or left justfied. Border characters.
Returns number of item selected. */
int menu (row, col, items) int row, col; char *i terns []; t
int i, nun, max = 2, prev, curr = 0, choice, c, d;int I item [25];long bcolor;
cursor (TCURSOROFF); bcolor = _getbkcolor();
/* Count items, find longest, and put length of each in array */
for (nun = 0; i terns [num]; nunH-+) tI item [num] = strlen< items [num] );max = (t item [num] > max) ? I item [num] : max;
> max += 2;
if (menus. centered) { row -= num / 2; col -= max / 2;
/* Draw menu box */
_settextcolor(menus. fgBorder ); _setbkco lor ( menus . bgBorder ); box ( row++ , co I ++ , num, max ) ;
/* Put items in menu */
for (i = 0; i < num; +-M") { if (i == curr) t
_settextcolor(menus.fgSelect); ~setbkcolor(menus.bg Select);
90
Source-code listing for program PLOT, continued.
> else {_settextcolor(menus. f gNormal ); setbkcolor(menus.bgNormal);
itemize(row+i,col,items[i],max - li
/* Get selection */
for (;;) {switch (c = ((_bios_keybrd( KEYBRD_READ) & OxffOO) » 8»
{ case UP:
prev = curr;curr = (curr > 0) ? (--curr % num) : num-1; break;
case DOWN :prev = curr;curr = (curr < num) ? (++curr % num) : 0; break;
case ENTER :_setbkcolor(bcolor); return(curr);
default :if (c > 0 && c < 12)
Cc = c-2; if (c < num) return (c);
>continue;
>_settextcolor(menus.fgSelect); _setbkco I or (menus . bgSe I ect ) ;itemize(row+curr,col,items[curr],max - I item [curr]), _settextcolor(menus.fgNormal); _setbkcolor(menus.bgNormal ); itemize(row+prev, col, items [prev], max - I item [prev] );
/* Draw menu box.<row> and <col> are upper left of box. <hi> and <wid> are height and width. */
void box(row, col, hi, wid) int row, col, hi, wid; C
int i;char temp[80];
_settextposition(row,col);temp[0] = *menus.nw;memset(temp* 1,"menus.ew,wid);temp[wid+1] = *menus.ne;temp[wid+2] = NULL;_outtext(temp);for (i = 1; i <= hi; ++i) {
_settextposition(row+i,col);_outtext(menus.ns);_settextposition(row+i,col+wicH-1);_outtext(menus.ns);
>_settextposition(row+hi+1,col); temp[0] = *menus.sw; memset(temp* 1,*menus.ew,wid); temp[wid+1] = *menus.se; temp[wid+2] = NULL;
91
Source-code listing for program PLOT, continued.
_outtext(temp);
/* Put an item in menu.<row> and <col> are left position.<str> is the string item.<len> is the number of blanks to fill. */
void itemize(row,col,str,len) int row, col, I en; char str[];<:
char temp[80],
_settextposition(row,col); _outtext(" "); _outtext(str); memset(temp,' ',len-->; temp[Ien] = NULL; _outtext(temp);
/* Change the cursor shape.<value> has starting line in upper byte, ending line in lower byte.
Returns the previous cursor value. */
unsigned cursor(value) unsigned value;<:
union REGS inregs, outregs; int ret;
inregs.h.ah = 3; /* Get old cursor */inregs.h.bh = 0;int86(0x10,&inregs,Soutregs);ret = outregs.x.ex;
inregs.h.ah =1; /* Set new cursor */ inregs.x.ex = value; int86(0x10,&inregs,&outregs);
return(ret);
/********************************************************************//* File name : CHNG_ALL.C */ /***************************************** ***************************/
^include <stdio.h>
#define TRUE 1#define FALSE 0
chng_t(title)
char title[];<:int done = FALSE; char temp[81l;
printf("This is the current title:\n %s\n", title); while (Idone)
Cprintf ("\nEnter the new title: \n");gets (temp);if (temp[0] != '\0')
strcpy(title, temp);
92
Source -code listing for program PLOT, continued,
printfC'This is the new Title: \n %s\n", title); printf("\n\n Is this correct (Y/N)? "); gets (temp);if (tempEO] == 'Y' || temp[0] == 'y' | | temp[0] == '\0')
done = TRUE;
chng_x(x_lab)
char x lab[];<int done = FALSE;char temp[41];
puts ("\n\nTh is is the current X label: "); puts(x lab); while Tldone)
<puts ("\nEnter new X label: ");gets (temp);if (temp[0] != '\0')
strcpyCx lab, temp);puts("This~is the new X label: ");puts(x lab);puts("\n\n Is this correct (Y/N)? ");gets(temp);if (tempEO] == 'Y' || temp[0] == 'y');
done = TRUE;
chng_y(y_lab)
char y_lab[] ;<int done = FALSE;char temp[41];
puts ("\n\nTh is is the current Y label: ");puts(y_lab);while Tldone)
<puts( H\nEnter new Y label: ");gets (temp);if (tempEO] != '\0')
strcpy(y lab, temp);puts("This is the new Y label: ");puts(y_lab);puts("\n\n Is this correct (Y/N)? ");gets (temp);if (tempEO] == 'Y' || temp[0] == 'y'); done = TRUE;
chng_x_vals(x1, x2,
int *x1, *x2, *t1;
int done = FALSE; char temp[5] ; char tempx[5]; char tempt [71;
93
Source-code listing for program PLOT, continued.
puts < "Current X axis info:\n");printf ("First year: %4d Last year: %4d Years/Major interval: %3d\n\n",
*x1, *x2, *t1);puts(" You will only be allowed to specify the first year"); puts<" and the years per Major interval.W); while (idone)
printf ("First year: ");gets(tempx);printf ("Interval (yrs): ");gets (tempt);if (tempxCO] != '\0')*x1 = atoi(tempx);
if (temptCO] != '\0')*t1 = atoi (tempt);
*x2 = *x1 + (*t1 * 7); puts ("\nThe new values are:\n"); printf ("First year: %4d Last year: %4d Years/Major interval: %3d\n\n",
*x1 *x2 *t1)*puts("\n 'is this correct (Y/N)? »); gets (temp); if (temptO] != 'N' && temp[0] != 'n')
done = TRUE;
chng_x_win(w1, w2, x1, x2)
int *w1, *w2, *x1, *x2;
int done = FALSE; char temp[5]; char tempx[5]; char tempt [71;
putsC'Current X window info:\n");printf ("First year: %d Last year: %d\n\n",
*w1, *w2); while (Idone)
printf ("First year: ");gets(tempx);printf ("Last year : ");gets (tempt);if (tempx[0] != '\0')*w1 = atoi(tempx);
if (*w1 < *x1)*w1 = *x1;
if (tempt [0] != '\0')*w2 = atoi (tempt );
if (*w2 > *x2)*w2 = *x2;
puts ("\nThe new values are:\n"); printf ("First year: %d Last year: %d\n\n",
*w1 *w2);printf("\n Is this correct (Y/N)? »); gets (temp); if (temp[0] != 'N' && te»rp[0] != 'n')done = TRUE;
chng_y_vals(y1, y2, t2)
int *y1, *y2, *t2;
94
Source-code listing for program PLOT, continued.
int done = FALSE; char temp [5]; char tempx[5]; char tempt [7];
puts ("Current Y axis info:\n">;printfC'Y minimum: %d Y maximum: %d Major interval: %d\n\n",
*y1, *y2, *t2>;puts(" You will only be allowed to specify the Y maximum value"); puts(" and the value per Major interval.\n">; while (idone)
<printf("Y minimum: ");gets(tempx);printf(»Interval : ' );gets (tempt );if (tempx[0] != '\0'>*y1 = atoi(tempx);
if (tempt [0] != '\0'>*t2 = at oi( tempt);
*y2 = *t2 * 7;puts("\nThe new values are:\n"); printf("Y minimum: %d Y maximum: %d Major interval: 56d\n\n",
*y1, *y2, *t2);printf("\n Is this correct (Y/N>? ">; gets(temp); if (temp[0] != 'N' && temp[0] != 'n')done = TRUE;
chng_y_win(w3, w4, y1, y2>
int *w3, *w4, *y1, *y2;
int done = FALSE; char temp [5]; char tempx[5]; char tempt [71;
puts ("Current Y window info:\n">;printfC'Y minimum: %d Y maximum: %d\n\n",
*w3, *w4>; while (Idone)
<printfC'Y minimum: ">;gets(tempx);printfC'Y maximum: ' );gets(tempt);if (tempx[0] != '\0'>*w3 = atoi(tempx);
if (*w3 < *yD*w3 = *y1;
if (tempt [0] != '\0'>*w4 = atoi( tempt);
if (*w4 > *y2>*w4 = *y2;
puts ("\nThe new values are:\n">; printfC'Y minimum: %d Y maximum: %d\n\n",
*w3, *w4>;printf("\n Is this correct (Y/N>? ' >; gets(temp); if (temp[01 != 'N' && temp[0] != 'n')done = TRUE;
95
Source-code listing for program PLOT, continued.
I***********-*********************************************************/I* File name : FIL ARRS.C */ /********************************************************************/
^include <stdfo.h> ^define TRUE 1 fldefine FALSE 0
fill_sarray(id, a, q2, first_yr, last_yr, years)
FILE *id;double *a, *q2;int *first_yr, *last_yr, *years;
char *cf, *fgets();double atofO;int done, first, line_len, cnt, i, j;char temp_str[10], line [801;
done = FALSE; cnt = 1; first = TRUE; while (idone)
<cf = fgets(line, 80, id);
line_len = strlen(line); if <(line_len > 4) && (ifeof(id)))
{if (first)
<substr(temp_str, line, 1, 4); *first yr =~atoi(temp_str); first = FALSE; >
j = (line_len-4)/7; for (i=1; i<=j; i
substr(temp_str, line, 5+«i-1)*7), 7); a [cnt] = atof(temp_str); if (a [cnt] > *q2 )
*q2 = a [cnt]; cnt = cnt + 1;
else
done = TRUE;"years = cnt-1;*last_yr = *first yr+*years- 1 ;
fill_tarray(id, a, q2, first_yr)
FILE *id; double *a, *q2; int *first_yr;
char *cf, *fgets();double atofO;int done, cnt, i, j, tyr;char temp_str[10], line[80];done = FALSE;cnt = 1;while (idone)
cf = fgetsdine, 80, id);
96
Source-code listing for program PLOT, continued.
substr(temp_str, line, 2, 4);tyr = atoi(temp_str);if «tyr-*first_yr >= 0) && (Ifeof(id)))
<:substr(temp_str, line, 19, 6); a[cnt] = atof(temp_str); if (a[cnt] > *q2 )
*q2 = a[cnt]; cnt = cnt + 1; >
else done = TRUE;
/********************************************************************y/* Filename : LIST_ALL.C */ /***************************»****************************************/
^include <stdio.h>
^define TRUE 1 #define FALSE 0
list_crn(fyr, years, r, a, m, u, I, ia, in, title)
int fyr,years;double *r, *a, *m, *u, *l, *ia, *in;char title [];
int i, line_cnt, rint; char temp[5f;
line_cnt = 4;printf("%s\n\n", title);printf("YEAR AREA MEAN UPPER LOWER INDEX N INDEX CORES \n");for (i=1; i<=years; i++)
<:if (line_cnt > 23)
<:printf(" (Press enter to continue.)"); gets(temp);
printf("%s\n\n", title);printf("YEAR AREA MEAN UPPER LOWER INDEX NINDEX CORES \n") ; line_cnt = 4; >
rint = r[i]; printf(»%4d %7.3f %7.3f %7.3f X7.3f %7.3f %7.3f %7d\n», fyr,
m[i], u[i], l[i], ia[i], in[i], rint); line_cnt = line_cnt+1; fyr = fyr+1; >
cntnueO; gets (temp); >
list_ind(fyr, years, a, m, u, I, in, title, core)int fyr, years;double *a, *m, *u, *l, *in;char title[], core[];
int i, line_cnt; char temp[5];
97
Source-code listing for program PLQT, continued.
line cnt = 4;printf("%s ( %s >\n\nll f title, core)|printf ("YEAR WIDTH AREA SPLINE INDEX NINDEX\n"); for (i=1; i<=years; i++)
{if (line cnt > 23)
{printf (" (Press enter to continue.)"); gets (temp);
printf("%s ( %s )\n\n" f title, core);printf ("YEAR WIDTH AREA SPLINE INDEX N INDEX \n") ; line cnt = 4; >
printf ("X4d %7.3f %7.3f %7.3f %7.3f %7.3f\n", fyr, a[i] tm[f] ( u[i] t l[i]
line_cnt = line_cnt+1; fyr = fyr+1; >
cntnueO; gets(temp);
list_tek(prtarr f j, fyr1 f title) int 7, fyrl; double prtarr[]; char titled;
int I, i, jb, je, line_cnt;int done = FALSE;char temp [5];jb= 1;je = (10 - (fyrl % 10));line_cnt = 0;
printf ("%s\n\n" f title); white (Idone)
{if (i == j+1)
done = TRUE;break;>
printf ("%4d",fyr1) ; for (i=jb; i <= je; i
if (i
done = TRUE;break;>
printf ("%7.3f» t prtarr[i] );>
printf("\n"); if (i <= 10)
fyrl = fyr! + i - 1; else
fyr! = fyr! + 10; jb = je + 1; je = je + 10; line cnt = line cnt+1; if (Tine cnt > 23)
{line_cnt = 1;cntnue( ) ;gets (temp);
printf("\n%s\n\n" f title);
98
Source-code listing for program PLOT, continued.
cntnueO; gets(temp); >list_inf(title f x_lab, y_lab, fyr f lyr f y_maxf q1, q2, q3,
x1 f x2, y2, w1 f w2 f n3 f w4 f ms f cyr f cval, choice)
char *titl*[], *xjab[] f *y_lab[];int fyr f lyr f q1,~q2, q3, xT, x2 f y2 f w1, w2, n3, n4, cyr, choice;double yjnax, ms, cval;
char temp[5];
printf("\n\n\n Xs\n»,title);printf( N X Label: Xs\n" ( x lab);printf(" Y Label: Xs\n\n"7y lab);printf( H\n ~ DATA VALUESW);printf( M First Year : X4d",fyr);printf(M Last Year : X4d\n" f lyr);printf(" Years : X4d" f (lyr-fyr)+1);printf(" Maximun Y :X7.3f\n",y_max);if (choice == 0 || choice == 1)
printf(" if (choice
printf(" else
printf("\n"); printf("\n printfC1 printf( M printf( M printf( M printf( M printf( M printf( M printf( M cntnueO;
M.S.1)
Min X axis Max X axis
X units Min Y axis Max Y axis
Y units
: %6.3f",ms);
X4d =%7.3f Cm.\n" f cyr, cval);
PLOT VALUESNn");DEFAULT CURRENT\n");
AXIS/WIND AXIS DATA WINDOU\n");%4d X4d %4d\n",q1, x1, i%4d X4d %4d\n»,q2, x2, iX4d %4d\n" f (q2-q1)/7, (x2-x1)/7);
0 0 %4d\n", u3);%4d %4d %4d\n",q3, y2, iX4d X4d\n",q3/7f y2/7);
^***************** a**************************************************//* File name : PLTJJTL.C " */ /************* ***************** ******************************** *******^
^include <stdio.h>#define TRUE 1#define FALSE 0
cls() <.printf("\033[2J"); f flush (stdout) ;
cntnueO<.char temp[2];
printf(" (Press enter to continue.)");
index(s, t)char s[] f t[];<.int i f j, k;
99
Source-code listing for program PLOT, continued
for(i=0; s[i] != '\0'; i<for(j=i, k=0; t[k] !='\0' && s[j]==t[k]; j++,if <t[k] == '\0') return(i);>
return(-1);
y_tics(t2, q2, y2>
int *t2, *y2; double q2;
*t2 =*y2 = *t2 * 7;
x_tics(t1, x1, x2, years, fyr)
int *t1, *x1, *x2; int years, fyr;
int diff, fdec; double t1_temp;
t1_temp = (double) (years )/30.0; if (t1_temp < 1.0)
C*t1 = 5; >
else C*t1 = ((int)(t1 temp)+1)*5; >
diff = (*t1*7) - years;*x1 = (fyr-(diff/2));*x2 = *x1+(*t1*7);
subs tr(subst ring, string, start, length)char * substring;char *string;int start;int length;Cint i;start--;string += start;for (i=0; i < length && *string != '\n' && *string != '\0';
*substring++ = *string++; *substring = '\0';
y*«*«*«*****«***********************************************»********//* File name : PRINT_ALL.C */ /***«*«*****«***************»*******«******»**«*«*«»******«**********/
#include <stdio.h>
^define TRUE 1 ^define FALSE 0
prnt_crn(fyr, years, r, a, m, u, I, ia, in, title)
100
Source-code listing for program PLOT, continued.
int fyr,years;double *r, *a, *m, *u, *l, *ia, *in;char titled;
int i, line_cnt, rint; char tempCSj;
line cnt = 6;fprintf(stdprn, "\n\n Xs\n\n", title);fprintf(stdprn, " YEAR AREA MEAN UPPER LOWER INDEX NINDEX CORESXn11 ); for (i=1; i<=years; i++)
<if (line cnt > 56)
<fprintf(stdprn, "\f\n\n Xs\n\n", title);fprintf(stdprn, " YEAR AREA MEAN UPPER LOWER INDEX NINDEX CORES\n»); line cnt = 6; }
rint = r[i]; fprintf(stdprn, » %4d %7.3f %7.3f %7.3f %7.3f %7.3f %7.3f %7d\n",
fyr, a[i], m[i], u[i], l[i], ia[i], in[i], rint); line_cnt = line_cnt+1; fyr = fyr+1; }
fprintf(stdprn, "\f"); cntnueO; >
prnt_ind(fyr, years, a, m, u, I, in, title, core)
int fyr,years;double *a, *m, *u, *l, *in;char titled, core[];
int i, line_cnt; char temp[5];
line cnt = 6;fprintf(stdprn, "\n\n Xs ( %s )\n\n", title, core);fprintf(stdprn, " YEAR WIDTH AREA SPLINE INDEX NINDEX\n\n"); for (i=1; i<=years; i++)
<if (line cnt > 56)
<fprintf(stdprn, "\f\n\n Xs ( %s )\n\n", title, core); fprintf(stdprn, " YEAR WIDTH AREA SPLINE INDEX NINDEX\n"); line cnt = 6; >
fprintf(stdprn, " %4d %7.3f %7.3f %7.3f %7.3f %7.3f\n", fyr, aCi],m[i], u[i]
line_cnt = line_cnt+1; fyr = fyr+1; >
fprintf(stdprn, "\f"); cntnueO; }
prnt_tek(prtarr, j, fyrl, title) int T, fyrl; double prtarrH; char titleQ;
<int I, i, jb, je, line cnt; int done = FALSE;
101
Source -code listing for program PLOT, continued.
char temp [53;jb = 1;je = (10 - (fyrl X 10));line cnt = 6;fprintf(stdprn, "\n\n Xs\n\n", title);while (idone)
if (f =Cdone = TRUE;break;>
fprintf(stdprn, M %4d",fyr1); for (i=jb; i <= je; 1++)
{if (i == j+i)
<done = TRUE;break;>
fprintf(stdprn, "%7.3f",prtarr[i]);>
fprintf(stdprn, "\n"); if (i <= 10)
fyrl = fyrl + i - 1; else
fyrl = fyrl + 10; jb = je + 1; je = je + 10; line cnt = line cnt+1; if (Tine cnt > 56)
iline cnt = 6;fprintf(stdprn, "\f\n\n Xs\n\n", title);
fprintf(stdprn, cntnueO;
prnt_inf (title, x_lab, y_lab, fyr, lyr, y_max, q1, q2, q3, xl, x2, y2, w1, w2, w3, w4, ms, cyr, cval, choice)
char *title[], *x_lab[], *y_lab[];int fyr, lyr, ql, q2, q3, x1, x2, y2, wl, u2, w3, w4, cyr, choice;double yjnax, ms, cval;
char temp[5];
fprintf(stdprn, "\n\n\n Xs\n", title);fprintf(stdprn, "X Label: Xs\n",x lab);fprintf(stdprn, "Y Label: Xs\n\n"7y lab);fprintf(stdprn, "\n ~ DATA VALUES\n");fprintf(stdprn, "First Year : %4d",fyr);fprintf(stdprn, " Last Year : %4d\n",lyr);fprintf(stdprn, "Years : %4d",(lyr-fyr)+1);fprintf(stdprn, " Maximum Y :%7.3f\n",y_max);if (choice == 0 || choice ==1)fprintf(stdprn, "M.S. :%7.3f",ms);
if (choice ==1)fprintf(stdprn, " %4d =%7.3f Cm.\n",cyr, cval);
elsefprintf(stdprn, "\n");
fprintf(stdprn, "\n PLOT VALUES\n"); fprintf(stdprn, " DEFAULT CURRENT\n"); fprintf(stdprn, " AXIS/WIND AXIS DATA WINDOWW');
102
Source-code listing for program PLOT, continued.
fprintf(stdprn, "Min X axisfprintf(stdprn, "Max X axisfprintf(stdprn, " X unitsfprintf(stdprn, "Min Y axisfprintf(stdprn, "Max Y axisfprintf(stdprn, " Y unitsfprintf(stdprn, "Nf"); cntnueO;
%4d %4d %4d\n",q1, x1, w1);%4d %4d %4d\n",q2, x2, w2>;%4d %4d\n",<q2-q1)/7, <x2-x1)/7);
0 0 %4d\n", w3);%4d %4d %4d\n",q3, y2 f w4);%4d %4d\n»,q3/7, y2/7);
^«****««*«*«*«*«««*«*«*«***«*«*«*«*«««**««********««*****************//* File name : P_PLOT.C */ /«****««*************** »*********************************************/
^include <conio.h> ^include <string.h> ^include <stdio.h> ^include <dos.h> ^include <bios.h>
^define XON 0x11 ^define XOFF 0x13 fldefine TRUE 1 fldefine FALSE 0
pjalot(title, x_lab, y_lab, x1, x2, y1, y2, t1, t2, t3, idx, w1, w2, w3, w4, choice, port, indtyp)
char title[] f x_lab[], y_lab[];int x1, x2, y1, y2, t1, it2, t3, idx, choice;int w1, w2, w3, w4, indtyp;int *port;<unsigned incr;char plot_string[500], y_lab1[17];int i, j f~p1, p2, p3, p4jdouble x3, x4, y3, y4;
strcpy(y Iab1, "NORMALIZED INDEX"); bios serialconK COM INIT, 0, ( COM CHR8 | COM STOP1 | COM EVENPARITY |
~COM~9600»;plot_str("\xlB.I81;;T7:\x1B.N;19: 11 , port); if (choice ==1)
{sprintf(plot_string, "IN;PS4;IP1200,1200,9500.6750;SC%df %d,%df %d" f
x1, x2, y1, y2);plot str(plot_string, port);p1 =~<1200+((8300/<x2-x1))*(w1-x1))) f-p2 = (9500-((8300/<x2-x1))*(x2-w2)));p3 = (1200+«5550/(y2-y1))*(w3-y1)));p4 = <6750-«5550/<y2-y1))*<y2-w4))>;>
else<:sprintf(plot_string, "IN;PSO;IP2560,1260,14300,6750;SC%d,%ct%df %d",
x1, x2, y1, y2); plot str(plot string, port); p1 =~(2560+«Tl740/(x2-x1))*(w1-x1))); p2 = <14300-«11740/<x2-x1))*(x2-w2))); p3 = <1260+((7890/(y2-y1))*(w3-y1))); p4 = <6750-«7890/(y2-y1))*(y2-w4))); >
sprintf(plot_string, "PU;SP1;PA %d,%d;SI .3,.5;CP%d,1.0;LB%s\3» f (x2+x1)/2, y2, -<strlen(title)/2), title);
plot_str(plot_string, port); if (Tndtyp ==~0)
sprintf(plot string, "PU;PA%d,%d;SI.3 f .5;DIO,1;CP%d,2.0;LB%s\3", x1, <y2-y1)/2, -<strlen(y_lab)/2)+1, y_lab);
103
Source-code listing for program PLOT, continued.
else
sprintfCplot string, "PU;PA%d,0;SI.3,.5;DlO,1;CP%d,2.0;LB%s\3»,x1, -<strlen(y_lab1)/2)+1, y_lab1);
plot str(plot string, port); sprintfCplot string, »PU;DI1,0;PA%d,%d;SI.3,.5;CP%d,-1.5;LB%s\3",
Cx2+x1)/2, y1, -<strlen(xJab)/2), x_lab); plot str(plot string, port); sprintfCplot string, »PU;SP2;PA%d,%d;PD;PA%d,%d,%d,%d,%d,%d,%d,%d",
x1, y1, x1, y2, x2, y2, x2, y1, x1, y1); plot str(plot string, port); sprintf(plot_string, "PU;SI.2,.3;TL1.5,0"); plot_str(plot_string, port);
/* LOWER X TICS AND AXIS LABEL */x3 = x1;x4 = (doii>le)(t1)/5;for (i=x1; i<=x2; i+=t1)
{sprintf(plot_string, "PU;TLO,1.5;PA%d,%d;CP-2.0,-1.0;LBX4d\3",i, y1, i);plot str(plot string, port);if (T<x2 && i>x1)
<:sprintf(plot_string, »PU;TL1.5,0;PA%d,%d;XT», i, y1); plot str(plot string, port); >
for»(j=1; j<=5; j
if (x3<=i+t1 && x3>i && x3<x2)Csprintf(plot_string, »PU;TL.75,0;PA%6.2f,%d;XT",x3,plot str(plot string, port);>
x3 = x3+x4;
/* RIGHT Y TICS */V3 = yl;if (idx && indtyp == 0)y4 = 0.1;
elsey4 = (doible)(t2)/(double)(t3);
for (i=y1; i<=y2; i+=t2)
if ((i>y1 && i<y2) && !idx)<:sprintf(plot_string, "PU;TLO,1.25;PA%d,%d;YT",x2, i); plot str(plot string, port);
for (j=1; j<=t3; j<:if ((y3>i && y3<i+t2) && y3<y2)
<:sprintf(plot_string, "PU;TLO,.5;PA%d,%6.2f;YT;",x2, y3); plot str(plot string, port); >
y3 = y3+y4;
/* LEFT TICS AND LABELS */
y3 = yl;for (i=y1; i<=y2; i+=t2)
if (i > 9)sprintf(plot_string, »PU;TL1.5,0;PA%d,%d;CP-3.0,-.2;LB%2d\3",
x1, i, i);
104
Source -code listing for program PLOT, continued.
elsesprintf(plot_string, "PU;TL1.5,0;PA%d,%d;CP-2.0,-.2;LB%1d\3",
x1, i, i);plot_str(plot_string, port); if ((i>y1 && i<y2) && !idx)
<.sprintf(plot_string, "PU;TU.25,0;PA%d,%d;YT",x1, i);plot_str(plot_string, port);
for (j=1; j<=t3; <. if ((y3>i && y3<i+t2) && y3<y2)
< sprintf(plot_string, "PU;TL.5,0;PA%d,%6.2f;YT",x1, y3);
plot str(pTot_string, port);>
y3 = y3+y4;
/* UPPER X TICS */
x3 = xl;for (i=x1; i<=x2; i+=t1)
<if (i<x2 && i>x1)
<sprintf(plot_string, "PU;TLO,1.5;PA%d,%d;XT",i,y2); plot str(plot_string, port);
for (j=0; j<=4; <if (x3<i+t1 && x3>i && x3<x2)
<sprintf(plot_string, »PU;TLO,.75;PA%6.2f,%d;XT",x3; y2); plot str(plot_string, port); >
x3 = x3+x4; >
>if (idx)
<sprintf(plot_string, "PU;LT3,4;SP3;PA%d,1.0;PD;PA%d,1.0;PU;LT;SPO",x1, x2); plot_str(plot string, port); >
if (indtyp == 1) <sprintf(plot_string, »PU;LT3,4;SP3;PA%d,-1.0;PD;PA%d,-1.0;PU;LT;SPO»,x1, x2); plot str(plot string, port); >
sprintf(plot_string, »IW%d,%d,%d,%d;PU;SPO;PA%d,%d'',p1, p3, p2, p4, x2, y2); plot str(plot string, port); >plot_str(plot_string, port) int *port; char *plot string; <unsigned far *com_base; char outchar; int out_element;
if (*port == 0)com_base = (unsigned far *) 0x000004 OOL;
elsecom_base = (unsigned far *) 0x000004021;
for (out element = 0; out element < strlen(plot string); -n-out element)
5if ((unsigned char) inp(*com base + 5) & 0x01)
if ((unsigned char)inp(*com~base) == XOFF)
105
Source -code listing for program PLOT, continued.
while ((unsigned char)inp<*com_base) != XON); while (((unsigned char)inp(*com_base + 5) & 0x20) == NULL); outp(*com base, plot string [exit element]); >
strcpy(plot string, "");
plt_lne(arr, inc, years, x2, y2, scale, port)
double arr[], scale; int inc, years, x2, y2; int *port;
int pc, i. Done; char temp [5]; char plot_string[500l; char c;
Done = FALSE; while (IDone)
<.printf("\n\nSelect pen color:\n");printf( ll (U)ide black (N)arrow black (R)ed (G)reen (B)lue (H)agenta "); c = getch(); switch(c)
Ccase 'W : case 'w' :
pc = 1;Done = TRUE;break;
case 'N' : case 'n' :
pc = 2;Done = TRUE;break;
case 'R' : case T' :
pc = 3;Done = TRUE;break;
case 'G' : case 'g' :
pc = 4;Done = TRUE;break;
case 'B' : case 'b' :
pc = 5;Done ='TRUE;break;
case 'M' : case 'm' :
pc = 6;Done = TRUE;break;
default :printf ("\alnval id pen choice. Try again. \n");break;
sprintf(plot_string, "SP%d;PA%d,%7.3f;PD",pc, inc, (arr[1]*scale)); plot_str(plot_string, port);
for (i=2; i<=years; <.sprintf(plot_string, "PA%d,%7.3f",inc, (arr[i]*scale)); plot_str(plot_string, port);
106
Source-code listing for program PLOT, continued.
sprintf(plot_string, "PU;SPO;PA%d,%d",x2,y2); plot str(plot string, port);
plot_stp<x2, y2, port)
int x2, y2; int *port;
char plot_string[50);
sprintf(plot_string, »PA%d,%d;IN;",x2, y2); plot str(plot string, port);
/* Filename : READ FLS.C */ /*****»*****»*****»******»*****«*****«******************************«/
include <stdio.h> ^include <io.h> ^include <graph.h>
#define TRUE 1#define FALSE 0
read_crn(id, r, a, m, u, I, ia, in, years, first_yr, last_yr, q2, title, all_ok, ms)
FILE *id;double *r, *a, *m, *u, *l, *ia, *in;int *years, *first_yr, *last_yr;double *q2, *ms;char title [];int *all ok;<.char temp_str[10], line[81], iname[41];char *fgets();int i, strcmpO;char *cf;double atof(), ddumy;
#q2 = 0.0; _clearscreen; cf = fgetsdine, 80, id); for <i=0; i<=80; i++)
Cif <line[i] != '\n')
title[i] = line[i]; else
{title[i] = '\0'; break;
temp str[0] = '\0';while (((i=strcmp(temp str, "NUMB")) != 0) && Ifeof(id))
Ccf = fgetsdine, 80, id);subs tr( temp str, line, 1, 4);>
if (!feof(id))<:substr(temp_str, line, 24, 7);
107
Source-code listing for program PLOT, continued
*ms = atof(temp_str); temp_str[0] » '\0';fill~sarray(id, r, &cJduny, first_yr, last_yr, years); cf =~fgets(line, 80, id);fill sarrayCid, a, q2, first_yr, last_yr, years); cf =~fgets(line, 80, id);fill_sarray(id, m, q2, first_yr, last_yr, years); cf =~fgets(line, 80, id);fill_sarray(id, u, q2, first_yr, last_yr, years); cf =~fgets(line, 80, id);fill sarray(id, I, q2, first_yr, last_yr, years); cf =~fgets(line, 80, id);fill sarray(id, ia, q2, first_yr, last_yr, years); cf =~fgets(line, 80, id);fill sarrayO'd, in, q2, first yr, last yr, years); printf(»\a»); return; >
else*all_ok = FALSE;
return;
read_ind(id, a, m, u, I, in, years, first_yr, last_yr, q2, title, ms, cyr, cval, found, idrw)
FILE *id;double *a, *m, *u, *l, *in; int *years, *first_yr, *last_yr; double *q2, *ms, *cval; char title[], idrw[];
* *,
int *cyr, *found;
char temp_str[10], line[81], i name [41];char *fgets();int i, slen, strcmp<);char *cf, c;double atofO;*q2 = 0.0;*found = FALSE;_clearscreen;_outtext("\nEnter core id number: ");gets(idrw);slen = strlen(idrw);if (slen < 2)
{*found = FALSE;return;>
cf = fgetsUine, 80, id); for (i=0; i<=80;
if (line[i] != '\n')title[i] = line[i]
else{title[i] = '\0';break;
temp_str[0] = '\0';while (((i=strcmp<temp str, idrw)) != 0) && (Ifeof(id)))
<.cf = fgetsUine, 80, id);substr(temp str, line, 14, slen);>
if (ifeof(id))
108
Source-code listing for program PLOT, continued
*found = TRUE; substr(temp_str, line, 27, 7);*ms = atof(temp str); substr(temp_str7 line, 36, 4);*cyr = atoi(temp_str); substr(temp_str,~line, 42, 6);*cval * ato?(temp_str);fill sarrayd'd, a7 q2, first yr, last_yr, years);cf *~fgetsdine, 80, id);fill sarraydd, m, q2, first_yr, last_yr, years);cf *~fgets(line, 80, id);fill sarray(id, u, q2, first yr, last yr, years);cf =~fgets(line, 80, id);fill sarrayd'd, I, q2, first_yr, last_yr, years);cf =~fgets(line, 80, id);fill sarrayd'd, in, q2, first yr, last yr, years);printf("\a");return;
read_tek(id, a, years, first_yr, last_yr, q2, title)
FILE *id;double *a;int *years, *first yr, Mast yr;double *q2;char title 0;
char temp_str[10], line[81];char temp~linet80], c;char *fgeTs();int i;char *cf;extern int index();*q2 = 0.0;_clearscreen;cf = fgetsdine, 80, id);substr(temp_str, line, 1, 4);*years = atoi(temp_str); substr(temp_str, line, 56, 4);*first yr = atoiCtemp^str); cf = fgetsdine, 80, Td); substr(temp_str, line, 2, 4);*last_yr = atoi(temp_str);cf = fgetsdine, 80,~id);fill tarrayd'd, a, q2, first yr);cf =~fgets(line, 80, id);cf = fgetsdine, 80, id);substr(temp line, line, 19, 80);i = index(temp_line, " ");substr(title, temp line, 1, i);printf(»\a'«);return;
read_oth(id, a, years, first_yr, last_yr, q2, title, all_ok)
FILE *id;double *a;int *years, *first yr, *last yr;double *q2;char title[];int *all_ok;
char temp_str[10], line[81]; char *fgets();
109
Source-code listing for program PLOT, continued.
int i, strcmpO; char *cf; ckxjble atof();
*q2 = 0.0; clearscreen;
cf = fgets(title, 80, id); i = strlen(title); titled'] = '\0'; cf = fgetsdine, 80, id); if (Ifeof(id))
{fill sarrayd'd, a, q2, first yr, last_yr, years);printf("\a");return;>
else*all_ok = FALSE;
returnj
/it*******************************************************************/ /* Filename : S_PLOT.C */
^include <stdio.h> ^include <graph.h>
^define TRUE 1 fttefine FALSE 0
g_line(j, xadd, yadd, xscale, yscale, years, arr, vmode, mult)
int j, years, vmode, mult;float xadd, yadd, xscale, yscale;double arr[];{int i;char c;
if (vmode > TEXTMONO) {
outtext ("\nSelect color (B)lue (G)reen (C)yan (R)ed (H)agenta w(H)ite\n"); lout text (" (P)ink (Y)ellow bro(W)n gr(A)y It.tXDue It.gree(N) 11 ); c = getchO;
>if (vmode > TEXTMONO) switch (c)
<.case 'B' : case 'b' :
_setcolor(1); break;
case 'G' : case 'g' :
_setcolor(2); break;
case 'C' : case 'c' :
_setcolor(3); break;
case 'R' : case 'r' :
_setcolor(4); break;
case 'M' :
110
Source-code listing for program PLOT, continued.
case 'm' :_setcolor(5);break;
case 'W : case 'W :
_setcolor(6);break;
case 'H' : case 'h' :
_setcolor(7);break;
case 'A' : case 'a' :
_setcolor(8);break;
case 'l> : case 'I' :
_setcolor(9);break;
case 'N' : case 'n' :
_setcolor(10);break;
case 'P' : case 'p' :
setcolor(12);break;
case 'Y' : case 'y' :
_setcolor(14);break;
default :break;
>jnoveto ((int)((xadd)*xscale), (int)«yadd-(arr[j]*mult))*yscale)); for (i=j+1; i<=years; i++) _lineto((int)((xadcH-i-1)*xscale),
(int)((yadd-(arr[i]*mult))*yscale»; _setcolor(8); > g_xyadd (xadd, yadd, first_yr, x1, y2, j)
float *xadd, *yadd;int first_yr, x1, y2, *j;
*xadd = first_yr-x1; if (first yr > x1)*j=1;
else*j= x1 -first yr;
*yadd = y2; outtext
g_labs(title, x_lab, y_lab, x1, y2, t1, t2, inc, choice)
char title[], x_lab[], y_lab[]; int x1, y2, t1, t2, inc, choice;
int i, j, k; char indx[11];
strcpy(indx, "NORMALIZED");_clearscreen(0);~settextposition(2, 46-(strlen(title)/2));printfC'Xs", title);_settextposition(21, 44-(strlen(x_lab)/2));
111
Source -code listing for program PLOT, continued.
printf("%s",x_lab>; k = strlen(y Tab); if (k > 18) ~
k = 18; j = 0; for (i=11-(k/2); i<=<11-(k/2»+k;
<. settextposition(i,3);
printf("%c",y_lab[j]>;
j = y2;if(choice == 0)
<.for (i=4; i<=18; i+=inc)
<.settextpositiond", 5);
printf("SSd",j>; J = J-t2;
else {for (i=6; i<=16; i
Csettextpositiond' ,2);
pr i ntf ( "%c" , i ndx [ i -6] > ; >
set text posit ion(4, 5 ); printf(" 3">; set text posit ion(6, 5);
printf(" 2">; settextposition(9,5);
printf(» 1»); settextposition(11,5);
printf(" 0"); _settextposition(13,5>; printfC1 -1"); _settextposition(16,5); printfC1 -2"); settext posit ion( 18,5);
printfC' -3");
j = x1;for (i=7; i<=80; i+=10>
C settextposition(19, i);
printf(»%4d",j>;J = J+t1;
g_tics(xs,ys, j, k, I, m, w1,w2,w3,w4, xscale,yscale, x1, x2, y1, y2, t1, t2>
float xs, ys, j, I, xscale, yscale;int k, m;int wl, w2, w3, w4;int x1, x2, y1, y2, t1, t2;
int i, p;
_rectangle(2, (int)(32*xs>, (int)(28*ys>,(int)(312*xs>, (int)(140*ys»;
for (i=(int)(40*xs>; i<(int)(312*xs); i+=(int)(8*xs» <moveto(i, (int)(28*ys»;
~lineto(i, (int)(30*ys»;
112
Source-code listing for program PLOT, continued.
movetoU, <int)(139.5*ys)); ~lineto<i, (int)(138*ys»; >
for (i=(int)(72*xs); i<(int)(312*xs); i+=(int)(40*xs» Cmovetod", (int)(28*ys»;
"linetod", (int)(32*ys»; "movetod", <fnt)(139.5*ys»; ""linetod", (int)(136*ys»; >
for (i * 1; i<=k; i++) Cp = d"nt)((2»«-(d'-1)*j))*ys); moveto(d"nt)(32*xs), p);
Jineto(d"nt)<34*xs), p); ""moveto((int)(312*xs>, p);
lineto((int)(310*xs), p); >
for (i=1; i<=m; 1++) Cp= <int>«2&«-«i-1>*l»*ys>; moveto((int)(32*xs), p);
~lineto((int)(36*xs), p); ~moveto«int)(312*xs), p); ""lineto((int)(308*xs), p); >
_settextwindow(22, 1, 23, 80);"setviewport((int)(32*xs>, (int)(28*ys), (int)(312*xs), (int)(140*ys»; ~setcliprgn((int)(32*xs)+(int)<(w1-x1)*xscale),
(int)(28*vs)+(int)((y2-w4)*yscale), <int)(312*xs)-(int)«x2-u2)*xscale), (int)(140*ys)-(int)((w3-y1)*yscale»;
/*****»»»»****************»»»»**»»»*»»»»»»»»»»****************»»**»»»/ /* File name : WRITER. C *//***»******* ************ **<Mt***************«************»*»***»******y
#i nclude <stdio.h> ^define TRUE 1 ^define FALSE 0
writef(fp, prtarr, j, fyrl, Idecl) int j, fyrl, Idecl; FILE *fp; double prtarr [];
.int I, i, jb, je; int done = FALSE; prtarr [j] = 99.99; jb= 1;je = (10 - (fyM X 10)); while (Idone)
Cif (i == j)
<done = TRUE; break; >
fprintf(fp, "X4d",fyr1); for (i=jb; i <= je; i
Cif (i == j)
Cdone = TRUE; break;
113
Source-code listing for program PLOT, continued.
fprintf(fp, M%7.3f",prtarr[i]>;>
fprintf(fp, H\n">; if (i <= 10)
fyM = fyr! + i - 1; else
fyr! = fyM + 10; jb = je + 1; je = je + 10;y
114
Source-code listing for program MAKERAD.
***********************************************^/*
/* Program name/* Purpose/*/* Input/* Output/*/* Programmer/* Created for
MAKERAD.CThis subroutine creates a radius file from a */standard ring width file. */Standard ring width file in HM./100 */Standard radius file used with COFECHA and */other URD TRL programs. */Michael L. Field */Tree-Ring Laboratory */
/* Hail Stop *461 *//* U.S. Geological Survey *//* Reston, Virginia 22092 *//* Files used: COMMON. C *//* Date Created : 6/1/87 *//* Modifications *//* Purpose : *//* Date : *//* Programmer : */ /********************************************************************/
^include <stdio.h> ^define TRUE 1 fttefine FALSE 0
mainO
FILE *idf *od;FILE *setupinf() f *setupout<);char i name [41], oname[41], idnumber[9] , line[101];char c = ' ';char tempstr[9], *cf;char version [22];char *fgets<);int atoiO;
int i, j, value, years, elw; int ci, first year, last year, crit year; int done = FALSE, first = TRUE; unsigned int total;
crit_year = 0; years = 0;elw = 0;
pr i ntf < "\n\n\n\n\n\n") ;printf(" CREATE RADIUS FILE FROM RING-WIDTH FILE\n">; printf(" TREE -RING LABORATORY\n"); printf( H U.S. GEOLOGICAL SURVEY\n">; printf(" WATER RESOURCES DIVISIONW); printf(" RESTON, VIRGINIA\n\n\n\n"); printf(" (Press enter to continue)"); gets(tempstr);
printf<"\n\nRing width file name: ");gets( iname );if «id=setupinf< iname, "r")) == (FILE *)NULL) /* set up input file */
Cpri ntf ("Program is terminating.\n\a");exitO;>
printf("Does the file contain early and late ringwidths (Y/N, default=N)? "); gets(tempstr); if (tempstr[0] == 'Y' || tempstr[0] == 'y')
elw = 1;pri ntf ("Radius file name: "); gets( oname );
115
Source -code listing for program MAKERAD, continued.
if ((od=setupout(oname, "w"» == (FILE *)NULL) /* set up output file */ <.printf( "Prog ram is ternrinating.\n\8"); exitO; >
fgets(line, 100, id); /* read and discard title */ lineCstrlen(line)-1] = '\0'; fprintf(od, »%s\n",line); while (idone)
<.cf = fgetsdine, 100, id); lineCSO] = '\0'; if(feof(id))
<. fprintf(od,»%s X6u %4d %4d %4d %4d\n",
idnumber, total, years, first_year, last year, crit_year); done » TRUE; break; >
substr(tempstr , I ine, 1 ,8); if (strcmp(tempstr, idnumber) != 0)
<.if ( "first )
{ fprintf(od,"%s X6u %4d %4d %4d %4d\n",
idninber, total, years, first_year, last_year, crit_year); >
substr( idnumber, line, 1,8); substr(tempstr, I ine, 9, 4); first_year = atoi(tempstr); last_year = first_year-1; total = 0; crit_year = 0; years = 0; first = FALSE; >
substr(tempstr, line, 12, 1); if (!elw)
j = 10 - (atoi(tempstr)%10); else
j = (5 - (atoi(tempstr)%5))*2; for (i=1; i
substr(tempstr, line, (7+(i*6)), 6); if(strcmp(tempstr, » 99900") == 0)break;
total = total + atoi(tempstr); if (elw)
substr(tempstr, line, (7+(i*6)), 6); total = total + atoi(tempstr); >
last_year = last_year+1; years = years +1; if(crit_year == 0 && total >= 10000)crit_year = last_year;
>> /* end while */
fclose (od); fclose (id); > /* end */
cls(){printf("\033[2J");fflush(stdout);
116
Source-code listing for program TRING.
/»******************************»»******»*****»»******************»»»//*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
Program namePurposeInputOutput
ProgrammerCreated for
Files usedDate Created
ModificationsPurposeDateProgrammer
TRING.CCreates a standard ring-width file.From keyboard or measurement machine.Standard ring-width file.Michael L. FieldTree-Ring LaboratoryMail Stop #461U.S. Geological SurveyReston, Virginia 22092COMMON.C
/*******
/* COMMAND DEFINITIONSfldefine fldefine fldefine fldefine fldefine
BOMEOMBVFVTRUE
-100-200-300-400
1
/* Beginning of Measurement Commend *//* End of measurement command *//* Command to back up one measurement *//* Command to go forward one measurements */
fldefine FALSE 0
^include "stdio.h" ^include <bios.h> ^include <dos.h> ^include <conio.h>
mainO{int finished, value, nvalues, max values, byr, lyear;int yrcnt, len_cnum, first, i, elw, fdone = FALSE;int getvalueO, fseekO, valueZ, dec, mach;int vdone = FALSE, apndr, apnde;long f dec, f dec I;
char oname[41], rname[41], answer [2], cnum[9], temp_str[5], temp_str2[5] ; char title[81]. Line [81], temp_name[41], e I name [41]; char *fgets();
FILE *od, *td, *rd, *eld; FILE *setupout();
/* Set line 0 for 9600, E, 1SB, 7BITS */
printf( "\n\n\n\nWi I I this be (M)achine input or (K)eyboard? »);gets(temp str);if <temp_str[0] == 'M' || tenp_str[0] == 'm')
mach = 1; else
mach = 0;
if (mach)bios serialcomC COMJNIT, 0, <_COM_CHR7 | _COM_STOP1 | _COM_EVENPARITY
J COM_9600»; while (! fdone)
{nvalues = 0; byr = 0; vdone = FALSE;printf("Will this file contain separate early and late wood\n"); printf(» measurements (Y/N)? "); gets(answer);if (answerEO] == 'Y' || answerEO] == 'y') < elw = TRUE;
117
Source-code listing for program TRING, continued.
dec = 5;fdec = 7;fdecl = 9;lyear = FALSE;>
else<elw = FALSE;dec = 10;fdec = 11;>
apndr = FALSE; apnde = FALSE;printf ("Enter name of file to hold measurements(no .ext):"); gets( temp_name ) ; strcpy(oname, tempjiame); street (oname, ".rw"); strcpy(elname, temp_name); street (elname, ".elw");
/* Setup f i le to receive values and return a f i le descriptor ( od ) */ if ( ( od = setupout(oname, "w") ) == (FILE *)NULL )
<printf ("Do you want to append to this file? (Y/N) ");gets (answer);if (answer [0] == 'N' || answer [0] == 'n'>
<:apndr = FALSE; break; >
else {od = fopen(oname, "a"); apndr = TRUE;
if(elw) {if ( ( eld = setupout(elname, "w") ) == (FILE *)NULL )
<printf ("Do you want to append to this file? (Y/N) "); gets(answer); if (answer [0] == 'N' || answer [0] == 'n'>
<apnde = FALSE;break;>
else<eld = fopen( elname, "a");apnde = TRUE;
printf("Enter file description information (up to 80 characters)\n:"); gets( title ); if(!apndr)
fprintf(od, "%s\n",title); fclose(od); if (elw)
if ("apnde)fprintf(eld, "%s\n",title);
fclose(eld);
finished = FALSE; while ( {finished )
printfC'Enter control number: ");
118
Source-code listing for program TRING, continued.
gets( cnun ); len_cnum = strlen(cnum); if(~len cnun < 8 )
< for( i=len cnum; i<8;
cnumCiJ = ' '; cnun[8] = '\0'; >
printfC'Enter starting year: "); gets(temp_str); byr - atoi(temp_str); yrcnt = byr;td = fopenC'tempfile.tmpVV1 );printf(M\nSend a -100 from the device's keypad to start recording.\n">; if (mach)
while ((value = getvalueO ) != BOM ); else
while ((value = gvalO) != BOH);printf ("Starting to record measurements -- send a -200 from the keypad to end recording session.\n">; nvalues = 0; maxvalues = 0; printf("Year-> X4d",yrcnt); if (elw)printf("\n Early value-> ");
elseprintf(" Value-> ");
while (Ivdone) < if (mach)value = getvalueO;
elsevalue = gvalO;
if (value == EOH) <vdone = TRUE; break; >
switch( value ) <case BOH: /* Another BOH command -- reposition to beginning*/
printf("\nBacking up to first year.\n"); nvalues = 0; maxvalues = 0; fseek( td, OL, 0); yrcnt = byr; if (elw) <printf("Year-> %4d\n Early value-> ",yrcnt); lyear = FALSE; >
elseprintf("Year-> %4d Value-> ",yrcnt);
break;case BV: /* Back up to previous value */
if( --nvalues < 0 ) <nvalues = 0; maxvalues = 0; fseek( td, OL, 0); yrcnt = byr; if (elw)
<.printf("Year-> %4d\n Early value-> " f yrcnt); lyear = FALSE; >
else printf("Year-> %4d Value-> ",yrcnt);
119
Source-code listing for program TRING, continued,
else
if(elw)
ifUyear)
Iyear = FALSE;fseek< td, -fdecl, 1 );
else
Iyear = TRUE;yrcnt--;nvalues--;maxvalues--;fseek< td, -fdec, 1 );
else {nvalues--; yrcnt--; maxvalues--; fseek< td, -fdec, 1 );
printf<"Backing up to year %d.\n",yrcnt); if(elw)
<ifUyear)
<printf("Year-> %4d\n Late value-> ",yrcnt); >
elseprintf(»Year-> %4d\n Early value-> »,yrcnt);
>else
printf("Year-> %4d Value-> ",yrcnt);
break;default: /* This is a value, store it */
if (elw) <if (llyear)
<fprintf(td, "%4d %4d",yrcnt,value);
if (mach)printf("%4d Late value-> ",value);
elseprintf<" Late value-> ");
Iyear = TRUE; >else {
fprintf(td, " %4d\n",value); yrcnt++;
if (mach)printf("%4d\nYear-> %4d\n Early value-> ",value,yrcnt);
elseprintf("Year-> %4d\n Early value-> ",yrcnt);
nvalues++; lyear = FALSE;
120
Source-code listing for program TRING, continued.
else<.fprintf( td,"%4d X4d\n" , yrcnt, value > ;nvalues++;yrcnt++;if (mach)
printf("X5d\nYear-> X4d Value-> ",value,yrcnt>;else
printf("Year-> X4d Value-> ", yrcnt);>
if( n values > max values )max values = n values;
uhile( nvalues++ < max values ) fprintf< td, "9999 999\n">;
valueZ = 0;printfO'End of recording session\n">; fprintf( td, "9999 999\n"); fclose( td ); first = 1;td = fopen("terapfile.tmp","r">; od = fopen(oname, "a"); if (elw)
eld = fopen(elname, "a"); while( value != 999)
<.f get s( line, 80, td); substr(temp_str, line, 6, 4); value = atoi(temp str); if (value == 999>~
break;substr(temp_str, line, 1,4); yrcnt = atoi(temp str); if (elw)
<.substr(temp_str, line, 11, 4);
valueZ = atoi(temp_str); if (value2 == 999)break;
if ((yrcnt X 5) == 0 || first == 1) <. if (Ifirst)
fprintf(eld, "\n"); fprintf(eld, "%s%4d",cnum, yrcnt); >
fprintf(eld, "%6d%6d", value, value2); >
if ((yrcnt X 10) == 0 || first == 1) < if( jfirst)
f print f(od,"\n") ; f pr i nt f( od, "%sX4d" , cnum, yrcnt ); first = 0; >
fprintf(od,"%6d",value+value2>; >
if (elw) <. if (yrcnt X 5 < 4)
fprintf(eld, " 99900\n">; else
fprintf(eld, "\n">; >
if (yrcnt X 10 < 9)fprintf(od," 99900\n">;
else f print f(od,"\n"> ;
121
Source-code listing for program TRING, continued.
fclose(td); fclose(od); if(elw)fclose(eld);
printfC'Do you want to record more measurements? (Y/N): "); gets(answer); if ( answer [0] == 'N' || answer [0] == 'n' )
finished = TRUE; else
<.vdone = FALSE;finished = FALSE;
printfC'Do you want to make another file <Y/N>? ");gets(answer);if ( answer [0] == 'N' || answertO] == 'n' )
fdone = TRUE; >
unlink ("tempf ile.tmp");
gvalO{char temp [5];int value;
gets (temp);value = atoi(temp);return value;
getvalueO<.unsigned far *com base;char buffer[4];int i, value, sign;
com base = (unsigned far *) 0x000004001;i =~0;while ( i < 4)
{if ((unsigned char) inp(*com_base+5) & 0x01) buffer[i++] = (unsigned char) inp(*com base);
>sign = 1; if (buffer[0] == ' ')
<.sign = -1;value = 0;>
elsevalue = buffer[0] - '0';
for (i=1; i<4; i++)value = (10*value) + (buffer[i] - '0');
value = sign * value; return (value);
cls()<:printf("\033[2J"); fflush(stdout);
122
Source-code listing for files common to all programs.
/*********************************************************************//* substr.c -- substr *//* *//* 'substr' extracts a substring from a string given a starting *//* position and length. */ /it********************************************************************/substr(substring, string, start, length)char ^substring;char *string;int start^int length;{int i;start--;string += start;for (i=0; i < length && *string != '\n' && *string != '\0'
*substring-H- = *string++; *substring = '\0';
^include "stdio.h"
^define TRUE 1 ^define FALSE 0
/********************************************************************//* setupinf.c setupinf(6file name) *//* sets up a file for reading *//* returns file number -- NULL if problems */f********************************************************************/
FILE *setupinf ( fname, mode )char *fname;char *mode;CFILE *fd;
char answer[5];char *gets();if ((fd = fopen (fname, mode)) != (FILE *)NULL )return (fd);
else{fclose ( fd );printf("Unable to open file <%s> -- file probably does not exist, try again. 11 );return((FILE *)NULL);
/******************************************+*************************!
I* setupout.c setupout(file name) */ /* sets up a file for writing *//* returns file number -- NULL if problems */ /********************************************************************r
FILE *setupout ( fname, mode ) char *fname; char *mode;
FILE *fd;
char answer [5];char *gets();if ((fd = fopen (fname, "r" )) == (FILE *)NULL )
fclose( fd );
123
Source-code listing for files common to all programs, continued.
fd = fopen ( fname, mode ); >
else <fclose ( fd );printfC'File <Xs> already exists.\n", fname ); printf("Do you want to overwrite it? (Y/N, default=Y) "); gets (answer );if ( answertO] != 'N' && answertO] != 'n' )
<if (( fd = fopen(fname, mode)) == (FILE *)NULL )
<printf("Unable to open file <Xs>.\n",fname); return((FILE *)NULL); >
> else
return((FILE *)NULL); >
return(fd);
124