From decwrl!elroy.jpl.nasa.gov!usc!cs.utexas.edu!uunet!allbery Sat Mar 10 15:33:23 PST 1990 Article 1383 of comp.sources.misc: Path: decwrl!elroy.jpl.nasa.gov!usc!cs.utexas.edu!uunet!allbery From: ecd@cs.umn.edu@ncs-med.UUCP (Elwood C. Downey) Newsgroups: comp.sources.misc Subject: v11i008: ephem, 7 of 7 (part 2 of manual) Message-ID: <80848@uunet.UU.NET> Date: 10 Mar 90 19:37:54 GMT Sender: allbery@uunet.UU.NET Lines: 818 Approved: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) Posting-number: Volume 11, Issue 8 Submitted-by: ecd@cs.umn.edu@ncs-med.UUCP (Elwood C. Downey) Archive-name: ephem4.12/part07 # This is the first line of a "shell archive" file. # This means it contains several files that can be extracted into # the current directory when run with the sh shell, as follows: # sh < this_file_name # This is file 2 of a two-part manual, Man.txt. if test -r Man.txt then echo Man.txt has already been built. exit fi echo x Man.txt.2 sed -e 's/^X//' << 'EOFxEOF' > Man.txt.2 X follows the absolute magnitude and luminosity index coefficients. X X 7.1.4. On or Off X X The last selection on the right toggles the calculations for the object On X and Off. It toggles when selected with RETURN and then immediately exits X the quick-choice menu back to the main menu. If calculations become On, X then they will be performed for the current type of object; if they become X Off the object-X row of information will be erased. X X 8. Plotting X X Each time a field is drawn on the screen during a full screen update cycle X (that as, during automatic looping or a manual "q" command character from X the main menu but not from a screen redraw from control-l or when an X individual planet is turned on or a single time field is changed) its X full-precision value may be written to a file. This implies you may not X plot a field from other than the current menu at the time plotting is on. X You can append several plot runs together, however, if necessary. X X Each line in the file consists of a tag character followed by two or three X floating point variables, all separated by commas. If there are two X values, they should be interpreted to be x and y (or perhaps r and theta). X If there is a third, it is a z or trace value. X X For efficiency on systems that can compute a screen full faster than they X can display it, screen updates are suppressed while plotting is on and X NStep is greater than 1. This can greatly reduce the time to generate a X long plot file. Fields are still logged for plotting; they just are not X drawn on the screen. X X The Plot field controls plotting. Whether plotting is currently active is X indicated by "on" or "off" immediately to its right. X X Picking "Plot" brings up a quick-choice menu, as follows: X X Select: Select fields, Display a plot file, Cartesian coords, Begin plotting X X X 8.1. Defining plot fields X X Select the "Select fields" option. You will be asked to move the cursor X to the field you want to use as the x coordinate (abscissa), then asked to X choose the y coordinate (ordinate), then asked to choose an optional z X trace variable and finally a tag character. (X and Y may be for other X coordinate systems too but ephem's quicky plotter can only plot in X Cartesian coordinates.) If you type q for either x or y then no more X fields will be defined. If you type q for the z field there will be no z X field. You can not label a plot line with the letter "q" at this time. X X This then repeats so you may choose up to ten of these sets for any given X plot run. Each set defines what will become a line on the final plot. X X X X X X X X X X - 14 - X X X Note that you may select the "Search" field to indicate use of the current X search function; that function must be defined by the time plotting is X turned on. X X If you turn plotting off and back on the fields selected for plotting are X reactivated the same as they were last time. You may change them if X desired, of course, but there is no need to redefine them if you do not X wish to change them. X X 8.2. Displaying a plot file X X Select the "Display a plot file" option to generate a crude plot on the X screen of an existing plot file previously created by ephem. The entries X in the file will be drawn on the screen using their tag characters; the X plot remains on the screen until you type any character. X X The plot may be made in polar or Cartesian coordinates, depending on the X setting of the plotting mode in the quick-choice (see next section). X X 8.3. Cartesian or Polar coords X X This toggles the plotting mode coordinate system. The mode remains until X changed. Polar coordinates assume the first numeric field in the plot X file is the radius, and the second is the angle counterclockwise from X right, in degrees. X X 8.4. Begin Plotting X X If plot field lines are defined then the third option, "Begin plotting" X will be available. You will be asked for the name of the file to use and, X if it already exists, whether to overwrite it or append to it. Once you X have chosen a file, plotting is on and the top menu plotting status field X changes to "on". The default plot file name is ephem.plt. The values are X written to the plot file each time they are updated on the screen until X you select "Plot" again and select the "Stop" option to turn plotting back X off. X X 8.5. Stopping Plotting X X If plotting is on, then selecting the Plot field in the top section will X turn plotting off. You may pick Plot again and resume with the same fields X by selecting "Begin plotting" again. X X Note that due to internal buffering the plot file will not be completely X written to disk until plotting is turned off. X X 9. Watching X X You may generate a simple drawing on the screen of the night sky or the X solar system by selecting "Watch". It will bring up a quick-choice menu X as follows: X X Select: Night sky, Solar system, No trails X X X X X X X X X X X - 15 - X X X 9.1. Trails X X You may either erase after each iteration or leave the tags up, referred X to as "trails". Picking the right-most choice will toggle between "No X trails" and "Leave trails"; you should set it as desired before you select X the style of sky plot you wish. Ephem will remember your selection. X X 9.2. Night sky X X This selection draws the currently active planets as they would appear in X the sky at the current time and date. The coordinate system is such that X 0 degrees azimuth (north) through 360 degrees (north, once around) is X mapped to the horizontal screen dimension, and 0 degrees altitude (level) X through 90 degrees (the zenith) is mapped to the vertical dimension. Thus, X the bottom row is the horizon and all across the top is the zenith. X X 9.3. Solar System X X This selection draws the currently active planets as they would appear X looking "down from the top" of the ecliptic, with the sun at the center X and zero hours right ascension towards the right. The scale is adjusted X to roughly fill the screen according to the outter most active planet. X The screen transformation assumes a screen aspect width/height ratio of X 4/3. Down the left column of the screen is the heliocentric altitude of X the planet above or below the ecliptic, drawn to the same scale as the X circular display. X X In either style of display, pressing RETURN advances the time by whatever X amount StpSz is set to. Pressing "h" advances the time by one hour, "d" X advances by one day, and "w" advances by one week (seven days). Pressing X "q" returns to the tabular main screen. Pressing any other key starts an X automatic loop with each step advancing by StpSz; pressing any key stops X the looping. X X As symbols are placed, collisions (overstrikes) are avoided by moving X characters in such a way as to maintain increasing sorted order towards X the right. In the case of the heliocentric altitude display, for example, X greater height is indicated towards the right on the same row; the S and E X symbols are always at 0. X X When you return to the main menu, the last watched time will be maintained X as the current time. The StpSz is not changed. X X 10. Searching X X Ephem can search for arbitrary conditions to exist among most displayed X fields. You first enter a function, then select from among three forms of X equation solvers to iteratively solve for the next time when the function X meets the requirements of the solver. The solver selects the next time for X which it wants the function evaluated and sets StpSz so that the next X iteration will occur at that time. The solvers continue to iterate until X either they achieve their goal or NStep reaches 0. X X You may set NStep to be quite large and let ephem search unattended or set X X X X X X X X X X - 16 - X X X it to 1 and watch it converge one step at a time. You may also plot at the X same time as search to record the exact steps ephem took to converge. X (But recall that screen updates are suppressed if plotting is also on). X X The "Search" selection in the top half of the screen controls all X searching. Picking it brings up a quick-choice menu as follows: X X Select: Find extreme, Find 0, Binary, New function, Accuracy X X X 10.1. Find extreme X X This search algorithm searches for a local maximum or a minimum in the X search function, whichever it finds first. It begins by evaluating the X search function at the current time then for two more times each separated X by StpSz. It then fits these three points to a parabola and solves it for X the time of its maximum (or minimum). StpSz is set so that the next X iteration will evaluate at this point. This parabolic fit solution keeps X repeating until StpSz changes by less than the desired accuracy or until X the curve becomes so flat that an extrema appears too broad to find. X X 10.2. Find 0 X X This search algorithm uses the secant method to solve for the time at X which the search function is zero. The function is evaluated at the X current time and then again StpSz later to establish a slope for which the X x-intercept is found as the next zero guess. This is used to set StpSz for X the next desired time value and the slope hunting process repeats until X StpSz changes by less than the desired accuracy. X X 10.3. Binary X X This search algorithm must be used with a search function that yields a X boolean result, ie, a true or false value. The idea is that the function X is assumed to be one truth value when evaluated at the present time, and X the opposite truth value when it is evaluated StpSz later. The algorithm X will then do a binary search for the time when the truth value changes. X X The binary algorithm does not begin until the state change is bounded in X time. Initially, as long as the truth value at StpSz is the same as the X previous value the algorithm will just keep moving in time by StpSz X looking for when the state changes. That is, a linear search is initiated X to bound the state change, then the binary search proceeds. X X 10.4. Define a New function X X Select "New function" to display the current search function. If you type X "q" it will be left unchanged. If you type RETURN it will be erased. If X you type anything else it will be compiled and, if there are no errors, it X will become the new search function. Once a valid function has been X stored, it will remain unless changed. If a search function is selected X and there is as yet no valid search function defined, you will X automatically be asked to enter one as though you had selected "New X function." X X X X X X X X X X - 17 - X X X A search function consists of intrinsic functions, field-specifiers, X constants and operators, and precedence may be overridden with X parentheses. X X X 10.4.1. Intrinsic functions X X In this release, the only intrinsic function available is abs(), which X returns the absolute value of its argument. X X 10.4.2. Field Specifiers X X A field in the bottom half of the menu is specified in the form of X "object_name.column_name". The object_name is enough of the planet name to X be unique; use "x" for the user-specified object X. The column_name is X from the following table, depending on which menu is up. In all cases X additional characters may be entered but are ignored. X X Planet Data Menu Rise/Set Menu Separation Menu X ------------------ -------------------- --------------- X al Alt hr Hrs Up, or j Jup X az Az hu Hrs Up ma Mars X d Dec raz Rise Az me Merc X ed Ea Dst rt Rise Time mo Moon X el Elong saz Set Az n Nep X hla Helio Lat st Set Time pl Pluto X hlo Helio Long ta Transit Alt sa Saturn X ph Phs tt Transit Time su Sun X ra R.A. u Uranus X sd Sn Dst ve Venus X si Size X vm VMag X X X In addition, the following top-half fields may be used: X X da Dawn X du Dusk X n NiteLn X X X X Remember, searching may only involve fields being calculated for display X at the time the solver is active. While you can syntactically include any X field in a search function it is useless to define a search that uses X fields from other than the menu that is selected at the time the search is X running. X X 10.4.3. Constants X X Constants may be integers or floating point numbers. The latter may be X expressed in scientific notation if desired. Examples include 100, .9, X 1.234, 1e10 and 1.2e-4. Any number may be preceded by - to make it X negative. X X X X X X X X X X - 18 - X X X 10.4.4. Operators X X The collection of arithmetic, relational and boolean operators provided X mimics those of C language as listed in the following table, in decreasing X order of precedence. Operators grouped together have the same precedence X and all have left-to-right associativity. Parentheses may be used as X desired. X X Symbol Meaning Resulting type X ------ -------------------- -------------- X * multiply arithmetic X / divide arithmetic X X + add arithmetic X - subtract arithmetic X X > greater than boolean X >= greater than or equal boolean X < less than boolean X <= less than or equal boolean X X == equality boolean X != inequality boolean X X && logical and boolean X X || logical or boolean X X X 10.5. Specifying Search Accuracy X X Selecting "Accuracy" allows you to specify when the search will stop. The X search algorithms will stop when StpSz becomes equal to or less than this X value. The default is one minute. If ephem has not yet converged to the X specified accuracy but NStep has decremented to 1, the searching will stop X but the search status field will still indicate which search procedure is X in effect. To try more iterations you may increase NStep and resume X searching. If the accuracy was achieved, the search status field will X switch to "off" with the number of "unused" steps remaining in NStep and X the last step size in the StpSz fields. X X 10.6. Stop X X If searching is on, this option will also appear on the quick-choice menu X and may be selected to turn off the search. X X 10.7. Example Searches X X As an example, let's find when Pluto again becomes the furthest planet X from Sol. You may find when the difference in their sun distance is zero, X or you might use a binary search on the condition that Pluto's sun X distance is larger then Neptune's. X X To try the former approach select Search, select "Find 0", specify the X X X X X X X X X X - 19 - X X X search function to be: X X pl.sd - nep.sd X X set StpSz to something large like 10d, NStep to allow several iterations X like 20, and then type "q" to start the search and watch ephem do the X hunt. Ephem will settle on about 21:02 1/10/1999 UT. X X To try a binary search, you first need to have some idea of when the event X will occur so you can eliminate the initial linear search for the state X change. We can start at, say, 1/1/1999, set StpSz to 30d, select Binary X search, specify the search function to be: X X pl.sd > nep.sd X X and go. Once it brackets the state change note how StpSz keeps being cut X in half but can go in either direction (sign) as it divides each interval X in half. Ephem will converge on the same answer. X X 10.8. Another Example X X To find the time of last quarter moon during December, 1989, use the "Find X 0" search algorithm to solve "moon.el + 90". (At last quarter, the moon X is 90 degrees west of the sun, or -90 east in ephem's elongation display.) X Set the initial time to mid-month, 12/15/1989, StpSz to 1 day and NStep to X 10. Ephem takes only a few iterations to settle on 23:57 12/19 UT. X X 10.9. Caution X X Beware that most celestial phenomena are generally pseudo-periodic in X nature. In early search steps ephem can easily skip over a local maxima X and find a later one, which, while correct, may not be what was desired. X In general, the closer you can be when you start the search the better X ephem can refine it; it is not as good with very broad searches that can X go "wild". Set StpSz large enough to offer significant change in the X function value, but small enough not to skip too far. X X For example, Saturn and Neptune had three close approaches during 1989. X If you did not know this then just asking ephem to find a minimum would X have produced different results depending on the starting conditions. X When starting a search for a certain class of event it is a good idea to X first use the plotting or watching facility of ephem to get a broad X picture of the general circumstances then use ephem's search facility to X refine a given region (or create and inspect a plot file and do your own X interpolation directly from it separately). X X Similarly, ephem's searching techniques are not good for eclipses because X the moon and sun are close every month; the trick is sorting through the X frequent conjunctions for ones that are particularly close. One needs a X way of establishing an envelope fit to the local extrema of a cyclic X function in order to find a more global extreme. X X X X X X X X X X X X X - 20 - X X X 11. Implementation Notes X X Remember that everything is for the current local time. So, for example, X the calendar marks moon events in local time; commercial calendars usually X mark the UT date. Similarly, the rise/set times are for the current local X day. X X The program uses a horizontal plane tangent to the earth as the horizon X for all altitude calculations, rise/set events, etc. This is not the same X as the angle up from the local horizon unless the observer is directly on X the ground due to earth's curvature. The effect can be found from: X X sin(a)**2 = (h**2 + 2Rh) / (R+h)**2 X where: X R = radius of earth X h = height above ground (same units as R) X a = increase in altitude X X For example, the effect is more than two arc minutes at a height of 5 X feet. X X Visual magnitudes are not very accurate at all... I haven't bother to fix. X X The accuracy of ephem can not be specifically stated since the Duffett- X Smith book does not warrant its planet position polynomials to any given X degree. I know for sure that better accuracy could be achieved if ephem X used ephemeris time but I have not yet decided on a suitable UT-ET X algorithm. X X The program uses double precision throughout. While this precision might X seem a little ridiculous, it is actually more efficient for most X traditional K&R C compilers, the search functions are far more stable, it X improves small angles (conjunctions) calculated using acos(), etc. X X Searching and plotting always use full precision but if neither of these X are turned on pure display and watching only recompute a given planets new X location if the time has changed enough to effect the required display X precision, based on the planets mean apparent orbital motion. X X The sun-moon distance is the solution for the third side of a planar X triangle whose two other sides are the earth-moon distance and earth-sun X distance separated by the angle of elongation. X X 11.1. Program limits X X The search function is limited to a maximum of 32 instructions (each X constant, field spec, and operation is one instruction), with no more than X a total of 16 constants and field specs. At run time, the function can not X require more than 16 stacked values (due to operator precedence or X explicit parenthetical expressions) to evaluate. X X No more than 32 different fields can be tracked simultaneously for X plotting and/or searching. X X X X X X X X X X X - 21 - X X X No more than 10 lines may be plotted at once. X X The maximum file name length is 14 characters. X X 12. DOS Installation Procedure X X Summary: X X You must be running DOS V2.0 or later, though somewhere between V2.0 and X V3.21 the behavior of control-c to terminate the program was fixed. A X 8087 floating point chip will be used if present. X X The distribution floppy contains two files, ephem.exe and ephem.cfg. X Ephem.exe is the executable program; ephem.cfg is a sample configuration X file. To run the program, make working copies of these two files in a X directory and run "ephem" from that directory. The program uses the X environment variable TZ to establish the local timezone. X X 12.1. Setting TZ X X Set a DOS environment variable, TZ, in the following form: X X set TZ=SSSnDDD X X X This environment variable is used to establish the timezone name and hours X offset whenever the "NOW" shorthand is used from ephem, either from the X configuration startup file or whenever any time field is changed manually. X X SSS the 3-letter abbreviation for the local standard timezone; X X n a number between -23 to 24 indicating the number of hours that are X subtracted from GMT to obtain local standard time; X X DDD is an optional 3-letter abbreviation for the local daylight savings X time zone name. Leave it off if you do not have savings time in your X area or it is not currently in effect. If the changeover dates differ X from the internal algorithm, just use SSS and n directly. X X For example, in the midwestern United States with savings times set X TZ=CST6CDT X X If for some reason your system does not change to savings time at the X right time, then omit the DDD parameter and just set the SSS and n to X exactly what you want. X X You can put this in your AUTOEXEC.BAT file so it gets set each time you X boot DOS. X X 13. Wish List X X incorporate Terrestrial Dynamical Time (known as Ephemeris Time prior to X 1984). TDT is about 57 seconds ahead of UT1 in 1990. X X X X X X X X X X X - 22 - X X X add explicit searching for eclipses and occultations. X X work on a better precession algorithm. current one exhibits some X hysteresis. X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X - 23 - X X X 14. Sample Screens X X Here are sample ephem screens. They are generated using the first sample X ephem.cfg file (listed in the section describing the configuration file). X There is one for each of the three possible screen formats. The rise/set X screen was done using the Adaptive option. The separations screen was X done using the Geocentric option. X X X XMove to another field, RETURN to change this field, ? for help, or q to run X XCST 19:45:00 4/04/1990 | LST 8:22:37 | Lat 44:50:37 | April 1990 XUTC 1:45:00 4/05/1990 | | Long 93:42:08 | Su Mo Tu We Th Fr Sa XJulianDat 2447986.57292 | Dawn 4:10 | Elev 800 ft | 1 2 3 4 5 6 7 X | Dusk 20:27 | Temp 40 F | 8 FM 10 11 12 13 14 XWatch | NiteLn 7:43 | AtmPr 29.50 in | 15 16 17 18 19 20 21 XSearch off | | TZ 6:00:00 | 22 23 NM 25 26 27 28 XPlot off | NStep 1 | Epoch (OfDate) | 29 30 XMenu Planet Data | StpSz RT CLOCK | | X-------------------------------------------------------------------------------- XOb R.A. Dec Az Alt Helio Helio Ea Dst Sn Dst Elong Size VMag Phs X Hr:Mn.d Deg:Mn Deg E Deg Up Long Lat AU(mi) AU Deg E ArcS % XSu 0:55.3 5:55 289:53 -10:56 195:01 1.0004 1919 -27 XMo 9:18.7 15:26 153:36 57:49 241151 1.0018 122.3 1847 -12 68 XMe 1:54.5 13:19 284:22 4:39 96:23 5:14 1.0909 0.3105 16.3 6.2 -2.4 71 XVe 22:02.0 -11:07 320:00 -50:07 241:32 0:53 0.7267 0.7250 -46.4 23.3 -5.1 53 XMa 21:23.9 -16:34 330:36 -58:56 282:18 -1:28 1.7066 1.4309 -56.9 5.5 0.5 91 XJu 6:14.0 23:29 241:30 56:16 104:06 0:05 5.2961 5.1847 78.2 37.1 -2.2 99 XSa 19:46.0 -21:00 20:34 -65:00 288:58 0:12 10.137 10.019 -80.4 16.3 1.2 100 XUr 18:41.7 -23:24 52:10 -60:18 276:37 -0:18 19.276 19.397 -95.5 3.4 5.7 100 XNe 19:02.8 -21:48 42:00 -61:43 282:39 0:52 30.183 30.208 -90.5 2.1 7.9 100 XPl 15:16.7 -1:38 81:32 -10:43 226:07 15:30 28.837 29.657 -144.5 0.3 13.7 100 XX 1:47.7 20:05 290:19 8:13 93:07 26:03 1.1320 0.3759 19.0 -1.8 74 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X - 24 - X X X Move to another field, RETURN to change this field, ? for help, or q to run X X CST 19:45:00 4/04/1990 | LST 8:22:37 | Lat 44:50:37 | April 1990 X UTC 1:45:00 4/05/1990 | | Long 93:42:08 | Su Mo Tu We Th Fr Sa X JulianDat 2447986.57292 | Dawn 4:10 | Elev 800 ft | 1 2 3 4 5 6 7 X | Dusk 20:27 | Temp 40 F | 8 FM 10 11 12 13 14 X Watch | NiteLn 7:43 | AtmPr 29.50 in | 15 16 17 18 19 20 21 X Search off | | TZ 6:00:00 | 22 23 NM 25 26 27 28 X Plot off | NStep 1 | Epoch (OfDate) | 29 30 X Menu Rise/Set Info | StpSz RT CLOCK | | X -------------------------------------------------------------------------------- X Ob Rise Transit Set Hrs Up X Time Az Time Alt Time Az X Su 5:49 80:53 12:18 50:58 18:47 279:24 12:58 X Mo 13:17 65:36 20:43 59:56 3:30 297:14 14:14 X Me 6:18 70:50 13:16 58:17 20:16 289:49 13:58 X Ve 4:05 105:12 9:24 33:57 14:44 254:58 10:38 X Ma 3:52 113:04 8:47 28:31 13:42 247:04 9:51 X Ju 9:50 54:50 17:37 68:39 1:27 305:10 15:37 X Sa 2:36 119:28 7:10 24:11 11:45 240:32 9:09 X Ur 1:44 123:07 6:06 21:48 10:29 236:53 8:45 X Ne 1:57 120:39 6:27 23:24 10:58 239:21 9:01 X Pl 20:41 91:31 2:42 43:32 8:39 268:29 11:58 X X 5:46 61:23 13:11 64:52 20:40 299:57 14:54 X X X X Move to another field, RETURN to change this field, ? for help, or q to run X X CST 19:45:00 4/04/1990 | LST 8:22:37 | Lat 44:50:37 | April 1990 X UTC 1:45:00 4/05/1990 | | Long 93:42:08 | Su Mo Tu We Th Fr Sa X JulianDat 2447986.57292 | Dawn 4:10 | Elev 800 ft | 1 2 3 4 5 6 7 X | Dusk 20:27 | Temp 40 F | 8 FM 10 11 12 13 14 X Watch | NiteLn 7:43 | AtmPr 29.50 in | 15 16 17 18 19 20 21 X Search off | | TZ 6:00:00 | 22 23 NM 25 26 27 28 X Plot off | NStep 1 | Epoch (OfDate) | 29 30 X Menu Separations | StpSz RT CLOCK | | X -------------------------------------------------------------------------------- X Ob Sun Moon Merc Venus Mars Jup Saturn Uranus Nep Pluto X X X Su 122:17 16:20 46:22 56:53 78:11 80:24 95:28 90:29 144:29 19:02 X Mo 122:17 106:01 168:37 178:19 44:06 157:19 142:15 147:14 89:57 104:59 X Me 16:20 106:01 62:37 73:11 61:56 96:40 111:44 106:43 156:32 6:57 X Ve 46:22 168:37 62:37 10:43 124:33 34:03 49:07 44:07 100:46 63:41 X Ma 56:53 178:19 73:11 10:43 135:03 23:35 38:36 33:40 91:16 74:24 X Ju 78:11 44:06 61:56 124:33 135:03 158:36 173:39 168:38 131:51 61:21 X Sa 80:24 157:19 96:40 34:03 23:35 158:36 15:04 10:06 68:17 97:27 X Ur 95:28 142:15 111:44 49:07 38:36 173:39 15:04 5:07 54:09 112:25 X Ne 90:29 147:14 106:43 44:07 33:40 168:38 10:06 5:07 58:29 107:19 X Pl 144:29 89:57 156:32 100:46 91:16 131:51 68:17 54:09 58:29 151:30 X X 19:02 104:59 6:57 63:41 74:24 61:21 97:27 112:25 107:19 151:30 X X X X X X X X X EOFxEOF len=`wc -c < Man.txt.2` if expr $len != 29650 > /dev/null then echo Length of Man.txt.2 is $len but it should be 29650. fi # if Man.txt.1 exists, then the first part of the manual has already been # extracted from its shar file, and we stick this one after it to form the # complete manual, Man.txt. if test -w Man.txt.1 then echo catting Man.txt.2 to Man.txt.1 to form Man.txt cat Man.txt.2 >> Man.txt.1 rm Man.txt.2 mv Man.txt.1 Man.txt fi