aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-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 82997ac8..71ab5e56 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-12 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: Cause div.awk to get into the example files.
diff --git a/doc/gawk.info b/doc/gawk.info
index 076a2f34..07c6abb9 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:
@@ -6779,9 +6783,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"
@@ -7796,8 +7800,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 ----------
@@ -8131,16 +8136,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.
@@ -8218,11 +8218,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
@@ -11711,7 +11706,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
@@ -31238,7 +31234,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.
@@ -31654,7 +31649,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)
@@ -32440,7 +32435,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 207)
@@ -32766,7 +32761,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)
@@ -33320,12 +33315,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 49)
+* rand: Numeric Functions. (line 50)
* random numbers, Cliff: Cliff Random Function.
(line 6)
* random numbers, rand()/srand() functions: Numeric Functions.
- (line 49)
-* random numbers, seed of: Numeric Functions. (line 79)
+ (line 50)
+* random numbers, seed of: Numeric Functions. (line 80)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
* range patterns, line continuation and: Ranges. (line 65)
@@ -33447,11 +33442,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 38)
* round() user-defined function: Round Function. (line 16)
@@ -33503,7 +33498,7 @@ Index
* sed utility <2>: Simple Sed. (line 6)
* sed utility: Field Splitting Summary.
(line 46)
-* seeding random number generator: Numeric Functions. (line 79)
+* seeding random number generator: Numeric Functions. (line 80)
* semicolon (;), AWKPATH variable and: PC Using. (line 10)
* semicolon (;), separating statements in actions <1>: Statements.
(line 10)
@@ -33605,8 +33600,8 @@ Index
* SIGUSR1 signal, for dynamic profiling: Profiling. (line 188)
* silent debugger command: Debugger Execution Control.
(line 10)
-* sin: Numeric Functions. (line 90)
-* sine: Numeric Functions. (line 90)
+* sin: Numeric Functions. (line 91)
+* sine: Numeric Functions. (line 91)
* single quote ('): One-shot. (line 15)
* single quote (') in gawk command lines: Long. (line 33)
* single quote ('), in shell commands: Quoting. (line 48)
@@ -33656,10 +33651,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 93)
+* sqrt: Numeric Functions. (line 94)
* square brackets ([]), regexp operator: Regexp Operators. (line 56)
-* square root: Numeric Functions. (line 93)
-* srand: Numeric Functions. (line 97)
+* square root: Numeric Functions. (line 94)
+* srand: Numeric Functions. (line 98)
* stack frame: Debugging Terms. (line 10)
* Stallman, Richard <1>: Glossary. (line 296)
* Stallman, Richard <2>: Contributors. (line 23)
@@ -34012,541 +34007,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-1128647
-Node: Other Arguments128672
-Node: Naming Standard Input131334
-Node: Environment Variables132428
-Node: AWKPATH Variable132986
-Ref: AWKPATH Variable-Footnote-1135858
-Ref: AWKPATH Variable-Footnote-2135903
-Node: AWKLIBPATH Variable136163
-Node: Other Environment Variables136922
-Node: Exit Status140372
-Node: Include Files141047
-Node: Loading Shared Libraries144625
-Node: Obsolete146009
-Node: Undocumented146706
-Node: Invoking Summary146973
-Node: Regexp148553
-Node: Regexp Usage150003
-Node: Escape Sequences152036
-Node: Regexp Operators157703
-Ref: Regexp Operators-Footnote-1165183
-Ref: Regexp Operators-Footnote-2165330
-Node: Bracket Expressions165428
-Ref: table-char-classes167318
-Node: GNU Regexp Operators170258
-Node: Case-sensitivity173981
-Ref: Case-sensitivity-Footnote-1176873
-Ref: Case-sensitivity-Footnote-2177108
-Node: Leftmost Longest177216
-Node: Computed Regexps178417
-Node: Regexp Summary181789
-Node: Reading Files183260
-Node: Records185352
-Node: awk split records186095
-Node: gawk split records190953
-Ref: gawk split records-Footnote-1195474
-Node: Fields195511
-Ref: Fields-Footnote-1198475
-Node: Nonconstant Fields198561
-Ref: Nonconstant Fields-Footnote-1200791
-Node: Changing Fields200993
-Node: Field Separators206947
-Node: Default Field Splitting209649
-Node: Regexp Field Splitting210766
-Node: Single Character Fields214107
-Node: Command Line Field Separator215166
-Node: Full Line Fields218508
-Ref: Full Line Fields-Footnote-1219016
-Node: Field Splitting Summary219062
-Ref: Field Splitting Summary-Footnote-1222161
-Node: Constant Size222262
-Node: Splitting By Content226869
-Ref: Splitting By Content-Footnote-1230619
-Node: Multiple Line230659
-Ref: Multiple Line-Footnote-1236515
-Node: Getline236694
-Node: Plain Getline238910
-Node: Getline/Variable241005
-Node: Getline/File242152
-Node: Getline/Variable/File243536
-Ref: Getline/Variable/File-Footnote-1245135
-Node: Getline/Pipe245222
-Node: Getline/Variable/Pipe247921
-Node: Getline/Coprocess249028
-Node: Getline/Variable/Coprocess250280
-Node: Getline Notes251017
-Node: Getline Summary253821
-Ref: table-getline-variants254229
-Node: Read Timeout255141
-Ref: Read Timeout-Footnote-1258968
-Node: Command line directories259026
-Node: Input Summary259930
-Node: Input Exercises263067
-Node: Printing263800
-Node: Print265522
-Node: Print Examples266863
-Node: Output Separators269642
-Node: OFMT271658
-Node: Printf273016
-Node: Basic Printf273922
-Node: Control Letters275461
-Node: Format Modifiers279452
-Node: Printf Examples285479
-Node: Redirection287943
-Node: Special Files294915
-Node: Special FD295446
-Ref: Special FD-Footnote-1299070
-Node: Special Network299144
-Node: Special Caveats299994
-Node: Close Files And Pipes300790
-Ref: Close Files And Pipes-Footnote-1307951
-Ref: Close Files And Pipes-Footnote-2308099
-Node: Output Summary308249
-Node: Output exercises309246
-Node: Expressions309926
-Node: Values311111
-Node: Constants311787
-Node: Scalar Constants312467
-Ref: Scalar Constants-Footnote-1313326
-Node: Nondecimal-numbers313576
-Node: Regexp Constants316576
-Node: Using Constant Regexps317051
-Node: Variables320121
-Node: Using Variables320776
-Node: Assignment Options322500
-Node: Conversion324375
-Node: Strings And Numbers324899
-Ref: Strings And Numbers-Footnote-1327961
-Node: Locale influences conversions328070
-Ref: table-locale-affects330787
-Node: All Operators331375
-Node: Arithmetic Ops332005
-Node: Concatenation334510
-Ref: Concatenation-Footnote-1337306
-Node: Assignment Ops337426
-Ref: table-assign-ops342409
-Node: Increment Ops343726
-Node: Truth Values and Conditions347164
-Node: Truth Values348247
-Node: Typing and Comparison349296
-Node: Variable Typing350089
-Ref: Variable Typing-Footnote-1353989
-Node: Comparison Operators354111
-Ref: table-relational-ops354521
-Node: POSIX String Comparison358071
-Ref: POSIX String Comparison-Footnote-1359155
-Node: Boolean Ops359293
-Ref: Boolean Ops-Footnote-1363363
-Node: Conditional Exp363454
-Node: Function Calls365181
-Node: Precedence369061
-Node: Locales372730
-Node: Expressions Summary374361
-Node: Patterns and Actions376902
-Node: Pattern Overview378018
-Node: Regexp Patterns379695
-Node: Expression Patterns380238
-Node: Ranges384019
-Node: BEGIN/END387125
-Node: Using BEGIN/END387887
-Ref: Using BEGIN/END-Footnote-1390623
-Node: I/O And BEGIN/END390729
-Node: BEGINFILE/ENDFILE393014
-Node: Empty395945
-Node: Using Shell Variables396262
-Node: Action Overview398545
-Node: Statements400872
-Node: If Statement402720
-Node: While Statement404218
-Node: Do Statement406262
-Node: For Statement407418
-Node: Switch Statement410570
-Node: Break Statement412673
-Node: Continue Statement414728
-Node: Next Statement416521
-Node: Nextfile Statement418911
-Node: Exit Statement421566
-Node: Built-in Variables423970
-Node: User-modified425097
-Ref: User-modified-Footnote-1432786
-Node: Auto-set432848
-Ref: Auto-set-Footnote-1445767
-Ref: Auto-set-Footnote-2445972
-Node: ARGC and ARGV446028
-Node: Pattern Action Summary449882
-Node: Arrays452105
-Node: Array Basics453654
-Node: Array Intro454480
-Ref: figure-array-elements456453
-Node: Reference to Elements458860
-Node: Assigning Elements461133
-Node: Array Example461624
-Node: Scanning an Array463356
-Node: Controlling Scanning466371
-Ref: Controlling Scanning-Footnote-1471544
-Node: Delete471860
-Ref: Delete-Footnote-1474625
-Node: Numeric Array Subscripts474682
-Node: Uninitialized Subscripts476865
-Node: Multidimensional478490
-Node: Multiscanning481583
-Node: Arrays of Arrays483172
-Node: Arrays Summary487835
-Node: Functions489940
-Node: Built-in490813
-Node: Calling Built-in491891
-Node: Numeric Functions493879
-Ref: Numeric Functions-Footnote-1498515
-Ref: Numeric Functions-Footnote-2498872
-Ref: Numeric Functions-Footnote-3498920
-Node: String Functions499189
-Ref: String Functions-Footnote-1522200
-Ref: String Functions-Footnote-2522329
-Ref: String Functions-Footnote-3522577
-Node: Gory Details522664
-Ref: table-sub-escapes524333
-Ref: table-sub-posix-92525687
-Ref: table-sub-proposed527038
-Ref: table-posix-sub528392
-Ref: table-gensub-escapes529937
-Ref: Gory Details-Footnote-1531113
-Ref: Gory Details-Footnote-2531164
-Node: I/O Functions531315
-Ref: I/O Functions-Footnote-1538438
-Node: Time Functions538585
-Ref: Time Functions-Footnote-1549049
-Ref: Time Functions-Footnote-2549117
-Ref: Time Functions-Footnote-3549275
-Ref: Time Functions-Footnote-4549386
-Ref: Time Functions-Footnote-5549498
-Ref: Time Functions-Footnote-6549725
-Node: Bitwise Functions549991
-Ref: table-bitwise-ops550553
-Ref: Bitwise Functions-Footnote-1554798
-Node: Type Functions554982
-Node: I18N Functions556124
-Node: User-defined557769
-Node: Definition Syntax558573
-Ref: Definition Syntax-Footnote-1563752
-Node: Function Example563821
-Ref: Function Example-Footnote-1566465
-Node: Function Caveats566487
-Node: Calling A Function567005
-Node: Variable Scope567960
-Node: Pass By Value/Reference570948
-Node: Return Statement574456
-Node: Dynamic Typing577440
-Node: Indirect Calls578369
-Node: Functions Summary588082
-Node: Library Functions590621
-Ref: Library Functions-Footnote-1594239
-Ref: Library Functions-Footnote-2594382
-Node: Library Names594553
-Ref: Library Names-Footnote-1598026
-Ref: Library Names-Footnote-2598246
-Node: General Functions598332
-Node: Strtonum Function599360
-Node: Assert Function602140
-Node: Round Function605466
-Node: Cliff Random Function607007
-Node: Ordinal Functions608023
-Ref: Ordinal Functions-Footnote-1611100
-Ref: Ordinal Functions-Footnote-2611352
-Node: Join Function611563
-Ref: Join Function-Footnote-1613334
-Node: Getlocaltime Function613534
-Node: Readfile Function617270
-Node: Data File Management619109
-Node: Filetrans Function619741
-Node: Rewind Function623810
-Node: File Checking625368
-Ref: File Checking-Footnote-1626500
-Node: Empty Files626701
-Node: Ignoring Assigns628680
-Node: Getopt Function630234
-Ref: Getopt Function-Footnote-1641537
-Node: Passwd Functions641740
-Ref: Passwd Functions-Footnote-1650719
-Node: Group Functions650807
-Ref: Group Functions-Footnote-1658748
-Node: Walking Arrays658961
-Node: Library Functions Summary660564
-Node: Library exercises661952
-Node: Sample Programs663232
-Node: Running Examples664002
-Node: Clones664730
-Node: Cut Program665954
-Node: Egrep Program675822
-Ref: Egrep Program-Footnote-1683793
-Node: Id Program683903
-Node: Split Program687567
-Ref: Split Program-Footnote-1691105
-Node: Tee Program691233
-Node: Uniq Program694040
-Node: Wc Program701470
-Ref: Wc Program-Footnote-1705735
-Node: Miscellaneous Programs705827
-Node: Dupword Program707040
-Node: Alarm Program709071
-Node: Translate Program713885
-Ref: Translate Program-Footnote-1718276
-Ref: Translate Program-Footnote-2718546
-Node: Labels Program718680
-Ref: Labels Program-Footnote-1722051
-Node: Word Sorting722135
-Node: History Sorting726178
-Node: Extract Program728014
-Node: Simple Sed735550
-Node: Igawk Program738612
-Ref: Igawk Program-Footnote-1752923
-Ref: Igawk Program-Footnote-2753124
-Node: Anagram Program753262
-Node: Signature Program756330
-Node: Programs Summary757577
-Node: Programs Exercises758792
-Node: Advanced Features762443
-Node: Nondecimal Data764391
-Node: Array Sorting765968
-Node: Controlling Array Traversal766665
-Node: Array Sorting Functions774945
-Ref: Array Sorting Functions-Footnote-1778852
-Node: Two-way I/O779046
-Ref: Two-way I/O-Footnote-1784562
-Node: TCP/IP Networking784644
-Node: Profiling787488
-Node: Advanced Features Summary795039
-Node: Internationalization796903
-Node: I18N and L10N798383
-Node: Explaining gettext799069
-Ref: Explaining gettext-Footnote-1804209
-Ref: Explaining gettext-Footnote-2804393
-Node: Programmer i18n804558
-Node: Translator i18n808783
-Node: String Extraction809577
-Ref: String Extraction-Footnote-1810538
-Node: Printf Ordering810624
-Ref: Printf Ordering-Footnote-1813406
-Node: I18N Portability813470
-Ref: I18N Portability-Footnote-1815919
-Node: I18N Example815982
-Ref: I18N Example-Footnote-1818704
-Node: Gawk I18N818776
-Node: I18N Summary819414
-Node: Debugger820753
-Node: Debugging821775
-Node: Debugging Concepts822216
-Node: Debugging Terms824072
-Node: Awk Debugging826669
-Node: Sample Debugging Session827561
-Node: Debugger Invocation828081
-Node: Finding The Bug829414
-Node: List of Debugger Commands835896
-Node: Breakpoint Control837228
-Node: Debugger Execution Control840892
-Node: Viewing And Changing Data844252
-Node: Execution Stack847610
-Node: Debugger Info849123
-Node: Miscellaneous Debugger Commands853117
-Node: Readline Support858301
-Node: Limitations859193
-Node: Debugging Summary861467
-Node: Arbitrary Precision Arithmetic862631
-Node: Computer Arithmetic863960
-Ref: Computer Arithmetic-Footnote-1868347
-Node: Math Definitions868404
-Ref: table-ieee-formats871288
-Node: MPFR features871792
-Node: FP Math Caution873434
-Ref: FP Math Caution-Footnote-1874475
-Node: Inexactness of computations874844
-Node: Inexact representation875792
-Node: Comparing FP Values877147
-Node: Errors accumulate878111
-Node: Getting Accuracy879544
-Node: Try To Round882203
-Node: Setting precision883102
-Ref: table-predefined-precision-strings883784
-Node: Setting the rounding mode885577
-Ref: table-gawk-rounding-modes885941
-Ref: Setting the rounding mode-Footnote-1889395
-Node: Arbitrary Precision Integers889574
-Ref: Arbitrary Precision Integers-Footnote-1893369
-Node: POSIX Floating Point Problems893518
-Ref: POSIX Floating Point Problems-Footnote-1897394
-Node: Floating point summary897432
-Node: Dynamic Extensions899649
-Node: Extension Intro901201
-Node: Plugin License902466
-Node: Extension Mechanism Outline903151
-Ref: figure-load-extension903575
-Ref: figure-load-new-function905060
-Ref: figure-call-new-function906062
-Node: Extension API Description908046
-Node: Extension API Functions Introduction909496
-Node: General Data Types914361
-Ref: General Data Types-Footnote-1920054
-Node: Requesting Values920353
-Ref: table-value-types-returned921090
-Node: Memory Allocation Functions922048
-Ref: Memory Allocation Functions-Footnote-1924795
-Node: Constructor Functions924891
-Node: Registration Functions926649
-Node: Extension Functions927334
-Node: Exit Callback Functions929636
-Node: Extension Version String930885
-Node: Input Parsers931535
-Node: Output Wrappers941349
-Node: Two-way processors945865
-Node: Printing Messages948069
-Ref: Printing Messages-Footnote-1949146
-Node: Updating `ERRNO'949298
-Node: Accessing Parameters950037
-Node: Symbol Table Access951267
-Node: Symbol table by name951781
-Node: Symbol table by cookie953757
-Ref: Symbol table by cookie-Footnote-1957890
-Node: Cached values957953
-Ref: Cached values-Footnote-1961457
-Node: Array Manipulation961548
-Ref: Array Manipulation-Footnote-1962646
-Node: Array Data Types962685
-Ref: Array Data Types-Footnote-1965388
-Node: Array Functions965480
-Node: Flattening Arrays969354
-Node: Creating Arrays976206
-Node: Extension API Variables980937
-Node: Extension Versioning981573
-Node: Extension API Informational Variables983474
-Node: Extension API Boilerplate984560
-Node: Finding Extensions988364
-Node: Extension Example988924
-Node: Internal File Description989654
-Node: Internal File Ops993745
-Ref: Internal File Ops-Footnote-11005177
-Node: Using Internal File Ops1005317
-Ref: Using Internal File Ops-Footnote-11007664
-Node: Extension Samples1007932
-Node: Extension Sample File Functions1009456
-Node: Extension Sample Fnmatch1017024
-Node: Extension Sample Fork1018506
-Node: Extension Sample Inplace1019719
-Node: Extension Sample Ord1021394
-Node: Extension Sample Readdir1022230
-Ref: table-readdir-file-types1023086
-Node: Extension Sample Revout1023885
-Node: Extension Sample Rev2way1024476
-Node: Extension Sample Read write array1025217
-Node: Extension Sample Readfile1027096
-Node: Extension Sample API Tests1028196
-Node: Extension Sample Time1028721
-Node: gawkextlib1030036
-Node: Extension summary1032849
-Node: Extension Exercises1036542
-Node: Language History1037264
-Node: V7/SVR3.11038907
-Node: SVR41041227
-Node: POSIX1042669
-Node: BTL1044055
-Node: POSIX/GNU1044789
-Node: Feature History1050532
-Node: Common Extensions1063662
-Node: Ranges and Locales1064974
-Ref: Ranges and Locales-Footnote-11069591
-Ref: Ranges and Locales-Footnote-21069618
-Ref: Ranges and Locales-Footnote-31069852
-Node: Contributors1070073
-Node: History summary1075498
-Node: Installation1076867
-Node: Gawk Distribution1077818
-Node: Getting1078302
-Node: Extracting1079126
-Node: Distribution contents1080768
-Node: Unix Installation1086538
-Node: Quick Installation1087155
-Node: Additional Configuration Options1089597
-Node: Configuration Philosophy1091335
-Node: Non-Unix Installation1093686
-Node: PC Installation1094144
-Node: PC Binary Installation1095455
-Node: PC Compiling1097303
-Ref: PC Compiling-Footnote-11100302
-Node: PC Testing1100407
-Node: PC Using1101583
-Node: Cygwin1105741
-Node: MSYS1106550
-Node: VMS Installation1107064
-Node: VMS Compilation1107860
-Ref: VMS Compilation-Footnote-11109082
-Node: VMS Dynamic Extensions1109140
-Node: VMS Installation Details1110513
-Node: VMS Running1112765
-Node: VMS GNV1115599
-Node: VMS Old Gawk1116322
-Node: Bugs1116792
-Node: Other Versions1120796
-Node: Installation summary1127051
-Node: Notes1128107
-Node: Compatibility Mode1128972
-Node: Additions1129754
-Node: Accessing The Source1130679
-Node: Adding Code1132115
-Node: New Ports1138293
-Node: Derived Files1142774
-Ref: Derived Files-Footnote-11147855
-Ref: Derived Files-Footnote-21147889
-Ref: Derived Files-Footnote-31148485
-Node: Future Extensions1148599
-Node: Implementation Limitations1149205
-Node: Extension Design1150453
-Node: Old Extension Problems1151607
-Ref: Old Extension Problems-Footnote-11153124
-Node: Extension New Mechanism Goals1153181
-Ref: Extension New Mechanism Goals-Footnote-11156541
-Node: Extension Other Design Decisions1156730
-Node: Extension Future Growth1158836
-Node: Old Extension Mechanism1159672
-Node: Notes summary1161434
-Node: Basic Concepts1162620
-Node: Basic High Level1163301
-Ref: figure-general-flow1163573
-Ref: figure-process-flow1164172
-Ref: Basic High Level-Footnote-11167401
-Node: Basic Data Typing1167586
-Node: Glossary1170914
-Node: Copying1196066
-Node: GNU Free Documentation License1233622
-Node: Index1258758
+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-1128874
+Node: Other Arguments128899
+Node: Naming Standard Input131561
+Node: Environment Variables132655
+Node: AWKPATH Variable133213
+Ref: AWKPATH Variable-Footnote-1136085
+Ref: AWKPATH Variable-Footnote-2136130
+Node: AWKLIBPATH Variable136390
+Node: Other Environment Variables137149
+Node: Exit Status140599
+Node: Include Files141274
+Node: Loading Shared Libraries144852
+Node: Obsolete146236
+Node: Undocumented146933
+Node: Invoking Summary147200
+Node: Regexp148780
+Node: Regexp Usage150230
+Node: Escape Sequences152263
+Node: Regexp Operators157930
+Ref: Regexp Operators-Footnote-1165410
+Ref: Regexp Operators-Footnote-2165557
+Node: Bracket Expressions165655
+Ref: table-char-classes167545
+Node: GNU Regexp Operators170485
+Node: Case-sensitivity174208
+Ref: Case-sensitivity-Footnote-1177100
+Ref: Case-sensitivity-Footnote-2177335
+Node: Leftmost Longest177443
+Node: Computed Regexps178644
+Node: Regexp Summary182016
+Node: Reading Files183487
+Node: Records185579
+Node: awk split records186322
+Node: gawk split records191180
+Ref: gawk split records-Footnote-1195701
+Node: Fields195738
+Ref: Fields-Footnote-1198702
+Node: Nonconstant Fields198788
+Ref: Nonconstant Fields-Footnote-1201018
+Node: Changing Fields201220
+Node: Field Separators207174
+Node: Default Field Splitting209876
+Node: Regexp Field Splitting210993
+Node: Single Character Fields214334
+Node: Command Line Field Separator215393
+Node: Full Line Fields218735
+Ref: Full Line Fields-Footnote-1219243
+Node: Field Splitting Summary219289
+Ref: Field Splitting Summary-Footnote-1222388
+Node: Constant Size222489
+Node: Splitting By Content227096
+Ref: Splitting By Content-Footnote-1230846
+Node: Multiple Line230886
+Ref: Multiple Line-Footnote-1236742
+Node: Getline236921
+Node: Plain Getline239137
+Node: Getline/Variable241232
+Node: Getline/File242379
+Node: Getline/Variable/File243763
+Ref: Getline/Variable/File-Footnote-1245362
+Node: Getline/Pipe245449
+Node: Getline/Variable/Pipe248148
+Node: Getline/Coprocess249255
+Node: Getline/Variable/Coprocess250507
+Node: Getline Notes251244
+Node: Getline Summary254048
+Ref: table-getline-variants254456
+Node: Read Timeout255368
+Ref: Read Timeout-Footnote-1259195
+Node: Command line directories259253
+Node: Input Summary260157
+Node: Input Exercises263294
+Node: Printing264027
+Node: Print265749
+Node: Print Examples267090
+Node: Output Separators269869
+Node: OFMT271885
+Node: Printf273243
+Node: Basic Printf274149
+Node: Control Letters275688
+Node: Format Modifiers279679
+Node: Printf Examples285706
+Node: Redirection288170
+Node: Special Files295142
+Node: Special FD295673
+Ref: Special FD-Footnote-1299270
+Node: Special Network299344
+Node: Special Caveats300194
+Node: Close Files And Pipes300990
+Ref: Close Files And Pipes-Footnote-1308151
+Ref: Close Files And Pipes-Footnote-2308299
+Node: Output Summary308449
+Node: Output exercises309446
+Node: Expressions310126
+Node: Values311311
+Node: Constants311987
+Node: Scalar Constants312667
+Ref: Scalar Constants-Footnote-1313526
+Node: Nondecimal-numbers313776
+Node: Regexp Constants316776
+Node: Using Constant Regexps317251
+Node: Variables320321
+Node: Using Variables320976
+Node: Assignment Options322700
+Node: Conversion324575
+Node: Strings And Numbers325099
+Ref: Strings And Numbers-Footnote-1328161
+Node: Locale influences conversions328270
+Ref: table-locale-affects330987
+Node: All Operators331575
+Node: Arithmetic Ops332205
+Node: Concatenation334710
+Ref: Concatenation-Footnote-1337529
+Node: Assignment Ops337649
+Ref: table-assign-ops342632
+Node: Increment Ops343949
+Node: Truth Values and Conditions347387
+Node: Truth Values348470
+Node: Typing and Comparison349519
+Node: Variable Typing350312
+Node: Comparison Operators353962
+Ref: table-relational-ops354372
+Node: POSIX String Comparison357922
+Ref: POSIX String Comparison-Footnote-1359006
+Node: Boolean Ops359144
+Ref: Boolean Ops-Footnote-1363214
+Node: Conditional Exp363305
+Node: Function Calls365032
+Node: Precedence368912
+Node: Locales372581
+Node: Expressions Summary374212
+Node: Patterns and Actions376753
+Node: Pattern Overview377869
+Node: Regexp Patterns379546
+Node: Expression Patterns380089
+Node: Ranges383870
+Node: BEGIN/END386976
+Node: Using BEGIN/END387738
+Ref: Using BEGIN/END-Footnote-1390474
+Node: I/O And BEGIN/END390580
+Node: BEGINFILE/ENDFILE392865
+Node: Empty395796
+Node: Using Shell Variables396113
+Node: Action Overview398396
+Node: Statements400723
+Node: If Statement402571
+Node: While Statement404069
+Node: Do Statement406113
+Node: For Statement407269
+Node: Switch Statement410421
+Node: Break Statement412524
+Node: Continue Statement414579
+Node: Next Statement416372
+Node: Nextfile Statement418762
+Node: Exit Statement421417
+Node: Built-in Variables423821
+Node: User-modified424948
+Ref: User-modified-Footnote-1432637
+Node: Auto-set432699
+Ref: Auto-set-Footnote-1445618
+Ref: Auto-set-Footnote-2445823
+Node: ARGC and ARGV445879
+Node: Pattern Action Summary449733
+Node: Arrays451956
+Node: Array Basics453505
+Node: Array Intro454331
+Ref: figure-array-elements456304
+Node: Reference to Elements458711
+Node: Assigning Elements460984
+Node: Array Example461475
+Node: Scanning an Array463207
+Node: Controlling Scanning466222
+Ref: Controlling Scanning-Footnote-1471395
+Node: Delete471711
+Ref: Delete-Footnote-1474476
+Node: Numeric Array Subscripts474533
+Node: Uninitialized Subscripts476716
+Node: Multidimensional478341
+Node: Multiscanning481434
+Node: Arrays of Arrays483023
+Node: Arrays Summary487686
+Node: Functions489791
+Node: Built-in490664
+Node: Calling Built-in491742
+Node: Numeric Functions493730
+Ref: Numeric Functions-Footnote-1498474
+Ref: Numeric Functions-Footnote-2498831
+Ref: Numeric Functions-Footnote-3498879
+Node: String Functions499148
+Ref: String Functions-Footnote-1522159
+Ref: String Functions-Footnote-2522288
+Ref: String Functions-Footnote-3522536
+Node: Gory Details522623
+Ref: table-sub-escapes524292
+Ref: table-sub-posix-92525646
+Ref: table-sub-proposed526997
+Ref: table-posix-sub528351
+Ref: table-gensub-escapes529896
+Ref: Gory Details-Footnote-1531072
+Ref: Gory Details-Footnote-2531123
+Node: I/O Functions531274
+Ref: I/O Functions-Footnote-1538397
+Node: Time Functions538544
+Ref: Time Functions-Footnote-1549008
+Ref: Time Functions-Footnote-2549076
+Ref: Time Functions-Footnote-3549234
+Ref: Time Functions-Footnote-4549345
+Ref: Time Functions-Footnote-5549457
+Ref: Time Functions-Footnote-6549684
+Node: Bitwise Functions549950
+Ref: table-bitwise-ops550512
+Ref: Bitwise Functions-Footnote-1554757
+Node: Type Functions554941
+Node: I18N Functions556083
+Node: User-defined557728
+Node: Definition Syntax558532
+Ref: Definition Syntax-Footnote-1563711
+Node: Function Example563780
+Ref: Function Example-Footnote-1566424
+Node: Function Caveats566446
+Node: Calling A Function566964
+Node: Variable Scope567919
+Node: Pass By Value/Reference570907
+Node: Return Statement574415
+Node: Dynamic Typing577399
+Node: Indirect Calls578328
+Node: Functions Summary588041
+Node: Library Functions590580
+Ref: Library Functions-Footnote-1594198
+Ref: Library Functions-Footnote-2594341
+Node: Library Names594512
+Ref: Library Names-Footnote-1597985
+Ref: Library Names-Footnote-2598205
+Node: General Functions598291
+Node: Strtonum Function599319
+Node: Assert Function602099
+Node: Round Function605425
+Node: Cliff Random Function606966
+Node: Ordinal Functions607982
+Ref: Ordinal Functions-Footnote-1611059
+Ref: Ordinal Functions-Footnote-2611311
+Node: Join Function611522
+Ref: Join Function-Footnote-1613293
+Node: Getlocaltime Function613493
+Node: Readfile Function617229
+Node: Data File Management619068
+Node: Filetrans Function619700
+Node: Rewind Function623769
+Node: File Checking625327
+Ref: File Checking-Footnote-1626459
+Node: Empty Files626660
+Node: Ignoring Assigns628639
+Node: Getopt Function630193
+Ref: Getopt Function-Footnote-1641496
+Node: Passwd Functions641699
+Ref: Passwd Functions-Footnote-1650678
+Node: Group Functions650766
+Ref: Group Functions-Footnote-1658707
+Node: Walking Arrays658920
+Node: Library Functions Summary660523
+Node: Library exercises661911
+Node: Sample Programs663191
+Node: Running Examples663961
+Node: Clones664689
+Node: Cut Program665913
+Node: Egrep Program675781
+Ref: Egrep Program-Footnote-1683752
+Node: Id Program683862
+Node: Split Program687526
+Ref: Split Program-Footnote-1691064
+Node: Tee Program691192
+Node: Uniq Program693999
+Node: Wc Program701429
+Ref: Wc Program-Footnote-1705694
+Node: Miscellaneous Programs705786
+Node: Dupword Program706999
+Node: Alarm Program709030
+Node: Translate Program713844
+Ref: Translate Program-Footnote-1718235
+Ref: Translate Program-Footnote-2718505
+Node: Labels Program718639
+Ref: Labels Program-Footnote-1722010
+Node: Word Sorting722094
+Node: History Sorting726137
+Node: Extract Program727973
+Node: Simple Sed735509
+Node: Igawk Program738571
+Ref: Igawk Program-Footnote-1752882
+Ref: Igawk Program-Footnote-2753083
+Node: Anagram Program753221
+Node: Signature Program756289
+Node: Programs Summary757536
+Node: Programs Exercises758751
+Node: Advanced Features762402
+Node: Nondecimal Data764350
+Node: Array Sorting765927
+Node: Controlling Array Traversal766624
+Node: Array Sorting Functions774904
+Ref: Array Sorting Functions-Footnote-1778811
+Node: Two-way I/O779005
+Ref: Two-way I/O-Footnote-1784521
+Node: TCP/IP Networking784603
+Node: Profiling787447
+Node: Advanced Features Summary794998
+Node: Internationalization796862
+Node: I18N and L10N798342
+Node: Explaining gettext799028
+Ref: Explaining gettext-Footnote-1804168
+Ref: Explaining gettext-Footnote-2804352
+Node: Programmer i18n804517
+Node: Translator i18n808742
+Node: String Extraction809536
+Ref: String Extraction-Footnote-1810497
+Node: Printf Ordering810583
+Ref: Printf Ordering-Footnote-1813365
+Node: I18N Portability813429
+Ref: I18N Portability-Footnote-1815878
+Node: I18N Example815941
+Ref: I18N Example-Footnote-1818663
+Node: Gawk I18N818735
+Node: I18N Summary819373
+Node: Debugger820712
+Node: Debugging821734
+Node: Debugging Concepts822175
+Node: Debugging Terms824031
+Node: Awk Debugging826628
+Node: Sample Debugging Session827520
+Node: Debugger Invocation828040
+Node: Finding The Bug829373
+Node: List of Debugger Commands835855
+Node: Breakpoint Control837187
+Node: Debugger Execution Control840851
+Node: Viewing And Changing Data844211
+Node: Execution Stack847569
+Node: Debugger Info849082
+Node: Miscellaneous Debugger Commands853076
+Node: Readline Support858260
+Node: Limitations859152
+Node: Debugging Summary861426
+Node: Arbitrary Precision Arithmetic862590
+Node: Computer Arithmetic863919
+Ref: Computer Arithmetic-Footnote-1868306
+Node: Math Definitions868363
+Ref: table-ieee-formats871247
+Node: MPFR features871751
+Node: FP Math Caution873393
+Ref: FP Math Caution-Footnote-1874434
+Node: Inexactness of computations874803
+Node: Inexact representation875751
+Node: Comparing FP Values877106
+Node: Errors accumulate878070
+Node: Getting Accuracy879503
+Node: Try To Round882162
+Node: Setting precision883061
+Ref: table-predefined-precision-strings883743
+Node: Setting the rounding mode885536
+Ref: table-gawk-rounding-modes885900
+Ref: Setting the rounding mode-Footnote-1889354
+Node: Arbitrary Precision Integers889533
+Ref: Arbitrary Precision Integers-Footnote-1893328
+Node: POSIX Floating Point Problems893477
+Ref: POSIX Floating Point Problems-Footnote-1897353
+Node: Floating point summary897391
+Node: Dynamic Extensions899608
+Node: Extension Intro901160
+Node: Plugin License902425
+Node: Extension Mechanism Outline903110
+Ref: figure-load-extension903534
+Ref: figure-load-new-function905019
+Ref: figure-call-new-function906021
+Node: Extension API Description908005
+Node: Extension API Functions Introduction909455
+Node: General Data Types914320
+Ref: General Data Types-Footnote-1920013
+Node: Requesting Values920312
+Ref: table-value-types-returned921049
+Node: Memory Allocation Functions922007
+Ref: Memory Allocation Functions-Footnote-1924754
+Node: Constructor Functions924850
+Node: Registration Functions926608
+Node: Extension Functions927293
+Node: Exit Callback Functions929595
+Node: Extension Version String930844
+Node: Input Parsers931494
+Node: Output Wrappers941308
+Node: Two-way processors945824
+Node: Printing Messages948028
+Ref: Printing Messages-Footnote-1949105
+Node: Updating `ERRNO'949257
+Node: Accessing Parameters949996
+Node: Symbol Table Access951226
+Node: Symbol table by name951740
+Node: Symbol table by cookie953716
+Ref: Symbol table by cookie-Footnote-1957849
+Node: Cached values957912
+Ref: Cached values-Footnote-1961416
+Node: Array Manipulation961507
+Ref: Array Manipulation-Footnote-1962605
+Node: Array Data Types962644
+Ref: Array Data Types-Footnote-1965347
+Node: Array Functions965439
+Node: Flattening Arrays969313
+Node: Creating Arrays976165
+Node: Extension API Variables980896
+Node: Extension Versioning981532
+Node: Extension API Informational Variables983433
+Node: Extension API Boilerplate984519
+Node: Finding Extensions988323
+Node: Extension Example988883
+Node: Internal File Description989613
+Node: Internal File Ops993704
+Ref: Internal File Ops-Footnote-11005136
+Node: Using Internal File Ops1005276
+Ref: Using Internal File Ops-Footnote-11007623
+Node: Extension Samples1007891
+Node: Extension Sample File Functions1009415
+Node: Extension Sample Fnmatch1016983
+Node: Extension Sample Fork1018465
+Node: Extension Sample Inplace1019678
+Node: Extension Sample Ord1021353
+Node: Extension Sample Readdir1022189
+Ref: table-readdir-file-types1023045
+Node: Extension Sample Revout1023844
+Node: Extension Sample Rev2way1024435
+Node: Extension Sample Read write array1025176
+Node: Extension Sample Readfile1027055
+Node: Extension Sample API Tests1028155
+Node: Extension Sample Time1028680
+Node: gawkextlib1029995
+Node: Extension summary1032808
+Node: Extension Exercises1036501
+Node: Language History1037223
+Node: V7/SVR3.11038866
+Node: SVR41041186
+Node: POSIX1042628
+Node: BTL1044014
+Node: POSIX/GNU1044748
+Node: Feature History1050491
+Node: Common Extensions1063621
+Node: Ranges and Locales1064933
+Ref: Ranges and Locales-Footnote-11069550
+Ref: Ranges and Locales-Footnote-21069577
+Ref: Ranges and Locales-Footnote-31069811
+Node: Contributors1070032
+Node: History summary1075457
+Node: Installation1076826
+Node: Gawk Distribution1077777
+Node: Getting1078261
+Node: Extracting1079085
+Node: Distribution contents1080727
+Node: Unix Installation1086497
+Node: Quick Installation1087114
+Node: Additional Configuration Options1089556
+Node: Configuration Philosophy1091294
+Node: Non-Unix Installation1093645
+Node: PC Installation1094103
+Node: PC Binary Installation1095414
+Node: PC Compiling1097262
+Ref: PC Compiling-Footnote-11100261
+Node: PC Testing1100366
+Node: PC Using1101542
+Node: Cygwin1105700
+Node: MSYS1106509
+Node: VMS Installation1107023
+Node: VMS Compilation1107819
+Ref: VMS Compilation-Footnote-11109041
+Node: VMS Dynamic Extensions1109099
+Node: VMS Installation Details1110472
+Node: VMS Running1112724
+Node: VMS GNV1115558
+Node: VMS Old Gawk1116281
+Node: Bugs1116751
+Node: Other Versions1120755
+Node: Installation summary1127010
+Node: Notes1128066
+Node: Compatibility Mode1128931
+Node: Additions1129713
+Node: Accessing The Source1130638
+Node: Adding Code1132074
+Node: New Ports1138252
+Node: Derived Files1142733
+Ref: Derived Files-Footnote-11147814
+Ref: Derived Files-Footnote-21147848
+Ref: Derived Files-Footnote-31148444
+Node: Future Extensions1148558
+Node: Implementation Limitations1149164
+Node: Extension Design1150412
+Node: Old Extension Problems1151566
+Ref: Old Extension Problems-Footnote-11153083
+Node: Extension New Mechanism Goals1153140
+Ref: Extension New Mechanism Goals-Footnote-11156500
+Node: Extension Other Design Decisions1156689
+Node: Extension Future Growth1158795
+Node: Old Extension Mechanism1159631
+Node: Notes summary1161393
+Node: Basic Concepts1162579
+Node: Basic High Level1163260
+Ref: figure-general-flow1163532
+Ref: figure-process-flow1164131
+Ref: Basic High Level-Footnote-11167360
+Node: Basic Data Typing1167545
+Node: Glossary1170873
+Node: Copying1196025
+Node: GNU Free Documentation License1233581
+Node: Index1258717

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 6bbc6562..d8d8132a 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:
@@ -9738,7 +9735,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:
@@ -11158,7 +11156,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
@@ -11754,19 +11752,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
@@ -16663,7 +16656,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 bca15569..33269644 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:
@@ -9319,7 +9316,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:
@@ -10619,7 +10617,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
@@ -11105,19 +11103,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
@@ -15968,7 +15961,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}