gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-567


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-567-g547b160
Date: Sun, 25 Jan 2015 20:20:42 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.1-stable has been updated
       via  547b160b254cc6501578c69ea38228ca2d829c49 (commit)
      from  2443fb7afd788395e1c6baf067299f42317df21b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=547b160b254cc6501578c69ea38228ca2d829c49

commit 547b160b254cc6501578c69ea38228ca2d829c49
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Jan 25 22:20:30 2015 +0200

    More O'Reilly edits.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index b2b08e1..0118d30 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,7 @@
 2015-01-25         Arnold D. Robbins     <address@hidden>
 
        * gawktexi.in: Fix a bad URL.
+       More O'Reilly fixes.
 
 2015-01-23         Arnold D. Robbins     <address@hidden>
 
diff --git a/doc/gawk.info b/doc/gawk.info
index a6b8fac..e32e251 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -7266,9 +7266,9 @@ value to a variable or a field by using an assignment 
operator.
    An expression can serve as a pattern or action statement on its own.
 Most other kinds of statements contain one or more expressions that
 specify the data on which to operate.  As in other languages,
-expressions in `awk' include variables, array references, constants,
-and function calls, as well as combinations of these with various
-operators.
+expressions in `awk' can include variables, array references,
+constants, and function calls, as well as combinations of these with
+various operators.
 
 * Menu:
 
@@ -7287,8 +7287,8 @@ File: gawk.info,  Node: Values,  Next: All Operators,  
Up: Expressions
 =========================================
 
 Expressions are built up from values and the operations performed upon
-them. This minor node describes the elementary objects which provide
-the values used in expressions.
+them. This minor node describes the elementary objects that provide the
+values used in expressions.
 
 * Menu:
 
@@ -7333,14 +7333,14 @@ the same value:
      1.05e+2
      1050e-1
 
-   A string constant consists of a sequence of characters enclosed in
+   A "string constant" consists of a sequence of characters enclosed in
 double quotation marks.  For example:
 
      "parrot"
 
 represents the string whose contents are `parrot'.  Strings in `gawk'
 can be of any length, and they can contain any of the possible
-eight-bit ASCII characters including ASCII NUL (character code zero).
+eight-bit ASCII characters, including ASCII NUL (character code zero).
 Other `awk' implementations may have difficulty with some character
 codes.
 
@@ -7360,14 +7360,14 @@ File: gawk.info,  Node: Nondecimal-numbers,  Next: 
Regexp Constants,  Prev: Scal
 In `awk', all numbers are in decimal (i.e., base 10).  Many other
 programming languages allow you to specify numbers in other bases, often
 octal (base 8) and hexadecimal (base 16).  In octal, the numbers go 0,
-1, 2, 3, 4, 5, 6, 7, 10, 11, 12, and so on.  Just as `11', in decimal,
-is 1 times 10 plus 1, so `11', in octal, is 1 times 8, plus 1. This
-equals 9 in decimal.  In hexadecimal, there are 16 digits. Because the
-everyday decimal number system only has ten digits (`0'-`9'), the
-letters `a' through `f' are used to represent the rest.  (Case in the
-letters is usually irrelevant; hexadecimal `a' and `A' have the same
-value.)  Thus, `11', in hexadecimal, is 1 times 16 plus 1, which equals
-17 in decimal.
+1, 2, 3, 4, 5, 6, 7, 10, 11, 12, and so on.  Just as `11' in decimal is
+1 times 10 plus 1, so `11' in octal is 1 times 8 plus 1. This equals 9
+in decimal.  In hexadecimal, there are 16 digits. Because the everyday
+decimal number system only has ten digits (`0'-`9'), the letters `a'
+through `f' are used to represent the rest.  (Case in the letters is
+usually irrelevant; hexadecimal `a' and `A' have the same value.)
+Thus, `11' in hexadecimal is 1 times 16 plus 1, which equals 17 in
+decimal.
 
    Just by looking at plain `11', you can't tell what base it's in.
 So, in C, C++, and other languages derived from C, there is a special
@@ -7375,13 +7375,13 @@ notation to signify the base.  Octal numbers start with 
a leading `0',
 and hexadecimal numbers start with a leading `0x' or `0X':
 
 `11'
-     Decimal value 11.
+     Decimal value 11
 
 `011'
-     Octal 11, decimal value 9.
+     Octal 11, decimal value 9
 
 `0x11'
-     Hexadecimal 11, decimal value 17.
+     Hexadecimal 11, decimal value 17
 
    This example shows the difference:
 
@@ -7400,11 +7400,11 @@ really need to do this, use the `--non-decimal-data' 
command-line
 option; *note Nondecimal Data::.)  If you have octal or hexadecimal
 data, you can use the `strtonum()' function (*note String Functions::)
 to convert the data into a number.  Most of the time, you will want to
-use octal or hexadecimal constants when working with the built-in bit
-manipulation functions; see *note Bitwise Functions::, for more
+use octal or hexadecimal constants when working with the built-in
+bit-manipulation functions; see *note Bitwise Functions::, for more
 information.
 
-   Unlike some early C implementations, `8' and `9' are not valid in
+   Unlike in some early C implementations, `8' and `9' are not valid in
 octal constants.  For example, `gawk' treats `018' as decimal 18:
 
      $ gawk 'BEGIN { print "021 is", 021 ; print 018 }'
@@ -7431,12 +7431,12 @@ File: gawk.info,  Node: Regexp Constants,  Prev: 
Nondecimal-numbers,  Up: Consta
 6.1.1.3 Regular Expression Constants
 ....................................
 
-A regexp constant is a regular expression description enclosed in
+A "regexp constant" is a regular expression description enclosed in
 slashes, such as `/^beginning and end$/'.  Most regexps used in `awk'
 programs are constant, but the `~' and `!~' matching operators can also
 match computed or dynamic regexps (which are typically just ordinary
-strings or variables that contain a regexp, but could be a more complex
-expression).
+strings or variables that contain a regexp, but could be more complex
+expressions).
 
 
 File: gawk.info,  Node: Using Constant Regexps,  Next: Variables,  Prev: 
Constants,  Up: Values
@@ -7488,7 +7488,7 @@ and `patsplit()' functions (*note String Functions::).  
Modern
 implementations of `awk', including `gawk', allow the third argument of
 `split()' to be a regexp constant, but some older implementations do
 not.  (d.c.)  Because some built-in functions accept regexp constants
-as arguments, it can be confusing when attempting to use regexp
+as arguments, confusion can arise when attempting to use regexp
 constants as arguments to user-defined functions (*note
 User-defined::).  For example:
 
@@ -7511,10 +7511,11 @@ User-defined::).  For example:
    In this example, the programmer wants to pass a regexp constant to
 the user-defined function `mysub()', which in turn passes it on to
 either `sub()' or `gsub()'.  However, what really happens is that the
-`pat' parameter is either one or zero, depending upon whether or not
-`$0' matches `/hi/'.  `gawk' issues a warning when it sees a regexp
-constant used as a parameter to a user-defined function, because
-passing a truth value in this way is probably not what was intended.
+`pat' parameter is assigned a value of either one or zero, depending
+upon whether or not `$0' matches `/hi/'.  `gawk' issues a warning when
+it sees a regexp constant used as a parameter to a user-defined
+function, because passing a truth value in this way is probably not
+what was intended.
 
 
 File: gawk.info,  Node: Variables,  Next: Conversion,  Prev: Using Constant 
Regexps,  Up: Values
@@ -7522,7 +7523,7 @@ File: gawk.info,  Node: Variables,  Next: Conversion,  
Prev: Using Constant Rege
 6.1.3 Variables
 ---------------
 
-Variables are ways of storing values at one point in your program for
+"Variables" are ways of storing values at one point in your program for
 use later in another part of your program.  They can be manipulated
 entirely within the program text, and they can also be assigned values
 on the `awk' command line.
@@ -7551,14 +7552,14 @@ variables.
 
    A variable name is a valid expression by itself; it represents the
 variable's current value.  Variables are given new values with
-"assignment operators", "increment operators", and "decrement
-operators".  *Note Assignment Ops::.  In addition, the `sub()' and
-`gsub()' functions can change a variable's value, and the `match()',
-`split()', and `patsplit()' functions can change the contents of their
-array parameters. *Note String Functions::.
+"assignment operators", "increment operators", and "decrement operators"
+(*note Assignment Ops::).  In addition, the `sub()' and `gsub()'
+functions can change a variable's value, and the `match()', `split()',
+and `patsplit()' functions can change the contents of their array
+parameters (*note String Functions::).
 
    A few variables have special built-in meanings, such as `FS' (the
-field separator), and `NF' (the number of fields in the current input
+field separator) and `NF' (the number of fields in the current input
 record).  *Note Built-in Variables::, for a list of the predefined
 variables.  These predefined variables can be used and assigned just
 like all other variables, but their values are also used or changed
@@ -7755,7 +7756,7 @@ point, so the default behavior was restored to use a 
period as the
 decimal point character.  You can use the `--use-lc-numeric' option
 (*note Options::) to force `gawk' to use the locale's decimal point
 character.  (`gawk' also uses the locale's decimal point character when
-in POSIX mode, either via `--posix', or the `POSIXLY_CORRECT'
+in POSIX mode, either via `--posix' or the `POSIXLY_CORRECT'
 environment variable, as shown previously.)
 
    *note table-locale-affects:: describes the cases in which the
@@ -7771,10 +7772,10 @@ Input       Use period     Use locale
 
 Table 6.1: Locale decimal point versus a period
 
-   Finally, modern day formal standards and IEEE standard floating-point
-representation can have an unusual but important effect on the way
-`gawk' converts some special string values to numbers.  The details are
-presented in *note POSIX Floating Point Problems::.
+   Finally, modern-day formal standards and the IEEE standard
+floating-point representation can have an unusual but important effect
+on the way `gawk' converts some special string values to numbers.  The
+details are presented in *note POSIX Floating Point Problems::.
 
 
 File: gawk.info,  Node: All Operators,  Next: Truth Values and Conditions,  
Prev: Values,  Up: Expressions
@@ -7782,7 +7783,7 @@ File: gawk.info,  Node: All Operators,  Next: Truth 
Values and Conditions,  Prev
 6.2 Operators: Doing Something with Values
 ==========================================
 
-This minor node introduces the "operators" which make use of the values
+This minor node introduces the "operators" that make use of the values
 provided by constants and variables.
 
 * Menu:
@@ -7963,7 +7964,7 @@ you'll get.
 
    ---------- Footnotes ----------
 
-   (1) It happens that BWK `awk', `gawk' and `mawk' all "get it right,"
+   (1) It happens that BWK `awk', `gawk', and `mawk' all "get it right,"
 but you should not rely on this.
 
 
@@ -8080,7 +8081,7 @@ righthand expression.  For example:
 The indices of `bar' are practically guaranteed to be different, because
 `rand()' returns different values each time it is called.  (Arrays and
 the `rand()' function haven't been covered yet.  *Note Arrays::, and
-*note Numeric Functions::, for more information).  This example
+*note Numeric Functions::, for more information.)  This example
 illustrates an important fact about assignment operators: the lefthand
 expression is only evaluated _once_.
 
@@ -8098,14 +8099,14 @@ converted to a number.
 
 Operator               Effect
 -------------------------------------------------------------------------- 
-LVALUE `+=' INCREMENT  Add INCREMENT to the value of LVALUE
-LVALUE `-=' DECREMENT  Subtract DECREMENT from the value of LVALUE
-LVALUE `*='            Multiply the value of LVALUE by COEFFICIENT
+LVALUE `+=' INCREMENT  Add INCREMENT to the value of LVALUE.
+LVALUE `-=' DECREMENT  Subtract DECREMENT from the value of LVALUE.
+LVALUE `*='            Multiply the value of LVALUE by COEFFICIENT.
 COEFFICIENT            
-LVALUE `/=' DIVISOR    Divide the value of LVALUE by DIVISOR
-LVALUE `%=' MODULUS    Set LVALUE to its remainder by MODULUS
-LVALUE `^=' POWER      
-LVALUE `**=' POWER     Raise LVALUE to the power POWER (c.e.)
+LVALUE `/=' DIVISOR    Divide the value of LVALUE by DIVISOR.
+LVALUE `%=' MODULUS    Set LVALUE to its remainder by MODULUS.
+LVALUE `^=' POWER      Raise LVALUE to the power POWER.
+LVALUE `**=' POWER     Raise LVALUE to the power POWER. (c.e.)
 
 Table 6.2: Arithmetic assignment operators
 
@@ -8190,8 +8191,8 @@ is a summary of increment and decrement expressions:
 
                        Operator Evaluation Order
 
-     Doctor, doctor!  It hurts when I do this!
-     So don't do that!  -- Groucho Marx
+     Doctor, it hurts when I do this!
+     Then don't do that!  -- Groucho Marx
 
 What happens for something like the following?
 
@@ -8206,7 +8207,7 @@ Or something even stranger?
 
    In other words, when do the various side effects prescribed by the
 postfix operators (`b++') take effect?  When side effects happen is
-"implementation defined".  In other words, it is up to the particular
+"implementation-defined".  In other words, it is up to the particular
 version of `awk'.  The result for the first example may be 12 or 13,
 and for the second, it may be 22 or 23.
 
@@ -8221,7 +8222,7 @@ File: gawk.info,  Node: Truth Values and Conditions,  
Next: Function Calls,  Pre
 ===============================
 
 In certain contexts, expression values also serve as "truth values";
-(i.e., they determine what should happen next as the program runs). This
+i.e., they determine what should happen next as the program runs. This
 minor node describes how `awk' defines "true" and "false" and how
 values are compared.
 
@@ -8275,10 +8276,10 @@ File: gawk.info,  Node: Typing and Comparison,  Next: 
Boolean Ops,  Prev: Truth
      The Guide is definitive. Reality is frequently inaccurate.  --
      Douglas Adams, `The Hitchhiker's Guide to the Galaxy'
 
-   Unlike other programming languages, `awk' variables do not have a
-fixed type. Instead, they can be either a number or a string, depending
-upon the value that is assigned to them.  We look now at how variables
-are typed, and how `awk' compares variables.
+   Unlike in other programming languages, in `awk' variables do not
+have a fixed type. Instead, they can be either a number or a string,
+depending upon the value that is assigned to them.  We look now at how
+variables are typed, and how `awk' compares variables.
 
 * Menu:
 
@@ -8299,16 +8300,16 @@ 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.
+     "numeric" attribute.
 
    * A string constant or the result of a string operation has the
-     STRING attribute.
+     "string" attribute.
 
    * Fields, `getline' input, `FILENAME', `ARGV' elements, `ENVIRON'
      elements, and the elements of an array created by `match()',
      `split()', and `patsplit()' that are numeric strings have the
-     STRNUM attribute.  Otherwise, they have the STRING attribute.
-     Uninitialized variables also have the STRNUM attribute.
+     "strnum" attribute.  Otherwise, they have the "string" attribute.
+     Uninitialized variables also have the "strnum" attribute.
 
    * Attributes propagate across assignments but are not changed by any
      use.
@@ -8350,12 +8351,13 @@ constant, then a string comparison is performed.  
Otherwise, a numeric
 comparison is performed.
 
    This point bears additional emphasis: All user input is made of
