aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gawk.info1160
-rw-r--r--doc/gawk.texi55
-rw-r--r--doc/gawktexi.in55
4 files changed, 632 insertions, 643 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 001b7258..5ccab2db 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Starting on reviewer comments.
+ Update acknowledgements.
+
2014-08-06 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: Misc minor additions.
diff --git a/doc/gawk.info b/doc/gawk.info
index 5a07d84d..8035803b 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -1159,13 +1159,6 @@ system for Intel(R), Power Architecture, Sun SPARC, IBM S/390, and other
systems.(2) Many GNU/Linux distributions are available for download
from the Internet.
- (There are numerous other freely available, Unix-like operating
-systems based on the Berkeley Software Distribution, and some of them
-use recent versions of `gawk' for their versions of `awk'. NetBSD
-(http://www.netbsd.org), FreeBSD (http://www.freebsd.org), and OpenBSD
-(http://www.openbsd.org) are three of the most popular ones, but there
-are others.)
-
The Info file itself has gone through a number of previous editions.
Paul Rubin wrote the very first draft of `The GAWK Manual'; it was
around 40 pages in size. Diane Close and Richard Stallman improved it,
@@ -1300,16 +1293,26 @@ be a pleasure working with this team of fine people.
Notable code and documentation contributions were made by a number
of people. *Note Contributors::, for the full list.
- Thanks to Patrice Dumas for the new `makeinfo' program. Thanks to
+ Thanks to Patrice Dumas for the new `makeinfo' program. Thanks to
Karl Berry who continues to work to keep the Texinfo markup language
sane.
+ Robert P.J. Day, Michael Brennan and Brian Kernighan kindly acted as
+reviewers for the 2015 edition of this Info file. Their feedback helped
+improve the final work.
+
I would like to thank Brian Kernighan for invaluable assistance
during the testing and debugging of `gawk', and for ongoing help and
advice in clarifying numerous points about the language. We could not
have done nearly as good a job on either `gawk' or its documentation
without his help.
+ Brian is in a class by himself as a programmer and technical author.
+I have to thank him (yet again) for his ongoing friendship and the
+role-model he has been for me for close to 30 years! Having him as a
+reviewer is an exciting privilege. It has also been extremely
+humbling...
+
I must thank my wonderful wife, Miriam, for her patience through the
many versions of this project, for her proofreading, and for sharing me
with the computer. I would like to thank my parents for their love,
@@ -1927,12 +1930,13 @@ different ways to do the same things shown here:
* Print the length of the longest line in `data':
- expand data | awk '{ if (x < length()) x = length() }
+ expand data | awk '{ if (x < length($0)) x = length($0) }
END { print "maximum line length is " x }'
+ This example differs slightly from the first example in this list:
The input is processed by the `expand' utility to change TABs into
spaces, so the widths compared are actually the right-margin
- columns.
+ columns, as opposed to the number of input characters on each line.
* Print every line that has at least one field:
@@ -6786,9 +6790,9 @@ message to standard error in an `awk' program is as follows:
This works by opening a pipeline to a shell command that can access the
standard error stream that it inherits from the `awk' process. This is
-far from elegant, and it is also inefficient, because it requires a
-separate process. So people writing `awk' programs often don't do
-this. Instead, they send the error messages to the screen, like this:
+far from elegant, and it also requires a separate process. So people
+writing `awk' programs often don't do this. Instead, they send the
+error messages to the screen, like this:
print "Serious error detected!" > "/dev/tty"
@@ -7803,8 +7807,9 @@ Otherwise, it's parsed as follows:
=> -12 (-24)
=> -12-24
- As mentioned earlier, when doing concatenation, _parenthesize_.
-Otherwise, you're never quite sure what you'll get.
+ As mentioned earlier, when mixing concatenation with other
+operators, _parenthesize_. Otherwise, you're never quite sure what
+you'll get.
---------- Footnotes ----------
@@ -8138,16 +8143,11 @@ File: gawk.info, Node: Variable Typing, Next: Comparison Operators, Up: Typin
6.3.2.1 String Type Versus Numeric Type
.......................................
-The 1992 POSIX standard introduced the concept of a "numeric string",
-which is simply a string that looks like a number--for example,
-`" +2"'. This concept is used for determining the type of a variable.
-The type of the variable is important because the types of two variables
-determine how they are compared.
-
- The various versions of the POSIX standard did not get the rules
-quite right for several editions. Fortunately, as of at least the 2008
-standard (and possibly earlier), the standard has been fixed, and
-variable typing follows these rules:(1)
+The POSIX standard introduced the concept of a "numeric string", which
+is simply a string that looks like a number--for example, `" +2"'.
+This concept is used for determining the type of a variable. The type
+of the variable is important because the types of two variables
+determine how they are compared. Variable typing follows these rules:
* A numeric constant or the result of a numeric operation has the
NUMERIC attribute.
@@ -8225,11 +8225,6 @@ comparison between the two different constants is true, `0' otherwise:
$ echo ' +3.14' | gawk '{ print $1 == 3.14 }' True
-| 1
- ---------- Footnotes ----------
-
- (1) `gawk' has followed these rules for many years, and it is
-gratifying that the POSIX standard is also now correct.
-

File: gawk.info, Node: Comparison Operators, Next: POSIX String Comparison, Prev: Variable Typing, Up: Typing and Comparison
@@ -11695,7 +11690,8 @@ brackets ([ ]):
`log(X)'
Return the natural logarithm of X, if X is positive; otherwise,
- report an error.
+ return `NaN' ("not a number") on IEEE 754 systems. Additionally,
+ `gawk' prints a warning message when `x' is negative.
`rand()'
Return a random number. The values of `rand()' are uniformly
@@ -31198,7 +31194,6 @@ Index
* algorithms: Basic High Level. (line 68)
* allocating memory for extensions: Memory Allocation Functions.
(line 6)
-* Alpha (DEC): Manual History. (line 28)
* amazing awk assembler (aaa): Glossary. (line 11)
* amazingly workable formatter (awf): Glossary. (line 24)
* ambiguity, syntactic: /= operator vs. /=.../ regexp constant: Assignment Ops.
@@ -31614,7 +31609,7 @@ Index
(line 131)
* close() function, two-way pipes and: Two-way I/O. (line 77)
* Close, Diane <1>: Contributors. (line 20)
-* Close, Diane: Manual History. (line 41)
+* Close, Diane: Manual History. (line 34)
* Collado, Manuel: Acknowledgments. (line 60)
* collating elements: Bracket Expressions. (line 77)
* collating symbols: Bracket Expressions. (line 84)
@@ -32399,7 +32394,7 @@ Index
(line 47)
* functions, user-defined, next/nextfile statements and: Next Statement.
(line 45)
-* G-d: Acknowledgments. (line 82)
+* G-d: Acknowledgments. (line 92)
* Garfinkle, Scott: Contributors. (line 34)
* gawk program, dynamic profiling: Profiling. (line 179)
* gawk version: Auto-set. (line 199)
@@ -32725,7 +32720,7 @@ Index
* Kernighan, Brian <6>: Library Functions. (line 12)
* Kernighan, Brian <7>: Concatenation. (line 6)
* Kernighan, Brian <8>: Getline/Pipe. (line 6)
-* Kernighan, Brian <9>: Acknowledgments. (line 76)
+* Kernighan, Brian <9>: Acknowledgments. (line 80)
* Kernighan, Brian <10>: Conventions. (line 34)
* Kernighan, Brian: History. (line 17)
* kill command, dynamic profiling: Profiling. (line 188)
@@ -33279,12 +33274,12 @@ Index
* Rakitzis, Byron: History Sorting. (line 25)
* Ramey, Chet <1>: General Data Types. (line 6)
* Ramey, Chet: Acknowledgments. (line 60)
-* rand: Numeric Functions. (line 34)
+* rand: Numeric Functions. (line 35)
* random numbers, Cliff: Cliff Random Function.
(line 6)
* random numbers, rand()/srand() functions: Numeric Functions.
- (line 34)
-* random numbers, seed of: Numeric Functions. (line 64)
+ (line 35)
+* random numbers, seed of: Numeric Functions. (line 65)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
* range patterns, line continuation and: Ranges. (line 65)
@@ -33406,11 +33401,11 @@ Index
* Robbins, Arnold: Command Line Field Separator.
(line 73)
* Robbins, Bill: Getline/Pipe. (line 39)
-* Robbins, Harry: Acknowledgments. (line 82)
-* Robbins, Jean: Acknowledgments. (line 82)
+* Robbins, Harry: Acknowledgments. (line 92)
+* Robbins, Jean: Acknowledgments. (line 92)
* Robbins, Miriam <1>: Passwd Functions. (line 90)
* Robbins, Miriam <2>: Getline/Pipe. (line 39)
-* Robbins, Miriam: Acknowledgments. (line 82)
+* Robbins, Miriam: Acknowledgments. (line 92)
* Rommel, Kai Uwe: Contributors. (line 42)
* round to nearest integer: Numeric Functions. (line 23)
* round() user-defined function: Round Function. (line 16)
@@ -33462,7 +33457,7 @@ Index
* sed utility <2>: Simple Sed. (line 6)
* sed utility: Field Splitting Summary.
(line 46)
-* seeding random number generator: Numeric Functions. (line 64)
+* seeding random number generator: Numeric Functions. (line 65)
* semicolon (;), AWKPATH variable and: PC Using. (line 10)
* semicolon (;), separating statements in actions <1>: Statements.
(line 10)
@@ -33564,8 +33559,8 @@ Index
* SIGUSR1 signal, for dynamic profiling: Profiling. (line 188)
* silent debugger command: Debugger Execution Control.
(line 10)
-* sin: Numeric Functions. (line 75)
-* sine: Numeric Functions. (line 75)
+* sin: Numeric Functions. (line 76)
+* sine: Numeric Functions. (line 76)
* single quote ('): One-shot. (line 15)
* single quote (') in gawk command lines: Long. (line 33)
* single quote ('), in shell commands: Quoting. (line 48)
@@ -33615,10 +33610,10 @@ Index
* sprintf() function, OFMT variable and: User-modified. (line 114)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
-* sqrt: Numeric Functions. (line 78)
+* sqrt: Numeric Functions. (line 79)
* square brackets ([]), regexp operator: Regexp Operators. (line 56)
-* square root: Numeric Functions. (line 78)
-* srand: Numeric Functions. (line 82)
+* square root: Numeric Functions. (line 79)
+* srand: Numeric Functions. (line 83)
* stack frame: Debugging Terms. (line 10)
* Stallman, Richard <1>: Glossary. (line 296)
* Stallman, Richard <2>: Contributors. (line 23)
@@ -33971,541 +33966,540 @@ Node: This Manual53600
Ref: This Manual-Footnote-159379
Node: Conventions59479
Node: Manual History61635
-Ref: Manual History-Footnote-165074
-Ref: Manual History-Footnote-265115
-Node: How To Contribute65189
-Node: Acknowledgments66428
-Node: Getting Started70724
-Node: Running gawk73158
-Node: One-shot74348
-Node: Read Terminal75573
-Ref: Read Terminal-Footnote-177223
-Ref: Read Terminal-Footnote-277499
-Node: Long77670
-Node: Executable Scripts79046
-Ref: Executable Scripts-Footnote-180879
-Ref: Executable Scripts-Footnote-280981
-Node: Comments81528
-Node: Quoting84001
-Node: DOS Quoting89317
-Node: Sample Data Files89992
-Node: Very Simple92507
-Node: Two Rules97145
-Node: More Complex99039
-Ref: More Complex-Footnote-1101971
-Node: Statements/Lines102056
-Ref: Statements/Lines-Footnote-1106512
-Node: Other Features106777
-Node: When107705
-Node: Intro Summary109875
-Node: Invoking Gawk110641
-Node: Command Line112156
-Node: Options112947
-Ref: Options-Footnote-1128776
-Node: Other Arguments128801
-Node: Naming Standard Input131463
-Node: Environment Variables132557
-Node: AWKPATH Variable133115
-Ref: AWKPATH Variable-Footnote-1135987
-Ref: AWKPATH Variable-Footnote-2136032
-Node: AWKLIBPATH Variable136292
-Node: Other Environment Variables137051
-Node: Exit Status140706
-Node: Include Files141381
-Node: Loading Shared Libraries144959
-Node: Obsolete146343
-Node: Undocumented147040
-Node: Invoking Summary147307
-Node: Regexp148887
-Node: Regexp Usage150337
-Node: Escape Sequences152370
-Node: Regexp Operators158037
-Ref: Regexp Operators-Footnote-1165517
-Ref: Regexp Operators-Footnote-2165664
-Node: Bracket Expressions165762
-Ref: table-char-classes167652
-Node: GNU Regexp Operators170592
-Node: Case-sensitivity174315
-Ref: Case-sensitivity-Footnote-1177207
-Ref: Case-sensitivity-Footnote-2177442
-Node: Leftmost Longest177550
-Node: Computed Regexps178751
-Node: Regexp Summary182123
-Node: Reading Files183594
-Node: Records185686
-Node: awk split records186429
-Node: gawk split records191287
-Ref: gawk split records-Footnote-1195808
-Node: Fields195845
-Ref: Fields-Footnote-1198809
-Node: Nonconstant Fields198895
-Ref: Nonconstant Fields-Footnote-1201125
-Node: Changing Fields201327
-Node: Field Separators207281
-Node: Default Field Splitting209983
-Node: Regexp Field Splitting211100
-Node: Single Character Fields214441
-Node: Command Line Field Separator215500
-Node: Full Line Fields218842
-Ref: Full Line Fields-Footnote-1219350
-Node: Field Splitting Summary219396
-Ref: Field Splitting Summary-Footnote-1222495
-Node: Constant Size222596
-Node: Splitting By Content227203
-Ref: Splitting By Content-Footnote-1230953
-Node: Multiple Line230993
-Ref: Multiple Line-Footnote-1236849
-Node: Getline237028
-Node: Plain Getline239244
-Node: Getline/Variable241339
-Node: Getline/File242486
-Node: Getline/Variable/File243870
-Ref: Getline/Variable/File-Footnote-1245469
-Node: Getline/Pipe245556
-Node: Getline/Variable/Pipe248255
-Node: Getline/Coprocess249362
-Node: Getline/Variable/Coprocess250614
-Node: Getline Notes251351
-Node: Getline Summary254155
-Ref: table-getline-variants254563
-Node: Read Timeout255475
-Ref: Read Timeout-Footnote-1259302
-Node: Command line directories259360
-Node: Input Summary260264
-Node: Input Exercises263401
-Node: Printing264134
-Node: Print265856
-Node: Print Examples267197
-Node: Output Separators269976
-Node: OFMT271992
-Node: Printf273350
-Node: Basic Printf274256
-Node: Control Letters275795
-Node: Format Modifiers279786
-Node: Printf Examples285813
-Node: Redirection288277
-Node: Special Files295249
-Node: Special FD295780
-Ref: Special FD-Footnote-1299404
-Node: Special Network299478
-Node: Special Caveats300328
-Node: Close Files And Pipes301124
-Ref: Close Files And Pipes-Footnote-1308285
-Ref: Close Files And Pipes-Footnote-2308433
-Node: Output Summary308583
-Node: Output exercises309580
-Node: Expressions310260
-Node: Values311445
-Node: Constants312121
-Node: Scalar Constants312801
-Ref: Scalar Constants-Footnote-1313660
-Node: Nondecimal-numbers313910
-Node: Regexp Constants316910
-Node: Using Constant Regexps317385
-Node: Variables320455
-Node: Using Variables321110
-Node: Assignment Options322834
-Node: Conversion324709
-Node: Strings And Numbers325233
-Ref: Strings And Numbers-Footnote-1328295
-Node: Locale influences conversions328404
-Ref: table-locale-affects331121
-Node: All Operators331709
-Node: Arithmetic Ops332339
-Node: Concatenation334844
-Ref: Concatenation-Footnote-1337640
-Node: Assignment Ops337760
-Ref: table-assign-ops342743
-Node: Increment Ops344060
-Node: Truth Values and Conditions347498
-Node: Truth Values348581
-Node: Typing and Comparison349630
-Node: Variable Typing350423
-Ref: Variable Typing-Footnote-1354323
-Node: Comparison Operators354445
-Ref: table-relational-ops354855
-Node: POSIX String Comparison358405
-Ref: POSIX String Comparison-Footnote-1359489
-Node: Boolean Ops359627
-Ref: Boolean Ops-Footnote-1363697
-Node: Conditional Exp363788
-Node: Function Calls365515
-Node: Precedence369395
-Node: Locales373064
-Node: Expressions Summary374695
-Node: Patterns and Actions377236
-Node: Pattern Overview378352
-Node: Regexp Patterns380029
-Node: Expression Patterns380572
-Node: Ranges384353
-Node: BEGIN/END387459
-Node: Using BEGIN/END388221
-Ref: Using BEGIN/END-Footnote-1390957
-Node: I/O And BEGIN/END391063
-Node: BEGINFILE/ENDFILE393348
-Node: Empty396279
-Node: Using Shell Variables396596
-Node: Action Overview398879
-Node: Statements401206
-Node: If Statement403054
-Node: While Statement404552
-Node: Do Statement406596
-Node: For Statement407752
-Node: Switch Statement410904
-Node: Break Statement413007
-Node: Continue Statement415062
-Node: Next Statement416855
-Node: Nextfile Statement419245
-Node: Exit Statement421900
-Node: Built-in Variables424304
-Node: User-modified425431
-Ref: User-modified-Footnote-1433120
-Node: Auto-set433182
-Ref: Auto-set-Footnote-1445764
-Ref: Auto-set-Footnote-2445969
-Node: ARGC and ARGV446025
-Node: Pattern Action Summary449879
-Node: Arrays452102
-Node: Array Basics453651
-Node: Array Intro454477
-Ref: figure-array-elements456450
-Node: Reference to Elements458857
-Node: Assigning Elements461130
-Node: Array Example461621
-Node: Scanning an Array463353
-Node: Controlling Scanning466368
-Ref: Controlling Scanning-Footnote-1471541
-Node: Delete471857
-Ref: Delete-Footnote-1474622
-Node: Numeric Array Subscripts474679
-Node: Uninitialized Subscripts476862
-Node: Multidimensional478487
-Node: Multiscanning481580
-Node: Arrays of Arrays483169
-Node: Arrays Summary487832
-Node: Functions489937
-Node: Built-in490810
-Node: Calling Built-in491888
-Node: Numeric Functions493876
-Ref: Numeric Functions-Footnote-1497710
-Ref: Numeric Functions-Footnote-2498067
-Ref: Numeric Functions-Footnote-3498115
-Node: String Functions498384
-Ref: String Functions-Footnote-1521395
-Ref: String Functions-Footnote-2521524
-Ref: String Functions-Footnote-3521772
-Node: Gory Details521859
-Ref: table-sub-escapes523528
-Ref: table-sub-posix-92524882
-Ref: table-sub-proposed526233
-Ref: table-posix-sub527587
-Ref: table-gensub-escapes529132
-Ref: Gory Details-Footnote-1530308
-Ref: Gory Details-Footnote-2530359
-Node: I/O Functions530510
-Ref: I/O Functions-Footnote-1537633
-Node: Time Functions537780
-Ref: Time Functions-Footnote-1548244
-Ref: Time Functions-Footnote-2548312
-Ref: Time Functions-Footnote-3548470
-Ref: Time Functions-Footnote-4548581
-Ref: Time Functions-Footnote-5548693
-Ref: Time Functions-Footnote-6548920
-Node: Bitwise Functions549186
-Ref: table-bitwise-ops549748
-Ref: Bitwise Functions-Footnote-1553993
-Node: Type Functions554177
-Node: I18N Functions555319
-Node: User-defined556964
-Node: Definition Syntax557768
-Ref: Definition Syntax-Footnote-1562947
-Node: Function Example563016
-Ref: Function Example-Footnote-1565660
-Node: Function Caveats565682
-Node: Calling A Function566200
-Node: Variable Scope567155
-Node: Pass By Value/Reference570143
-Node: Return Statement573651
-Node: Dynamic Typing576635
-Node: Indirect Calls577564
-Node: Functions Summary587277
-Node: Library Functions589816
-Ref: Library Functions-Footnote-1593434
-Ref: Library Functions-Footnote-2593577
-Node: Library Names593748
-Ref: Library Names-Footnote-1597221
-Ref: Library Names-Footnote-2597441
-Node: General Functions597527
-Node: Strtonum Function598555
-Node: Assert Function601335
-Node: Round Function604661
-Node: Cliff Random Function606202
-Node: Ordinal Functions607218
-Ref: Ordinal Functions-Footnote-1610295
-Ref: Ordinal Functions-Footnote-2610547
-Node: Join Function610758
-Ref: Join Function-Footnote-1612529
-Node: Getlocaltime Function612729
-Node: Readfile Function616465
-Node: Data File Management618304
-Node: Filetrans Function618936
-Node: Rewind Function623005
-Node: File Checking624563
-Ref: File Checking-Footnote-1625695
-Node: Empty Files625896
-Node: Ignoring Assigns627875
-Node: Getopt Function629429
-Ref: Getopt Function-Footnote-1640732
-Node: Passwd Functions640935
-Ref: Passwd Functions-Footnote-1649914
-Node: Group Functions650002
-Ref: Group Functions-Footnote-1657943
-Node: Walking Arrays658156
-Node: Library Functions Summary659759
-Node: Library exercises661147
-Node: Sample Programs662427
-Node: Running Examples663197
-Node: Clones663925
-Node: Cut Program665149
-Node: Egrep Program675017
-Ref: Egrep Program-Footnote-1682988
-Node: Id Program683098
-Node: Split Program686762
-Ref: Split Program-Footnote-1690300
-Node: Tee Program690428
-Node: Uniq Program693235
-Node: Wc Program700665
-Ref: Wc Program-Footnote-1704930
-Node: Miscellaneous Programs705022
-Node: Dupword Program706235
-Node: Alarm Program708266
-Node: Translate Program713080
-Ref: Translate Program-Footnote-1717471
-Ref: Translate Program-Footnote-2717741
-Node: Labels Program717875
-Ref: Labels Program-Footnote-1721246
-Node: Word Sorting721330
-Node: History Sorting725373
-Node: Extract Program727209
-Node: Simple Sed734745
-Node: Igawk Program737807
-Ref: Igawk Program-Footnote-1752118
-Ref: Igawk Program-Footnote-2752319
-Node: Anagram Program752457
-Node: Signature Program755525
-Node: Programs Summary756772
-Node: Programs Exercises757987
-Node: Advanced Features761638
-Node: Nondecimal Data763586
-Node: Array Sorting765163
-Node: Controlling Array Traversal765860
-Node: Array Sorting Functions774140
-Ref: Array Sorting Functions-Footnote-1778047
-Node: Two-way I/O778241
-Ref: Two-way I/O-Footnote-1783757
-Node: TCP/IP Networking783839
-Node: Profiling786683
-Node: Advanced Features Summary794225
-Node: Internationalization796089
-Node: I18N and L10N797569
-Node: Explaining gettext798255
-Ref: Explaining gettext-Footnote-1803395
-Ref: Explaining gettext-Footnote-2803579
-Node: Programmer i18n803744
-Node: Translator i18n807969
-Node: String Extraction808763
-Ref: String Extraction-Footnote-1809724
-Node: Printf Ordering809810
-Ref: Printf Ordering-Footnote-1812592
-Node: I18N Portability812656
-Ref: I18N Portability-Footnote-1815105
-Node: I18N Example815168
-Ref: I18N Example-Footnote-1817890
-Node: Gawk I18N817962
-Node: I18N Summary818600
-Node: Debugger819939
-Node: Debugging820961
-Node: Debugging Concepts821402
-Node: Debugging Terms823258
-Node: Awk Debugging825855
-Node: Sample Debugging Session826747
-Node: Debugger Invocation827267
-Node: Finding The Bug828600
-Node: List of Debugger Commands835082
-Node: Breakpoint Control836414
-Node: Debugger Execution Control840078
-Node: Viewing And Changing Data843438
-Node: Execution Stack846796
-Node: Debugger Info848309
-Node: Miscellaneous Debugger Commands852303
-Node: Readline Support857487
-Node: Limitations858379
-Node: Debugging Summary860653
-Node: Arbitrary Precision Arithmetic861817
-Node: Computer Arithmetic863146
-Ref: Computer Arithmetic-Footnote-1867533
-Node: Math Definitions867590
-Ref: table-ieee-formats870474
-Node: MPFR features870978
-Node: FP Math Caution872620
-Ref: FP Math Caution-Footnote-1873661
-Node: Inexactness of computations874030
-Node: Inexact representation874978
-Node: Comparing FP Values876333
-Node: Errors accumulate877297
-Node: Getting Accuracy878730
-Node: Try To Round881389
-Node: Setting precision882288
-Ref: table-predefined-precision-strings882970
-Node: Setting the rounding mode884763
-Ref: table-gawk-rounding-modes885127
-Ref: Setting the rounding mode-Footnote-1888581
-Node: Arbitrary Precision Integers888760
-Ref: Arbitrary Precision Integers-Footnote-1891763
-Node: POSIX Floating Point Problems891912
-Ref: POSIX Floating Point Problems-Footnote-1895788
-Node: Floating point summary895826
-Node: Dynamic Extensions898043
-Node: Extension Intro899595
-Node: Plugin License900860
-Node: Extension Mechanism Outline901545
-Ref: figure-load-extension901969
-Ref: figure-load-new-function903454
-Ref: figure-call-new-function904456
-Node: Extension API Description906440
-Node: Extension API Functions Introduction907890
-Node: General Data Types912755
-Ref: General Data Types-Footnote-1918448
-Node: Requesting Values918747
-Ref: table-value-types-returned919484
-Node: Memory Allocation Functions920442
-Ref: Memory Allocation Functions-Footnote-1923189
-Node: Constructor Functions923285
-Node: Registration Functions925043
-Node: Extension Functions925728
-Node: Exit Callback Functions928030
-Node: Extension Version String929279
-Node: Input Parsers929929
-Node: Output Wrappers939743
-Node: Two-way processors944259
-Node: Printing Messages946463
-Ref: Printing Messages-Footnote-1947540
-Node: Updating `ERRNO'947692
-Node: Accessing Parameters948431
-Node: Symbol Table Access949661
-Node: Symbol table by name950175
-Node: Symbol table by cookie952151
-Ref: Symbol table by cookie-Footnote-1956284
-Node: Cached values956347
-Ref: Cached values-Footnote-1959851
-Node: Array Manipulation959942
-Ref: Array Manipulation-Footnote-1961040
-Node: Array Data Types961079
-Ref: Array Data Types-Footnote-1963782
-Node: Array Functions963874
-Node: Flattening Arrays967748
-Node: Creating Arrays974600
-Node: Extension API Variables979331
-Node: Extension Versioning979967
-Node: Extension API Informational Variables981868
-Node: Extension API Boilerplate982954
-Node: Finding Extensions986758
-Node: Extension Example987318
-Node: Internal File Description988048
-Node: Internal File Ops992139
-Ref: Internal File Ops-Footnote-11003571
-Node: Using Internal File Ops1003711
-Ref: Using Internal File Ops-Footnote-11006058
-Node: Extension Samples1006326
-Node: Extension Sample File Functions1007850
-Node: Extension Sample Fnmatch1015418
-Node: Extension Sample Fork1016900
-Node: Extension Sample Inplace1018113
-Node: Extension Sample Ord1019788
-Node: Extension Sample Readdir1020624
-Ref: table-readdir-file-types1021480
-Node: Extension Sample Revout1022279
-Node: Extension Sample Rev2way1022870
-Node: Extension Sample Read write array1023611
-Node: Extension Sample Readfile1025490
-Node: Extension Sample API Tests1026590
-Node: Extension Sample Time1027115
-Node: gawkextlib1028430
-Node: Extension summary1031243
-Node: Extension Exercises1034936
-Node: Language History1035658
-Node: V7/SVR3.11037301
-Node: SVR41039621
-Node: POSIX1041063
-Node: BTL1042449
-Node: POSIX/GNU1043183
-Node: Feature History1048926
-Node: Common Extensions1062056
-Node: Ranges and Locales1063368
-Ref: Ranges and Locales-Footnote-11067985
-Ref: Ranges and Locales-Footnote-21068012
-Ref: Ranges and Locales-Footnote-31068246
-Node: Contributors1068467
-Node: History summary1073892
-Node: Installation1075261
-Node: Gawk Distribution1076212
-Node: Getting1076696
-Node: Extracting1077520
-Node: Distribution contents1079162
-Node: Unix Installation1084879
-Node: Quick Installation1085496
-Node: Additional Configuration Options1087938
-Node: Configuration Philosophy1089676
-Node: Non-Unix Installation1092027
-Node: PC Installation1092485
-Node: PC Binary Installation1093796
-Node: PC Compiling1095644
-Ref: PC Compiling-Footnote-11098643
-Node: PC Testing1098748
-Node: PC Using1099924
-Node: Cygwin1104082
-Node: MSYS1104891
-Node: VMS Installation1105405
-Node: VMS Compilation1106201
-Ref: VMS Compilation-Footnote-11107423
-Node: VMS Dynamic Extensions1107481
-Node: VMS Installation Details1108854
-Node: VMS Running1111106
-Node: VMS GNV1113940
-Node: VMS Old Gawk1114663
-Node: Bugs1115133
-Node: Other Versions1119137
-Node: Installation summary1125392
-Node: Notes1126448
-Node: Compatibility Mode1127313
-Node: Additions1128095
-Node: Accessing The Source1129020
-Node: Adding Code1130456
-Node: New Ports1136634
-Node: Derived Files1141115
-Ref: Derived Files-Footnote-11146196
-Ref: Derived Files-Footnote-21146230
-Ref: Derived Files-Footnote-31146826
-Node: Future Extensions1146940
-Node: Implementation Limitations1147546
-Node: Extension Design1148794
-Node: Old Extension Problems1149948
-Ref: Old Extension Problems-Footnote-11151465
-Node: Extension New Mechanism Goals1151522
-Ref: Extension New Mechanism Goals-Footnote-11154882
-Node: Extension Other Design Decisions1155071
-Node: Extension Future Growth1157177
-Node: Old Extension Mechanism1158013
-Node: Notes summary1159775
-Node: Basic Concepts1160961
-Node: Basic High Level1161642
-Ref: figure-general-flow1161914
-Ref: figure-process-flow1162513
-Ref: Basic High Level-Footnote-11165742
-Node: Basic Data Typing1165927
-Node: Glossary1169255
-Node: Copying1194407
-Node: GNU Free Documentation License1231963
-Node: Index1257099
+Ref: Manual History-Footnote-164714
+Ref: Manual History-Footnote-264755
+Node: How To Contribute64829
+Node: Acknowledgments66068
+Node: Getting Started70816
+Node: Running gawk73250
+Node: One-shot74440
+Node: Read Terminal75665
+Ref: Read Terminal-Footnote-177315
+Ref: Read Terminal-Footnote-277591
+Node: Long77762
+Node: Executable Scripts79138
+Ref: Executable Scripts-Footnote-180971
+Ref: Executable Scripts-Footnote-281073
+Node: Comments81620
+Node: Quoting84093
+Node: DOS Quoting89409
+Node: Sample Data Files90084
+Node: Very Simple92599
+Node: Two Rules97372
+Node: More Complex99266
+Ref: More Complex-Footnote-1102198
+Node: Statements/Lines102283
+Ref: Statements/Lines-Footnote-1106739
+Node: Other Features107004
+Node: When107932
+Node: Intro Summary110102
+Node: Invoking Gawk110868
+Node: Command Line112383
+Node: Options113174
+Ref: Options-Footnote-1129003
+Node: Other Arguments129028
+Node: Naming Standard Input131690
+Node: Environment Variables132784
+Node: AWKPATH Variable133342
+Ref: AWKPATH Variable-Footnote-1136214
+Ref: AWKPATH Variable-Footnote-2136259
+Node: AWKLIBPATH Variable136519
+Node: Other Environment Variables137278
+Node: Exit Status140933
+Node: Include Files141608
+Node: Loading Shared Libraries145186
+Node: Obsolete146570
+Node: Undocumented147267
+Node: Invoking Summary147534
+Node: Regexp149114
+Node: Regexp Usage150564
+Node: Escape Sequences152597
+Node: Regexp Operators158264
+Ref: Regexp Operators-Footnote-1165744
+Ref: Regexp Operators-Footnote-2165891
+Node: Bracket Expressions165989
+Ref: table-char-classes167879
+Node: GNU Regexp Operators170819
+Node: Case-sensitivity174542
+Ref: Case-sensitivity-Footnote-1177434
+Ref: Case-sensitivity-Footnote-2177669
+Node: Leftmost Longest177777
+Node: Computed Regexps178978
+Node: Regexp Summary182350
+Node: Reading Files183821
+Node: Records185913
+Node: awk split records186656
+Node: gawk split records191514
+Ref: gawk split records-Footnote-1196035
+Node: Fields196072
+Ref: Fields-Footnote-1199036
+Node: Nonconstant Fields199122
+Ref: Nonconstant Fields-Footnote-1201352
+Node: Changing Fields201554
+Node: Field Separators207508
+Node: Default Field Splitting210210
+Node: Regexp Field Splitting211327
+Node: Single Character Fields214668
+Node: Command Line Field Separator215727
+Node: Full Line Fields219069
+Ref: Full Line Fields-Footnote-1219577
+Node: Field Splitting Summary219623
+Ref: Field Splitting Summary-Footnote-1222722
+Node: Constant Size222823
+Node: Splitting By Content227430
+Ref: Splitting By Content-Footnote-1231180
+Node: Multiple Line231220
+Ref: Multiple Line-Footnote-1237076
+Node: Getline237255
+Node: Plain Getline239471
+Node: Getline/Variable241566
+Node: Getline/File242713
+Node: Getline/Variable/File244097
+Ref: Getline/Variable/File-Footnote-1245696
+Node: Getline/Pipe245783
+Node: Getline/Variable/Pipe248482
+Node: Getline/Coprocess249589
+Node: Getline/Variable/Coprocess250841
+Node: Getline Notes251578
+Node: Getline Summary254382
+Ref: table-getline-variants254790
+Node: Read Timeout255702
+Ref: Read Timeout-Footnote-1259529
+Node: Command line directories259587
+Node: Input Summary260491
+Node: Input Exercises263628
+Node: Printing264361
+Node: Print266083
+Node: Print Examples267424
+Node: Output Separators270203
+Node: OFMT272219
+Node: Printf273577
+Node: Basic Printf274483
+Node: Control Letters276022
+Node: Format Modifiers280013
+Node: Printf Examples286040
+Node: Redirection288504
+Node: Special Files295476
+Node: Special FD296007
+Ref: Special FD-Footnote-1299604
+Node: Special Network299678
+Node: Special Caveats300528
+Node: Close Files And Pipes301324
+Ref: Close Files And Pipes-Footnote-1308485
+Ref: Close Files And Pipes-Footnote-2308633
+Node: Output Summary308783
+Node: Output exercises309780
+Node: Expressions310460
+Node: Values311645
+Node: Constants312321
+Node: Scalar Constants313001
+Ref: Scalar Constants-Footnote-1313860
+Node: Nondecimal-numbers314110
+Node: Regexp Constants317110
+Node: Using Constant Regexps317585
+Node: Variables320655
+Node: Using Variables321310
+Node: Assignment Options323034
+Node: Conversion324909
+Node: Strings And Numbers325433
+Ref: Strings And Numbers-Footnote-1328495
+Node: Locale influences conversions328604
+Ref: table-locale-affects331321
+Node: All Operators331909
+Node: Arithmetic Ops332539
+Node: Concatenation335044
+Ref: Concatenation-Footnote-1337863
+Node: Assignment Ops337983
+Ref: table-assign-ops342966
+Node: Increment Ops344283
+Node: Truth Values and Conditions347721
+Node: Truth Values348804
+Node: Typing and Comparison349853
+Node: Variable Typing350646
+Node: Comparison Operators354296
+Ref: table-relational-ops354706
+Node: POSIX String Comparison358256
+Ref: POSIX String Comparison-Footnote-1359340
+Node: Boolean Ops359478
+Ref: Boolean Ops-Footnote-1363548
+Node: Conditional Exp363639
+Node: Function Calls365366
+Node: Precedence369246
+Node: Locales372915
+Node: Expressions Summary374546
+Node: Patterns and Actions377087
+Node: Pattern Overview378203
+Node: Regexp Patterns379880
+Node: Expression Patterns380423
+Node: Ranges384204
+Node: BEGIN/END387310
+Node: Using BEGIN/END388072
+Ref: Using BEGIN/END-Footnote-1390808
+Node: I/O And BEGIN/END390914
+Node: BEGINFILE/ENDFILE393199
+Node: Empty396130
+Node: Using Shell Variables396447
+Node: Action Overview398730
+Node: Statements401057
+Node: If Statement402905
+Node: While Statement404403
+Node: Do Statement406447
+Node: For Statement407603
+Node: Switch Statement410755
+Node: Break Statement412858
+Node: Continue Statement414913
+Node: Next Statement416706
+Node: Nextfile Statement419096
+Node: Exit Statement421751
+Node: Built-in Variables424155
+Node: User-modified425282
+Ref: User-modified-Footnote-1432971
+Node: Auto-set433033
+Ref: Auto-set-Footnote-1445615
+Ref: Auto-set-Footnote-2445820
+Node: ARGC and ARGV445876
+Node: Pattern Action Summary449730
+Node: Arrays451953
+Node: Array Basics453502
+Node: Array Intro454328
+Ref: figure-array-elements456301
+Node: Reference to Elements458708
+Node: Assigning Elements460981
+Node: Array Example461472
+Node: Scanning an Array463204
+Node: Controlling Scanning466219
+Ref: Controlling Scanning-Footnote-1471392
+Node: Delete471708
+Ref: Delete-Footnote-1474473
+Node: Numeric Array Subscripts474530
+Node: Uninitialized Subscripts476713
+Node: Multidimensional478338
+Node: Multiscanning481431
+Node: Arrays of Arrays483020
+Node: Arrays Summary487683
+Node: Functions489788
+Node: Built-in490661
+Node: Calling Built-in491739
+Node: Numeric Functions493727
+Ref: Numeric Functions-Footnote-1497669
+Ref: Numeric Functions-Footnote-2498026
+Ref: Numeric Functions-Footnote-3498074
+Node: String Functions498343
+Ref: String Functions-Footnote-1521354
+Ref: String Functions-Footnote-2521483
+Ref: String Functions-Footnote-3521731
+Node: Gory Details521818
+Ref: table-sub-escapes523487
+Ref: table-sub-posix-92524841
+Ref: table-sub-proposed526192
+Ref: table-posix-sub527546
+Ref: table-gensub-escapes529091
+Ref: Gory Details-Footnote-1530267
+Ref: Gory Details-Footnote-2530318
+Node: I/O Functions530469
+Ref: I/O Functions-Footnote-1537592
+Node: Time Functions537739
+Ref: Time Functions-Footnote-1548203
+Ref: Time Functions-Footnote-2548271
+Ref: Time Functions-Footnote-3548429
+Ref: Time Functions-Footnote-4548540
+Ref: Time Functions-Footnote-5548652
+Ref: Time Functions-Footnote-6548879
+Node: Bitwise Functions549145
+Ref: table-bitwise-ops549707
+Ref: Bitwise Functions-Footnote-1553952
+Node: Type Functions554136
+Node: I18N Functions555278
+Node: User-defined556923
+Node: Definition Syntax557727
+Ref: Definition Syntax-Footnote-1562906
+Node: Function Example562975
+Ref: Function Example-Footnote-1565619
+Node: Function Caveats565641
+Node: Calling A Function566159
+Node: Variable Scope567114
+Node: Pass By Value/Reference570102
+Node: Return Statement573610
+Node: Dynamic Typing576594
+Node: Indirect Calls577523
+Node: Functions Summary587236
+Node: Library Functions589775
+Ref: Library Functions-Footnote-1593393
+Ref: Library Functions-Footnote-2593536
+Node: Library Names593707
+Ref: Library Names-Footnote-1597180
+Ref: Library Names-Footnote-2597400
+Node: General Functions597486
+Node: Strtonum Function598514
+Node: Assert Function601294
+Node: Round Function604620
+Node: Cliff Random Function606161
+Node: Ordinal Functions607177
+Ref: Ordinal Functions-Footnote-1610254
+Ref: Ordinal Functions-Footnote-2610506
+Node: Join Function610717
+Ref: Join Function-Footnote-1612488
+Node: Getlocaltime Function612688
+Node: Readfile Function616424
+Node: Data File Management618263
+Node: Filetrans Function618895
+Node: Rewind Function622964
+Node: File Checking624522
+Ref: File Checking-Footnote-1625654
+Node: Empty Files625855
+Node: Ignoring Assigns627834
+Node: Getopt Function629388
+Ref: Getopt Function-Footnote-1640691
+Node: Passwd Functions640894
+Ref: Passwd Functions-Footnote-1649873
+Node: Group Functions649961
+Ref: Group Functions-Footnote-1657902
+Node: Walking Arrays658115
+Node: Library Functions Summary659718
+Node: Library exercises661106
+Node: Sample Programs662386
+Node: Running Examples663156
+Node: Clones663884
+Node: Cut Program665108
+Node: Egrep Program674976
+Ref: Egrep Program-Footnote-1682947
+Node: Id Program683057
+Node: Split Program686721
+Ref: Split Program-Footnote-1690259
+Node: Tee Program690387
+Node: Uniq Program693194
+Node: Wc Program700624
+Ref: Wc Program-Footnote-1704889
+Node: Miscellaneous Programs704981
+Node: Dupword Program706194
+Node: Alarm Program708225
+Node: Translate Program713039
+Ref: Translate Program-Footnote-1717430
+Ref: Translate Program-Footnote-2717700
+Node: Labels Program717834
+Ref: Labels Program-Footnote-1721205
+Node: Word Sorting721289
+Node: History Sorting725332
+Node: Extract Program727168
+Node: Simple Sed734704
+Node: Igawk Program737766
+Ref: Igawk Program-Footnote-1752077
+Ref: Igawk Program-Footnote-2752278
+Node: Anagram Program752416
+Node: Signature Program755484
+Node: Programs Summary756731
+Node: Programs Exercises757946
+Node: Advanced Features761597
+Node: Nondecimal Data763545
+Node: Array Sorting765122
+Node: Controlling Array Traversal765819
+Node: Array Sorting Functions774099
+Ref: Array Sorting Functions-Footnote-1778006
+Node: Two-way I/O778200
+Ref: Two-way I/O-Footnote-1783716
+Node: TCP/IP Networking783798
+Node: Profiling786642
+Node: Advanced Features Summary794184
+Node: Internationalization796048
+Node: I18N and L10N797528
+Node: Explaining gettext798214
+Ref: Explaining gettext-Footnote-1803354
+Ref: Explaining gettext-Footnote-2803538
+Node: Programmer i18n803703
+Node: Translator i18n807928
+Node: String Extraction808722
+Ref: String Extraction-Footnote-1809683
+Node: Printf Ordering809769
+Ref: Printf Ordering-Footnote-1812551
+Node: I18N Portability812615
+Ref: I18N Portability-Footnote-1815064
+Node: I18N Example815127
+Ref: I18N Example-Footnote-1817849
+Node: Gawk I18N817921
+Node: I18N Summary818559
+Node: Debugger819898
+Node: Debugging820920
+Node: Debugging Concepts821361
+Node: Debugging Terms823217
+Node: Awk Debugging825814
+Node: Sample Debugging Session826706
+Node: Debugger Invocation827226
+Node: Finding The Bug828559
+Node: List of Debugger Commands835041
+Node: Breakpoint Control836373
+Node: Debugger Execution Control840037
+Node: Viewing And Changing Data843397
+Node: Execution Stack846755
+Node: Debugger Info848268
+Node: Miscellaneous Debugger Commands852262
+Node: Readline Support857446
+Node: Limitations858338
+Node: Debugging Summary860612
+Node: Arbitrary Precision Arithmetic861776
+Node: Computer Arithmetic863105
+Ref: Computer Arithmetic-Footnote-1867492
+Node: Math Definitions867549
+Ref: table-ieee-formats870433
+Node: MPFR features870937
+Node: FP Math Caution872579
+Ref: FP Math Caution-Footnote-1873620
+Node: Inexactness of computations873989
+Node: Inexact representation874937
+Node: Comparing FP Values876292
+Node: Errors accumulate877256
+Node: Getting Accuracy878689
+Node: Try To Round881348
+Node: Setting precision882247
+Ref: table-predefined-precision-strings882929
+Node: Setting the rounding mode884722
+Ref: table-gawk-rounding-modes885086
+Ref: Setting the rounding mode-Footnote-1888540
+Node: Arbitrary Precision Integers888719
+Ref: Arbitrary Precision Integers-Footnote-1891722
+Node: POSIX Floating Point Problems891871
+Ref: POSIX Floating Point Problems-Footnote-1895747
+Node: Floating point summary895785
+Node: Dynamic Extensions898002
+Node: Extension Intro899554
+Node: Plugin License900819
+Node: Extension Mechanism Outline901504
+Ref: figure-load-extension901928
+Ref: figure-load-new-function903413
+Ref: figure-call-new-function904415
+Node: Extension API Description906399
+Node: Extension API Functions Introduction907849
+Node: General Data Types912714
+Ref: General Data Types-Footnote-1918407
+Node: Requesting Values918706
+Ref: table-value-types-returned919443
+Node: Memory Allocation Functions920401
+Ref: Memory Allocation Functions-Footnote-1923148
+Node: Constructor Functions923244
+Node: Registration Functions925002
+Node: Extension Functions925687
+Node: Exit Callback Functions927989
+Node: Extension Version String929238
+Node: Input Parsers929888
+Node: Output Wrappers939702
+Node: Two-way processors944218
+Node: Printing Messages946422
+Ref: Printing Messages-Footnote-1947499
+Node: Updating `ERRNO'947651
+Node: Accessing Parameters948390
+Node: Symbol Table Access949620
+Node: Symbol table by name950134
+Node: Symbol table by cookie952110
+Ref: Symbol table by cookie-Footnote-1956243
+Node: Cached values956306
+Ref: Cached values-Footnote-1959810
+Node: Array Manipulation959901
+Ref: Array Manipulation-Footnote-1960999
+Node: Array Data Types961038
+Ref: Array Data Types-Footnote-1963741
+Node: Array Functions963833
+Node: Flattening Arrays967707
+Node: Creating Arrays974559
+Node: Extension API Variables979290
+Node: Extension Versioning979926
+Node: Extension API Informational Variables981827
+Node: Extension API Boilerplate982913
+Node: Finding Extensions986717
+Node: Extension Example987277
+Node: Internal File Description988007
+Node: Internal File Ops992098
+Ref: Internal File Ops-Footnote-11003530
+Node: Using Internal File Ops1003670
+Ref: Using Internal File Ops-Footnote-11006017
+Node: Extension Samples1006285
+Node: Extension Sample File Functions1007809
+Node: Extension Sample Fnmatch1015377
+Node: Extension Sample Fork1016859
+Node: Extension Sample Inplace1018072
+Node: Extension Sample Ord1019747
+Node: Extension Sample Readdir1020583
+Ref: table-readdir-file-types1021439
+Node: Extension Sample Revout1022238
+Node: Extension Sample Rev2way1022829
+Node: Extension Sample Read write array1023570
+Node: Extension Sample Readfile1025449
+Node: Extension Sample API Tests1026549
+Node: Extension Sample Time1027074
+Node: gawkextlib1028389
+Node: Extension summary1031202
+Node: Extension Exercises1034895
+Node: Language History1035617
+Node: V7/SVR3.11037260
+Node: SVR41039580
+Node: POSIX1041022
+Node: BTL1042408
+Node: POSIX/GNU1043142
+Node: Feature History1048885
+Node: Common Extensions1062015
+Node: Ranges and Locales1063327
+Ref: Ranges and Locales-Footnote-11067944
+Ref: Ranges and Locales-Footnote-21067971
+Ref: Ranges and Locales-Footnote-31068205
+Node: Contributors1068426
+Node: History summary1073851
+Node: Installation1075220
+Node: Gawk Distribution1076171
+Node: Getting1076655
+Node: Extracting1077479
+Node: Distribution contents1079121
+Node: Unix Installation1084838
+Node: Quick Installation1085455
+Node: Additional Configuration Options1087897
+Node: Configuration Philosophy1089635
+Node: Non-Unix Installation1091986
+Node: PC Installation1092444
+Node: PC Binary Installation1093755
+Node: PC Compiling1095603
+Ref: PC Compiling-Footnote-11098602
+Node: PC Testing1098707
+Node: PC Using1099883
+Node: Cygwin1104041
+Node: MSYS1104850
+Node: VMS Installation1105364
+Node: VMS Compilation1106160
+Ref: VMS Compilation-Footnote-11107382
+Node: VMS Dynamic Extensions1107440
+Node: VMS Installation Details1108813
+Node: VMS Running1111065
+Node: VMS GNV1113899
+Node: VMS Old Gawk1114622
+Node: Bugs1115092
+Node: Other Versions1119096
+Node: Installation summary1125351
+Node: Notes1126407
+Node: Compatibility Mode1127272
+Node: Additions1128054
+Node: Accessing The Source1128979
+Node: Adding Code1130415
+Node: New Ports1136593
+Node: Derived Files1141074
+Ref: Derived Files-Footnote-11146155
+Ref: Derived Files-Footnote-21146189
+Ref: Derived Files-Footnote-31146785
+Node: Future Extensions1146899
+Node: Implementation Limitations1147505
+Node: Extension Design1148753
+Node: Old Extension Problems1149907
+Ref: Old Extension Problems-Footnote-11151424
+Node: Extension New Mechanism Goals1151481
+Ref: Extension New Mechanism Goals-Footnote-11154841
+Node: Extension Other Design Decisions1155030
+Node: Extension Future Growth1157136
+Node: Old Extension Mechanism1157972
+Node: Notes summary1159734
+Node: Basic Concepts1160920
+Node: Basic High Level1161601
+Ref: figure-general-flow1161873
+Ref: figure-process-flow1162472
+Ref: Basic High Level-Footnote-11165701
+Node: Basic Data Typing1165886
+Node: Glossary1169214
+Node: Copying1194366
+Node: GNU Free Documentation License1231922
+Node: Index1257058

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 2465074b..89a212c3 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -1816,6 +1816,7 @@ see @uref{http://www.gnu.org, the GNU Project's home page}.
This @value{DOCUMENT} may also be read from
@uref{http://www.gnu.org/software/gawk/manual/, their web site}.
+@ifclear FOR_PRINT
A shell, an editor (Emacs), highly portable optimizing C, C++, and
Objective-C compilers, a symbolic debugger and dozens of large and
small utilities (such as @command{gawk}), have all been completed and are
@@ -1826,32 +1827,16 @@ stage of development.
@cindex Linux
@cindex GNU/Linux
@cindex operating systems, BSD-based
-@cindex Alpha (DEC)
Until the GNU operating system is more fully developed, you should
consider using GNU/Linux, a freely distributable, Unix-like operating
system for Intel@registeredsymbol{},
Power Architecture,
Sun SPARC, IBM S/390, and other
-@ifclear FOR_PRINT
systems.@footnote{The terminology ``GNU/Linux'' is explained
in the @ref{Glossary}.}
-@end ifclear
-@ifset FOR_PRINT
-systems.
-@end ifset
Many GNU/Linux distributions are
available for download from the Internet.
-
-(There are numerous other freely available, Unix-like operating systems
-based on the
-Berkeley Software Distribution, and some of them use recent versions
-of @command{gawk} for their versions of @command{awk}.
-@uref{http://www.netbsd.org, NetBSD},
-@uref{http://www.freebsd.org, FreeBSD},
-and
-@uref{http://www.openbsd.org, OpenBSD}
-are three of the most popular ones, but there
-are others.)
+@end ifclear
@ifnotinfo
The @value{DOCUMENT} you are reading is actually free---at least, the
@@ -2095,10 +2080,14 @@ people.
Notable code and documentation contributions were made by
a number of people. @xref{Contributors}, for the full list.
-Thanks to Patrice Dumas for the new @command{makeinfo} program.
+Thanks to Patrice Dumas for the new @command{makeinfo} program.
Thanks to Karl Berry who continues to work to keep
the Texinfo markup language sane.
+Robert P.J.@: Day, Michael Brennan and Brian Kernighan kindly acted as
+reviewers for the 2015 edition of this @value{DOCUMENT}. Their feedback
+helped improve the final work.
+
@cindex Kernighan, Brian
I would like to thank Brian Kernighan for invaluable assistance during the
testing and debugging of @command{gawk}, and for ongoing
@@ -2106,6 +2095,12 @@ help and advice in clarifying numerous points about the language.
We could not have done nearly as good a job on either @command{gawk}
or its documentation without his help.
+Brian is in a class by himself as a programmer and technical
+author. I have to thank him (yet again) for his ongoing friendship
+and the role-model he has been for me for close to 30 years!
+Having him as a reviewer is an exciting privilege. It has also
+been extremely humbling@enddots{}
+
@cindex Robbins, Miriam
@cindex Robbins, Jean
@cindex Robbins, Harry
@@ -3018,12 +3013,14 @@ action---so it uses the default action, printing the record.
Print the length of the longest line in @file{data}:
@example
-expand data | awk '@{ if (x < length()) x = length() @}
+expand data | awk '@{ if (x < length($0)) x = length($0) @}
END @{ print "maximum line length is " x @}'
@end example
+This example differs slightly from the first example in this list:
The input is processed by the @command{expand} utility to change TABs
-into spaces, so the widths compared are actually the right-margin columns.
+into spaces, so the widths compared are actually the right-margin columns,
+as opposed to the number of input characters on each line.
@item
Print every line that has at least one field:
@@ -9745,7 +9742,8 @@ print "Serious error detected!" | "cat 1>&2"
@noindent
This works by opening a pipeline to a shell command that can access the
standard error stream that it inherits from the @command{awk} process.
-This is far from elegant, and it is also inefficient, because it requires a
+@c 8/2014: Mike Brennan says not to cite this as inefficient. So, fixed.
+This is far from elegant, and it also requires a
separate process. So people writing @command{awk} programs often
don't do this. Instead, they send the error messages to the
screen, like this:
@@ -11165,7 +11163,7 @@ Otherwise, it's parsed as follows:
@end display
As mentioned earlier,
-when doing concatenation, @emph{parenthesize}. Otherwise,
+when mixing concatenation with other operators, @emph{parenthesize}. Otherwise,
you're never quite sure what you'll get.
@node Assignment Ops
@@ -11761,19 +11759,14 @@ compares variables.
@cindex numeric, strings
@cindex strings, numeric
@cindex POSIX @command{awk}, numeric strings and
-The 1992 POSIX standard introduced
+The POSIX standard introduced
the concept of a @dfn{numeric string}, which is simply a string that looks
like a number---for example, @code{@w{" +2"}}. This concept is used
for determining the type of a variable.
The type of the variable is important because the types of two variables
determine how they are compared.
+Variable typing follows these rules:
-The various versions of the POSIX standard did not get the rules
-quite right for several editions. Fortunately, as of at least the
-2008 standard (and possibly earlier), the standard has been fixed,
-and variable typing follows these rules:@footnote{@command{gawk} has
-followed these rules for many years,
-and it is gratifying that the POSIX standard is also now correct.}
@itemize @value{BULLET}
@item
@@ -16645,7 +16638,9 @@ is @minus{}3, and @code{int(-3)} is @minus{}3 as well.
@cindexawkfunc{log}
@cindex logarithm
Return the natural logarithm of @var{x}, if @var{x} is positive;
-otherwise, report an error.
+otherwise, return @code{NaN} (``not a number'') on IEEE 754 systems.
+Additionally, @command{gawk} prints a warning message when @code{x}
+is negative.
@item @code{rand()}
@cindexawkfunc{rand}
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 2269077e..56f119a8 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -1783,6 +1783,7 @@ see @uref{http://www.gnu.org, the GNU Project's home page}.
This @value{DOCUMENT} may also be read from
@uref{http://www.gnu.org/software/gawk/manual/, their web site}.
+@ifclear FOR_PRINT
A shell, an editor (Emacs), highly portable optimizing C, C++, and
Objective-C compilers, a symbolic debugger and dozens of large and
small utilities (such as @command{gawk}), have all been completed and are
@@ -1793,32 +1794,16 @@ stage of development.
@cindex Linux
@cindex GNU/Linux
@cindex operating systems, BSD-based
-@cindex Alpha (DEC)
Until the GNU operating system is more fully developed, you should
consider using GNU/Linux, a freely distributable, Unix-like operating
system for Intel@registeredsymbol{},
Power Architecture,
Sun SPARC, IBM S/390, and other
-@ifclear FOR_PRINT
systems.@footnote{The terminology ``GNU/Linux'' is explained
in the @ref{Glossary}.}
-@end ifclear
-@ifset FOR_PRINT
-systems.
-@end ifset
Many GNU/Linux distributions are
available for download from the Internet.
-
-(There are numerous other freely available, Unix-like operating systems
-based on the
-Berkeley Software Distribution, and some of them use recent versions
-of @command{gawk} for their versions of @command{awk}.
-@uref{http://www.netbsd.org, NetBSD},
-@uref{http://www.freebsd.org, FreeBSD},
-and
-@uref{http://www.openbsd.org, OpenBSD}
-are three of the most popular ones, but there
-are others.)
+@end ifclear
@ifnotinfo
The @value{DOCUMENT} you are reading is actually free---at least, the
@@ -2062,10 +2047,14 @@ people.
Notable code and documentation contributions were made by
a number of people. @xref{Contributors}, for the full list.
-Thanks to Patrice Dumas for the new @command{makeinfo} program.
+Thanks to Patrice Dumas for the new @command{makeinfo} program.
Thanks to Karl Berry who continues to work to keep
the Texinfo markup language sane.
+Robert P.J.@: Day, Michael Brennan and Brian Kernighan kindly acted as
+reviewers for the 2015 edition of this @value{DOCUMENT}. Their feedback
+helped improve the final work.
+
@cindex Kernighan, Brian
I would like to thank Brian Kernighan for invaluable assistance during the
testing and debugging of @command{gawk}, and for ongoing
@@ -2073,6 +2062,12 @@ help and advice in clarifying numerous points about the language.
We could not have done nearly as good a job on either @command{gawk}
or its documentation without his help.
+Brian is in a class by himself as a programmer and technical
+author. I have to thank him (yet again) for his ongoing friendship
+and the role-model he has been for me for close to 30 years!
+Having him as a reviewer is an exciting privilege. It has also
+been extremely humbling@enddots{}
+
@cindex Robbins, Miriam
@cindex Robbins, Jean
@cindex Robbins, Harry
@@ -2946,12 +2941,14 @@ action---so it uses the default action, printing the record.
Print the length of the longest line in @file{data}:
@example
-expand data | awk '@{ if (x < length()) x = length() @}
+expand data | awk '@{ if (x < length($0)) x = length($0) @}
END @{ print "maximum line length is " x @}'
@end example
+This example differs slightly from the first example in this list:
The input is processed by the @command{expand} utility to change TABs
-into spaces, so the widths compared are actually the right-margin columns.
+into spaces, so the widths compared are actually the right-margin columns,
+as opposed to the number of input characters on each line.
@item
Print every line that has at least one field:
@@ -9326,7 +9323,8 @@ print "Serious error detected!" | "cat 1>&2"
@noindent
This works by opening a pipeline to a shell command that can access the
standard error stream that it inherits from the @command{awk} process.
-This is far from elegant, and it is also inefficient, because it requires a
+@c 8/2014: Mike Brennan says not to cite this as inefficient. So, fixed.
+This is far from elegant, and it also requires a
separate process. So people writing @command{awk} programs often
don't do this. Instead, they send the error messages to the
screen, like this:
@@ -10626,7 +10624,7 @@ Otherwise, it's parsed as follows:
@end display
As mentioned earlier,
-when doing concatenation, @emph{parenthesize}. Otherwise,
+when mixing concatenation with other operators, @emph{parenthesize}. Otherwise,
you're never quite sure what you'll get.
@node Assignment Ops
@@ -11112,19 +11110,14 @@ compares variables.
@cindex numeric, strings
@cindex strings, numeric
@cindex POSIX @command{awk}, numeric strings and
-The 1992 POSIX standard introduced
+The POSIX standard introduced
the concept of a @dfn{numeric string}, which is simply a string that looks
like a number---for example, @code{@w{" +2"}}. This concept is used
for determining the type of a variable.
The type of the variable is important because the types of two variables
determine how they are compared.
+Variable typing follows these rules:
-The various versions of the POSIX standard did not get the rules
-quite right for several editions. Fortunately, as of at least the
-2008 standard (and possibly earlier), the standard has been fixed,
-and variable typing follows these rules:@footnote{@command{gawk} has
-followed these rules for many years,
-and it is gratifying that the POSIX standard is also now correct.}
@itemize @value{BULLET}
@item
@@ -15950,7 +15943,9 @@ is @minus{}3, and @code{int(-3)} is @minus{}3 as well.
@cindexawkfunc{log}
@cindex logarithm
Return the natural logarithm of @var{x}, if @var{x} is positive;
-otherwise, report an error.
+otherwise, return @code{NaN} (``not a number'') on IEEE 754 systems.
+Additionally, @command{gawk} prints a warning message when @code{x}
+is negative.
@item @code{rand()}
@cindexawkfunc{rand}