-characters, and so is first and foremost of STRING type; input strings
-that look numeric are additionally given the STRNUM attribute.  Thus,
-the six-character input string ` +3.14' receives the STRNUM attribute.
+characters, and so is first and foremost of string type; input strings
+that look numeric are additionally given the strnum attribute.  Thus,
+the six-character input string ` +3.14' receives the strnum attribute.
 In contrast, the eight characters `" +3.14"' appearing in program text
 comprise a string constant.  The following examples print `1' when the
-comparison between the two different constants is true, `0' otherwise:
+comparison between the two different constants is true, and `0'
+otherwise:
 
      $ echo ' +3.14' | awk '{ print($0 == " +3.14") }'    True
      -| 1
@@ -8454,7 +8456,7 @@ comparison is:
      -| false
 
 the result is `false' because both `$1' and `$2' are user input.  They
-are numeric strings--therefore both have the STRNUM attribute,
+are numeric strings--therefore both have the strnum attribute,
 dictating a numeric comparison.  The purpose of the comparison rules
 and the use of numeric strings is to attempt to produce the behavior
 that is "least surprising," while still "doing the right thing."
@@ -8513,7 +8515,7 @@ is an example to illustrate the difference, in an 
`en_US.UTF-8' locale:
    ---------- Footnotes ----------
 
    (1) Technically, string comparison is supposed to behave the same
-way as if the strings are compared with the C `strcoll()' function.
+way as if the strings were compared with the C `strcoll()' function.
 
 
 File: gawk.info,  Node: Boolean Ops,  Next: Conditional Exp,  Prev: Typing and 
Comparison,  Up: Truth Values and Conditions
@@ -8576,7 +8578,7 @@ Boolean operators are:
 
    The `&&' and `||' operators are called "short-circuit" operators
 because of the way they work.  Evaluation of the full expression is
-"short-circuited" if the result can be determined part way through its
+"short-circuited" if the result can be determined partway through its
 evaluation.
 
    Statements that end with `&&' or `||' can be continued simply by
@@ -8629,15 +8631,15 @@ File: gawk.info,  Node: Conditional Exp,  Prev: Boolean 
Ops,  Up: Truth Values a
 
 A "conditional expression" is a special kind of expression that has
 three operands.  It allows you to use one expression's value to select
-one of two other expressions.  The conditional expression is the same
-as in the C language, as shown here:
+one of two other expressions.  The conditional expression in `awk' is
+the same as in the C language, as shown here:
 
      SELECTOR ? IF-TRUE-EXP : IF-FALSE-EXP
 
 There are three subexpressions.  The first, SELECTOR, is always
 computed first.  If it is "true" (not zero or not null), then
-IF-TRUE-EXP is computed next and its value becomes the value of the
-whole expression.  Otherwise, IF-FALSE-EXP is computed next and its
+IF-TRUE-EXP is computed next, and its value becomes the value of the
+whole expression.  Otherwise, IF-FALSE-EXP is computed next, and its
 value becomes the value of the whole expression.  For example, the
 following expression produces the absolute value of `x':
 
@@ -8671,7 +8673,7 @@ A "function" is a name for a particular calculation.  
This enables you
 to ask for it by name at any point in the program.  For example, the
 function `sqrt()' computes the square root of a number.
 
-   A fixed set of functions are "built-in", which means they are
+   A fixed set of functions are "built in", which means they are
 available in every `awk' program.  The `sqrt()' function is one of
 these.  *Note Built-in::, for a list of built-in functions and their
 descriptions.  In addition, you can define functions for use in your
@@ -8806,7 +8808,7 @@ precedence:
      Increment, decrement.
 
 `^ **'
-     Exponentiation.  These operators group right-to-left.
+     Exponentiation.  These operators group right to left.
 
 `+ - !'
      Unary plus, minus, logical "not."
@@ -8833,7 +8835,7 @@ String concatenation
      operand of another operator.  As a result, it does not make sense
      to use a redirection operator near another operator of lower
      precedence without parentheses.  Such combinations (e.g., `print
-     foo > a ? b : c'), result in syntax errors.  The correct way to
+     foo > a ? b : c') result in syntax errors.  The correct way to
      write this statement is `print foo > (a ? b : c)'.
 
 `~ !~'
@@ -8843,16 +8845,16 @@ String concatenation
      Array membership.
 
 `&&'
-     Logical "and".
+     Logical "and."
 
 `||'
-     Logical "or".
+     Logical "or."
 
 `?:'
-     Conditional.  This operator groups right-to-left.
+     Conditional.  This operator groups right to left.
 
 `= += -= *= /= %= ^= **='
-     Assignment.  These operators group right-to-left.
+     Assignment.  These operators group right to left.
 
      NOTE: The `|&', `**', and `**=' operators are not specified by
      POSIX.  For maximum portability, do not use them.
@@ -8920,24 +8922,24 @@ File: gawk.info,  Node: Expressions Summary,  Prev: 
Locales,  Up: Expressions
 
    * `awk' provides the usual arithmetic operators (addition,
      subtraction, multiplication, division, modulus), and unary plus
-     and minus.  It also provides comparison operators, boolean
-     operators, array membership testing, and regexp matching
-     operators.  String concatenation is accomplished by placing two
-     expressions next to each other; there is no explicit operator.
-     The three-operand `?:' operator provides an "if-else" test within
-     expressions.
+     and minus.  It also provides comparison operators, Boolean
+     operators, an array membership testing operator, and regexp
+     matching operators.  String concatenation is accomplished by
+     placing two expressions next to each other; there is no explicit
+     operator.  The three-operand `?:' operator provides an "if-else"
+     test within expressions.
 
    * Assignment operators provide convenient shorthands for common
      arithmetic operations.
 
-   * In `awk', a value is considered to be true if it is non-zero _or_
+   * In `awk', a value is considered to be true if it is nonzero _or_
      non-null. Otherwise, the value is false.
 
    * A variable's type is set upon each assignment and may change over
      its lifetime.  The type determines how it behaves in comparisons
      (string or numeric).
 
-   * Function calls return a value which may be used as part of a larger
+   * Function calls return a value that may be used as part of a larger
      expression.  Expressions used to pass parameter values are fully
      evaluated before the function is called.  `awk' provides built-in
      and user-defined functions; this is described in *note Functions::.
@@ -9111,7 +9113,7 @@ inside Boolean patterns.  Likewise, the special patterns 
`BEGIN', `END',
 `BEGINFILE', and `ENDFILE', which never match any input record, are not
 expressions and cannot appear inside Boolean patterns.
 
-   The precedence of the different operators which can appear in
+   The precedence of the different operators that can appear in
 patterns is described in *note Precedence::.
 
 
@@ -9131,8 +9133,8 @@ following:
 prints every record in `myfile' between `on'/`off' pairs, inclusive.
 
    A range pattern starts out by matching BEGPAT against every input
-record.  When a record matches BEGPAT, the range pattern is "turned on"
-and the range pattern matches this record as well.  As long as the
+record.  When a record matches BEGPAT, the range pattern is "turned
+on", and the range pattern matches this record as well.  As long as the
 range pattern stays turned on, it automatically matches every input
 record read.  The range pattern also matches ENDPAT against every input
 record; when this succeeds, the range pattern is "turned off" again for
@@ -9250,7 +9252,7 @@ for more information on using library functions.  *Note 
Library
 Functions::, for a number of useful library functions.
 
    If an `awk' program has only `BEGIN' rules and no other rules, then
-the program exits after the `BEGIN' rule is run.(1)  However, if an
+the program exits after the `BEGIN' rules are run.(1)  However, if an
 `END' rule exists, then the input is read, even if there are no other
 rules in the program.  This is necessary in case the `END' rule checks
 the `FNR' and `NR' variables.
@@ -9276,7 +9278,7 @@ give `$0' a real value is to execute a `getline' command 
without a
 variable (*note Getline::).  Another way is simply to assign a value to
 `$0'.
 
-   The second point is similar to the first but from the other
+   The second point is similar to the first, but from the other
 direction.  Traditionally, due largely to implementation issues, `$0'
 and `NF' were _undefined_ inside an `END' rule.  The POSIX standard
 specifies that `NF' is available in an `END' rule. It contains the
@@ -9337,7 +9339,7 @@ tasks that would otherwise be difficult or impossible to 
perform:
      entirely.  Otherwise, `gawk' exits with the usual fatal error.
 
    * If you have written extensions that modify the record handling (by
-     inserting an "input parser," *note Input Parsers::), you can invoke
+     inserting an "input parser"; *note Input Parsers::), you can invoke
      them at this point, before `gawk' has started processing the file.
      (This is a _very_ advanced feature, currently used only by the
      `gawkextlib' project (http://gawkextlib.sourceforge.net).)
@@ -9347,16 +9349,15 @@ last record in an input file.  For the last input file, 
it will be
 called before any `END' rules.  The `ENDFILE' rule is executed even for
 empty input files.
 
-   Normally, when an error occurs when reading input in the normal input
-processing loop, the error is fatal.  However, if an `ENDFILE' rule is
-present, the error becomes non-fatal, and instead `ERRNO' is set.  This
-makes it possible to catch and process I/O errors at the level of the
-`awk' program.
+   Normally, when an error occurs when reading input in the normal
+input-processing loop, the error is fatal.  However, if an `ENDFILE'
+rule is present, the error becomes non-fatal, and instead `ERRNO' is
+set.  This makes it possible to catch and process I/O errors at the
+level of the `awk' program.
 
    The `next' statement (*note Next Statement::) is not allowed inside
 either a `BEGINFILE' or an `ENDFILE' rule.  The `nextfile' statement is
-allowed only inside a `BEGINFILE' rule, but not inside an `ENDFILE'
-rule.
+allowed only inside a `BEGINFILE' rule, not inside an `ENDFILE' rule.
 
    The `getline' statement (*note Getline::) is restricted inside both
 `BEGINFILE' and `ENDFILE': only redirected forms of `getline' are
@@ -9401,11 +9402,11 @@ following program:
           END { print nmatches, "found" }' /path/to/data
 
 The `awk' program consists of two pieces of quoted text that are
-concatenated together to form the program.  The first part is double
-quoted, which allows substitution of the `pattern' shell variable
-inside the quotes.  The second part is single quoted.
+concatenated together to form the program.  The first part is
+double-quoted, which allows substitution of the `pattern' shell
+variable inside the quotes.  The second part is single-quoted.
 
-   Variable substitution via quoting works, but can be potentially
+   Variable substitution via quoting works, but can potentially be
 messy.  It requires a good understanding of the shell's quoting rules
 (*note Quoting::), and it's often difficult to correctly match up the
 quotes when reading the program.
@@ -9602,15 +9603,15 @@ The body of this loop is a compound statement enclosed 
in braces,
 containing two statements.  The loop works in the following manner:
 first, the value of `i' is set to one.  Then, the `while' statement
 tests whether `i' is less than or equal to three.  This is true when
-`i' equals one, so the `i'-th field is printed.  Then the `i++'
+`i' equals one, so the `i'th field is printed.  Then the `i++'
 increments the value of `i' and the loop repeats.  The loop terminates
 when `i' reaches four.
 
    A newline is not required between the condition and the body;
 however, using one makes the program clearer unless the body is a
-compound statement or else is very simple.  The newline after the
-open-brace that begins the compound statement is not required either,
-but the program is harder to read without it.
+compound statement or else is very simple.  The newline after the open
+brace that begins the compound statement is not required either, but the
+program is harder to read without it.
 
 
 File: gawk.info,  Node: Do Statement,  Next: For Statement,  Prev: While 
Statement,  Up: Statements
@@ -9633,7 +9634,7 @@ Contrast this with the corresponding `while' statement:
      while (CONDITION)
          BODY
 
-This statement does not execute BODY even once if the CONDITION is
+This statement does not execute the BODY even once if the CONDITION is
 false to begin with.  The following is an example of a `do' statement:
 
      {
@@ -9689,7 +9690,7 @@ loop.)
    The same is true of the INCREMENT part. Incrementing additional
 variables requires separate statements at the end of the loop.  The C
 compound expression, using C's comma operator, is useful in this
-context but it is not supported in `awk'.
+context, but it is not supported in `awk'.
 
    Most often, INCREMENT is an increment expression, as in the previous
 example.  But this is not required; it can be any expression
@@ -9765,7 +9766,7 @@ statement looks like this:
 
    Control flow in the `switch' statement works as it does in C. Once a
 match to a given case is made, the case statement bodies execute until
-a `break', `continue', `next', `nextfile'  or `exit' is encountered, or
+a `break', `continue', `next', `nextfile', or `exit' is encountered, or
 the end of the `switch' statement itself. For example:
 
      while ((c = getopt(ARGC, ARGV, "aksx")) != -1) {
@@ -10008,12 +10009,11 @@ listed in `ARGV'.
      standard.  See the Austin Group website
      (http://austingroupbugs.net/view.php?id=607).
 
-   The current version of BWK `awk', and `mawk' also support
-`nextfile'.  However, they don't allow the `nextfile' statement inside
-function bodies (*note User-defined::).  `gawk' does; a `nextfile'
-inside a function body reads the next record and starts processing it
-with the first rule in the program, just as any other `nextfile'
-statement.
+   The current version of BWK `awk' and `mawk' also support `nextfile'.
+However, they don't allow the `nextfile' statement inside function
+bodies (*note User-defined::).  `gawk' does; a `nextfile' inside a
+function body reads the next record and starts processing it with the
+first rule in the program, just as any other `nextfile' statement.
 
 
 File: gawk.info,  Node: Exit Statement,  Prev: Nextfile Statement,  Up: 
Statements
@@ -10041,9 +10041,9 @@ record, skips reading any remaining input records, and 
executes the
 they do not execute.
 
    In such a case, if you don't want the `END' rule to do its job, set
-a variable to nonzero before the `exit' statement and check that
-variable in the `END' rule.  *Note Assert Function::, for an example
-that does this.
+a variable to a nonzero value before the `exit' statement and check
+that variable in the `END' rule.  *Note Assert Function::, for an
+example that does this.
 
    If an argument is supplied to `exit', its value is used as the exit
 status code for the `awk' process.  If no argument is supplied, `exit'
@@ -10101,7 +10101,7 @@ of activity.
 
 File: gawk.info,  Node: User-modified,  Next: Auto-set,  Up: Built-in Variables
 
-7.5.1 Built-In Variables That Control `awk'
+7.5.1 Built-in Variables That Control `awk'
 -------------------------------------------
 
 The following is an alphabetical list of variables that you can change
@@ -33018,7 +33018,7 @@ Index
 * getline from a file:                   Getline/File.        (line   6)
 * getline into a variable:               Getline/Variable.    (line   6)
 * getline statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
-                                                              (line  54)
+                                                              (line  53)
 * getlocaltime() user-defined function:  Getlocaltime Function.
                                                               (line  16)
 * getopt() function (C library):         Getopt Function.     (line  15)
@@ -34586,423 +34586,423 @@ Ref: Close Files And Pipes-Footnote-2315212
 Node: Output Summary315362
 Node: Output Exercises316360
 Node: Expressions317040
-Node: Values318225
-Node: Constants318903
-Node: Scalar Constants319594
-Ref: Scalar Constants-Footnote-1320453
-Node: Nondecimal-numbers320703
-Node: Regexp Constants323721
-Node: Using Constant Regexps324246
-Node: Variables327389
-Node: Using Variables328044
-Node: Assignment Options329955
-Node: Conversion331830
-Node: Strings And Numbers332354
-Ref: Strings And Numbers-Footnote-1335419
-Node: Locale influences conversions335528
-Ref: table-locale-affects338275
-Node: All Operators338863
-Node: Arithmetic Ops339493
-Node: Concatenation341998
-Ref: Concatenation-Footnote-1344817
-Node: Assignment Ops344923
-Ref: table-assign-ops349902
-Node: Increment Ops351174
-Node: Truth Values and Conditions354612
-Node: Truth Values355697
-Node: Typing and Comparison356746
-Node: Variable Typing357556
-Node: Comparison Operators361209
-Ref: table-relational-ops361619
-Node: POSIX String Comparison365114
-Ref: POSIX String Comparison-Footnote-1366186
-Node: Boolean Ops366324
-Ref: Boolean Ops-Footnote-1370803
-Node: Conditional Exp370894
-Node: Function Calls372621
-Node: Precedence376501
-Node: Locales380162
-Node: Expressions Summary381794
-Node: Patterns and Actions384354
-Node: Pattern Overview385474
-Node: Regexp Patterns387153
-Node: Expression Patterns387696
-Node: Ranges391406
-Node: BEGIN/END394512
-Node: Using BEGIN/END395273
-Ref: Using BEGIN/END-Footnote-1398007
-Node: I/O And BEGIN/END398113
-Node: BEGINFILE/ENDFILE400427
-Node: Empty403328
-Node: Using Shell Variables403645
-Node: Action Overview405918
-Node: Statements408244
-Node: If Statement410092
-Node: While Statement411587
-Node: Do Statement413616
-Node: For Statement414760
-Node: Switch Statement417917
-Node: Break Statement420299
-Node: Continue Statement422340
-Node: Next Statement424167
-Node: Nextfile Statement426548
-Node: Exit Statement429178
-Node: Built-in Variables431581
-Node: User-modified432714
-Ref: User-modified-Footnote-1440395
-Node: Auto-set440457
-Ref: Auto-set-Footnote-1453492
-Ref: Auto-set-Footnote-2453697
-Node: ARGC and ARGV453753
-Node: Pattern Action Summary457971
-Node: Arrays460398
-Node: Array Basics461727
-Node: Array Intro462571
-Ref: figure-array-elements464535
-Ref: Array Intro-Footnote-1467061
-Node: Reference to Elements467189
-Node: Assigning Elements469641
-Node: Array Example470132
-Node: Scanning an Array471890
-Node: Controlling Scanning474906
-Ref: Controlling Scanning-Footnote-1480102
-Node: Numeric Array Subscripts480418
-Node: Uninitialized Subscripts482603
-Node: Delete484220
-Ref: Delete-Footnote-1486963
-Node: Multidimensional487020
-Node: Multiscanning490117
-Node: Arrays of Arrays491706
-Node: Arrays Summary496465
-Node: Functions498557
-Node: Built-in499456
-Node: Calling Built-in500534
-Node: Numeric Functions502525
-Ref: Numeric Functions-Footnote-1506542
-Ref: Numeric Functions-Footnote-2506899
-Ref: Numeric Functions-Footnote-3506947
-Node: String Functions507219
-Ref: String Functions-Footnote-1530694
-Ref: String Functions-Footnote-2530823
-Ref: String Functions-Footnote-3531071
-Node: Gory Details531158
-Ref: table-sub-escapes532939
-Ref: table-sub-proposed534459
-Ref: table-posix-sub535823
-Ref: table-gensub-escapes537359
-Ref: Gory Details-Footnote-1538191
-Node: I/O Functions538342
-Ref: I/O Functions-Footnote-1545560
-Node: Time Functions545707
-Ref: Time Functions-Footnote-1556195
-Ref: Time Functions-Footnote-2556263
-Ref: Time Functions-Footnote-3556421
-Ref: Time Functions-Footnote-4556532
-Ref: Time Functions-Footnote-5556644
-Ref: Time Functions-Footnote-6556871
-Node: Bitwise Functions557137
-Ref: table-bitwise-ops557699
-Ref: Bitwise Functions-Footnote-1562008
-Node: Type Functions562177
-Node: I18N Functions563328
-Node: User-defined564973
-Node: Definition Syntax565778
-Ref: Definition Syntax-Footnote-1571185
-Node: Function Example571256
-Ref: Function Example-Footnote-1574175
-Node: Function Caveats574197
-Node: Calling A Function574715
-Node: Variable Scope575673
-Node: Pass By Value/Reference578661
-Node: Return Statement582156
-Node: Dynamic Typing585137
-Node: Indirect Calls586066
-Ref: Indirect Calls-Footnote-1597368
-Node: Functions Summary597496
-Node: Library Functions600198
-Ref: Library Functions-Footnote-1603807
-Ref: Library Functions-Footnote-2603950
-Node: Library Names604121
-Ref: Library Names-Footnote-1607575
-Ref: Library Names-Footnote-2607798
-Node: General Functions607884
-Node: Strtonum Function608987
-Node: Assert Function612009
-Node: Round Function615333
-Node: Cliff Random Function616874
-Node: Ordinal Functions617890
-Ref: Ordinal Functions-Footnote-1620953
-Ref: Ordinal Functions-Footnote-2621205
-Node: Join Function621416
-Ref: Join Function-Footnote-1623185
-Node: Getlocaltime Function623385
-Node: Readfile Function627129
-Node: Shell Quoting629099
-Node: Data File Management630500
-Node: Filetrans Function631132
-Node: Rewind Function635188
-Node: File Checking636575
-Ref: File Checking-Footnote-1637907
-Node: Empty Files638108
-Node: Ignoring Assigns640087
-Node: Getopt Function641638
-Ref: Getopt Function-Footnote-1653100
-Node: Passwd Functions653300
-Ref: Passwd Functions-Footnote-1662137
-Node: Group Functions662225
-Ref: Group Functions-Footnote-1670119
-Node: Walking Arrays670332
-Node: Library Functions Summary671935
-Node: Library Exercises673336
-Node: Sample Programs674616
-Node: Running Examples675386
-Node: Clones676114
-Node: Cut Program677338
-Node: Egrep Program687057
-Ref: Egrep Program-Footnote-1694555
-Node: Id Program694665
-Node: Split Program698310
-Ref: Split Program-Footnote-1701758
-Node: Tee Program701886
-Node: Uniq Program704675
-Node: Wc Program712094
-Ref: Wc Program-Footnote-1716344
-Node: Miscellaneous Programs716438
-Node: Dupword Program717651
-Node: Alarm Program719682
-Node: Translate Program724486
-Ref: Translate Program-Footnote-1729051
-Node: Labels Program729321
-Ref: Labels Program-Footnote-1732672
-Node: Word Sorting732756
-Node: History Sorting736827
-Node: Extract Program738663
-Node: Simple Sed746188
-Node: Igawk Program749256
-Ref: Igawk Program-Footnote-1763580
-Ref: Igawk Program-Footnote-2763781
-Ref: Igawk Program-Footnote-3763903
-Node: Anagram Program764018
-Node: Signature Program767075
-Node: Programs Summary768322
-Node: Programs Exercises769515
-Ref: Programs Exercises-Footnote-1773646
-Node: Advanced Features773737
-Node: Nondecimal Data775685
-Node: Array Sorting777275
-Node: Controlling Array Traversal777972
-Ref: Controlling Array Traversal-Footnote-1786305
-Node: Array Sorting Functions786423
-Ref: Array Sorting Functions-Footnote-1790312
-Node: Two-way I/O790508
-Ref: Two-way I/O-Footnote-1795453
-Ref: Two-way I/O-Footnote-2795639
-Node: TCP/IP Networking795721
-Node: Profiling798594
-Node: Advanced Features Summary806141
-Node: Internationalization808074
-Node: I18N and L10N809554
-Node: Explaining gettext810240
-Ref: Explaining gettext-Footnote-1815265
-Ref: Explaining gettext-Footnote-2815449
-Node: Programmer i18n815614
-Ref: Programmer i18n-Footnote-1820480
-Node: Translator i18n820529
-Node: String Extraction821323
-Ref: String Extraction-Footnote-1822454
-Node: Printf Ordering822540
-Ref: Printf Ordering-Footnote-1825326
-Node: I18N Portability825390
-Ref: I18N Portability-Footnote-1827845
-Node: I18N Example827908
-Ref: I18N Example-Footnote-1830711
-Node: Gawk I18N830783
-Node: I18N Summary831421
-Node: Debugger832760
-Node: Debugging833782
-Node: Debugging Concepts834223
-Node: Debugging Terms836076
-Node: Awk Debugging838648
-Node: Sample Debugging Session839542
-Node: Debugger Invocation840062
-Node: Finding The Bug841446
-Node: List of Debugger Commands847921
-Node: Breakpoint Control849254
-Node: Debugger Execution Control852950
-Node: Viewing And Changing Data856314
-Node: Execution Stack859692
-Node: Debugger Info861329
-Node: Miscellaneous Debugger Commands865346
-Node: Readline Support870375
-Node: Limitations871267
-Node: Debugging Summary873381
-Node: Arbitrary Precision Arithmetic874549
-Node: Computer Arithmetic875965
-Ref: table-numeric-ranges879563
-Ref: Computer Arithmetic-Footnote-1880422
-Node: Math Definitions880479
-Ref: table-ieee-formats883767
-Ref: Math Definitions-Footnote-1884371
-Node: MPFR features884476
-Node: FP Math Caution886147
-Ref: FP Math Caution-Footnote-1887197
-Node: Inexactness of computations887566
-Node: Inexact representation888525
-Node: Comparing FP Values889882
-Node: Errors accumulate890964
-Node: Getting Accuracy892397
-Node: Try To Round895059
-Node: Setting precision895958
-Ref: table-predefined-precision-strings896642
-Node: Setting the rounding mode898431
-Ref: table-gawk-rounding-modes898795
-Ref: Setting the rounding mode-Footnote-1902250
-Node: Arbitrary Precision Integers902429
-Ref: Arbitrary Precision Integers-Footnote-1905415
-Node: POSIX Floating Point Problems905564
-Ref: POSIX Floating Point Problems-Footnote-1909437
-Node: Floating point summary909475
-Node: Dynamic Extensions911669
-Node: Extension Intro913221
-Node: Plugin License914487
-Node: Extension Mechanism Outline915284
-Ref: figure-load-extension915712
-Ref: figure-register-new-function917192
-Ref: figure-call-new-function918196
-Node: Extension API Description920182
-Node: Extension API Functions Introduction921632
-Node: General Data Types926456
-Ref: General Data Types-Footnote-1932195
-Node: Memory Allocation Functions932494
-Ref: Memory Allocation Functions-Footnote-1935333
-Node: Constructor Functions935429
-Node: Registration Functions937163
-Node: Extension Functions937848
-Node: Exit Callback Functions940145
-Node: Extension Version String941393
-Node: Input Parsers942058
-Node: Output Wrappers951937
-Node: Two-way processors956452
-Node: Printing Messages958656
-Ref: Printing Messages-Footnote-1959732
-Node: Updating `ERRNO'959884
-Node: Requesting Values960624
-Ref: table-value-types-returned961352
-Node: Accessing Parameters962309
-Node: Symbol Table Access963540
-Node: Symbol table by name964054
-Node: Symbol table by cookie966035
-Ref: Symbol table by cookie-Footnote-1970179
-Node: Cached values970242
-Ref: Cached values-Footnote-1973741
-Node: Array Manipulation973832
-Ref: Array Manipulation-Footnote-1974930
-Node: Array Data Types974967
-Ref: Array Data Types-Footnote-1977622
-Node: Array Functions977714
-Node: Flattening Arrays981568
-Node: Creating Arrays988460
-Node: Extension API Variables993231
-Node: Extension Versioning993867
-Node: Extension API Informational Variables995768
-Node: Extension API Boilerplate996833
-Node: Finding Extensions1000642
-Node: Extension Example1001202
-Node: Internal File Description1001974
-Node: Internal File Ops1006041
-Ref: Internal File Ops-Footnote-11017711
-Node: Using Internal File Ops1017851
-Ref: Using Internal File Ops-Footnote-11020234
-Node: Extension Samples1020507
-Node: Extension Sample File Functions1022033
-Node: Extension Sample Fnmatch1029671
-Node: Extension Sample Fork1031162
-Node: Extension Sample Inplace1032377
-Node: Extension Sample Ord1034052
-Node: Extension Sample Readdir1034888
-Ref: table-readdir-file-types1035764
-Node: Extension Sample Revout1036575
-Node: Extension Sample Rev2way1037165
-Node: Extension Sample Read write array1037905
-Node: Extension Sample Readfile1039845
-Node: Extension Sample Time1040940
-Node: Extension Sample API Tests1042289
-Node: gawkextlib1042780
-Node: Extension summary1045438
-Node: Extension Exercises1049127
-Node: Language History1049849
-Node: V7/SVR3.11051505
-Node: SVR41053686
-Node: POSIX1055131
-Node: BTL1056520
-Node: POSIX/GNU1057254
-Node: Feature History1062818
-Node: Common Extensions1075916
-Node: Ranges and Locales1077240
-Ref: Ranges and Locales-Footnote-11081858
-Ref: Ranges and Locales-Footnote-21081885
-Ref: Ranges and Locales-Footnote-31082119
-Node: Contributors1082340
-Node: History summary1087881
-Node: Installation1089251
-Node: Gawk Distribution1090197
-Node: Getting1090681
-Node: Extracting1091504
-Node: Distribution contents1093139
-Node: Unix Installation1098856
-Node: Quick Installation1099473
-Node: Additional Configuration Options1101897
-Node: Configuration Philosophy1103635
-Node: Non-Unix Installation1106004
-Node: PC Installation1106462
-Node: PC Binary Installation1107781
-Node: PC Compiling1109629
-Ref: PC Compiling-Footnote-11112650
-Node: PC Testing1112759
-Node: PC Using1113935
-Node: Cygwin1118050
-Node: MSYS1118873
-Node: VMS Installation1119373
-Node: VMS Compilation1120165
-Ref: VMS Compilation-Footnote-11121387
-Node: VMS Dynamic Extensions1121445
-Node: VMS Installation Details1123129
-Node: VMS Running1125381
-Node: VMS GNV1128217
-Node: VMS Old Gawk1128951
-Node: Bugs1129421
-Node: Other Versions1133304
-Node: Installation summary1139728
-Node: Notes1140784
-Node: Compatibility Mode1141649
-Node: Additions1142431
-Node: Accessing The Source1143356
-Node: Adding Code1144791
-Node: New Ports1150948
-Node: Derived Files1155430
-Ref: Derived Files-Footnote-11160905
-Ref: Derived Files-Footnote-21160939
-Ref: Derived Files-Footnote-31161535
-Node: Future Extensions1161649
-Node: Implementation Limitations1162255
-Node: Extension Design1163503
-Node: Old Extension Problems1164657
-Ref: Old Extension Problems-Footnote-11166174
-Node: Extension New Mechanism Goals1166231
-Ref: Extension New Mechanism Goals-Footnote-11169591
-Node: Extension Other Design Decisions1169780
-Node: Extension Future Growth1171888
-Node: Old Extension Mechanism1172724
-Node: Notes summary1174486
-Node: Basic Concepts1175672
-Node: Basic High Level1176353
-Ref: figure-general-flow1176625
-Ref: figure-process-flow1177224
-Ref: Basic High Level-Footnote-11180453
-Node: Basic Data Typing1180638
-Node: Glossary1183966
-Node: Copying1215895
-Node: GNU Free Documentation License1253451
-Node: Index1278587
+Node: Values318229
+Node: Constants318906
+Node: Scalar Constants319597
+Ref: Scalar Constants-Footnote-1320459
+Node: Nondecimal-numbers320709
+Node: Regexp Constants323719
+Node: Using Constant Regexps324245
+Node: Variables327408
+Node: Using Variables328065
+Node: Assignment Options329976
+Node: Conversion331851
+Node: Strings And Numbers332375
+Ref: Strings And Numbers-Footnote-1335440
+Node: Locale influences conversions335549
+Ref: table-locale-affects338295
+Node: All Operators338887
+Node: Arithmetic Ops339516
+Node: Concatenation342021
+Ref: Concatenation-Footnote-1344840
+Node: Assignment Ops344947
+Ref: table-assign-ops349926
+Node: Increment Ops351236
+Node: Truth Values and Conditions354667
+Node: Truth Values355750
+Node: Typing and Comparison356799
+Node: Variable Typing357615
+Node: Comparison Operators361282
+Ref: table-relational-ops361692
+Node: POSIX String Comparison365187
+Ref: POSIX String Comparison-Footnote-1366259
+Node: Boolean Ops366398
+Ref: Boolean Ops-Footnote-1370876
+Node: Conditional Exp370967
+Node: Function Calls372705
+Node: Precedence376585
+Node: Locales380245
+Node: Expressions Summary381877
+Node: Patterns and Actions384448
+Node: Pattern Overview385568
+Node: Regexp Patterns387247
+Node: Expression Patterns387790
+Node: Ranges391499
+Node: BEGIN/END394606
+Node: Using BEGIN/END395367
+Ref: Using BEGIN/END-Footnote-1398103
+Node: I/O And BEGIN/END398209
+Node: BEGINFILE/ENDFILE400524
+Node: Empty403421
+Node: Using Shell Variables403738
+Node: Action Overview406011
+Node: Statements408337
+Node: If Statement410185
+Node: While Statement411680
+Node: Do Statement413708
+Node: For Statement414856
+Node: Switch Statement418014
+Node: Break Statement420396
+Node: Continue Statement422437
+Node: Next Statement424264
+Node: Nextfile Statement426645
+Node: Exit Statement429273
+Node: Built-in Variables431684
+Node: User-modified432817
+Ref: User-modified-Footnote-1440498
+Node: Auto-set440560
+Ref: Auto-set-Footnote-1453595
+Ref: Auto-set-Footnote-2453800
+Node: ARGC and ARGV453856
+Node: Pattern Action Summary458074
+Node: Arrays460501
+Node: Array Basics461830
+Node: Array Intro462674
+Ref: figure-array-elements464638
+Ref: Array Intro-Footnote-1467164
+Node: Reference to Elements467292
+Node: Assigning Elements469744
+Node: Array Example470235
+Node: Scanning an Array471993
+Node: Controlling Scanning475009
+Ref: Controlling Scanning-Footnote-1480205
+Node: Numeric Array Subscripts480521
+Node: Uninitialized Subscripts482706
+Node: Delete484323
+Ref: Delete-Footnote-1487066
+Node: Multidimensional487123
+Node: Multiscanning490220
+Node: Arrays of Arrays491809
+Node: Arrays Summary496568
+Node: Functions498660
+Node: Built-in499559
+Node: Calling Built-in500637
+Node: Numeric Functions502628
+Ref: Numeric Functions-Footnote-1506645
+Ref: Numeric Functions-Footnote-2507002
+Ref: Numeric Functions-Footnote-3507050
+Node: String Functions507322
+Ref: String Functions-Footnote-1530797
+Ref: String Functions-Footnote-2530926
+Ref: String Functions-Footnote-3531174
+Node: Gory Details531261
+Ref: table-sub-escapes533042
+Ref: table-sub-proposed534562
+Ref: table-posix-sub535926
+Ref: table-gensub-escapes537462
+Ref: Gory Details-Footnote-1538294
+Node: I/O Functions538445
+Ref: I/O Functions-Footnote-1545663
+Node: Time Functions545810
+Ref: Time Functions-Footnote-1556298
+Ref: Time Functions-Footnote-2556366
+Ref: Time Functions-Footnote-3556524
+Ref: Time Functions-Footnote-4556635
+Ref: Time Functions-Footnote-5556747
+Ref: Time Functions-Footnote-6556974
+Node: Bitwise Functions557240
+Ref: table-bitwise-ops557802
+Ref: Bitwise Functions-Footnote-1562111
+Node: Type Functions562280
+Node: I18N Functions563431
+Node: User-defined565076
+Node: Definition Syntax565881
+Ref: Definition Syntax-Footnote-1571288
+Node: Function Example571359
+Ref: Function Example-Footnote-1574278
+Node: Function Caveats574300
+Node: Calling A Function574818
+Node: Variable Scope575776
+Node: Pass By Value/Reference578764
+Node: Return Statement582259
+Node: Dynamic Typing585240
+Node: Indirect Calls586169
+Ref: Indirect Calls-Footnote-1597471
+Node: Functions Summary597599
+Node: Library Functions600301
+Ref: Library Functions-Footnote-1603910
+Ref: Library Functions-Footnote-2604053
+Node: Library Names604224
+Ref: Library Names-Footnote-1607678
+Ref: Library Names-Footnote-2607901
+Node: General Functions607987
+Node: Strtonum Function609090
+Node: Assert Function612112
+Node: Round Function615436
+Node: Cliff Random Function616977
+Node: Ordinal Functions617993
+Ref: Ordinal Functions-Footnote-1621056
+Ref: Ordinal Functions-Footnote-2621308
+Node: Join Function621519
+Ref: Join Function-Footnote-1623288
+Node: Getlocaltime Function623488
+Node: Readfile Function627232
+Node: Shell Quoting629202
+Node: Data File Management630603
+Node: Filetrans Function631235
+Node: Rewind Function635291
+Node: File Checking636678
+Ref: File Checking-Footnote-1638010
+Node: Empty Files638211
+Node: Ignoring Assigns640190
+Node: Getopt Function641741
+Ref: Getopt Function-Footnote-1653203
+Node: Passwd Functions653403
+Ref: Passwd Functions-Footnote-1662240
+Node: Group Functions662328
+Ref: Group Functions-Footnote-1670222
+Node: Walking Arrays670435
+Node: Library Functions Summary672038
+Node: Library Exercises673439
+Node: Sample Programs674719
+Node: Running Examples675489
+Node: Clones676217
+Node: Cut Program677441
+Node: Egrep Program687160
+Ref: Egrep Program-Footnote-1694658
+Node: Id Program694768
+Node: Split Program698413
+Ref: Split Program-Footnote-1701861
+Node: Tee Program701989
+Node: Uniq Program704778
+Node: Wc Program712197
+Ref: Wc Program-Footnote-1716447
+Node: Miscellaneous Programs716541
+Node: Dupword Program717754
+Node: Alarm Program719785
+Node: Translate Program724589
+Ref: Translate Program-Footnote-1729154
+Node: Labels Program729424
+Ref: Labels Program-Footnote-1732775
+Node: Word Sorting732859
+Node: History Sorting736930
+Node: Extract Program738766
+Node: Simple Sed746291
+Node: Igawk Program749359
+Ref: Igawk Program-Footnote-1763683
+Ref: Igawk Program-Footnote-2763884
+Ref: Igawk Program-Footnote-3764006
+Node: Anagram Program764121
+Node: Signature Program767178
+Node: Programs Summary768425
+Node: Programs Exercises769618
+Ref: Programs Exercises-Footnote-1773749
+Node: Advanced Features773840
+Node: Nondecimal Data775788
+Node: Array Sorting777378
+Node: Controlling Array Traversal778075
+Ref: Controlling Array Traversal-Footnote-1786408
+Node: Array Sorting Functions786526
+Ref: Array Sorting Functions-Footnote-1790415
+Node: Two-way I/O790611
+Ref: Two-way I/O-Footnote-1795556
+Ref: Two-way I/O-Footnote-2795742
+Node: TCP/IP Networking795824
+Node: Profiling798697
+Node: Advanced Features Summary806244
+Node: Internationalization808177
+Node: I18N and L10N809657
+Node: Explaining gettext810343
+Ref: Explaining gettext-Footnote-1815368
+Ref: Explaining gettext-Footnote-2815552
+Node: Programmer i18n815717
+Ref: Programmer i18n-Footnote-1820583
+Node: Translator i18n820632
+Node: String Extraction821426
+Ref: String Extraction-Footnote-1822557
+Node: Printf Ordering822643
+Ref: Printf Ordering-Footnote-1825429
+Node: I18N Portability825493
+Ref: I18N Portability-Footnote-1827948
+Node: I18N Example828011
+Ref: I18N Example-Footnote-1830814
+Node: Gawk I18N830886
+Node: I18N Summary831524
+Node: Debugger832863
+Node: Debugging833885
+Node: Debugging Concepts834326
+Node: Debugging Terms836179
+Node: Awk Debugging838751
+Node: Sample Debugging Session839645
+Node: Debugger Invocation840165
+Node: Finding The Bug841549
+Node: List of Debugger Commands848024
+Node: Breakpoint Control849357
+Node: Debugger Execution Control853053
+Node: Viewing And Changing Data856417
+Node: Execution Stack859795
+Node: Debugger Info861432
+Node: Miscellaneous Debugger Commands865449
+Node: Readline Support870478
+Node: Limitations871370
+Node: Debugging Summary873484
+Node: Arbitrary Precision Arithmetic874652
+Node: Computer Arithmetic876068
+Ref: table-numeric-ranges879666
+Ref: Computer Arithmetic-Footnote-1880525
+Node: Math Definitions880582
+Ref: table-ieee-formats883870
+Ref: Math Definitions-Footnote-1884474
+Node: MPFR features884579
+Node: FP Math Caution886250
+Ref: FP Math Caution-Footnote-1887300
+Node: Inexactness of computations887669
+Node: Inexact representation888628
+Node: Comparing FP Values889985
+Node: Errors accumulate891067
+Node: Getting Accuracy892500
+Node: Try To Round895162
+Node: Setting precision896061
+Ref: table-predefined-precision-strings896745
+Node: Setting the rounding mode898534
+Ref: table-gawk-rounding-modes898898
+Ref: Setting the rounding mode-Footnote-1902353
+Node: Arbitrary Precision Integers902532
+Ref: Arbitrary Precision Integers-Footnote-1905518
+Node: POSIX Floating Point Problems905667
+Ref: POSIX Floating Point Problems-Footnote-1909540
+Node: Floating point summary909578
+Node: Dynamic Extensions911772
+Node: Extension Intro913324
+Node: Plugin License914590
+Node: Extension Mechanism Outline915387
+Ref: figure-load-extension915815
+Ref: figure-register-new-function917295
+Ref: figure-call-new-function918299
+Node: Extension API Description920285
+Node: Extension API Functions Introduction921735
+Node: General Data Types926559
+Ref: General Data Types-Footnote-1932298
+Node: Memory Allocation Functions932597
+Ref: Memory Allocation Functions-Footnote-1935436
+Node: Constructor Functions935532
+Node: Registration Functions937266
+Node: Extension Functions937951
+Node: Exit Callback Functions940248
+Node: Extension Version String941496
+Node: Input Parsers942161
+Node: Output Wrappers952040
+Node: Two-way processors956555
+Node: Printing Messages958759
+Ref: Printing Messages-Footnote-1959835
+Node: Updating `ERRNO'959987
+Node: Requesting Values960727
+Ref: table-value-types-returned961455
+Node: Accessing Parameters962412
+Node: Symbol Table Access963643
+Node: Symbol table by name964157
+Node: Symbol table by cookie966138
+Ref: Symbol table by cookie-Footnote-1970282
+Node: Cached values970345
+Ref: Cached values-Footnote-1973844
+Node: Array Manipulation973935
+Ref: Array Manipulation-Footnote-1975033
+Node: Array Data Types975070
+Ref: Array Data Types-Footnote-1977725
+Node: Array Functions977817
+Node: Flattening Arrays981671
+Node: Creating Arrays988563
+Node: Extension API Variables993334
+Node: Extension Versioning993970
+Node: Extension API Informational Variables995871
+Node: Extension API Boilerplate996936
+Node: Finding Extensions1000745
+Node: Extension Example1001305
+Node: Internal File Description1002077
+Node: Internal File Ops1006144
+Ref: Internal File Ops-Footnote-11017814
+Node: Using Internal File Ops1017954
+Ref: Using Internal File Ops-Footnote-11020337
+Node: Extension Samples1020610
+Node: Extension Sample File Functions1022136
+Node: Extension Sample Fnmatch1029774
+Node: Extension Sample Fork1031265
+Node: Extension Sample Inplace1032480
+Node: Extension Sample Ord1034155
+Node: Extension Sample Readdir1034991
+Ref: table-readdir-file-types1035867
+Node: Extension Sample Revout1036678
+Node: Extension Sample Rev2way1037268
+Node: Extension Sample Read write array1038008
+Node: Extension Sample Readfile1039948
+Node: Extension Sample Time1041043
+Node: Extension Sample API Tests1042392
+Node: gawkextlib1042883
+Node: Extension summary1045541
+Node: Extension Exercises1049230
+Node: Language History1049952
+Node: V7/SVR3.11051608
+Node: SVR41053789
+Node: POSIX1055234
+Node: BTL1056623
+Node: POSIX/GNU1057357
+Node: Feature History1062921
+Node: Common Extensions1076019
+Node: Ranges and Locales1077343
+Ref: Ranges and Locales-Footnote-11081961
+Ref: Ranges and Locales-Footnote-21081988
+Ref: Ranges and Locales-Footnote-31082222
+Node: Contributors1082443
+Node: History summary1087984
+Node: Installation1089354
+Node: Gawk Distribution1090300
+Node: Getting1090784
+Node: Extracting1091607
+Node: Distribution contents1093242
+Node: Unix Installation1098959
+Node: Quick Installation1099576
+Node: Additional Configuration Options1102000
+Node: Configuration Philosophy1103738
+Node: Non-Unix Installation1106107
+Node: PC Installation1106565
+Node: PC Binary Installation1107884
+Node: PC Compiling1109732
+Ref: PC Compiling-Footnote-11112753
+Node: PC Testing1112862
+Node: PC Using1114038
+Node: Cygwin1118153
+Node: MSYS1118976
+Node: VMS Installation1119476
+Node: VMS Compilation1120268
+Ref: VMS Compilation-Footnote-11121490
+Node: VMS Dynamic Extensions1121548
+Node: VMS Installation Details1123232
+Node: VMS Running1125484
+Node: VMS GNV1128320
+Node: VMS Old Gawk1129054
+Node: Bugs1129524
+Node: Other Versions1133407
+Node: Installation summary1139831
+Node: Notes1140887
+Node: Compatibility Mode1141752
+Node: Additions1142534
+Node: Accessing The Source1143459
+Node: Adding Code1144894
+Node: New Ports1151051
+Node: Derived Files1155533
+Ref: Derived Files-Footnote-11161008
+Ref: Derived Files-Footnote-21161042
+Ref: Derived Files-Footnote-31161638
+Node: Future Extensions1161752
+Node: Implementation Limitations1162358
+Node: Extension Design1163606
+Node: Old Extension Problems1164760
+Ref: Old Extension Problems-Footnote-11166277
+Node: Extension New Mechanism Goals1166334
+Ref: Extension New Mechanism Goals-Footnote-11169694
+Node: Extension Other Design Decisions1169883
+Node: Extension Future Growth1171991
+Node: Old Extension Mechanism1172827
+Node: Notes summary1174589
+Node: Basic Concepts1175775
+Node: Basic High Level1176456
+Ref: figure-general-flow1176728
+Ref: figure-process-flow1177327
+Ref: Basic High Level-Footnote-11180556
+Node: Basic Data Typing1180741
+Node: Glossary1184069
+Node: Copying1215998
+Node: GNU Free Documentation License1253554
+Node: Index1278690
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 55c49a3..12b07bb 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -10508,7 +10508,7 @@ can assign a new value to a variable or a field by 
using an assignment operator.
 An expression can serve as a pattern or action statement on its own.
 Most other kinds of
 statements contain one or more expressions that specify the data on which to
-operate.  As in other languages, expressions in @command{awk} include
+operate.  As in other languages, expressions in @command{awk} can include
 variables, array references, constants, and function calls, as well as
 combinations of these with various operators.
 
@@ -10527,7 +10527,7 @@ combinations of these with various operators.
 
 Expressions are built up from values and the operations performed
 upon them. This @value{SECTION} describes the elementary objects
-which provide the values used in expressions.
+that provide the values used in expressions.
 
 @menu
 * Constants::                   String, numeric and regexp constants.
@@ -10577,7 +10577,7 @@ have the same value:
 @end example
 
 @cindex string constants
-A string constant consists of a sequence of characters enclosed in
+A @dfn{string constant} consists of a sequence of characters enclosed in
 double quotation marks.  For example:
 
 @example
@@ -10589,7 +10589,7 @@ double quotation marks.  For example:
 @cindex strings, length limitations
 represents the string whose contents are @samp{parrot}.  Strings in
 @command{gawk} can be of any length, and they can contain any of the possible
-eight-bit ASCII characters including ASCII @sc{nul} (character code zero).
+eight-bit ASCII characters, including ASCII @sc{nul} (character code zero).
 Other @command{awk}
 implementations may have difficulty with some character codes.
 
@@ -10604,15 +10604,15 @@ In @command{awk}, all numbers are in decimal (i.e., 
base 10).  Many other
 programming languages allow you to specify numbers in other bases, often
 octal (base 8) and hexadecimal (base 16).
 In octal, the numbers go 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, and so on.
-Just as @samp{11}, in decimal, is 1 times 10 plus 1, so
address@hidden, in octal, is 1 times 8, plus 1. This equals 9 in decimal.
+Just as @samp{11} in decimal is 1 times 10 plus 1, so
address@hidden in octal is 1 times 8 plus 1. This equals 9 in decimal.
 In hexadecimal, there are 16 digits. Because the everyday decimal
 number system only has ten digits (@address@hidden), the letters
 @samp{a} through @samp{f} are used to represent the rest.
 (Case in the letters is usually irrelevant; hexadecimal @samp{a} and @samp{A}
 have the same value.)
-Thus, @samp{11}, in
-hexadecimal, is 1 times 16 plus 1, which equals 17 in decimal.
+Thus, @samp{11} in
+hexadecimal is 1 times 16 plus 1, which equals 17 in decimal.
 
 Just by looking at plain @samp{11}, you can't tell what base it's in.
 So, in C, C++, and other languages derived from C,
@@ -10623,13 +10623,13 @@ and hexadecimal numbers start with a leading 
@samp{0x} or @samp{0X}:
 
 @table @code
 @item 11
-Decimal value 11.
+Decimal value 11
 
 @item 011
-Octal 11, decimal value 9.
+Octal 11, decimal value 9
 
 @item 0x11
-Hexadecimal 11, decimal value 17.
+Hexadecimal 11, decimal value 17
 @end table
 
 This example shows the difference:
@@ -10657,11 +10657,11 @@ you can use the @code{strtonum()} function
 (@pxref{String Functions})
 to convert the data into a number.
 Most of the time, you will want to use octal or hexadecimal constants
-when working with the built-in bit manipulation functions;
+when working with the built-in bit-manipulation functions;
 see @DBREF{Bitwise Functions}
 for more information.
 
-Unlike some early C implementations, @samp{8} and @samp{9} are not
+Unlike in some early C implementations, @samp{8} and @samp{9} are not
 valid in octal constants.  For example, @command{gawk} treats @samp{018}
 as decimal 18:
 
@@ -10730,12 +10730,12 @@ $ @kbd{gawk 'BEGIN @{ printf "0x11 is <%s>\n", 0x11 
@}'}
 @cindex tilde (@code{~}), @code{~} operator
 @cindex @code{!} (exclamation point), @code{!~} operator
 @cindex exclamation point (@code{!}), @code{!~} operator
-A regexp constant is a regular expression description enclosed in
+A @dfn{regexp constant} is a regular expression description enclosed in
 slashes, such as @address@hidden/^beginning and end$/}}.  Most regexps used in
 @command{awk} programs are constant, but the @samp{~} and @samp{!~}
 matching operators can also match computed or dynamic regexps
 (which are typically just ordinary strings or variables that contain a regexp,
-but could be a more complex expression).
+but could be more complex expressions).
 
 @node Using Constant Regexps
 @subsection Using Regular Expression Constants
@@ -10815,7 +10815,7 @@ the third argument of @code{split()} to be a regexp 
constant, but some
 older implementations do not.
 @value{DARKCORNER}
 Because some built-in functions accept regexp constants as arguments,
-it can be confusing when attempting to use regexp constants as arguments
+confusion can arise when attempting to use regexp constants as arguments
 to user-defined functions (@pxref{User-defined}).  For example:
 
 @example
@@ -10841,7 +10841,7 @@ function mysub(pat, repl, str, global)
 In this example, the programmer wants to pass a regexp constant to the
 user-defined function @code{mysub()}, which in turn passes it on to
 either @code{sub()} or @code{gsub()}.  However, what really happens is that
-the @code{pat} parameter is either one or zero, depending upon whether
+the @code{pat} parameter is assigned a value of either one or zero, depending 
upon whether
 or not @code{$0} matches @code{/hi/}.
 @command{gawk} issues a warning when it sees a regexp constant used as
 a parameter to a user-defined function, because passing a truth value in
@@ -10852,7 +10852,7 @@ this way is probably not what was intended.
 
 @cindex variables, user-defined
 @cindex user-defined, variables
-Variables are ways of storing values at one point in your program for
address@hidden are ways of storing values at one point in your program for
 use later in another part of your program.  They can be manipulated
 entirely within the program text, and they can also be assigned values
 on the @command{awk} command line.
@@ -10880,17 +10880,17 @@ are distinct variables.
 A variable name is a valid expression by itself; it represents the
 variable's current value.  Variables are given new values with
 @dfn{assignment operators}, @dfn{increment operators}, and
address@hidden operators}.
address@hidden Ops}.
address@hidden operators}
+(@pxref{Assignment Ops}).
 In addition, the @code{sub()} and @code{gsub()} functions can
 change a variable's value, and the @code{match()}, @code{split()},
 and @code{patsplit()} functions can change the contents of their
-array parameters. @xref{String Functions}.
+array parameters (@pxref{String Functions}).
 
 @cindex variables, built-in
 @cindex variables, initializing
 A few variables have special built-in meanings, such as @code{FS} (the
-field separator), and @code{NF} (the number of fields in the current input
+field separator) and @code{NF} (the number of fields in the current input
 record).  @DBXREF{Built-in Variables} for a list of the predefined variables.
 These predefined variables can be used and assigned just like all other
 variables, but their values are also used or changed automatically by
@@ -11147,7 +11147,7 @@ point, so the default behavior was restored to use a 
period as the
 decimal point character.  You can use the @option{--use-lc-numeric}
 option (@pxref{Options}) to force @command{gawk} to use the locale's
 decimal point character.  (@command{gawk} also uses the locale's decimal
-point character when in POSIX mode, either via @option{--posix}, or the
+point character when in POSIX mode, either via @option{--posix} or the
 @env{POSIXLY_CORRECT} environment variable, as shown previously.)
 
 @ref{table-locale-affects} describes the cases in which the locale's decimal
@@ -11165,7 +11165,7 @@ features have not been described yet.
 @end multitable
 @end float
 
-Finally, modern day formal standards and IEEE standard floating-point
+Finally, modern-day formal standards and the IEEE standard floating-point
 representation can have an unusual but important effect on the way
 @command{gawk} converts some special string values to numbers.  The details
 are presented in @ref{POSIX Floating Point Problems}.
@@ -11173,7 +11173,7 @@ are presented in @ref{POSIX Floating Point Problems}.
 @node All Operators
 @section Operators: Doing Something with Values
 
-This @value{SECTION} introduces the @dfn{operators} which make use
+This @value{SECTION} introduces the @dfn{operators} that make use
 of the values provided by constants and variables.
 
 @menu
@@ -11351,7 +11351,7 @@ print "something meaningful" > file name
 @noindent
 This produces a syntax error with some versions of Unix
 @address@hidden happens that BWK
address@hidden, @command{gawk} and @command{mawk} all ``get it right,''
address@hidden, @command{gawk}, and @command{mawk} all ``get it right,''
 but you should not rely on this.}
 It is necessary to use the following:
 
@@ -11601,7 +11601,7 @@ and
 @ifdocbook
 @DBREF{Numeric Functions}
 @end ifdocbook
-for more information).
+for more information.)
 This example illustrates an important fact about assignment
 operators: the lefthand expression is only evaluated @emph{once}.
 
@@ -11637,17 +11637,17 @@ to a number.
 @caption{Arithmetic assignment operators}
 @multitable @columnfractions .30 .70
 @headitem Operator @tab Effect
address@hidden @var{lvalue} @code{+=} @var{increment} @tab Add @var{increment} 
to the value of @var{lvalue}
address@hidden @var{lvalue} @code{-=} @var{decrement} @tab Subtract 
@var{decrement} from the value of @var{lvalue}
address@hidden @var{lvalue} @code{*=} @var{coefficient} @tab Multiply the value 
of @var{lvalue} by @var{coefficient}
address@hidden @var{lvalue} @code{/=} @var{divisor} @tab Divide the value of 
@var{lvalue} by @var{divisor}
address@hidden @var{lvalue} @code{%=} @var{modulus} @tab Set @var{lvalue} to 
its remainder by @var{modulus}
address@hidden @var{lvalue} @code{+=} @var{increment} @tab Add @var{increment} 
to the value of @var{lvalue}.
address@hidden @var{lvalue} @code{-=} @var{decrement} @tab Subtract 
@var{decrement} from the value of @var{lvalue}.
address@hidden @var{lvalue} @code{*=} @var{coefficient} @tab Multiply the value 
of @var{lvalue} by @var{coefficient}.
address@hidden @var{lvalue} @code{/=} @var{divisor} @tab Divide the value of 
@var{lvalue} by @var{divisor}.
address@hidden @var{lvalue} @code{%=} @var{modulus} @tab Set @var{lvalue} to 
its remainder by @var{modulus}.
 @cindex common extensions, @code{**=} operator
 @cindex extensions, address@hidden @code{**=} operator
 @cindex @command{awk} language, POSIX version
 @cindex POSIX @command{awk}
address@hidden @var{lvalue} @code{^=} @var{power} @tab
address@hidden @var{lvalue} @code{**=} @var{power} @tab Raise @var{lvalue} to 
the power @var{power} @value{COMMONEXT}
address@hidden @var{lvalue} @code{^=} @var{power} @tab Raise @var{lvalue} to 
the power @var{power}.
address@hidden @var{lvalue} @code{**=} @var{power} @tab Raise @var{lvalue} to 
the power @var{power}. @value{COMMONEXT}
 @end multitable
 @end float
 
@@ -11843,8 +11843,8 @@ like @address@hidden, but instead of adding, it 
subtracts.)
 @cindex evaluation order
 @cindex Marx, Groucho
 @quotation
address@hidden, doctor!  It hurts when I do address@hidden
-So don't do that!}
address@hidden, it hurts when I do address@hidden
+Then don't do that!}
 @author Groucho Marx
 @end quotation
 
@@ -11868,7 +11868,7 @@ print b
 @cindex side effects
 In other words, when do the various side effects prescribed by the
 postfix operators (@samp{b++}) take effect?
-When side effects happen is @dfn{implementation defined}.
+When side effects happen is @dfn{implementation-defined}.
 In other words, it is up to the particular version of @command{awk}.
 The result for the first example may be 12 or 13, and for the second, it
 may be 22 or 23.
@@ -11895,8 +11895,8 @@ You should avoid such things in your own programs.
 @cindex evaluation order
 @cindex Marx, Groucho
 @quotation
address@hidden, doctor!  It hurts when I do address@hidden
-So don't do that!}
address@hidden, it hurts when I do address@hidden
+Then don't do that!}
 @author Groucho Marx
 @end quotation
 
@@ -11920,7 +11920,7 @@ print b
 @cindex side effects
 In other words, when do the various side effects prescribed by the
 postfix operators (@samp{b++}) take effect?
-When side effects happen is @dfn{implementation defined}.
+When side effects happen is @dfn{implementation-defined}.
 In other words, it is up to the particular version of @command{awk}.
 The result for the first example may be 12 or 13, and for the second, it
 may be 22 or 23.
@@ -11936,8 +11936,8 @@ You should avoid such things in your own programs.
 @node Truth Values and Conditions
 @section Truth Values and Conditions
 
-In certain contexts, expression values also serve as ``truth values''; (i.e.,
-they determine what should happen next as the program runs). This
+In certain contexts, expression values also serve as ``truth values''; i.e.,
+they determine what should happen next as the program runs. This
 @value{SECTION} describes how @command{awk} defines ``true'' and ``false''
 and how values are compared.
 
@@ -12004,7 +12004,7 @@ the string constant @code{"0"} is actually true, 
because it is non-null.
 @cindex operators, relational, See address@hidden comparison
 @cindex variable typing
 @cindex variables, types of, comparison expressions and
-Unlike other programming languages, @command{awk} variables do not have a
+Unlike in other programming languages, in @command{awk} variables do not have a
 fixed type. Instead, they can be either a number or a string, depending
 upon the value that is assigned to them.
 We look now at how variables are typed, and how @command{awk}
@@ -12033,20 +12033,20 @@ Variable typing follows these rules:
 
 @itemize @value{BULLET}
 @item
-A numeric constant or the result of a numeric operation has the @var{numeric}
+A numeric constant or the result of a numeric operation has the @dfn{numeric}
 attribute.
 
 @item
-A string constant or the result of a string operation has the @var{string}
+A string constant or the result of a string operation has the @dfn{string}
 attribute.
 
 @item
 Fields, @code{getline} input, @code{FILENAME}, @code{ARGV} elements,
 @code{ENVIRON} elements, and the elements of an array created by
 @code{match()}, @code{split()}, and @code{patsplit()} that are numeric
-strings have the @var{strnum} attribute.  Otherwise, they have
-the @var{string} attribute.  Uninitialized variables also have the
address@hidden attribute.
+strings have the @dfn{strnum} attribute.  Otherwise, they have
+the @dfn{string} attribute.  Uninitialized variables also have the
address@hidden attribute.
 
 @item
 Attributes propagate across assignments but are not changed by
@@ -12190,13 +12190,13 @@ constant, then a string comparison is performed.  
Otherwise, a
 numeric comparison is performed.
 
 This point bears additional emphasis: All user input is made of characters,
-and so is first and foremost of @var{string} type; input strings
-that look numeric are additionally given the @var{strnum} attribute.
+and so is first and foremost of string type; input strings
+that look numeric are additionally given the strnum attribute.
 Thus, the six-character input string @address@hidden +3.14}} receives the
address@hidden attribute. In contrast, the eight characters
+strnum attribute. In contrast, the eight characters
 @address@hidden" +3.14"}} appearing in program text comprise a string constant.
 The following examples print @samp{1} when the comparison between
-the two different constants is true, @samp{0} otherwise:
+the two different constants is true, and @samp{0} otherwise:
 
 @c 22.9.2014: Tested with mawk and BWK awk, got same results.
 @example
@@ -12326,7 +12326,7 @@ $ @kbd{echo 1e2 3 | awk '@{ print ($1 < $2) ? "true" : 
"false" @}'}
 @noindent
 the result is @samp{false} because both @code{$1} and @code{$2}
 are user input.  They are numeric strings---therefore both have
-the @var{strnum} attribute, dictating a numeric comparison.
+the strnum attribute, dictating a numeric comparison.
 The purpose of the comparison rules and the use of numeric strings is
 to attempt to produce the behavior that is ``least surprising,'' while
 still ``doing the right thing.''
@@ -12385,7 +12385,7 @@ characters sort, as defined by the locale (for more 
discussion,
 @pxref{Locales}).  This order is usually very different
 from the results obtained when doing straight character-by-character
 address@hidden, string comparison is supposed
-to behave the same way as if the strings are compared with the C
+to behave the same way as if the strings were compared with the C
 @code{strcoll()} function.}
 
 Because this behavior differs considerably from existing practice,
@@ -12492,7 +12492,7 @@ BEGIN @{ if (! ("HOME" in ENVIRON))
 @cindex vertical bar (@code{|}), @code{||} operator
 The @samp{&&} and @samp{||} operators are called @dfn{short-circuit}
 operators because of the way they work.  Evaluation of the full expression
-is ``short-circuited'' if the result can be determined part way through
+is ``short-circuited'' if the result can be determined partway through
 its evaluation.
 
 @cindex line continuations
@@ -12564,8 +12564,8 @@ The reason it's there is to avoid printing the 
bracketing
 A @dfn{conditional expression} is a special kind of expression that has
 three operands.  It allows you to use one expression's value to select
 one of two other expressions.
-The conditional expression is the same as in the C language,
-as shown here:
+The conditional expression in @command{awk} is the same as in the C
+language, as shown here:
 
 @example
 @var{selector} ? @var{if-true-exp} : @var{if-false-exp}
@@ -12574,8 +12574,8 @@ as shown here:
 @noindent
 There are three subexpressions.  The first, @var{selector}, is always
 computed first.  If it is ``true'' (not zero or not null), then
address@hidden is computed next and its value becomes the value of
-the whole expression.  Otherwise, @var{if-false-exp} is computed next
address@hidden is computed next, and its value becomes the value of
+the whole expression.  Otherwise, @var{if-false-exp} is computed next,
 and its value becomes the value of the whole expression.
 For example, the following expression produces the absolute value of @code{x}:
 
@@ -12623,7 +12623,7 @@ ask for it by name at any point in the program.  For
 example, the function @code{sqrt()} computes the square root of a number.
 
 @cindex functions, built-in
-A fixed set of functions are @dfn{built-in}, which means they are
+A fixed set of functions are @dfn{built in}, which means they are
 available in every @command{awk} program.  The @code{sqrt()} function is one
 of these.  @DBXREF{Built-in} for a list of built-in
 functions and their descriptions.  In addition, you can define
@@ -12797,7 +12797,7 @@ Increment, decrement.
 @cindex @code{*} (asterisk), @code{**} operator
 @cindex asterisk (@code{*}), @code{**} operator
 @item @code{^ **}
-Exponentiation.  These operators group right-to-left.
+Exponentiation.  These operators group right to left.
 
 @cindex @code{+} (plus sign), @code{+} operator
 @cindex plus sign (@code{+}), @code{+} operator
@@ -12863,7 +12863,7 @@ statements belong to the statement level, not to 
expressions.  The
 redirection does not produce an expression that could be the operand of
 another operator.  As a result, it does not make sense to use a
 redirection operator near another operator of lower precedence without
-parentheses.  Such combinations (e.g., @samp{print foo > a ? b : c}),
+parentheses.  Such combinations (e.g., @samp{print foo > a ? b : c})
 result in syntax errors.
 The correct way to write this statement is @samp{print foo > (a ? b : c)}.
 
@@ -12881,17 +12881,17 @@ Array membership.
 @cindex @code{&} (ampersand), @code{&&} operator
 @cindex ampersand (@code{&}), @code{&&} operator
 @item @code{&&}
-Logical ``and''.
+Logical ``and.''
 
 @cindex @code{|} (vertical bar), @code{||} operator
 @cindex vertical bar (@code{|}), @code{||} operator
 @item @code{||}
-Logical ``or''.
+Logical ``or.''
 
 @cindex @code{?} (question mark), @code{?:} operator
 @cindex question mark (@code{?}), @code{?:} operator
 @item @code{?:}
-Conditional.  This operator groups right-to-left.
+Conditional.  This operator groups right to left.
 
 @cindex @code{+} (plus sign), @code{+=} operator
 @cindex plus sign (@code{+}), @code{+=} operator
@@ -12908,7 +12908,7 @@ Conditional.  This operator groups right-to-left.
 @cindex @code{^} (caret), @code{^=} operator
 @cindex caret (@code{^}), @code{^=} operator
 @item @code{= += -= *= /= %= ^= **=}
-Assignment.  These operators group right-to-left.
+Assignment.  These operators group right to left.
 @end table
 
 @cindex POSIX @command{awk}, @code{**} operator and
@@ -12982,8 +12982,8 @@ Locales can influence the conversions.
 @item
 @command{awk} provides the usual arithmetic operators (addition,
 subtraction, multiplication, division, modulus), and unary plus and minus.
-It also provides comparison operators, boolean operators, array membership
-testing, and regexp
+It also provides comparison operators, Boolean operators, an array membership
+testing operator, and regexp
 matching operators.  String concatenation is accomplished by placing
 two expressions next to each other; there is no explicit operator.
 The three-operand @samp{?:} operator provides an ``if-else'' test within
@@ -12994,7 +12994,7 @@ Assignment operators provide convenient shorthands for 
common arithmetic
 operations.
 
 @item
-In @command{awk}, a value is considered to be true if it is non-zero
+In @command{awk}, a value is considered to be true if it is nonzero
 @emph{or} non-null. Otherwise, the value is false.
 
 @item
@@ -13003,7 +13003,7 @@ lifetime.  The type determines how it behaves in 
comparisons (string
 or numeric).
 
 @item
-Function calls return a value which may be used as part of a larger
+Function calls return a value that may be used as part of a larger
 expression.  Expressions used to pass parameter values are fully
 evaluated before the function is called.  @command{awk} provides
 built-in and user-defined functions; this is described in
@@ -13030,7 +13030,7 @@ a pattern with an associated action.  This 
@value{CHAPTER} describes how
 you build patterns and actions, what kinds of things you can do within
 actions, and @command{awk}'s predefined variables.
 
-The pattern-action rules and the statements available for use
+The pattern--action rules and the statements available for use
 within actions form the core of @command{awk} programming.
 In a sense, everything covered
 up to here has been the foundation
@@ -13221,7 +13221,7 @@ patterns.  Likewise, the special patterns @code{BEGIN}, 
@code{END},
 which never match any input record, are not expressions and cannot
 appear inside Boolean patterns.
 
-The precedence of the different operators which can appear in
+The precedence of the different operators that can appear in
 patterns is described in @ref{Precedence}.
 
 @node Ranges
@@ -13247,7 +13247,7 @@ prints every record in @file{myfile} between 
@samp{on}/@samp{off} pairs, inclusi
 
 A range pattern starts out by matching @var{begpat} against every
 input record.  When a record matches @var{begpat}, the range pattern is
address@hidden on} and the range pattern matches this record as well.  As long 
as
address@hidden on}, and the range pattern matches this record as well.  As long 
as
 the range pattern stays turned on, it automatically matches every input
 record read.  The range pattern also matches @var{endpat} against every
 input record; when this succeeds, the range pattern is @dfn{turned off} again
@@ -13391,7 +13391,7 @@ using library functions.
 for a number of useful library functions.
 
 If an @command{awk} program has only @code{BEGIN} rules and no
-other rules, then the program exits after the @code{BEGIN} rule is
+other rules, then the program exits after the @code{BEGIN} rules are
 address@hidden original version of @command{awk} kept
 reading and ignoring input until the end of the file was seen.}  However, if an
 @code{END} rule exists, then the input is read, even if there are
@@ -13419,7 +13419,7 @@ Another way is simply to assign a value to @code{$0}.
 @cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and
 @cindex @code{BEGIN} pattern, @code{print} statement and
 @cindex @code{END} pattern, @code{print} statement and
-The second point is similar to the first but from the other direction.
+The second point is similar to the first, but from the other direction.
 Traditionally, due largely to implementation issues, @code{$0} and
 @code{NF} were @emph{undefined} inside an @code{END} rule.
 The POSIX standard specifies that @code{NF} is available in an @code{END}
@@ -13508,7 +13508,7 @@ fatal error.
 
 @item
 If you have written extensions that modify the record handling (by
-inserting an ``input parser,'' @pxref{Input Parsers}), you can invoke
+inserting an ``input parser''; @pxref{Input Parsers}), you can invoke
 them at this point, before @command{gawk} has started processing the file.
 (This is a @emph{very} advanced feature, currently used only by the
 @uref{http://gawkextlib.sourceforge.net, @code{gawkextlib} project}.)
@@ -13519,8 +13519,8 @@ the last record in an input file.  For the last input 
file,
 it will be called before any @code{END} rules.
 The @code{ENDFILE} rule is executed even for empty input files.
 
-Normally, when an error occurs when reading input in the normal input
-processing loop, the error is fatal.  However, if an @code{ENDFILE}
+Normally, when an error occurs when reading input in the normal
+input-processing loop, the error is fatal.  However, if an @code{ENDFILE}
 rule is present, the error becomes non-fatal, and instead @code{ERRNO}
 is set.  This makes it possible to catch and process I/O errors at the
 level of the @command{awk} program.
@@ -13529,7 +13529,7 @@ level of the @command{awk} program.
 The @code{next} statement (@pxref{Next Statement}) is not allowed inside
 either a @code{BEGINFILE} or an @code{ENDFILE} rule.  The @code{nextfile}
 statement is allowed only inside a
address@hidden rule, but not inside an @code{ENDFILE} rule.
address@hidden rule, not inside an @code{ENDFILE} rule.
 
 @cindex @code{getline} statement, @code{BEGINFILE}/@code{ENDFILE} patterns and
 The @code{getline} statement (@pxref{Getline}) is restricted inside
@@ -13605,11 +13605,11 @@ awk "/$pattern/ "'@{ nmatches++ @}
 @noindent
 The @command{awk} program consists of two pieces of quoted text
 that are concatenated together to form the program.
-The first part is double quoted, which allows substitution of
+The first part is double-quoted, which allows substitution of
 the @code{pattern} shell variable inside the quotes.
-The second part is single quoted.
+The second part is single-quoted.
 
-Variable substitution via quoting works, but can be potentially
+Variable substitution via quoting works, but can potentially be
 messy.  It requires a good understanding of the shell's quoting rules
 (@pxref{Quoting}),
 and it's often difficult to correctly
@@ -13868,13 +13868,13 @@ The body of this loop is a compound statement 
enclosed in braces,
 containing two statements.
 The loop works in the following manner: first, the value of @code{i} is set to 
one.
 Then, the @code{while} statement tests whether @code{i} is less than or equal 
to
-three.  This is true when @code{i} equals one, so the @code{i}-th
+three.  This is true when @code{i} equals one, so the @code{i}th
 field is printed.  Then the @samp{i++} increments the value of @code{i}
 and the loop repeats.  The loop terminates when @code{i} reaches four.
 
 A newline is not required between the condition and the
 body; however, using one makes the program clearer unless the body is a
-compound statement or else is very simple.  The newline after the open-brace
+compound statement or else is very simple.  The newline after the open brace
 that begins the compound statement is not required either, but the
 program is harder to read without it.
 
@@ -13904,9 +13904,9 @@ while (@var{condition})
 @end example
 
 @noindent
-This statement does not execute @var{body} even once if the @var{condition}
-is false to begin with.
-The following is an example of a @code{do} statement:
+This statement does not execute the @var{body} even once if the
address@hidden is false to begin with.  The following is an example of
+a @code{do} statement:
 
 @example
 @{
@@ -13973,7 +13973,7 @@ their assignments as separate statements preceding the 
@code{for} loop.)
 The same is true of the @var{increment} part. Incrementing additional
 variables requires separate statements at the end of the loop.
 The C compound expression, using C's comma operator, is useful in
-this context but it is not supported in @command{awk}.
+this context, but it is not supported in @command{awk}.
 
 Most often, @var{increment} is an increment expression, as in the previous
 example.  But this is not required; it can be any expression
@@ -14064,7 +14064,7 @@ default:
 Control flow in
 the @code{switch} statement works as it does in C. Once a match to a given
 case is made, the case statement bodies execute until a @code{break},
address@hidden, @code{next}, @code{nextfile}  or @code{exit} is encountered,
address@hidden, @code{next}, @code{nextfile}, or @code{exit} is encountered,
 or the end of the @code{switch} statement itself. For example:
 
 @example
@@ -14238,7 +14238,12 @@ body of a loop.  Historical versions of @command{awk} 
treated a @code{continue}
 statement outside a loop the same way they treated a @code{break}
 statement outside a loop: as if it were a @code{next}
 statement
address@hidden FOR_PRINT
+(discussed in the following section).
address@hidden ifset
address@hidden FOR_PRINT
 (@pxref{Next Statement}).
address@hidden ifclear
 @value{DARKCORNER}
 Recent versions of BWK @command{awk} no longer work this way, nor
 does @command{gawk}.
@@ -14366,7 +14371,7 @@ See @uref{http://austingroupbugs.net/view.php?id=607, 
the Austin Group website}.
 @cindex @code{nextfile} statement, user-defined functions and
 @cindex Brian Kernighan's @command{awk}
 @cindex @command{mawk} utility
-The current version of BWK @command{awk}, and @command{mawk}
+The current version of BWK @command{awk} and @command{mawk}
 also support @code{nextfile}.  However, they don't allow the
 @code{nextfile} statement inside function bodies (@pxref{User-defined}).
 @command{gawk} does; a @code{nextfile} inside a function body reads the
@@ -14404,7 +14409,7 @@ any @code{ENDFILE} rules; they do not execute.
 
 In such a case,
 if you don't want the @code{END} rule to do its job, set a variable
-to nonzero before the @code{exit} statement and check that variable in
+to a nonzero value before the @code{exit} statement and check that variable in
 the @code{END} rule.
 @DBXREF{Assert Function}
 for an example that does this.
@@ -14472,7 +14477,7 @@ their areas of activity.
 @end menu
 
 @node User-modified
address@hidden Built-In Variables That Control @command{awk}
address@hidden Built-in Variables That Control @command{awk}
 @cindex predefined variables, user-modifiable
 @cindex user-modifiable variables
 
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 941da48..6d1bc39 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -10004,7 +10004,7 @@ can assign a new value to a variable or a field by 
using an assignment operator.
 An expression can serve as a pattern or action statement on its own.
 Most other kinds of
 statements contain one or more expressions that specify the data on which to
-operate.  As in other languages, expressions in @command{awk} include
+operate.  As in other languages, expressions in @command{awk} can include
 variables, array references, constants, and function calls, as well as
 combinations of these with various operators.
 
@@ -10023,7 +10023,7 @@ combinations of these with various operators.
 
 Expressions are built up from values and the operations performed
 upon them. This @value{SECTION} describes the elementary objects
-which provide the values used in expressions.
+that provide the values used in expressions.
 
 @menu
 * Constants::                   String, numeric and regexp constants.
@@ -10073,7 +10073,7 @@ have the same value:
 @end example
 
 @cindex string constants
-A string constant consists of a sequence of characters enclosed in
+A @dfn{string constant} consists of a sequence of characters enclosed in
 double quotation marks.  For example:
 
 @example
@@ -10085,7 +10085,7 @@ double quotation marks.  For example:
 @cindex strings, length limitations
 represents the string whose contents are @samp{parrot}.  Strings in
 @command{gawk} can be of any length, and they can contain any of the possible
-eight-bit ASCII characters including ASCII @sc{nul} (character code zero).
+eight-bit ASCII characters, including ASCII @sc{nul} (character code zero).
 Other @command{awk}
 implementations may have difficulty with some character codes.
 
@@ -10100,15 +10100,15 @@ In @command{awk}, all numbers are in decimal (i.e., 
base 10).  Many other
 programming languages allow you to specify numbers in other bases, often
 octal (base 8) and hexadecimal (base 16).
 In octal, the numbers go 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, and so on.
-Just as @samp{11}, in decimal, is 1 times 10 plus 1, so
address@hidden, in octal, is 1 times 8, plus 1. This equals 9 in decimal.
+Just as @samp{11} in decimal is 1 times 10 plus 1, so
address@hidden in octal is 1 times 8 plus 1. This equals 9 in decimal.
 In hexadecimal, there are 16 digits. Because the everyday decimal
 number system only has ten digits (@address@hidden), the letters
 @samp{a} through @samp{f} are used to represent the rest.
 (Case in the letters is usually irrelevant; hexadecimal @samp{a} and @samp{A}
 have the same value.)
-Thus, @samp{11}, in
-hexadecimal, is 1 times 16 plus 1, which equals 17 in decimal.
+Thus, @samp{11} in
+hexadecimal is 1 times 16 plus 1, which equals 17 in decimal.
 
 Just by looking at plain @samp{11}, you can't tell what base it's in.
 So, in C, C++, and other languages derived from C,
@@ -10119,13 +10119,13 @@ and hexadecimal numbers start with a leading 
@samp{0x} or @samp{0X}:
 
 @table @code
 @item 11
-Decimal value 11.
+Decimal value 11
 
 @item 011
-Octal 11, decimal value 9.
+Octal 11, decimal value 9
 
 @item 0x11
-Hexadecimal 11, decimal value 17.
+Hexadecimal 11, decimal value 17
 @end table
 
 This example shows the difference:
@@ -10153,11 +10153,11 @@ you can use the @code{strtonum()} function
 (@pxref{String Functions})
 to convert the data into a number.
 Most of the time, you will want to use octal or hexadecimal constants
-when working with the built-in bit manipulation functions;
+when working with the built-in bit-manipulation functions;
 see @DBREF{Bitwise Functions}
 for more information.
 
-Unlike some early C implementations, @samp{8} and @samp{9} are not
+Unlike in some early C implementations, @samp{8} and @samp{9} are not
 valid in octal constants.  For example, @command{gawk} treats @samp{018}
 as decimal 18:
 
@@ -10197,12 +10197,12 @@ $ @kbd{gawk 'BEGIN @{ printf "0x11 is <%s>\n", 0x11 
@}'}
 @cindex tilde (@code{~}), @code{~} operator
 @cindex @code{!} (exclamation point), @code{!~} operator
 @cindex exclamation point (@code{!}), @code{!~} operator
-A regexp constant is a regular expression description enclosed in
+A @dfn{regexp constant} is a regular expression description enclosed in
 slashes, such as @address@hidden/^beginning and end$/}}.  Most regexps used in
 @command{awk} programs are constant, but the @samp{~} and @samp{!~}
 matching operators can also match computed or dynamic regexps
 (which are typically just ordinary strings or variables that contain a regexp,
-but could be a more complex expression).
+but could be more complex expressions).
 
 @node Using Constant Regexps
 @subsection Using Regular Expression Constants
@@ -10282,7 +10282,7 @@ the third argument of @code{split()} to be a regexp 
constant, but some
 older implementations do not.
 @value{DARKCORNER}
 Because some built-in functions accept regexp constants as arguments,
-it can be confusing when attempting to use regexp constants as arguments
+confusion can arise when attempting to use regexp constants as arguments
 to user-defined functions (@pxref{User-defined}).  For example:
 
 @example
@@ -10308,7 +10308,7 @@ function mysub(pat, repl, str, global)
 In this example, the programmer wants to pass a regexp constant to the
 user-defined function @code{mysub()}, which in turn passes it on to
 either @code{sub()} or @code{gsub()}.  However, what really happens is that
-the @code{pat} parameter is either one or zero, depending upon whether
+the @code{pat} parameter is assigned a value of either one or zero, depending 
upon whether
 or not @code{$0} matches @code{/hi/}.
 @command{gawk} issues a warning when it sees a regexp constant used as
 a parameter to a user-defined function, because passing a truth value in
@@ -10319,7 +10319,7 @@ this way is probably not what was intended.
 
 @cindex variables, user-defined
 @cindex user-defined, variables
-Variables are ways of storing values at one point in your program for
address@hidden are ways of storing values at one point in your program for
 use later in another part of your program.  They can be manipulated
 entirely within the program text, and they can also be assigned values
 on the @command{awk} command line.
@@ -10347,17 +10347,17 @@ are distinct variables.
 A variable name is a valid expression by itself; it represents the
 variable's current value.  Variables are given new values with
 @dfn{assignment operators}, @dfn{increment operators}, and
address@hidden operators}.
address@hidden Ops}.
address@hidden operators}
+(@pxref{Assignment Ops}).
 In addition, the @code{sub()} and @code{gsub()} functions can
 change a variable's value, and the @code{match()}, @code{split()},
 and @code{patsplit()} functions can change the contents of their
-array parameters. @xref{String Functions}.
+array parameters (@pxref{String Functions}).
 
 @cindex variables, built-in
 @cindex variables, initializing
 A few variables have special built-in meanings, such as @code{FS} (the
-field separator), and @code{NF} (the number of fields in the current input
+field separator) and @code{NF} (the number of fields in the current input
 record).  @DBXREF{Built-in Variables} for a list of the predefined variables.
 These predefined variables can be used and assigned just like all other
 variables, but their values are also used or changed automatically by
@@ -10585,7 +10585,7 @@ point, so the default behavior was restored to use a 
period as the
 decimal point character.  You can use the @option{--use-lc-numeric}
 option (@pxref{Options}) to force @command{gawk} to use the locale's
 decimal point character.  (@command{gawk} also uses the locale's decimal
-point character when in POSIX mode, either via @option{--posix}, or the
+point character when in POSIX mode, either via @option{--posix} or the
 @env{POSIXLY_CORRECT} environment variable, as shown previously.)
 
 @ref{table-locale-affects} describes the cases in which the locale's decimal
@@ -10603,7 +10603,7 @@ features have not been described yet.
 @end multitable
 @end float
 
-Finally, modern day formal standards and IEEE standard floating-point
+Finally, modern-day formal standards and the IEEE standard floating-point
 representation can have an unusual but important effect on the way
 @command{gawk} converts some special string values to numbers.  The details
 are presented in @ref{POSIX Floating Point Problems}.
@@ -10611,7 +10611,7 @@ are presented in @ref{POSIX Floating Point Problems}.
 @node All Operators
 @section Operators: Doing Something with Values
 
-This @value{SECTION} introduces the @dfn{operators} which make use
+This @value{SECTION} introduces the @dfn{operators} that make use
 of the values provided by constants and variables.
 
 @menu
@@ -10789,7 +10789,7 @@ print "something meaningful" > file name
 @noindent
 This produces a syntax error with some versions of Unix
 @address@hidden happens that BWK
address@hidden, @command{gawk} and @command{mawk} all ``get it right,''
address@hidden, @command{gawk}, and @command{mawk} all ``get it right,''
 but you should not rely on this.}
 It is necessary to use the following:
 
@@ -11039,7 +11039,7 @@ and
 @ifdocbook
 @DBREF{Numeric Functions}
 @end ifdocbook
-for more information).
+for more information.)
 This example illustrates an important fact about assignment
 operators: the lefthand expression is only evaluated @emph{once}.
 
@@ -11075,17 +11075,17 @@ to a number.
 @caption{Arithmetic assignment operators}
 @multitable @columnfractions .30 .70
 @headitem Operator @tab Effect
address@hidden @var{lvalue} @code{+=} @var{increment} @tab Add @var{increment} 
to the value of @var{lvalue}
address@hidden @var{lvalue} @code{-=} @var{decrement} @tab Subtract 
@var{decrement} from the value of @var{lvalue}
address@hidden @var{lvalue} @code{*=} @var{coefficient} @tab Multiply the value 
of @var{lvalue} by @var{coefficient}
address@hidden @var{lvalue} @code{/=} @var{divisor} @tab Divide the value of 
@var{lvalue} by @var{divisor}
address@hidden @var{lvalue} @code{%=} @var{modulus} @tab Set @var{lvalue} to 
its remainder by @var{modulus}
address@hidden @var{lvalue} @code{+=} @var{increment} @tab Add @var{increment} 
to the value of @var{lvalue}.
address@hidden @var{lvalue} @code{-=} @var{decrement} @tab Subtract 
@var{decrement} from the value of @var{lvalue}.
address@hidden @var{lvalue} @code{*=} @var{coefficient} @tab Multiply the value 
of @var{lvalue} by @var{coefficient}.
address@hidden @var{lvalue} @code{/=} @var{divisor} @tab Divide the value of 
@var{lvalue} by @var{divisor}.
address@hidden @var{lvalue} @code{%=} @var{modulus} @tab Set @var{lvalue} to 
its remainder by @var{modulus}.
 @cindex common extensions, @code{**=} operator
 @cindex extensions, address@hidden @code{**=} operator
 @cindex @command{awk} language, POSIX version
 @cindex POSIX @command{awk}
address@hidden @var{lvalue} @code{^=} @var{power} @tab
address@hidden @var{lvalue} @code{**=} @var{power} @tab Raise @var{lvalue} to 
the power @var{power} @value{COMMONEXT}
address@hidden @var{lvalue} @code{^=} @var{power} @tab Raise @var{lvalue} to 
the power @var{power}.
address@hidden @var{lvalue} @code{**=} @var{power} @tab Raise @var{lvalue} to 
the power @var{power}. @value{COMMONEXT}
 @end multitable
 @end float
 
@@ -11224,8 +11224,8 @@ like @address@hidden, but instead of adding, it 
subtracts.)
 @cindex evaluation order
 @cindex Marx, Groucho
 @quotation
address@hidden, doctor!  It hurts when I do address@hidden
-So don't do that!}
address@hidden, it hurts when I do address@hidden
+Then don't do that!}
 @author Groucho Marx
 @end quotation
 
@@ -11249,7 +11249,7 @@ print b
 @cindex side effects
 In other words, when do the various side effects prescribed by the
 postfix operators (@samp{b++}) take effect?
-When side effects happen is @dfn{implementation defined}.
+When side effects happen is @dfn{implementation-defined}.
 In other words, it is up to the particular version of @command{awk}.
 The result for the first example may be 12 or 13, and for the second, it
 may be 22 or 23.
@@ -11264,8 +11264,8 @@ You should avoid such things in your own programs.
 @node Truth Values and Conditions
 @section Truth Values and Conditions
 
-In certain contexts, expression values also serve as ``truth values''; (i.e.,
-they determine what should happen next as the program runs). This
+In certain contexts, expression values also serve as ``truth values''; i.e.,
+they determine what should happen next as the program runs. This
 @value{SECTION} describes how @command{awk} defines ``true'' and ``false''
 and how values are compared.
 
@@ -11332,7 +11332,7 @@ the string constant @code{"0"} is actually true, 
because it is non-null.
 @cindex operators, relational, See address@hidden comparison
 @cindex variable typing
 @cindex variables, types of, comparison expressions and
-Unlike other programming languages, @command{awk} variables do not have a
+Unlike in other programming languages, in @command{awk} variables do not have a
 fixed type. Instead, they can be either a number or a string, depending
 upon the value that is assigned to them.
 We look now at how variables are typed, and how @command{awk}
@@ -11361,20 +11361,20 @@ Variable typing follows these rules:
 
 @itemize @value{BULLET}
 @item
-A numeric constant or the result of a numeric operation has the @var{numeric}
+A numeric constant or the result of a numeric operation has the @dfn{numeric}
 attribute.
 
 @item
-A string constant or the result of a string operation has the @var{string}
+A string constant or the result of a string operation has the @dfn{string}
 attribute.
 
 @item
 Fields, @code{getline} input, @code{FILENAME}, @code{ARGV} elements,
 @code{ENVIRON} elements, and the elements of an array created by
 @code{match()}, @code{split()}, and @code{patsplit()} that are numeric
-strings have the @var{strnum} attribute.  Otherwise, they have
-the @var{string} attribute.  Uninitialized variables also have the
address@hidden attribute.
+strings have the @dfn{strnum} attribute.  Otherwise, they have
+the @dfn{string} attribute.  Uninitialized variables also have the
address@hidden attribute.
 
 @item
 Attributes propagate across assignments but are not changed by
@@ -11518,13 +11518,13 @@ constant, then a string comparison is performed.  
Otherwise, a
 numeric comparison is performed.
 
 This point bears additional emphasis: All user input is made of characters,
-and so is first and foremost of @var{string} type; input strings
-that look numeric are additionally given the @var{strnum} attribute.
+and so is first and foremost of string type; input strings
+that look numeric are additionally given the strnum attribute.
 Thus, the six-character input string @address@hidden +3.14}} receives the
address@hidden attribute. In contrast, the eight characters
+strnum attribute. In contrast, the eight characters
 @address@hidden" +3.14"}} appearing in program text comprise a string constant.
 The following examples print @samp{1} when the comparison between
-the two different constants is true, @samp{0} otherwise:
+the two different constants is true, and @samp{0} otherwise:
 
 @c 22.9.2014: Tested with mawk and BWK awk, got same results.
 @example
@@ -11654,7 +11654,7 @@ $ @kbd{echo 1e2 3 | awk '@{ print ($1 < $2) ? "true" : 
"false" @}'}
 @noindent
 the result is @samp{false} because both @code{$1} and @code{$2}
 are user input.  They are numeric strings---therefore both have
-the @var{strnum} attribute, dictating a numeric comparison.
+the strnum attribute, dictating a numeric comparison.
 The purpose of the comparison rules and the use of numeric strings is
 to attempt to produce the behavior that is ``least surprising,'' while
 still ``doing the right thing.''
@@ -11713,7 +11713,7 @@ characters sort, as defined by the locale (for more 
discussion,
 @pxref{Locales}).  This order is usually very different
 from the results obtained when doing straight character-by-character
 address@hidden, string comparison is supposed
-to behave the same way as if the strings are compared with the C
+to behave the same way as if the strings were compared with the C
 @code{strcoll()} function.}
 
 Because this behavior differs considerably from existing practice,
@@ -11820,7 +11820,7 @@ BEGIN @{ if (! ("HOME" in ENVIRON))
 @cindex vertical bar (@code{|}), @code{||} operator
 The @samp{&&} and @samp{||} operators are called @dfn{short-circuit}
 operators because of the way they work.  Evaluation of the full expression
-is ``short-circuited'' if the result can be determined part way through
+is ``short-circuited'' if the result can be determined partway through
 its evaluation.
 
 @cindex line continuations
@@ -11892,8 +11892,8 @@ The reason it's there is to avoid printing the 
bracketing
 A @dfn{conditional expression} is a special kind of expression that has
 three operands.  It allows you to use one expression's value to select
 one of two other expressions.
-The conditional expression is the same as in the C language,
-as shown here:
+The conditional expression in @command{awk} is the same as in the C
+language, as shown here:
 
 @example
 @var{selector} ? @var{if-true-exp} : @var{if-false-exp}
@@ -11902,8 +11902,8 @@ as shown here:
 @noindent
 There are three subexpressions.  The first, @var{selector}, is always
 computed first.  If it is ``true'' (not zero or not null), then
address@hidden is computed next and its value becomes the value of
-the whole expression.  Otherwise, @var{if-false-exp} is computed next
address@hidden is computed next, and its value becomes the value of
+the whole expression.  Otherwise, @var{if-false-exp} is computed next,
 and its value becomes the value of the whole expression.
 For example, the following expression produces the absolute value of @code{x}:
 
@@ -11951,7 +11951,7 @@ ask for it by name at any point in the program.  For
 example, the function @code{sqrt()} computes the square root of a number.
 
 @cindex functions, built-in
-A fixed set of functions are @dfn{built-in}, which means they are
+A fixed set of functions are @dfn{built in}, which means they are
 available in every @command{awk} program.  The @code{sqrt()} function is one
 of these.  @DBXREF{Built-in} for a list of built-in
 functions and their descriptions.  In addition, you can define
@@ -12125,7 +12125,7 @@ Increment, decrement.
 @cindex @code{*} (asterisk), @code{**} operator
 @cindex asterisk (@code{*}), @code{**} operator
 @item @code{^ **}
-Exponentiation.  These operators group right-to-left.
+Exponentiation.  These operators group right to left.
 
 @cindex @code{+} (plus sign), @code{+} operator
 @cindex plus sign (@code{+}), @code{+} operator
@@ -12191,7 +12191,7 @@ statements belong to the statement level, not to 
expressions.  The
 redirection does not produce an expression that could be the operand of
 another operator.  As a result, it does not make sense to use a
 redirection operator near another operator of lower precedence without
-parentheses.  Such combinations (e.g., @samp{print foo > a ? b : c}),
+parentheses.  Such combinations (e.g., @samp{print foo > a ? b : c})
 result in syntax errors.
 The correct way to write this statement is @samp{print foo > (a ? b : c)}.
 
@@ -12209,17 +12209,17 @@ Array membership.
 @cindex @code{&} (ampersand), @code{&&} operator
 @cindex ampersand (@code{&}), @code{&&} operator
 @item @code{&&}
-Logical ``and''.
+Logical ``and.''
 
 @cindex @code{|} (vertical bar), @code{||} operator
 @cindex vertical bar (@code{|}), @code{||} operator
 @item @code{||}
-Logical ``or''.
+Logical ``or.''
 
 @cindex @code{?} (question mark), @code{?:} operator
 @cindex question mark (@code{?}), @code{?:} operator
 @item @code{?:}
-Conditional.  This operator groups right-to-left.
+Conditional.  This operator groups right to left.
 
 @cindex @code{+} (plus sign), @code{+=} operator
 @cindex plus sign (@code{+}), @code{+=} operator
@@ -12236,7 +12236,7 @@ Conditional.  This operator groups right-to-left.
 @cindex @code{^} (caret), @code{^=} operator
 @cindex caret (@code{^}), @code{^=} operator
 @item @code{= += -= *= /= %= ^= **=}
-Assignment.  These operators group right-to-left.
+Assignment.  These operators group right to left.
 @end table
 
 @cindex POSIX @command{awk}, @code{**} operator and
@@ -12310,8 +12310,8 @@ Locales can influence the conversions.
 @item
 @command{awk} provides the usual arithmetic operators (addition,
 subtraction, multiplication, division, modulus), and unary plus and minus.
-It also provides comparison operators, boolean operators, array membership
-testing, and regexp
+It also provides comparison operators, Boolean operators, an array membership
+testing operator, and regexp
 matching operators.  String concatenation is accomplished by placing
 two expressions next to each other; there is no explicit operator.
 The three-operand @samp{?:} operator provides an ``if-else'' test within
@@ -12322,7 +12322,7 @@ Assignment operators provide convenient shorthands for 
common arithmetic
 operations.
 
 @item
-In @command{awk}, a value is considered to be true if it is non-zero
+In @command{awk}, a value is considered to be true if it is nonzero
 @emph{or} non-null. Otherwise, the value is false.
 
 @item
@@ -12331,7 +12331,7 @@ lifetime.  The type determines how it behaves in 
comparisons (string
 or numeric).
 
 @item
-Function calls return a value which may be used as part of a larger
+Function calls return a value that may be used as part of a larger
 expression.  Expressions used to pass parameter values are fully
 evaluated before the function is called.  @command{awk} provides
 built-in and user-defined functions; this is described in
@@ -12358,7 +12358,7 @@ a pattern with an associated action.  This 
@value{CHAPTER} describes how
 you build patterns and actions, what kinds of things you can do within
 actions, and @command{awk}'s predefined variables.
 
-The pattern-action rules and the statements available for use
+The pattern--action rules and the statements available for use
 within actions form the core of @command{awk} programming.
 In a sense, everything covered
 up to here has been the foundation
@@ -12549,7 +12549,7 @@ patterns.  Likewise, the special patterns @code{BEGIN}, 
@code{END},
 which never match any input record, are not expressions and cannot
 appear inside Boolean patterns.
 
-The precedence of the different operators which can appear in
+The precedence of the different operators that can appear in
 patterns is described in @ref{Precedence}.
 
 @node Ranges
@@ -12575,7 +12575,7 @@ prints every record in @file{myfile} between 
@samp{on}/@samp{off} pairs, inclusi
 
 A range pattern starts out by matching @var{begpat} against every
 input record.  When a record matches @var{begpat}, the range pattern is
address@hidden on} and the range pattern matches this record as well.  As long 
as
address@hidden on}, and the range pattern matches this record as well.  As long 
as
 the range pattern stays turned on, it automatically matches every input
 record read.  The range pattern also matches @var{endpat} against every
 input record; when this succeeds, the range pattern is @dfn{turned off} again
@@ -12719,7 +12719,7 @@ using library functions.
 for a number of useful library functions.
 
 If an @command{awk} program has only @code{BEGIN} rules and no
-other rules, then the program exits after the @code{BEGIN} rule is
+other rules, then the program exits after the @code{BEGIN} rules are
 address@hidden original version of @command{awk} kept
 reading and ignoring input until the end of the file was seen.}  However, if an
 @code{END} rule exists, then the input is read, even if there are
@@ -12747,7 +12747,7 @@ Another way is simply to assign a value to @code{$0}.
 @cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and
 @cindex @code{BEGIN} pattern, @code{print} statement and
 @cindex @code{END} pattern, @code{print} statement and
-The second point is similar to the first but from the other direction.
+The second point is similar to the first, but from the other direction.
 Traditionally, due largely to implementation issues, @code{$0} and
 @code{NF} were @emph{undefined} inside an @code{END} rule.
 The POSIX standard specifies that @code{NF} is available in an @code{END}
@@ -12836,7 +12836,7 @@ fatal error.
 
 @item
 If you have written extensions that modify the record handling (by
-inserting an ``input parser,'' @pxref{Input Parsers}), you can invoke
+inserting an ``input parser''; @pxref{Input Parsers}), you can invoke
 them at this point, before @command{gawk} has started processing the file.
 (This is a @emph{very} advanced feature, currently used only by the
 @uref{http://gawkextlib.sourceforge.net, @code{gawkextlib} project}.)
@@ -12847,8 +12847,8 @@ the last record in an input file.  For the last input 
file,
 it will be called before any @code{END} rules.
 The @code{ENDFILE} rule is executed even for empty input files.
 
-Normally, when an error occurs when reading input in the normal input
-processing loop, the error is fatal.  However, if an @code{ENDFILE}
+Normally, when an error occurs when reading input in the normal
+input-processing loop, the error is fatal.  However, if an @code{ENDFILE}
 rule is present, the error becomes non-fatal, and instead @code{ERRNO}
 is set.  This makes it possible to catch and process I/O errors at the
 level of the @command{awk} program.
@@ -12857,7 +12857,7 @@ level of the @command{awk} program.
 The @code{next} statement (@pxref{Next Statement}) is not allowed inside
 either a @code{BEGINFILE} or an @code{ENDFILE} rule.  The @code{nextfile}
 statement is allowed only inside a
address@hidden rule, but not inside an @code{ENDFILE} rule.
address@hidden rule, not inside an @code{ENDFILE} rule.
 
 @cindex @code{getline} statement, @code{BEGINFILE}/@code{ENDFILE} patterns and
 The @code{getline} statement (@pxref{Getline}) is restricted inside
@@ -12933,11 +12933,11 @@ awk "/$pattern/ "'@{ nmatches++ @}
 @noindent
 The @command{awk} program consists of two pieces of quoted text
 that are concatenated together to form the program.
-The first part is double quoted, which allows substitution of
+The first part is double-quoted, which allows substitution of
 the @code{pattern} shell variable inside the quotes.
-The second part is single quoted.
+The second part is single-quoted.
 
-Variable substitution via quoting works, but can be potentially
+Variable substitution via quoting works, but can potentially be
 messy.  It requires a good understanding of the shell's quoting rules
 (@pxref{Quoting}),
 and it's often difficult to correctly
@@ -13196,13 +13196,13 @@ The body of this loop is a compound statement 
enclosed in braces,
 containing two statements.
 The loop works in the following manner: first, the value of @code{i} is set to 
one.
 Then, the @code{while} statement tests whether @code{i} is less than or equal 
to
-three.  This is true when @code{i} equals one, so the @code{i}-th
+three.  This is true when @code{i} equals one, so the @code{i}th
 field is printed.  Then the @samp{i++} increments the value of @code{i}
 and the loop repeats.  The loop terminates when @code{i} reaches four.
 
 A newline is not required between the condition and the
 body; however, using one makes the program clearer unless the body is a
-compound statement or else is very simple.  The newline after the open-brace
+compound statement or else is very simple.  The newline after the open brace
 that begins the compound statement is not required either, but the
 program is harder to read without it.
 
@@ -13232,9 +13232,9 @@ while (@var{condition})
 @end example
 
 @noindent
-This statement does not execute @var{body} even once if the @var{condition}
-is false to begin with.
-The following is an example of a @code{do} statement:
+This statement does not execute the @var{body} even once if the
address@hidden is false to begin with.  The following is an example of
+a @code{do} statement:
 
 @example
 @{
@@ -13301,7 +13301,7 @@ their assignments as separate statements preceding the 
@code{for} loop.)
 The same is true of the @var{increment} part. Incrementing additional
 variables requires separate statements at the end of the loop.
 The C compound expression, using C's comma operator, is useful in
-this context but it is not supported in @command{awk}.
+this context, but it is not supported in @command{awk}.
 
 Most often, @var{increment} is an increment expression, as in the previous
 example.  But this is not required; it can be any expression
@@ -13392,7 +13392,7 @@ default:
 Control flow in
 the @code{switch} statement works as it does in C. Once a match to a given
 case is made, the case statement bodies execute until a @code{break},
address@hidden, @code{next}, @code{nextfile}  or @code{exit} is encountered,
address@hidden, @code{next}, @code{nextfile}, or @code{exit} is encountered,
 or the end of the @code{switch} statement itself. For example:
 
 @example
@@ -13566,7 +13566,12 @@ body of a loop.  Historical versions of @command{awk} 
treated a @code{continue}
 statement outside a loop the same way they treated a @code{break}
 statement outside a loop: as if it were a @code{next}
 statement
address@hidden FOR_PRINT
+(discussed in the following section).
address@hidden ifset
address@hidden FOR_PRINT
 (@pxref{Next Statement}).
address@hidden ifclear
 @value{DARKCORNER}
 Recent versions of BWK @command{awk} no longer work this way, nor
 does @command{gawk}.
@@ -13694,7 +13699,7 @@ See @uref{http://austingroupbugs.net/view.php?id=607, 
the Austin Group website}.
 @cindex @code{nextfile} statement, user-defined functions and
 @cindex Brian Kernighan's @command{awk}
 @cindex @command{mawk} utility
-The current version of BWK @command{awk}, and @command{mawk}
+The current version of BWK @command{awk} and @command{mawk}
 also support @code{nextfile}.  However, they don't allow the
 @code{nextfile} statement inside function bodies (@pxref{User-defined}).
 @command{gawk} does; a @code{nextfile} inside a function body reads the
@@ -13732,7 +13737,7 @@ any @code{ENDFILE} rules; they do not execute.
 
 In such a case,
 if you don't want the @code{END} rule to do its job, set a variable
-to nonzero before the @code{exit} statement and check that variable in
+to a nonzero value before the @code{exit} statement and check that variable in
 the @code{END} rule.
 @DBXREF{Assert Function}
 for an example that does this.
@@ -13800,7 +13805,7 @@ their areas of activity.
 @end menu
 
 @node User-modified
address@hidden Built-In Variables That Control @command{awk}
address@hidden Built-in Variables That Control @command{awk}
 @cindex predefined variables, user-modifiable
 @cindex user-modifiable variables
 

-----------------------------------------------------------------------

Summary of changes:
 doc/ChangeLog   |    1 +
 doc/gawk.info   | 1084 +++++++++++++++++++++++++++---------------------------
 doc/gawk.texi   |  189 +++++-----
 doc/gawktexi.in |  183 +++++-----
 4 files changed, 734 insertions(+), 723 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]