aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info2176
1 files changed, 1563 insertions, 613 deletions
diff --git a/doc/gawk.info b/doc/gawk.info
index 06b8e119..daae67b4 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -10,8 +10,8 @@ START-INFO-DIR-ENTRY
END-INFO-DIR-ENTRY
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011 Free Software
-Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012 Free
+Software Foundation, Inc.
This is Edition 4 of `GAWK: Effective AWK Programming: A User's
@@ -42,8 +42,8 @@ This file documents `awk', a program that you can use to select
particular records in a file and perform operations upon them.
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011 Free Software
-Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012 Free
+Software Foundation, Inc.
This is Edition 4 of `GAWK: Effective AWK Programming: A User's
@@ -89,6 +89,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Functions:: Built-in and user-defined functions.
* Internationalization:: Getting `gawk' to speak your
language.
+* Arbitrary Precision Arithmetic:: Arbitrary precision arithmetic with
+ `gawk'.
* Advanced Features:: Stuff for advanced users, specific to
`gawk'.
* Library Functions:: A Library of `awk' Functions.
@@ -196,6 +198,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Getline Notes:: Important things to know about
`getline'.
* Getline Summary:: Summary of `getline' Variants.
+* Read Timeout:: Reading input with a timeout.
* Command line directories:: What happens if you put a directory on the
command line.
* Print:: The `print' statement.
@@ -353,6 +356,21 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* I18N Portability:: `awk'-level portability issues.
* I18N Example:: A simple i18n example.
* Gawk I18N:: `gawk' is also internationalized.
+* Floating-point Programming:: Effective floating-point programming.
+* Floating-point Representation:: Binary floating-point representation.
+* Floating-point Context:: Floating-point context.
+* Rounding Mode:: Floating-point rounding mode.
+* Arbitrary Precision Floats:: Arbitrary precision floating-point
+ arithmetic with `gawk'.
+* Setting Precision:: Setting the working precision.
+* Setting Rounding Mode:: Setting the rounding mode.
+* Floating-point Constants:: Representing floating-point constants.
+* Changing Precision:: Changing the precision of a number.
+* Exact Arithmetic:: Exact arithmetic with floating-point numbers.
+* Integer Programming:: Effective integer programming.
+* Arbitrary Precision Integers:: Arbitrary precision integer
+ arithmetic with `gawk'.
+* MPFR and GMP Libraries:: Information about the MPFR and GMP libraries.
* Nondecimal Data:: Allowing nondecimal input data.
* Array Sorting:: Facilities for controlling array traversal
and sorting arrays.
@@ -1101,10 +1119,12 @@ it is today. It has been and continues to be a pleasure working with
this team of fine people.
John Haque contributed the modifications to convert `gawk' into a
-byte-code interpreter, including the debugger. Stephen Davies
-contributed to the effort to bring the byte-code changes into the
-mainstream code base. Efraim Yawitz contributed the initial text of
-*note Debugger::.
+byte-code interpreter, including the debugger, and the additional
+modifications for support of arbitrary precision arithmetic. Stephen
+Davies contributed to the effort to bring the byte-code changes into
+the mainstream code base. Efraim Yawitz contributed the initial text
+of *note Debugger::. John Haque contributed the initial text of *note
+Arbitrary Precision Arithmetic::.
I would like to thank Brian Kernighan for invaluable assistance
during the testing and debugging of `gawk', and for ongoing help and
@@ -1394,7 +1414,8 @@ pass to that interpreter. The operating system then runs the
interpreter with the given argument and the full argument list of the
executed program. The first argument in the list is the full file name
of the `awk' program. The rest of the argument list contains either
-options to `awk', or data files, or both.
+options to `awk', or data files, or both. Note that on many systems
+`awk' may be found in `/usr/bin' instead of in `/bin'. Caveat Emptor.

File: gawk.info, Node: Comments, Next: Quoting, Prev: Executable Scripts, Up: Running gawk
@@ -2182,6 +2203,9 @@ The following list describes options mandated by the POSIX standard:
`-b'
`--characters-as-bytes'
Cause `gawk' to treat all input data as single-byte characters.
+ In addition, all output written with `print' or `printf' are
+ treated as single-byte characters.
+
Normally, `gawk' follows the POSIX standard and attempts to process
its input data according to the current locale. This can often
involve converting multibyte characters into wide characters
@@ -2293,6 +2317,12 @@ The following list describes options mandated by the POSIX standard:
inappropriate construct. As `awk' programs are usually short,
doing so is not burdensome.
+`-M'
+`--bignum'
+ Force arbitrary precision arithmetic on numbers. This option has
+ no effect if `gawk' is not compiled to use the GNU MPFR and MP
+ libraries (*note Arbitrary Precision Arithmetic::).
+
`-n'
`--non-decimal-data'
Enable automatic interpretation of octal and hexadecimal values in
@@ -2629,6 +2659,10 @@ used by regular users.
milliseconds. On systems that do not support the `usleep()' system
call, the value is rounded up to an integral number of seconds.
+`GAWK_READ_TIMEOUT'
+ Specifies the time, in milliseconds, for `gawk' to wait for input
+ before returning with an error. *Note Read Timeout::.
+
The environment variables in the following list are meant for use by
the `gawk' developers for testing and tuning. They are subject to
change. The variables are:
@@ -3191,6 +3225,10 @@ sequences and that are not listed in the table stand for themselves:
constants are valid and work the way you want them to, using any
version of `awk'.(2)
+ Finally, when `{' and `}' appear in regexp constants in a way that
+ cannot be interpreted as an interval expression (such as
+ `/q{a}/'), then they stand for themselves.
+
In regular expressions, the `*', `+', and `?' operators, as well as
the braces `{' and `}', have the highest precedence, followed by
concatenation, and finally by `|'. As in arithmetic, parentheses can
@@ -3626,6 +3664,8 @@ have to be named on the `awk' command line (*note Getline::).
* Multiple Line:: Reading multi-line records.
* Getline:: Reading files under explicit program control
using the `getline' function.
+* Read Timeout:: Reading input with a timeout.
+
* Command line directories:: What happens if you put a directory on the
command line.
@@ -4813,7 +4853,7 @@ feature of `RS' does not apply. It does apply to the default field
separator of a single space: `FS = " "'.

-File: gawk.info, Node: Getline, Next: Command line directories, Prev: Multiple Line, Up: Reading Files
+File: gawk.info, Node: Getline, Next: Read Timeout, Prev: Multiple Line, Up: Reading Files
4.9 Explicit Input with `getline'
=================================
@@ -5238,9 +5278,101 @@ VAR
Table 4.1: getline Variants and What They Set

-File: gawk.info, Node: Command line directories, Prev: Getline, Up: Reading Files
+File: gawk.info, Node: Read Timeout, Next: Command line directories, Prev: Getline, Up: Reading Files
+
+4.10 Reading Input With A Timeout
+=================================
+
+You may specify a timeout in milliseconds for reading input from a
+terminal, pipe or two-way communication including, TCP/IP sockets. This
+can be done on a per input, command or connection basis, by setting a
+special element in the `PROCINFO' array:
+
+ PROCINFO["input_name", "READ_TIMEOUT"] = TIMEOUT IN MILLISECONDS
+
+ When set, this will cause `gawk' to time out and return failure if
+no data is available to read within the specified timeout period. For
+example, a TCP client can decide to give up on receiving any response
+from the server after a certain amount of time:
+
+ Service = "/inet/tcp/0/localhost/daytime"
+ PROCINFO[Service, "READ_TIMEOUT"] = 100
+ if ((Service |& getline) > 0)
+ print $0
+ else if (ERRNO != "")
+ print ERRNO
+
+ Here is how to read interactively from the terminal(1) without
+waiting for more than five seconds:
+
+ PROCINFO["/dev/stdin", "READ_TIMEOUT"] = 5000
+ while ((getline < "/dev/stdin") > 0)
+ print $0
+
+ `gawk' will terminate the read operation if input does not arrive
+after waiting for the timeout period, return failure and set the
+`ERRNO' variable to an appropriate string value. A negative or zero
+value for the timeout is the same as specifying no timeout at all.
+
+ A timeout can also be set for reading from the terminal in the
+implicit loop that reads input records and matches them against
+patterns, like so:
+
+ $ gawk 'BEGIN { PROCINFO["-", "READ_TIMEOUT"] = 5000 }
+ > { print "You entered: " $0 }'
+ gawk
+ -| You entered: gawk
+
+ In this case, failure to respond within five seconds results in the
+following error message:
+
+ error--> gawk: cmd. line:2: (FILENAME=- FNR=1) fatal: error reading input file `-': Connection timed out
+
+ The timeout can be set or changed at any time, and will take effect
+on the next attempt to read from the input device. In the following
+example, we start with a timeout value of one second, and progressively
+reduce it by one-tenth of a second until we wait indefinitely for the
+input to arrive:
+
+ PROCINFO[Service, "READ_TIMEOUT"] = 1000
+ while ((Service |& getline) > 0) {
+ print $0
+ PROCINFO[S, "READ_TIMEOUT"] -= 100
+ }
+
+ NOTE: You should not assume that the read operation will block
+ exactly after the tenth record has been printed. It is possible
+ that `gawk' will read and buffer more than one record's worth of
+ data the first time. Because of this, changing the value of
+ timeout like in the above example is not very useful.
+
+ If the `PROCINFO' element is not present and the environment
+variable `GAWK_READ_TIMEOUT' exists, `gawk' uses its value to
+initialize the timeout value. The exclusive use of the environment
+variable to specify timeout has the disadvantage of not being able to
+control it on a per command or connection basis.
+
+ `gawk' considers a timeout event to be an error even though the
+attempt to read from the underlying device may succeed in a later
+attempt. This is a limitation, and it also means that you cannot use
+this to multiplex input from two or more sources.
+
+ Assigning a timeout value prevents read operations from blocking
+indefinitely. But bear in mind that there are other ways `gawk' can
+stall waiting for an input device to be ready. A network client can
+sometimes take a long time to establish a connection before it can
+start reading any data, or the attempt to open a FIFO special file for
+reading can block indefinitely until some other process opens it for
+writing.
+
+ ---------- Footnotes ----------
+
+ (1) This assumes that standard input is the keyboard
+
+
+File: gawk.info, Node: Command line directories, Prev: Read Timeout, Up: Reading Files
-4.10 Directories On The Command Line
+4.11 Directories On The Command Line
====================================
According to the POSIX standard, files named on the `awk' command line
@@ -9199,6 +9331,15 @@ specific to `gawk' are marked with a pound sign (`#').
every `print' statement. Its default value is `"\n"', the newline
character. (*Note Output Separators::.)
+`PREC #'
+ The working precision of arbitrary precision floating-point
+ numbers, 53 by default (*note Setting Precision::).
+
+`ROUNDMODE #'
+ The rounding mode to use for arbitrary precision arithmetic on
+ numbers, by default `"N"' (`roundTiesToEven' in the IEEE-754
+ standard) (*note Setting Rounding Mode::).
+
`RS'
This is `awk''s input record separator. Its default value is a
string containing a single newline character, which means that an
@@ -9404,6 +9545,23 @@ with a pound sign (`#').
`PROCINFO["version"]'
The version of `gawk'.
+ The following additional elements in the array are available to
+ provide information about the MPFR and GMP libraries if your
+ version of `gawk' supports arbitrary precision numbers (*note
+ Arbitrary Precision Arithmetic::):
+
+ `PROCINFO["mpfr_version"]'
+ The version of the GNU MPFR library.
+
+ `PROCINFO["gmp_version"]'
+ The version of the GNU MP library.
+
+ `PROCINFO["prec_max"]'
+ The maximum precision supported by MPFR.
+
+ `PROCINFO["prec_min"]'
+ The minimum precision required by MPFR.
+
On some systems, there may be elements in the array, `"group1"'
through `"groupN"' for some N. N is the number of supplementary
groups that the process has. Use the `in' operator to test for
@@ -10573,7 +10731,8 @@ with numbers. Optional parameters are enclosed in square
brackets ([ ]):
`atan2(Y, X)'
- Return the arctangent of `Y / X' in radians.
+ Return the arctangent of `Y / X' in radians. You can use `pi =
+ atan2(0, -1)' to retrieve the value of pi.
`cos(X)'
Return the cosine of X, with X in radians.
@@ -12916,7 +13075,7 @@ example, in the following case:
`gawk' will look up the actual function to call only once.

-File: gawk.info, Node: Internationalization, Next: Advanced Features, Prev: Functions, Up: Top
+File: gawk.info, Node: Internationalization, Next: Arbitrary Precision Arithmetic, Prev: Functions, Up: Top
10 Internationalization with `gawk'
***********************************
@@ -13496,9 +13655,745 @@ writing, the latest version of GNU `gettext' is version 0.18.1
usage messages, warnings, and fatal errors in the local language.

-File: gawk.info, Node: Advanced Features, Next: Library Functions, Prev: Internationalization, Up: Top
+File: gawk.info, Node: Arbitrary Precision Arithmetic, Next: Advanced Features, Prev: Internationalization, Up: Top
+
+11 Arbitrary Precision Arithmetic with `gawk'
+*********************************************
+
+ There's a credibility gap: We don't know how much of the
+ computer's answers to believe. Novice computer users solve this
+ problem by implicitly trusting in the computer as an infallible
+ authority; they tend to believe that all digits of a printed
+ answer are significant. Disillusioned computer users have just the
+ opposite approach; they are constantly afraid that their answers
+ are almost meaningless.
+
+ Donald Knuth(1)
+
+ This minor node decsribes how to use the arbitrary precision (also
+known as "multiple precision" or "infinite precision") numeric
+capabilites in `gawk' to produce maximally accurate results when you
+need it. But first you should check if your version of `gawk' supports
+arbitrary precision arithmetic. The easiest way to find out is to look
+at the output of the following command:
+
+ $ gawk --version
+ -| GNU Awk 4.1.0 (GNU MPFR 3.1.0, GNU MP 5.0.3)
+ -| Copyright (C) 1989, 1991-2012 Free Software Foundation.
+ ...
+
+ `gawk' uses the GNU MPFR (http://www.mpfr.org) and GNU MP
+(http://gmplib.org) (GMP) libraries for arbitrary precision arithmetic
+on numbers. So if you do not see the names of these libraries in the
+output, then your version of `gawk' does not support arbitrary
+precision arithmetic.
+
+ Even if you aren't interested in arbitrary precision arithmetic, you
+may still benifit from knowing about how `gawk' handles numbers in
+general, and the limitations of doing arithmetic with ordinary `gawk'
+numbers.
+
+* Menu:
+
+* Floating-point Programming:: Effective Floating-point Programming.
+* Floating-point Representation:: Binary Floating-point Representation.
+* Floating-point Context:: Floating-point Context.
+* Rounding Mode:: Floating-point Rounding Mode.
+* Arbitrary Precision Floats:: Arbitrary Precision Floating-point
+ Arithmetic with `gawk'.
+* Setting Precision:: Setting the Working Precision.
+* Setting Rounding Mode:: Setting the Rounding Mode.
+* Floating-point Constants:: Representing Floating-point Constants.
+* Changing Precision:: Changing the Precision of a Number.
+* Exact Arithmetic:: Exact Arithmetic with Floating-point Numbers.
+* Integer Programming:: Effective Integer Programming.
+* Arbitrary Precision Integers:: Arbitrary Precision Integer
+ Arithmetic with `gawk'.
+* MPFR and GMP Libraries:: Information About the MPFR and GMP Libraries.
+
+ ---------- Footnotes ----------
+
+ (1) Donald E. Knuth. `The Art of Computer Programming'. Volume 2,
+`Seminumerical Algorithms', third edition, 1998, ISBN 0-201-89683-4, p.
+229.
+
+
+File: gawk.info, Node: Floating-point Programming, Next: Floating-point Representation, Up: Arbitrary Precision Arithmetic
+
+11.1 Effective Floating-point Programming
+=========================================
+
+Numerical programming is an extensive area; if you need to develop
+sophisticated numerical algorithms then `gawk' may not be the ideal
+tool, and this documentation may not be sufficient. It might require a
+book or two to communicate how to compute with ideal accuracy and
+precision and the result often depends on the particular application.
+
+ NOTE: A floating-point calculation's "accuracy" is how close it
+ comes to the real value. This is as opposed to the "precision",
+ which usually refers to the number of bits used to represent the
+ number (see the Wikipedia article
+ (http://en.wikipedia.org/wiki/Accuracy_and_precision) for more
+ information).
+
+ Binary floating-point representations and arithmetic are inexact.
+Simple values like 0.1 cannot be precisely represented using binary
+floating-point numbers, and the limited precision of floating-point
+numbers means that slight changes in the order of operations or the
+precision of intermediate storage can change the result. To make
+matters worse with arbitrary precision floating-point, you can set the
+precision before starting a computation, but then you cannot be sure of
+the number of significant decimal places in the final result.
+
+ Sometimes you need to think more about what you really want and
+what's really happening. Consider the two numbers in the following
+example:
+
+ x = 0.875 # 1/2 + 1/4 + 1/8
+ y = 0.425
+
+ Unlike the number in `y', the number stored in `x' is exactly
+representable in binary since it can be written as a finite sum of one
+or more fractions whose denominators are all powers of two. When
+`gawk' reads a floating-point number from program source, it
+automatically rounds that number to whatever precision your machine
+supports. If you try to print the numeric content of a variable using
+an output format string of `"%.17g"', it may not produce the same
+number as you assigned to it:
+
+ $ gawk 'BEGIN { x = 0.875; y = 0.425
+ > printf("%0.17g, %0.17g\n", x, y) }'
+ -| 0.875, 0.42499999999999999
+
+ Often the error is so small you do not even notice it, and if you do,
+you can always specify how much precision you would like in your output.
+Usually this is a format string like `"%.15g"', which when used in the
+previous example, produces an output identical to the input.
+
+ Because the underlying representation can be little bit off from the
+exact value, comparing floats to see if they are equal is generally not
+a good idea. Here is an example where it does not work like you expect:
+
+ $ gawk 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 0
+
+ The loss of accuracy during a single computation with floating-point
+numbers usually isn't enough to worry about. However, if you compute a
+value which is the result of a sequence of floating point operations,
+the error can accumulate and greatly affect the computation itself.
+Here is an attempt to compute the value of the constant pi using one of
+its many series representations:
+
+ BEGIN {
+ x = 1.0 / sqrt(3.0)
+ n = 6
+ for (i = 1; i < 30; i++) {
+ n = n * 2.0
+ x = (sqrt(x * x + 1) - 1) / x
+ printf("%.15f\n", n * x)
+ }
+ }
+
+ When run, the early errors propagating through later computations
+cause the loop to terminate prematurely after an attempt to divide by
+zero.
+
+ $ gawk -f pi.awk
+ -| 3.215390309173475
+ -| 3.159659942097510
+ -| 3.146086215131467
+ -| 3.142714599645573
+ ...
+ -| 3.224515243534819
+ -| 2.791117213058638
+ -| 0.000000000000000
+ error--> gawk: pi.awk:6: fatal: division by zero attempted
+
+ Here is one more example where the inaccuracies in internal
+representations yield an unexpected result:
+
+ $ gawk 'BEGIN {
+ > for (d = 1.1; d <= 1.5; d += 0.1)
+ > i++
+ > print i
+ > }'
+ -| 4
+
+ Can computation using aribitrary precision help with the previous
+examples? If you are impatient to know, see *note Exact Arithmetic::.
+
+ Instead of aribitrary precision floating-point arithmetic, often all
+you need is an adjustment of your logic or a different order for the
+operations in your calculation. The stability and the accuracy of the
+computation of the constant pi in the previous example can be enhanced
+by using the following simple algebraic transformation:
+
+ (sqrt(x * x + 1) - 1) / x = x / (sqrt(x * x + 1) + x)
+
+ There is no need to be unduly suspicious about the results from
+floating-point arithmetic. The lesson to remember is that
+floating-point math is always more complex than the math using pencil
+and paper. In order to take advantage of the power of computer
+floating-point, you need to know its limitations and work within them.
+For most casual use of floating-point arithmetic, you will often get
+the expected result in the end if you simply round the display of your
+final results to the correct number of significant decimal digits.
+Avoid presenting numerical data in a manner that implies better
+precision than is actually the case.
+
+
+File: gawk.info, Node: Floating-point Representation, Next: Floating-point Context, Prev: Floating-point Programming, Up: Arbitrary Precision Arithmetic
+
+11.2 Binary Floating-point Representation
+=========================================
+
+Although floating-point representations vary from machine to machine,
+the most commonly encountered representation is that defined by the
+IEEE 754 Standard. An IEEE-754 format value has three components:
+
+ * a sign bit telling whether the number is positive or negative,
+
+ * an "exponent" giving its order of magnitude, E,
+
+ * and a "significand", S, specifying the actual digits of the number.
+
+ The value of the number is then S * 2^E. The first bit of a
+non-zero binary significand is always one, so the significand in an
+IEEE-754 format only includes the fractional part, leaving the leading
+one implicit.
+
+ Three of the standard IEEE-754 types are 32-bit single precision,
+64-bit double precision and 128-bit quadruple precision. The standard
+also specifies extended precision formats to allow greater precisions
+and larger exponent ranges.
+
+
+File: gawk.info, Node: Floating-point Context, Next: Rounding Mode, Prev: Floating-point Representation, Up: Arbitrary Precision Arithmetic
+
+11.3 Floating-point Context
+===========================
+
+A floating-point context defines the environment for arithmetic
+operations. It governs precision, sets rules for rounding and limits
+range for exponents. The context has the following primary components:
+
+`precision'
+ Precision of the floating-point format in bits.
+
+`emax'
+ Maximum exponent allowed for this format.
+
+`emin'
+ Minimum exponent allowed for this format.
+
+`underflow behavior'
+ The format may or may not support gradual underflow.
+
+`rounding'
+ The rounding mode of this context.
-11 Advanced Features of `gawk'
+ *note table-ieee-formats:: lists the precision and exponent field
+values for the basic IEEE-754 binary formats:
+
+Name Total bits Precision emin emax
+---------------------------------------------------------------------------
+Single 32 24 -126 +127
+Double 64 53 -1022 +1023
+Quadruple 128 113 -16382 +16383
+
+Table 11.1: Basic IEEE Formats
+
+ NOTE: The precision numbers include the implied leading one that
+ gives them one extra bit of significand.
+
+ A floating-point context can also determine which signals are treated
+as exceptions, and can set rules for arithmetic with special values.
+Please consult the IEEE-754 standard or other resources for details.
+
+ `gawk' ordinarily uses the hardware double precision representation
+for numbers. On most systems, this is IEEE-754 floating-point format,
+corresponding to 64-bit binary with 53 bits of precision.
+
+ NOTE: In case an underflow occurs, the standard allows, but does
+ not require, the result from an arithmetic operation to be a
+ number smaller than the smallest nonzero normalized number. Such
+ numbers do not have as many significant digits as normal numbers,
+ and are called "denormals" or "subnormals". The alternative,
+ simply returning a zero, is called "flush to zero". The basic
+ IEEE-754 binary formats support subnormal numbers.
+
+
+File: gawk.info, Node: Rounding Mode, Next: Arbitrary Precision Floats, Prev: Floating-point Context, Up: Arbitrary Precision Arithmetic
+
+11.4 Floating-point Rounding Mode
+=================================
+
+The "rounding mode" specifies the behavior for the results of numerical
+operations when discarding extra precision. Each rounding mode indicates
+how the least significant returned digit of a rounded result is to be
+calculated. The `ROUNDMODE' variable (*note Setting Rounding Mode::)
+provides program level control over the rounding mode. *note
+table-rounding-modes:: lists the IEEE-754 defined rounding modes:
+
+Rounding Mode IEEE Name `ROUNDMODE'
+---------------------------------------------------------------------------
+Round to nearest, ties to even `roundTiesToEven' `"N"' or `"n"'
+Round toward plus Infinity `roundTowardPositive' `"U"' or `"u"'
+Round toward negative Infinity `roundTowardNegative' `"D"' or `"d"'
+Round toward zero `roundTowardZero' `"Z"' or `"z"'
+Round to nearest, ties away `roundTiesToAway' `"A"' or `"a"'
+from zero
+
+Table 11.2: Rounding Modes
+
+ The default mode `roundTiesToEven' is the most preferred, but the
+least intuitive. This method does the obvious thing for most values, by
+rounding them up or down to the nearest digit. For example, rounding
+1.132 to two digits yields 1.13, and rounding 1.157 yields 1.16.
+
+ However, when it comes to rounding a value that is exactly halfway
+between, things do not work the way you probably learned in school. In
+this case, the number is rounded to the nearest even digit. So
+rounding 0.125 to two digits rounds down to 0.12, but rounding 0.6875
+to three digits rounds up to 0.688. You probably have already
+encountered this rounding mode when using the `printf' routine to
+format floating-point numbers. For example:
+
+ BEGIN {
+ x = -4.5
+ for (i = 1; i < 10; i++) {
+ x += 1.0
+ printf("%4.1f => %2.0f\n", x, x)
+ }
+ }
+
+produces the following output when run(1):
+
+ -3.5 => -4
+ -2.5 => -2
+ -1.5 => -2
+ -0.5 => 0
+ 0.5 => 0
+ 1.5 => 2
+ 2.5 => 2
+ 3.5 => 4
+ 4.5 => 4
+
+ The theory behind the rounding mode `roundTiesToEven' is that it
+more or less evenly distributes upward and downward rounds of exact
+halves, which might cause the round-off error to cancel itself out.
+This is the default rounding mode used in IEEE-754 computing functions
+and operators.
+
+ The other rounding modes are rarely used. Round toward positive
+infinity (`roundTowardPositive') and round toward negative infinity
+(`roundTowardNegative') are often used to implement interval arithmetic,
+where you adjust the rounding mode to calculate upper and lower bounds
+for the range of output. The `roundTowardZero' mode can be used for
+converting floating-point numbers to integers. The rounding mode
+`roundTiesToAway' rounds the result to the nearest number and selects
+the number with the larger magnitude if a tie occurs.
+
+ Some numerical analysts will tell you that your choice of rounding
+style has tremendous impact on the final outcome, and advise you to
+wait until final output for any rounding. Instead, you can often
+achieve this goal by setting the precision initially to some value
+sufficiently larger than the final desired precision, so that the
+accumulation of round-off error does not influence the outcome. If you
+suspect that results from your computation are sensitive to
+accumulation of round-off error, one way to be sure is to look for a
+significant difference in output when you change the rounding mode.
+
+ ---------- Footnotes ----------
+
+ (1) It is possible for the output to be completely different if the
+C library in your system does not use the IEEE-754 even-rounding rule
+to round halfway cases for `printf()'.
+
+
+File: gawk.info, Node: Arbitrary Precision Floats, Next: Setting Precision, Prev: Rounding Mode, Up: Arbitrary Precision Arithmetic
+
+11.5 Arbitrary Precision Floating-point Arithmetic with `gawk'
+==============================================================
+
+`gawk' uses the GNU MPFR library for arbitrary precision floating-point
+arithmetic. The MPFR library provides precise control over precisions
+and rounding modes, and gives correctly rounded reproducible
+platform-independent results. With the command-line option `--bignum'
+or `-M', all floating-point arithmetic operators and numeric functions
+can yield results to any desired precision level supported by MPFR.
+Two built-in variables `PREC' (*note Setting Precision::) and
+`ROUNDMODE' (*note Setting Rounding Mode::) provide control over the
+working precision and the rounding mode. The precision and the
+rounding mode are set globally for every operation to follow.
+
+ The default working precision for arbitrary precision floats is 53,
+and the default value for `ROUNDMODE' is `"N"', which selects the
+IEEE-754 `roundTiesToEven' (*note Rounding Mode::) rounding mode.(1)
+`gawk' uses the default exponent range in MPFR (EMAX = 2^30 - 1, EMIN =
+-EMAX) for all floating-point contexts. There is no explicit mechanism
+to adjust the exponent range. MPFR does not implement subnormal
+numbers by default, and this behavior cannot be changed in `gawk'.
+
+ NOTE: When emulating an IEEE-754 format (*note Setting
+ Precision::), `gawk' internally adjusts the exponent range to the
+ value defined for the format and also performs computations needed
+ for gradual underflow (subnormal numbers).
+
+ NOTE: MPFR numbers are variable-size entities, consuming only as
+ much space as needed to store the significant digits. Since the
+ performance using MPFR numbers pales in comparison to doing math
+ using the underlying machine types, you should consider using only
+ as much precision as needed by your program.
+
+ ---------- Footnotes ----------
+
+ (1) The default precision is 53, since according to the MPFR
+documentation, the library should be able to exactly reproduce all
+computations with double-precision machine floating-point numbers
+(`double' type in C), except the default exponent range is much wider
+and subnormal numbers are not implemented.
+
+
+File: gawk.info, Node: Setting Precision, Next: Setting Rounding Mode, Prev: Arbitrary Precision Floats, Up: Arbitrary Precision Arithmetic
+
+11.6 Setting the Working Precision
+==================================
+
+`gawk' uses a global working precision; it does not keep track of the
+precision or accuracy of individual numbers. Performing an arithmetic
+operation or calling a built-in function rounds the result to the
+current working precision. The default working precision is 53 which
+can be modified using the built-in variable `PREC'. You can also set the
+value to one of the following pre-defined case-insensitive strings to
+emulate an IEEE-754 binary format:
+
+`PREC' IEEE-754 Binary Format
+---------------------------------------------------
+`"half"' 16-bit half-precision.
+`"single"' Basic 32-bit single precision.
+`"double"' Basic 64-bit double precision.
+`"quad"' Basic 128-bit quadruple precision.
+`"oct"' 256-bit octuple precision.
+
+ The following example illustrates the effects of changing precision
+on arithmetic operations:
+
+ $ gawk -M -vPREC=100 'BEGIN { x = 1.0e-400; print x + 0; \
+ > PREC = "double"; print x + 0 }'
+ -| 1e-400
+ -| 0
+
+ Binary and decimal precisions are related approximately according to
+the formula:
+
+ PREC = 3.322 * DPS
+
+Here, PREC denotes the binary precision (measured in bits) and DPS
+(short for decimal places) is the decimal digits. We can easily
+calculate how many decimal digits the 53-bit significand of an IEEE
+double is equivalent to: 53 / 3.332 which is equal to about 15.95. But
+what does 15.95 digits actually mean? It depends whether you are
+concerned about how many digits you can rely on, or how many digits you
+need.
+
+ It is important to know how many bits it takes to uniquely identify
+a double-precision value (the C type `double'). If you want to convert
+from `double' to decimal and back to `double' (e.g., saving a `double'
+representing an intermediate result to a file, and later reading it
+back to restart the computation), then a few more decimal digits are
+required. 17 digits is generally enough for a `double'.
+
+ It can also be important to know what decimal numbers can be uniquely
+represented with a `double'. If you want to convert from decimal to
+`double' and back again, 15 digits is the most that you can get. Stated
+differently, you should not present the numbers from your
+floating-point computations with more than 15 significant digits in
+them.
+
+ Conversely, it takes a precision of 332 bits to hold an approximation
+of constant pi that is accurate to 100 decimal places. You should
+always add some extra bits in order to avoid the confusing round-off
+issues that occur because numbers are stored internally in binary.
+
+
+File: gawk.info, Node: Setting Rounding Mode, Next: Floating-point Constants, Prev: Setting Precision, Up: Arbitrary Precision Arithmetic
+
+11.7 Setting the Rounding Mode
+==============================
+
+The built-in variable `ROUNDMODE' has the default value `"N"', which
+selects the IEEE-754 rounding mode `roundTiesToEven'. The other
+possible values for `ROUNDMODE' are `"U"' for rounding mode
+`roundTowardPositive', `"D"' for `roundTowardNegative', and `"Z"' for
+`roundTowardZero'. `gawk' also accepts `"A"' to select the IEEE-754
+mode `roundTiesToAway' if your version of the MPFR library supports it;
+otherwise setting `ROUNDMODE' to this value has no effect. *Note
+Rounding Mode::, for the meanings of the various rounding modes.
+
+ Here is an example of how to change the default rounding behavior of
+`printf''s output:
+
+ $ gawk -M -vROUNDMODE="Z" 'BEGIN { printf("%.2f\n", 1.378) }'
+ -| 1.37
+
+
+File: gawk.info, Node: Floating-point Constants, Next: Changing Precision, Prev: Setting Rounding Mode, Up: Arbitrary Precision Arithmetic
+
+11.8 Representing Floating-point Constants
+==========================================
+
+Be wary of floating-point constants! When reading a floating-point
+constant from program source code, `gawk' uses the default precision,
+unless overridden by an assignment to the special variable `PREC' on
+the command line, to store it internally as a MPFR number. Changing
+the precision using `PREC' in the program text does not change the
+precision of a constant. If you need to represent a floating-point
+constant at a higher precision than the default and cannot use a
+command line assignment to `PREC', you should either specify the
+constant as a string, or a rational number whenever possible. The
+following example illustrates the differences among various ways to
+print a floating-point constant:
+
+ $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 0.1) }'
+ -| 0.1000000000000000055511151
+ $ gawk -M -vPREC = 113 'BEGIN { printf("%0.25f\n", 0.1) }'
+ -| 0.1000000000000000000000000
+ $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", "0.1") }'
+ -| 0.1000000000000000000000000
+ $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 1/10) }'
+ -| 0.1000000000000000000000000
+
+ In the first case, the number is stored with the default precision
+of 53.
+
+
+File: gawk.info, Node: Changing Precision, Next: Exact Arithmetic, Prev: Floating-point Constants, Up: Arbitrary Precision Arithmetic
+
+11.9 Changing the Precision of a Number
+=======================================
+
+ The point is that in any variable-precision package, a decision is
+ made on how to treat numbers given as data, or arising in
+ intermediate results, which are represented in floating-point
+ format to a precision lower than working precision. Do we promote
+ them to full membership of the high-precision club, or do we treat
+ them and all their associates as second-class citizens? Sometimes
+ the first course is proper, sometimes the second, and it takes
+ careful analysis to tell which.
+
+ Dirk Laurie(1)
+
+ `gawk' does not implicitly modify the precision of any previously
+computed results when the working precision is changed with an
+assignment to `PREC'. The precision of a number is always the one that
+was used at the time of its creation, and there is no way for the user
+to explicitly change it afterwards. However, since the result of a
+floating-point arithmetic operation is always an arbitrary precision
+floating-point value--with a precision set by the value of `PREC'--one
+of the following workarounds effectively accomplishes the desired
+behavior:
+
+ x = x + 0.0
+
+or:
+
+ x += 0.0
+
+ ---------- Footnotes ----------
+
+ (1) Dirk Laurie. `Variable-precision Arithmetic Considered Perilous
+- A Detective Story'. Electronic Transactions on Numerical Analysis.
+Volume 28, pp. 168-173, 2008.
+
+
+File: gawk.info, Node: Exact Arithmetic, Next: Integer Programming, Prev: Changing Precision, Up: Arbitrary Precision Arithmetic
+
+11.10 Exact Arithmetic with Floating-point Numbers
+==================================================
+
+ CAUTION: Never depend on the exactness of floating-point
+ arithmetic, even for apparently simple expressions!
+
+ Can arbitrary precision arithmetic give exact results? There are no
+easy answers. The standard rules of algebra often do not apply when
+using floating-point arithmetic. Among other things, the distributive
+and associative laws do not hold completely, and order of operation may
+be important for your computation. Rounding error, cumulative precision
+loss and underflow are often troublesome.
+
+ When `gawk' tests the expressions `0.1 + 12.2' and `12.3' for
+equality using the machine double precision arithmetic, it decides that
+they are not equal! (*Note Floating-point Programming::.) You can get
+the result you want by increasing the precision; 56 in this case will
+get the job done:
+
+ $ gawk -M -vPREC=56 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 1
+
+ If adding more bits is good, perhaps adding even more bits of
+precision is better? Here is what happens if we use an even larger
+value of `PREC':
+
+ $ gawk -M -vPREC=201 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 0
+
+ This is not a bug in `gawk' or in the MPFR library. It is easy to
+forget that the finite number of bits used to store the value is often
+just an approximation after proper rounding. The test for equality
+succeeds if and only if _all_ bits in the two operands are exactly the
+same. Since this is not necessarily true after floating-point
+computations with a particular precision and effective rounding rule, a
+straight test for equality may not work.
+
+ So, don't assume that floating-point values can be compared for
+equality. You should also exercise caution when using other forms of
+comparisons. The standard way to compare between floating-point
+numbers is to determine how much error (or "tolerance") you will allow
+in a comparison and check to see if one value is within this error
+range of the other.
+
+ In applications where 15 or fewer decimal places suffice, hardware
+double precision arithmetic can be adequate, and is usually much faster.
+But you do need to keep in mind that every floating-point operation can
+suffer a new rounding error with catastrophic consequences as
+illustrated by our attempt to compute the value of the constant pi,
+(*note Floating-point Programming::). Extra precision can greatly
+enhance the stability and the accuracy of your computation in such
+cases.
+
+ Repeated addition is not necessarily equivalent to multiplication in
+floating-point arithmetic. In the last example (*note Floating-point
+Programming::), you may or may not succeed in getting the correct
+result by choosing an arbitrarily large value for `PREC'. Reformulation
+of the problem at hand is often the correct approach in such situations.
+
+
+File: gawk.info, Node: Integer Programming, Next: Arbitrary Precision Integers, Prev: Exact Arithmetic, Up: Arbitrary Precision Arithmetic
+
+11.11 Effective Integer Programming
+===================================
+
+As has been mentioned already, `gawk' ordinarily uses hardware double
+precision with 64-bit IEEE binary floating-point representation for
+numbers on most systems. A large integer like 9007199254740997 has a
+binary representation that, although finite, is more than 53 bits long;
+it must also be rounded to 53 bits. The biggest integer that can be
+stored in a C `double' is usually the same as the largest possible
+value of a `double'. If your system `double' is an IEEE 64-bit
+`double', this largest possible value is an integer and can be
+represented precisely. What more should one know about integers?
+
+ If you want to know what is the largest integer, such that it and
+all smaller integers can be stored in 64-bit doubles without losing
+precision, then the answer is 2^53. The next representable number is
+the even number 2^53 + 2, meaning it is unlikely that you will be able
+to make `gawk' print 2^53 + 1 in integer format. The range of integers
+exactly representable by a 64-bit double is [-2^53, 2^53]. If you ever
+see an integer outside this range in `gawk' using 64-bit doubles, you
+have reason to be very suspicious about the accuracy of the output.
+Here is a simple program with erroneous output:
+
+ $ gawk 'BEGIN { i = 2^53 - 1; for (j = 0; j < 4; j++) print i + j }'
+ -| 9007199254740991
+ -| 9007199254740992
+ -| 9007199254740992
+ -| 9007199254740994
+
+ The lesson is to not assume that any large integer printed by `gawk'
+represents an exact result from your computation, especially if it wraps
+around on your screen.
+
+
+File: gawk.info, Node: Arbitrary Precision Integers, Next: MPFR and GMP Libraries, Prev: Integer Programming, Up: Arbitrary Precision Arithmetic
+
+11.12 Arbitrary Precision Integer Arithmetic with `gawk'
+========================================================
+
+If the option `--bignum' or `-M' is specified, `gawk' performs all
+integer arithmetic using GMP arbitrary precision integers. Any number
+that looks like an integer in a program source or data file is stored
+as an arbitrary precision integer. The size of the integer is limited
+only by your computer's memory. The current floating-point context has
+no effect on operations involving integers. For example, the following
+computes 5^4^3^2, the result of which is beyond the limits of ordinary
+`gawk' numbers:
+
+ $ gawk -M 'BEGIN {
+ > x = 5^4^3^2
+ > print "# of digits =", length(x)
+ > print substr(x, 1, 20), "...", substr(x, length(x) - 19, 20)
+ > }'
+ -| # of digits = 183231
+ -| 62060698786608744707 ... 92256259918212890625
+
+ If you were to compute the same value using arbitrary precision
+floating-point values instead, the precision needed for correct output
+(using the formula `prec = 3.322 * dps'), would be 3.322 x 183231, or
+608693.
+
+ The result from an arithmetic operation with an integer and a
+floating-point value is a floating-point value with a precision equal
+to the working precision. The following program calculates the eighth
+term in Sylvester's sequence(1) using a recurrence:
+
+ $ gawk -M 'BEGIN {
+ > s = 2.0
+ > for (i = 1; i <= 7; i++)
+ > s = s * (s - 1) + 1
+ > print s
+ > }'
+ -| 113423713055421845118910464
+
+ The output differs from the acutal number,
+113423713055421844361000443, because the default precision of 53 is not
+enough to represent the floating-point results exactly. You can either
+increase the precision (100 is enough in this case), or replace the
+floating-point constant `2.0' with an integer, to perform all
+computations using integer arithmetic to get the correct output.
+
+ It will sometimes be necessary for `gawk' to implicitly convert an
+arbitrary precision integer into an arbitrary precision floating-point
+value. This is primarily because the MPFR library does not always
+provide the relevant interface to process arbitrary precision integers
+or mixed-mode numbers as needed by an operation or function. In such a
+case, the precision is set to the minimum value necessary for exact
+conversion, and the working precision is not used for this purpose. If
+this is not what you need or want, you can employ a subterfuge like
+this:
+
+ gawk -M 'BEGIN { n = 13; print (n + 0.0) % 2.0 }'
+
+ You can avoid this issue altogether by specifying the number as a
+float to begin with:
+
+ gawk -M 'BEGIN { n = 13.0; print n % 2.0 }'
+
+ Note that for the particular example above, there is unlikely to be a
+reason for simply not using the following:
+
+ gawk -M 'BEGIN { n = 13; print n % 2 }'
+
+ ---------- Footnotes ----------
+
+ (1) Weisstein, Eric W. `Sylvester's Sequence'. From MathWorld-A
+Wolfram Web Resource.
+`http://mathworld.wolfram.com/SylvestersSequence.html'
+
+
+File: gawk.info, Node: MPFR and GMP Libraries, Prev: Arbitrary Precision Integers, Up: Arbitrary Precision Arithmetic
+
+11.13 Information About the MPFR and GMP Libraries
+==================================================
+
+There are a few elements available in the `PROCINFO' array to provide
+information about the MPFR and GMP libraries. *Note Auto-set::, for
+more information.
+
+
+File: gawk.info, Node: Advanced Features, Next: Library Functions, Prev: Arbitrary Precision Arithmetic, Up: Top
+
+12 Advanced Features of `gawk'
******************************
Write documentation as if whoever reads it is a violent psychopath
@@ -13531,7 +14426,7 @@ and likely to change, its description is relegated to an appendix.

File: gawk.info, Node: Nondecimal Data, Next: Array Sorting, Up: Advanced Features
-11.1 Allowing Nondecimal Input Data
+12.1 Allowing Nondecimal Input Data
===================================
If you run `gawk' with the `--non-decimal-data' option, you can have
@@ -13573,7 +14468,7 @@ request it.

File: gawk.info, Node: Array Sorting, Next: Two-way I/O, Prev: Nondecimal Data, Up: Advanced Features
-11.2 Controlling Array Traversal and Array Sorting
+12.2 Controlling Array Traversal and Array Sorting
==================================================
`gawk' lets you control the order in which a `for (i in array)' loop
@@ -13592,7 +14487,7 @@ to order the elements during sorting.

File: gawk.info, Node: Controlling Array Traversal, Next: Array Sorting Functions, Up: Array Sorting
-11.2.1 Controlling Array Traversal
+12.2.1 Controlling Array Traversal
----------------------------------
By default, the order in which a `for (i in array)' loop scans an array
@@ -13823,7 +14718,7 @@ the default.

File: gawk.info, Node: Array Sorting Functions, Prev: Controlling Array Traversal, Up: Array Sorting
-11.2.2 Sorting Array Values and Indices with `gawk'
+12.2.2 Sorting Array Values and Indices with `gawk'
---------------------------------------------------
In most `awk' implementations, sorting an array requires writing a
@@ -13918,7 +14813,7 @@ extensions, they are not available in that case.

File: gawk.info, Node: Two-way I/O, Next: TCP/IP Networking, Prev: Array Sorting, Up: Advanced Features
-11.3 Two-Way Communications with Another Process
+12.3 Two-Way Communications with Another Process
================================================
From: brennan@whidbey.com (Mike Brennan)
@@ -14053,7 +14948,7 @@ regular pipes.

File: gawk.info, Node: TCP/IP Networking, Next: Profiling, Prev: Two-way I/O, Up: Advanced Features
-11.4 Using `gawk' for Network Programming
+12.4 Using `gawk' for Network Programming
=========================================
`EMISTERED':
@@ -14130,7 +15025,7 @@ examples.

File: gawk.info, Node: Profiling, Prev: TCP/IP Networking, Up: Advanced Features
-11.5 Profiling Your `awk' Programs
+12.5 Profiling Your `awk' Programs
==================================
You may produce execution traces of your `awk' programs. This is done
@@ -14348,7 +15243,7 @@ without any execution counts.

File: gawk.info, Node: Library Functions, Next: Sample Programs, Prev: Advanced Features, Up: Top
-12 A Library of `awk' Functions
+13 A Library of `awk' Functions
*******************************
*note User-defined::, describes how to write your own `awk' functions.
@@ -14420,7 +15315,7 @@ contents of the input record.

File: gawk.info, Node: Library Names, Next: General Functions, Up: Library Functions
-12.1 Naming Library Function Global Variables
+13.1 Naming Library Function Global Variables
=============================================
Due to the way the `awk' language evolved, variables are either
@@ -14500,7 +15395,7 @@ verifying this.

File: gawk.info, Node: General Functions, Next: Data File Management, Prev: Library Names, Up: Library Functions
-12.2 General Programming
+13.2 General Programming
========================
This minor node presents a number of functions that are of general
@@ -14523,7 +15418,7 @@ programming use.

File: gawk.info, Node: Strtonum Function, Next: Assert Function, Up: General Functions
-12.2.1 Converting Strings To Numbers
+13.2.1 Converting Strings To Numbers
------------------------------------
The `strtonum()' function (*note String Functions::) is a `gawk'
@@ -14607,7 +15502,7 @@ be tested with `gawk' and the results compared to the built-in

File: gawk.info, Node: Assert Function, Next: Round Function, Prev: Strtonum Function, Up: General Functions
-12.2.2 Assertions
+13.2.2 Assertions
-----------------
When writing large programs, it is often useful to know that a
@@ -14693,7 +15588,7 @@ rule always ends with an `exit' statement.

File: gawk.info, Node: Round Function, Next: Cliff Random Function, Prev: Assert Function, Up: General Functions
-12.2.3 Rounding Numbers
+13.2.3 Rounding Numbers
-----------------------
The way `printf' and `sprintf()' (*note Printf::) perform rounding
@@ -14739,7 +15634,7 @@ might be useful if your `awk''s `printf' does unbiased rounding:

File: gawk.info, Node: Cliff Random Function, Next: Ordinal Functions, Prev: Round Function, Up: General Functions
-12.2.4 The Cliff Random Number Generator
+13.2.4 The Cliff Random Number Generator
----------------------------------------
The Cliff random number generator
@@ -14768,7 +15663,7 @@ might try using this function instead.

File: gawk.info, Node: Ordinal Functions, Next: Join Function, Prev: Cliff Random Function, Up: General Functions
-12.2.5 Translating Between Characters and Numbers
+13.2.5 Translating Between Characters and Numbers
-------------------------------------------------
One commercial implementation of `awk' supplies a built-in function,
@@ -14866,7 +15761,7 @@ extensions, you can simplify `_ord_init' to loop from 0 to 255.

File: gawk.info, Node: Join Function, Next: Gettimeofday Function, Prev: Ordinal Functions, Up: General Functions
-12.2.6 Merging an Array into a String
+13.2.6 Merging an Array into a String
-------------------------------------
When doing string processing, it is often useful to be able to join all
@@ -14913,7 +15808,7 @@ makes string operations more difficult than they really need to be.

File: gawk.info, Node: Gettimeofday Function, Prev: Join Function, Up: General Functions
-12.2.7 Managing the Time of Day
+13.2.7 Managing the Time of Day
-------------------------------
The `systime()' and `strftime()' functions described in *note Time
@@ -14995,7 +15890,7 @@ optional timestamp value to use instead of the current time.

File: gawk.info, Node: Data File Management, Next: Getopt Function, Prev: General Functions, Up: Library Functions
-12.3 Data File Management
+13.3 Data File Management
=========================
This minor node presents functions that are useful for managing
@@ -15012,7 +15907,7 @@ command-line data files.

File: gawk.info, Node: Filetrans Function, Next: Rewind Function, Up: Data File Management
-12.3.1 Noting Data File Boundaries
+13.3.1 Noting Data File Boundaries
----------------------------------
The `BEGIN' and `END' rules are each executed exactly once at the
@@ -15110,7 +16005,7 @@ it provides an easy way to do per-file cleanup processing.

File: gawk.info, Node: Rewind Function, Next: File Checking, Prev: Filetrans Function, Up: Data File Management
-12.3.2 Rereading the Current File
+13.3.2 Rereading the Current File
---------------------------------
Another request for a new built-in function was for a `rewind()'
@@ -15152,7 +16047,7 @@ Nextfile Statement::).

File: gawk.info, Node: File Checking, Next: Empty Files, Prev: Rewind Function, Up: Data File Management
-12.3.3 Checking for Readable Data Files
+13.3.3 Checking for Readable Data Files
---------------------------------------
Normally, if you give `awk' a data file that isn't readable, it stops
@@ -15181,7 +16076,7 @@ in the list). See also *note ARGC and ARGV::.

File: gawk.info, Node: Empty Files, Next: Ignoring Assigns, Prev: File Checking, Up: Data File Management
-12.3.4 Checking For Zero-length Files
+13.3.4 Checking For Zero-length Files
-------------------------------------
All known `awk' implementations silently skip over zero-length files.
@@ -15238,7 +16133,7 @@ intervening value in `ARGV' is a variable assignment.

File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Management
-12.3.5 Treating Assignments as File Names
+13.3.5 Treating Assignments as File Names
-----------------------------------------
Occasionally, you might not want `awk' to process command-line variable
@@ -15281,7 +16176,7 @@ arguments are left alone.

File: gawk.info, Node: Getopt Function, Next: Passwd Functions, Prev: Data File Management, Up: Library Functions
-12.4 Processing Command-Line Options
+13.4 Processing Command-Line Options
====================================
Most utilities on POSIX compatible systems take options on the command
@@ -15574,7 +16469,7 @@ have left it alone, since using `substr()' is more portable.

File: gawk.info, Node: Passwd Functions, Next: Group Functions, Prev: Getopt Function, Up: Library Functions
-12.5 Reading the User Database
+13.5 Reading the User Database
==============================
The `PROCINFO' array (*note Built-in Variables::) provides access to
@@ -15817,7 +16712,7 @@ network database.

File: gawk.info, Node: Group Functions, Next: Walking Arrays, Prev: Passwd Functions, Up: Library Functions
-12.6 Reading the Group Database
+13.6 Reading the Group Database
===============================
Much of the discussion presented in *note Passwd Functions::, applies
@@ -16051,7 +16946,7 @@ very simple, relying on `awk''s associative arrays to do work.

File: gawk.info, Node: Walking Arrays, Prev: Group Functions, Up: Library Functions
-12.7 Traversing Arrays of Arrays
+13.7 Traversing Arrays of Arrays
================================
*note Arrays of Arrays::, described how `gawk' provides arrays of
@@ -16102,7 +16997,7 @@ value. Here is a main program to demonstrate:

File: gawk.info, Node: Sample Programs, Next: Debugger, Prev: Library Functions, Up: Top
-13 Practical `awk' Programs
+14 Practical `awk' Programs
***************************
*note Library Functions::, presents the idea that reading programs in a
@@ -16122,7 +17017,7 @@ Library Functions::.

File: gawk.info, Node: Running Examples, Next: Clones, Up: Sample Programs
-13.1 Running the Example Programs
+14.1 Running the Example Programs
=================================
To run a given program, you would typically do something like this:
@@ -16145,7 +17040,7 @@ OPTIONS are any command-line options for the program that start with a

File: gawk.info, Node: Clones, Next: Miscellaneous Programs, Prev: Running Examples, Up: Sample Programs
-13.2 Reinventing Wheels for Fun and Profit
+14.2 Reinventing Wheels for Fun and Profit
==========================================
This minor node presents a number of POSIX utilities implemented in
@@ -16175,7 +17070,7 @@ programming for "real world" tasks.

File: gawk.info, Node: Cut Program, Next: Egrep Program, Up: Clones
-13.2.1 Cutting out Fields and Columns
+14.2.1 Cutting out Fields and Columns
-------------------------------------
The `cut' utility selects, or "cuts," characters or fields from its
@@ -16434,7 +17329,7 @@ solution to the problem of picking the input line apart by characters.

File: gawk.info, Node: Egrep Program, Next: Id Program, Prev: Cut Program, Up: Clones
-13.2.2 Searching for Regular Expressions in Files
+14.2.2 Searching for Regular Expressions in Files
-------------------------------------------------
The `egrep' utility searches files for patterns. It uses regular
@@ -16666,7 +17561,7 @@ the translated line, not the original.

File: gawk.info, Node: Id Program, Next: Split Program, Prev: Egrep Program, Up: Clones
-13.2.3 Printing out User Information
+14.2.3 Printing out User Information
------------------------------------
The `id' utility lists a user's real and effective user ID numbers,
@@ -16773,7 +17668,7 @@ body never executes.

File: gawk.info, Node: Split Program, Next: Tee Program, Prev: Id Program, Up: Clones
-13.2.4 Splitting a Large File into Pieces
+14.2.4 Splitting a Large File into Pieces
-----------------------------------------
The `split' program splits large text files into smaller pieces. Usage
@@ -16881,7 +17776,7 @@ not relevant for what the program aims to demonstrate.

File: gawk.info, Node: Tee Program, Next: Uniq Program, Prev: Split Program, Up: Clones
-13.2.5 Duplicating Output into Multiple Files
+14.2.5 Duplicating Output into Multiple Files
---------------------------------------------
The `tee' program is known as a "pipe fitting." `tee' copies its
@@ -16969,7 +17864,7 @@ N input records and M output files, the first method only executes N

File: gawk.info, Node: Uniq Program, Next: Wc Program, Prev: Tee Program, Up: Clones
-13.2.6 Printing Nonduplicated Lines of Text
+14.2.6 Printing Nonduplicated Lines of Text
-------------------------------------------
The `uniq' utility reads sorted lines of data on its standard input,
@@ -17188,7 +18083,7 @@ line of input data:

File: gawk.info, Node: Wc Program, Prev: Uniq Program, Up: Clones
-13.2.7 Counting Things
+14.2.7 Counting Things
----------------------
The `wc' (word count) utility counts lines, words, and characters in
@@ -17333,7 +18228,7 @@ characters, not bytes.

File: gawk.info, Node: Miscellaneous Programs, Prev: Clones, Up: Sample Programs
-13.3 A Grab Bag of `awk' Programs
+14.3 A Grab Bag of `awk' Programs
=================================
This minor node is a large "grab bag" of miscellaneous programs. We
@@ -17360,7 +18255,7 @@ hope you find them both interesting and enjoyable.

File: gawk.info, Node: Dupword Program, Next: Alarm Program, Up: Miscellaneous Programs
-13.3.1 Finding Duplicated Words in a Document
+14.3.1 Finding Duplicated Words in a Document
---------------------------------------------
A common error when writing large amounts of prose is to accidentally
@@ -17408,7 +18303,7 @@ word, comparing it to the previous one:

File: gawk.info, Node: Alarm Program, Next: Translate Program, Prev: Dupword Program, Up: Miscellaneous Programs
-13.3.2 An Alarm Clock Program
+14.3.2 An Alarm Clock Program
-----------------------------
Nothing cures insomnia like a ringing alarm clock.
@@ -17541,7 +18436,7 @@ necessary:

File: gawk.info, Node: Translate Program, Next: Labels Program, Prev: Alarm Program, Up: Miscellaneous Programs
-13.3.3 Transliterating Characters
+14.3.3 Transliterating Characters
---------------------------------
The system `tr' utility transliterates characters. For example, it is
@@ -17667,7 +18562,7 @@ split each character in a string into separate array elements.

File: gawk.info, Node: Labels Program, Next: Word Sorting, Prev: Translate Program, Up: Miscellaneous Programs
-13.3.4 Printing Mailing Labels
+14.3.4 Printing Mailing Labels
------------------------------
Here is a "real world"(1) program. This script reads lists of names and
@@ -17774,7 +18669,7 @@ something done."

File: gawk.info, Node: Word Sorting, Next: History Sorting, Prev: Labels Program, Up: Miscellaneous Programs
-13.3.5 Generating Word-Usage Counts
+14.3.5 Generating Word-Usage Counts
-----------------------------------
When working with large amounts of text, it can be interesting to know
@@ -17878,7 +18773,7 @@ operating system documentation for more information on how to use the

File: gawk.info, Node: History Sorting, Next: Extract Program, Prev: Word Sorting, Up: Miscellaneous Programs
-13.3.6 Removing Duplicates from Unsorted Text
+14.3.6 Removing Duplicates from Unsorted Text
---------------------------------------------
The `uniq' program (*note Uniq Program::), removes duplicate lines from
@@ -17925,7 +18820,7 @@ seen.

File: gawk.info, Node: Extract Program, Next: Simple Sed, Prev: History Sorting, Up: Miscellaneous Programs
-13.3.7 Extracting Programs from Texinfo Source Files
+14.3.7 Extracting Programs from Texinfo Source Files
----------------------------------------------------
The nodes *note Library Functions::, and *note Sample Programs::, are
@@ -18125,7 +19020,7 @@ function. Consider how you might use it to simplify the code.

File: gawk.info, Node: Simple Sed, Next: Igawk Program, Prev: Extract Program, Up: Miscellaneous Programs
-13.3.8 A Simple Stream Editor
+14.3.8 A Simple Stream Editor
-----------------------------
The `sed' utility is a stream editor, a program that reads a stream of
@@ -18206,7 +19101,7 @@ the single rule handles the printing scheme outlined above, using

File: gawk.info, Node: Igawk Program, Next: Anagram Program, Prev: Simple Sed, Up: Miscellaneous Programs
-13.3.9 An Easy Way to Use Library Functions
+14.3.9 An Easy Way to Use Library Functions
-------------------------------------------
In *note Include Files::, we saw how `gawk' provides a built-in
@@ -18603,7 +19498,7 @@ can loop forever if the file exists but is empty. Caveat emptor.

File: gawk.info, Node: Anagram Program, Next: Signature Program, Prev: Igawk Program, Up: Miscellaneous Programs
-13.3.10 Finding Anagrams From A Dictionary
+14.3.10 Finding Anagrams From A Dictionary
------------------------------------------
An interesting programming challenge is to search for "anagrams" in a
@@ -18693,7 +19588,7 @@ otherwise the anagrams would appear in arbitrary order:

File: gawk.info, Node: Signature Program, Prev: Anagram Program, Up: Miscellaneous Programs
-13.3.11 And Now For Something Completely Different
+14.3.11 And Now For Something Completely Different
--------------------------------------------------
The following program was written by Davide Brini and is published on
@@ -18720,7 +19615,7 @@ supplies the following copyright terms:

File: gawk.info, Node: Debugger, Next: Language History, Prev: Sample Programs, Up: Top
-14 Debugging `awk' Programs
+15 Debugging `awk' Programs
***************************
It would be nice if computer programs worked perfectly the first time
@@ -18744,7 +19639,7 @@ program is easy.

File: gawk.info, Node: Debugging, Next: Sample Debugging Session, Up: Debugger
-14.1 Introduction to `gawk' Debugger
+15.1 Introduction to `gawk' Debugger
====================================
This minor node introduces debugging in general and begins the
@@ -18759,7 +19654,7 @@ discussion of debugging in `gawk'.

File: gawk.info, Node: Debugging Concepts, Next: Debugging Terms, Up: Debugging
-14.1.1 Debugging in General
+15.1.1 Debugging in General
---------------------------
(If you have used debuggers in other languages, you may want to skip
@@ -18799,7 +19694,7 @@ functional program that you or someone else wrote).

File: gawk.info, Node: Debugging Terms, Next: Awk Debugging, Prev: Debugging Concepts, Up: Debugging
-14.1.2 Additional Debugging Concepts
+15.1.2 Additional Debugging Concepts
------------------------------------
Before diving in to the details, we need to introduce several important
@@ -18851,7 +19746,7 @@ defines terms used throughout the rest of this major node.

File: gawk.info, Node: Awk Debugging, Prev: Debugging Terms, Up: Debugging
-14.1.3 Awk Debugging
+15.1.3 Awk Debugging
--------------------
Debugging an `awk' program has some specific aspects that are not
@@ -18873,7 +19768,7 @@ commands.

File: gawk.info, Node: Sample Debugging Session, Next: List of Debugger Commands, Prev: Debugging, Up: Debugger
-14.2 Sample Debugging Session
+15.2 Sample Debugging Session
=============================
In order to illustrate the use of `gawk' as a debugger, let's look at a
@@ -18889,7 +19784,7 @@ example.

File: gawk.info, Node: Debugger Invocation, Next: Finding The Bug, Up: Sample Debugging Session
-14.2.1 How to Start the Debugger
+15.2.1 How to Start the Debugger
--------------------------------
Starting the debugger is almost exactly like running `awk', except you
@@ -18921,7 +19816,7 @@ code has been executed.

File: gawk.info, Node: Finding The Bug, Prev: Debugger Invocation, Up: Sample Debugging Session
-14.2.2 Finding the Bug
+15.2.2 Finding the Bug
----------------------
Let's say that we are having a problem using (a faulty version of)
@@ -19118,7 +20013,7 @@ and problem solved!

File: gawk.info, Node: List of Debugger Commands, Next: Readline Support, Prev: Sample Debugging Session, Up: Debugger
-14.3 Main Debugger Commands
+15.3 Main Debugger Commands
===========================
The `gawk' debugger command set can be divided into the following
@@ -19157,7 +20052,7 @@ when just hitting <Enter>. This works for the commands `list', `next',

File: gawk.info, Node: Breakpoint Control, Next: Debugger Execution Control, Up: List of Debugger Commands
-14.3.1 Control of Breakpoints
+15.3.1 Control of Breakpoints
-----------------------------
As we saw above, the first thing you probably want to do in a debugging
@@ -19252,7 +20147,7 @@ controlling breakpoints are:

File: gawk.info, Node: Debugger Execution Control, Next: Viewing And Changing Data, Prev: Breakpoint Control, Up: List of Debugger Commands
-14.3.2 Control of Execution
+15.3.2 Control of Execution
---------------------------
Now that your breakpoints are ready, you can start running the program
@@ -19342,7 +20237,7 @@ execution of the program than we saw in our earlier example:

File: gawk.info, Node: Viewing And Changing Data, Next: Execution Stack, Prev: Debugger Execution Control, Up: List of Debugger Commands
-14.3.3 Viewing and Changing Data
+15.3.3 Viewing and Changing Data
--------------------------------
The commands for viewing and changing variables inside of `gawk' are:
@@ -19431,7 +20326,7 @@ AWK STATEMENTS

File: gawk.info, Node: Execution Stack, Next: Debugger Info, Prev: Viewing And Changing Data, Up: List of Debugger Commands
-14.3.4 Dealing with the Stack
+15.3.4 Dealing with the Stack
-----------------------------
Whenever you run a program which contains any function calls, `gawk'
@@ -19468,7 +20363,7 @@ are:

File: gawk.info, Node: Debugger Info, Next: Miscellaneous Debugger Commands, Prev: Execution Stack, Up: List of Debugger Commands
-14.3.5 Obtaining Information about the Program and the Debugger State
+15.3.5 Obtaining Information about the Program and the Debugger State
---------------------------------------------------------------------
Besides looking at the values of variables, there is often a need to get
@@ -19577,7 +20472,7 @@ from a file. The commands are:

File: gawk.info, Node: Miscellaneous Debugger Commands, Prev: Debugger Info, Up: List of Debugger Commands
-14.3.6 Miscellaneous Commands
+15.3.6 Miscellaneous Commands
-----------------------------
There are a few more commands which do not fit into the previous
@@ -19697,7 +20592,7 @@ categories, as follows:

File: gawk.info, Node: Readline Support, Next: Limitations, Prev: List of Debugger Commands, Up: Debugger
-14.4 Readline Support
+15.4 Readline Support
=====================
If `gawk' is compiled with the `readline' library, you can take
@@ -19724,7 +20619,7 @@ Variable name completion

File: gawk.info, Node: Limitations, Prev: Readline Support, Up: Debugger
-14.5 Limitations and Future Plans
+15.5 Limitations and Future Plans
=================================
We hope you find the `gawk' debugger useful and enjoyable to work with,
@@ -24779,76 +25674,78 @@ Index
* - (hyphen), filenames beginning with: Options. (line 59)
* - (hyphen), in bracket expressions: Bracket Expressions. (line 17)
* --assign option: Options. (line 32)
-* --c option: Options. (line 78)
+* --bignum option: Options. (line 185)
+* --c option: Options. (line 81)
* --characters-as-bytes option: Options. (line 68)
-* --copyright option: Options. (line 85)
-* --debug option: Options. (line 105)
+* --copyright option: Options. (line 88)
+* --debug option: Options. (line 108)
* --disable-lint configuration option: Additional Configuration Options.
(line 9)
* --disable-nls configuration option: Additional Configuration Options.
(line 24)
* --dump-variables option <1>: Library Names. (line 45)
-* --dump-variables option: Options. (line 90)
-* --exec option: Options. (line 122)
+* --dump-variables option: Options. (line 93)
+* --exec option: Options. (line 125)
* --field-separator option: Options. (line 21)
* --file option: Options. (line 25)
* --gen-pot option <1>: String Extraction. (line 6)
-* --gen-pot option: Options. (line 144)
-* --help option: Options. (line 151)
-* --L option: Options. (line 263)
-* --lint option <1>: Options. (line 163)
+* --gen-pot option: Options. (line 147)
+* --help option: Options. (line 154)
+* --L option: Options. (line 272)
+* --lint option <1>: Options. (line 166)
* --lint option: Command Line. (line 20)
-* --lint-old option: Options. (line 263)
-* --load option: Options. (line 156)
+* --lint-old option: Options. (line 272)
+* --load option: Options. (line 159)
* --non-decimal-data option <1>: Nondecimal Data. (line 6)
-* --non-decimal-data option: Options. (line 182)
+* --non-decimal-data option: Options. (line 191)
* --non-decimal-data option, strtonum() function and: Nondecimal Data.
(line 36)
-* --optimize option: Options. (line 203)
-* --posix option: Options. (line 222)
-* --posix option, --traditional option and: Options. (line 241)
-* --pretty-print option: Options. (line 195)
+* --optimize option: Options. (line 212)
+* --posix option: Options. (line 231)
+* --posix option, --traditional option and: Options. (line 250)
+* --pretty-print option: Options. (line 204)
* --profile option <1>: Profiling. (line 12)
-* --profile option: Options. (line 210)
-* --re-interval option: Options. (line 247)
-* --sandbox option: Options. (line 254)
+* --profile option: Options. (line 219)
+* --re-interval option: Options. (line 256)
+* --sandbox option: Options. (line 263)
* --sandbox option, disabling system() function: I/O Functions.
(line 85)
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
-* --source option: Options. (line 114)
-* --traditional option: Options. (line 78)
-* --traditional option, --posix option and: Options. (line 241)
-* --use-lc-numeric option: Options. (line 190)
-* --version option: Options. (line 268)
+* --source option: Options. (line 117)
+* --traditional option: Options. (line 81)
+* --traditional option, --posix option and: Options. (line 250)
+* --use-lc-numeric option: Options. (line 199)
+* --version option: Options. (line 277)
* --with-whiny-user-strftime configuration option: Additional Configuration Options.
(line 29)
* -b option: Options. (line 68)
-* -C option: Options. (line 85)
-* -D option: Options. (line 105)
-* -d option: Options. (line 90)
-* -E option: Options. (line 122)
-* -e option: Options. (line 114)
+* -C option: Options. (line 88)
+* -D option: Options. (line 108)
+* -d option: Options. (line 93)
+* -E option: Options. (line 125)
+* -e option: Options. (line 117)
* -F option: Command Line Field Separator.
(line 6)
* -f option: Options. (line 25)
* -F option: Options. (line 21)
* -f option: Long. (line 12)
-* -F option, -Ft sets FS to TAB: Options. (line 276)
-* -f option, on command line: Options. (line 281)
-* -g option: Options. (line 144)
-* -h option: Options. (line 151)
-* -l option: Options. (line 156)
-* -N option: Options. (line 190)
-* -n option: Options. (line 182)
-* -O option: Options. (line 203)
-* -o option: Options. (line 195)
-* -P option: Options. (line 222)
-* -p option: Options. (line 210)
-* -r option: Options. (line 247)
-* -S option: Options. (line 254)
-* -V option: Options. (line 268)
+* -F option, -Ft sets FS to TAB: Options. (line 285)
+* -f option, on command line: Options. (line 290)
+* -g option: Options. (line 147)
+* -h option: Options. (line 154)
+* -l option: Options. (line 159)
+* -M option: Options. (line 185)
+* -N option: Options. (line 199)
+* -n option: Options. (line 191)
+* -O option: Options. (line 212)
+* -o option: Options. (line 204)
+* -P option: Options. (line 231)
+* -p option: Options. (line 219)
+* -r option: Options. (line 256)
+* -S option: Options. (line 263)
+* -V option: Options. (line 277)
* -v option: Options. (line 32)
* -v option, variables, assigning: Assignment Options. (line 12)
* -W option: Options. (line 46)
@@ -24988,7 +25885,7 @@ Index
(line 67)
* advanced features, data files as single record: Records. (line 175)
* advanced features, fixed-width data: Constant Size. (line 9)
-* advanced features, FNR/NR variables: Auto-set. (line 207)
+* advanced features, FNR/NR variables: Auto-set. (line 224)
* advanced features, gawk: Advanced Features. (line 6)
* advanced features, gawk, network programming: TCP/IP Networking.
(line 6)
@@ -25023,6 +25920,8 @@ Index
* and Boolean-logic operator: Boolean Ops. (line 6)
* and() function (gawk): Bitwise Functions. (line 39)
* ANSI: Glossary. (line 35)
+* arbitrary precision: Arbitrary Precision Arithmetic.
+ (line 6)
* archeologists: Bugs. (line 6)
* ARGC/ARGV variables <1>: ARGC and ARGV. (line 6)
* ARGC/ARGV variables: Auto-set. (line 11)
@@ -25104,10 +26003,10 @@ Index
* asterisk (*), *= operator: Assignment Ops. (line 129)
* atan2() function: Numeric Functions. (line 11)
* awf (amazingly workable formatter) program: Glossary. (line 25)
-* awk debugging, enabling: Options. (line 105)
-* awk enabling: Options. (line 195)
+* awk debugging, enabling: Options. (line 108)
+* awk enabling: Options. (line 204)
* awk language, POSIX version: Assignment Ops. (line 136)
-* awk profiling, enabling: Options. (line 210)
+* awk profiling, enabling: Options. (line 219)
* awk programs <1>: Two Rules. (line 6)
* awk programs <2>: Executable Scripts. (line 6)
* awk programs: Getting Started. (line 12)
@@ -25164,7 +26063,7 @@ Index
* AWKPATH environment variable: AWKPATH Variable. (line 6)
* awkprof.out file: Profiling. (line 6)
* awksed.awk program: Simple Sed. (line 25)
-* awkvars.out file: Options. (line 90)
+* awkvars.out file: Options. (line 93)
* b debugger command (alias for break): Breakpoint Control. (line 11)
* backslash (\) <1>: Regexp Operators. (line 18)
* backslash (\) <2>: Quoting. (line 31)
@@ -25331,7 +26230,7 @@ Index
* case sensitivity, regexps and <1>: User-modified. (line 82)
* case sensitivity, regexps and: Case-sensitivity. (line 6)
* case sensitivity, string comparisons and: User-modified. (line 82)
-* CGI, awk scripts for: Options. (line 122)
+* CGI, awk scripts for: Options. (line 125)
* character lists, See bracket expressions: Regexp Operators. (line 55)
* character sets (machine character encodings) <1>: Glossary. (line 141)
* character sets (machine character encodings): Ordinal Functions.
@@ -25417,7 +26316,7 @@ Index
(line 60)
* compatibility mode (gawk), octal numbers: Nondecimal-numbers.
(line 60)
-* compatibility mode (gawk), specifying: Options. (line 78)
+* compatibility mode (gawk), specifying: Options. (line 81)
* compiled programs <1>: Glossary. (line 161)
* compiled programs: Basic High Level. (line 14)
* compiling gawk for Cygwin: Cygwin. (line 6)
@@ -25438,8 +26337,12 @@ Index
(line 29)
* configuration options, gawk: Additional Configuration Options.
(line 6)
+* constants, floating-point: Floating-point Constants.
+ (line 6)
* constants, nondecimal: Nondecimal Data. (line 6)
* constants, types of: Constants. (line 6)
+* context, floating-point: Floating-point Context.
+ (line 6)
* continue statement: Continue Statement. (line 6)
* control statements: Statements. (line 6)
* converting, case: String Functions. (line 522)
@@ -25459,10 +26362,10 @@ Index
* coprocesses, closing: Close Files And Pipes.
(line 6)
* coprocesses, getline from: Getline/Coprocess. (line 6)
-* cos() function: Numeric Functions. (line 14)
+* cos() function: Numeric Functions. (line 15)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 323)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 332)
* csh utility, |& operator, comparison with: Two-way I/O. (line 44)
* ctime() user-defined function: Function Example. (line 72)
* currency symbols, localization: Explaining gettext. (line 103)
@@ -25494,7 +26397,7 @@ Index
(line 47)
* dark corner, FILENAME variable <1>: Auto-set. (line 92)
* dark corner, FILENAME variable: Getline Notes. (line 19)
-* dark corner, FNR/NR variables: Auto-set. (line 207)
+* dark corner, FNR/NR variables: Auto-set. (line 224)
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, FS as null string: Single Character Fields.
(line 20)
@@ -25631,7 +26534,7 @@ Index
(line 67)
* debugging awk programs: Debugger. (line 6)
* debugging gawk, bug reports: Bugs. (line 9)
-* decimal point character, locale specific: Options. (line 238)
+* decimal point character, locale specific: Options. (line 247)
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott <1>: Bugs. (line 70)
@@ -25693,7 +26596,7 @@ Index
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 26)
* differences in awk and gawk, RS/RT variables: Records. (line 167)
-* differences in awk and gawk, RT variable: Auto-set. (line 196)
+* differences in awk and gawk, RT variable: Auto-set. (line 213)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
@@ -25703,7 +26606,7 @@ Index
* differences in awk and gawk, strtonum() function (gawk): String Functions.
(line 404)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
- (line 153)
+ (line 162)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
(line 66)
* directories, changing: Sample Library. (line 6)
@@ -25820,7 +26723,7 @@ Index
* exclamation point (!), !~ operator: Regexp Usage. (line 19)
* exit statement: Exit Statement. (line 6)
* exit status, of gawk: Exit Status. (line 6)
-* exp() function: Numeric Functions. (line 17)
+* exp() function: Numeric Functions. (line 18)
* expand utility: Very Simple. (line 69)
* expressions: Expressions. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
@@ -25926,7 +26829,7 @@ Index
* files, as single records: Records. (line 196)
* files, awk programs in: Long. (line 6)
* files, awkprof.out: Profiling. (line 6)
-* files, awkvars.out: Options. (line 90)
+* files, awkvars.out: Options. (line 93)
* files, closing: I/O Functions. (line 10)
* files, descriptors, See file descriptors: Special FD. (line 6)
* files, group: Group Functions. (line 6)
@@ -25954,7 +26857,7 @@ Index
* files, portable object template: Explaining gettext. (line 30)
* files, portable object, converting to message object files: I18N Example.
(line 62)
-* files, portable object, generating: Options. (line 144)
+* files, portable object, generating: Options. (line 147)
* files, processing, ARGIND variable and: Auto-set. (line 47)
* files, reading: Rewind Function. (line 6)
* files, reading, multiline records: Multiple Line. (line 6)
@@ -25969,12 +26872,14 @@ Index
* fixed-width data: Constant Size. (line 9)
* flag variables <1>: Tee Program. (line 20)
* flag variables: Boolean Ops. (line 67)
+* floating-point numbers, arbitrary precision: Arbitrary Precision Arithmetic.
+ (line 6)
* floating-point, numbers <1>: Unexpected Results. (line 6)
* floating-point, numbers: Basic Data Typing. (line 21)
* floating-point, numbers, AWKNUM internal type: Internals. (line 19)
* FNR variable <1>: Auto-set. (line 102)
* FNR variable: Records. (line 6)
-* FNR variable, changing: Auto-set. (line 207)
+* FNR variable, changing: Auto-set. (line 224)
* for statement: For Statement. (line 6)
* for statement, in arrays: Scanning an Array. (line 20)
* force_number() internal function: Internals. (line 27)
@@ -26010,7 +26915,7 @@ Index
* FS variable, --field-separator option and: Options. (line 21)
* FS variable, as null string: Single Character Fields.
(line 20)
-* FS variable, as TAB character: Options. (line 234)
+* FS variable, as TAB character: Options. (line 243)
* FS variable, changing value of: Field Separators. (line 34)
* FS variable, running awk programs and: Cut Program. (line 68)
* FS variable, setting from command line: Command Line Field Separator.
@@ -26067,7 +26972,7 @@ Index
(line 44)
* functions, user-defined, next/nextfile statements and: Next Statement.
(line 45)
-* G-d: Acknowledgments. (line 81)
+* G-d: Acknowledgments. (line 83)
* Garfinkle, Scott: Contributors. (line 35)
* gawk program, dynamic profiling: Profiling. (line 171)
* gawk, ARGIND variable in: Other Arguments. (line 12)
@@ -26096,7 +27001,7 @@ Index
(line 139)
* gawk, ERRNO variable in: Getline. (line 19)
* gawk, escape sequences: Escape Sequences. (line 125)
-* gawk, extensions, disabling: Options. (line 222)
+* gawk, extensions, disabling: Options. (line 231)
* gawk, features, adding: Adding Code. (line 6)
* gawk, features, advanced: Advanced Features. (line 6)
* gawk, fflush() function in: I/O Functions. (line 44)
@@ -26148,8 +27053,8 @@ Index
(line 26)
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 6)
-* gawk, regular expressions, precedence: Regexp Operators. (line 157)
-* gawk, RT variable in <1>: Auto-set. (line 196)
+* gawk, regular expressions, precedence: Regexp Operators. (line 161)
+* gawk, RT variable in <1>: Auto-set. (line 213)
* gawk, RT variable in <2>: Getline/Variable/File.
(line 10)
* gawk, RT variable in <3>: Multiple Line. (line 129)
@@ -26158,10 +27063,10 @@ Index
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 87)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, TEXTDOMAIN variable in: User-modified. (line 153)
+* gawk, TEXTDOMAIN variable in: User-modified. (line 162)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 36)
-* gawk, versions of, information about, printing: Options. (line 268)
+* gawk, versions of, information about, printing: Options. (line 277)
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 63)
@@ -26213,6 +27118,8 @@ Index
* gettext() function (C library): Explaining gettext. (line 62)
* gettimeofday() user-defined function: Gettimeofday Function.
(line 16)
+* GMP: Arbitrary Precision Arithmetic.
+ (line 6)
* GNITS mailing list: Acknowledgments. (line 52)
* GNU awk, See gawk: Preface. (line 49)
* GNU Free Documentation License: GNU Free Documentation License.
@@ -26221,7 +27128,7 @@ Index
* GNU Lesser General Public License: Glossary. (line 397)
* GNU long options <1>: Options. (line 6)
* GNU long options: Command Line. (line 13)
-* GNU long options, printing list of: Options. (line 151)
+* GNU long options, printing list of: Options. (line 154)
* GNU Project <1>: Glossary. (line 319)
* GNU Project: Manual History. (line 11)
* GNU/Linux <1>: Glossary. (line 611)
@@ -26229,7 +27136,7 @@ Index
* GNU/Linux: Manual History. (line 28)
* GPL (General Public License) <1>: Glossary. (line 310)
* GPL (General Public License): Manual History. (line 11)
-* GPL (General Public License), printing: Options. (line 85)
+* GPL (General Public License), printing: Options. (line 88)
* grcat program: Group Functions. (line 16)
* Grigera, Juan: Contributors. (line 58)
* group database, reading: Group Functions. (line 6)
@@ -26252,7 +27159,7 @@ Index
* help debugger command: Miscellaneous Debugger Commands.
(line 68)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
-* hexadecimal values, enabling interpretation of: Options. (line 182)
+* hexadecimal values, enabling interpretation of: Options. (line 191)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
* HUP signal: Profiling. (line 203)
@@ -26266,6 +27173,8 @@ Index
* i debugger command (alias for info): Debugger Info. (line 13)
* id utility: Id Program. (line 6)
* id.awk program: Id Program. (line 30)
+* IEEE-754 format: Floating-point Representation.
+ (line 6)
* if statement <1>: If Statement. (line 6)
* if statement: Regexp Usage. (line 19)
* if statement, actions, changing: Ranges. (line 25)
@@ -26298,6 +27207,8 @@ Index
* index() function: String Functions. (line 155)
* indexing arrays: Array Intro. (line 50)
* indirect function calls: Indirect Calls. (line 6)
+* infinite precision: Arbitrary Precision Arithmetic.
+ (line 6)
* info debugger command: Debugger Info. (line 13)
* initialization, automatic: More Complex. (line 38)
* input files: Reading Files. (line 6)
@@ -26324,7 +27235,9 @@ Index
* installation, VMS: VMS Installation. (line 6)
* installing gawk: Installation. (line 6)
* INT signal (MS-Windows): Profiling. (line 206)
-* int() function: Numeric Functions. (line 22)
+* int() function: Numeric Functions. (line 23)
+* integer, arbitrary precision: Arbitrary Precision Integers.
+ (line 6)
* integers: Basic Data Typing. (line 21)
* integers, unsigned: Basic Data Typing. (line 30)
* interacting with other programs: I/O Functions. (line 63)
@@ -26362,7 +27275,7 @@ Index
* internationalization: I18N Functions. (line 6)
* internationalization, localization <1>: Internationalization.
(line 13)
-* internationalization, localization: User-modified. (line 153)
+* internationalization, localization: User-modified. (line 162)
* internationalization, localization, character classes: Bracket Expressions.
(line 90)
* internationalization, localization, gawk and: Internationalization.
@@ -26402,16 +27315,19 @@ Index
* Kernighan, Brian <3>: Contributors. (line 12)
* Kernighan, Brian <4>: BTL. (line 6)
* Kernighan, Brian <5>: Concatenation. (line 6)
-* Kernighan, Brian <6>: Acknowledgments. (line 75)
+* Kernighan, Brian <6>: Acknowledgments. (line 77)
* Kernighan, Brian <7>: Conventions. (line 34)
* Kernighan, Brian: History. (line 17)
* kill command, dynamic profiling: Profiling. (line 180)
* Knights, jedi: Undocumented. (line 6)
+* Knuth, Donald: Arbitrary Precision Arithmetic.
+ (line 6)
* Kwok, Conrad: Contributors. (line 35)
* l debugger command (alias for list): Miscellaneous Debugger Commands.
(line 74)
* labels.awk program: Labels Program. (line 51)
* languages, data-driven: Basic High Level. (line 83)
+* Laurie, Dirk: Changing Precision. (line 6)
* LC_ALL locale category: Explaining gettext. (line 120)
* LC_COLLATE locale category: Explaining gettext. (line 93)
* LC_CTYPE locale category: Explaining gettext. (line 97)
@@ -26472,9 +27388,9 @@ Index
* lint checking, array subscripts: Uninitialized Subscripts.
(line 43)
* lint checking, empty programs: Command Line. (line 16)
-* lint checking, issuing warnings: Options. (line 163)
+* lint checking, issuing warnings: Options. (line 166)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 307)
+ (line 316)
* lint checking, undefined functions: Pass By Value/Reference.
(line 88)
* LINT variable: User-modified. (line 98)
@@ -26484,16 +27400,16 @@ Index
* list debugger command: Miscellaneous Debugger Commands.
(line 74)
* loading extension: Loading Extensions. (line 6)
-* loading, library: Options. (line 156)
+* loading, library: Options. (line 159)
* local variables: Variable Scope. (line 6)
* locale categories: Explaining gettext. (line 80)
-* locale decimal point character: Options. (line 238)
+* locale decimal point character: Options. (line 247)
* locale, definition of: Locales. (line 6)
* localization: I18N and L10N. (line 6)
* localization, See internationalization, localization: I18N and L10N.
(line 6)
* log files, timestamps in: Time Functions. (line 6)
-* log() function: Numeric Functions. (line 29)
+* log() function: Numeric Functions. (line 30)
* logical false/true: Truth Values. (line 6)
* logical operators, See Boolean expressions: Boolean Ops. (line 6)
* login information: Passwd Functions. (line 16)
@@ -26538,7 +27454,11 @@ Index
* mktime() function (gawk): Time Functions. (line 24)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 103)
+* MPFR: Arbitrary Precision Arithmetic.
+ (line 6)
* msgfmt utility: I18N Example. (line 62)
+* multiple precision: Arbitrary Precision Arithmetic.
+ (line 6)
* n debugger command (alias for next): Debugger Execution Control.
(line 43)
* names, arrays/variables <1>: Library Names. (line 6)
@@ -26555,7 +27475,7 @@ Index
* networks, programming: TCP/IP Networking. (line 6)
* networks, support for: Special Network. (line 6)
* newlines <1>: Boolean Ops. (line 67)
-* newlines <2>: Options. (line 228)
+* newlines <2>: Options. (line 237)
* newlines: Statements/Lines. (line 6)
* newlines, as field separators: Default Field Splitting.
(line 6)
@@ -26594,7 +27514,7 @@ Index
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable <1>: Auto-set. (line 118)
* NR variable: Records. (line 6)
-* NR variable, changing: Auto-set. (line 207)
+* NR variable, changing: Auto-set. (line 224)
* null strings <1>: Basic Data Typing. (line 50)
* null strings <2>: Truth Values. (line 6)
* null strings <3>: Regexp Field Splitting.
@@ -26625,7 +27545,7 @@ Index
* numbers, hexadecimal: Nondecimal-numbers. (line 6)
* numbers, NODE internal type: Internals. (line 23)
* numbers, octal: Nondecimal-numbers. (line 6)
-* numbers, random: Numeric Functions. (line 63)
+* numbers, random: Numeric Functions. (line 64)
* numbers, rounding: Round Function. (line 6)
* numeric, constants: Scalar Constants. (line 6)
* numeric, output format: OFMT. (line 6)
@@ -26635,7 +27555,7 @@ Index
* oawk utility: Names. (line 17)
* obsolete features: Obsolete. (line 6)
* octal numbers: Nondecimal-numbers. (line 6)
-* octal values, enabling interpretation of: Options. (line 182)
+* octal values, enabling interpretation of: Options. (line 191)
* OFMT variable <1>: User-modified. (line 115)
* OFMT variable <2>: Conversion. (line 55)
* OFMT variable: OFMT. (line 15)
@@ -26688,7 +27608,7 @@ Index
* options, deprecated: Obsolete. (line 6)
* options, long <1>: Options. (line 6)
* options, long: Command Line. (line 13)
-* options, printing list of: Options. (line 151)
+* options, printing list of: Options. (line 154)
* OR bitwise operation: Bitwise Functions. (line 6)
* or Boolean-logic operator: Boolean Ops. (line 6)
* or() function (gawk): Bitwise Functions. (line 48)
@@ -26780,13 +27700,13 @@ Index
* portability, NF variable, decrementing: Changing Fields. (line 115)
* portability, operators: Increment Ops. (line 61)
* portability, operators, not in POSIX awk: Precedence. (line 98)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 328)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 337)
* portability, substr() function: String Functions. (line 512)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 36)
* portable object files, converting to message object files: I18N Example.
(line 62)
-* portable object files, generating: Options. (line 144)
+* portable object files, generating: Options. (line 147)
* portable object template files: Explaining gettext. (line 30)
* porting gawk: New Ports. (line 6)
* positional specifiers, printf statement <1>: Printf Ordering.
@@ -26827,17 +27747,19 @@ Index
* POSIX awk, OFMT variable and: OFMT. (line 27)
* POSIX awk, period (.), using: Regexp Operators. (line 50)
* POSIX awk, printf format strings and: Format Modifiers. (line 159)
-* POSIX awk, regular expressions and: Regexp Operators. (line 157)
+* POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
* POSIX awk, | I/O operator and: Getline/Pipe. (line 52)
-* POSIX mode: Options. (line 222)
+* POSIX mode: Options. (line 231)
* POSIX, awk and: Preface. (line 23)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
* POSIX, programs, implementing in awk: Clones. (line 6)
-* POSIXLY_CORRECT environment variable: Options. (line 307)
+* POSIXLY_CORRECT environment variable: Options. (line 316)
+* PREC variable <1>: Setting Precision. (line 6)
+* PREC variable: User-modified. (line 134)
* precedence <1>: Precedence. (line 6)
* precedence: Increment Ops. (line 61)
-* precedence, regexp operators: Regexp Operators. (line 152)
+* precedence, regexp operators: Regexp Operators. (line 156)
* print debugger command: Viewing And Changing Data.
(line 36)
* print statement: Printing. (line 16)
@@ -26868,7 +27790,7 @@ Index
* printf statement, sprintf() function and: Round Function. (line 6)
* printf statement, syntax of: Basic Printf. (line 6)
* printing: Printing. (line 6)
-* printing, list of options: Options. (line 151)
+* printing, list of options: Options. (line 154)
* printing, mailing labels: Labels Program. (line 6)
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
@@ -26928,12 +27850,12 @@ Index
* r debugger command (alias for run): Debugger Execution Control.
(line 62)
* Rakitzis, Byron: History Sorting. (line 25)
-* rand() function: Numeric Functions. (line 33)
+* rand() function: Numeric Functions. (line 34)
* random numbers, Cliff: Cliff Random Function.
(line 6)
* random numbers, rand()/srand() functions: Numeric Functions.
- (line 33)
-* random numbers, seed of: Numeric Functions. (line 63)
+ (line 34)
+* random numbers, seed of: Numeric Functions. (line 64)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
* Rankin, Pat <1>: Bugs. (line 72)
@@ -26943,7 +27865,7 @@ Index
* readable data files, checking: File Checking. (line 6)
* readable.awk program: File Checking. (line 11)
* recipe for a programming language: History. (line 6)
-* record separators <1>: User-modified. (line 134)
+* record separators <1>: User-modified. (line 143)
* record separators: Records. (line 14)
* record separators, changing: Records. (line 81)
* record separators, regular expressions as: Records. (line 112)
@@ -26991,7 +27913,7 @@ Index
(line 59)
* regular expressions, gawk, command-line options: GNU Regexp Operators.
(line 70)
-* regular expressions, interval expressions and: Options. (line 247)
+* regular expressions, interval expressions and: Options. (line 256)
* regular expressions, leftmost longest match: Leftmost Longest.
(line 6)
* regular expressions, operators <1>: Regexp Operators. (line 6)
@@ -27003,7 +27925,7 @@ Index
* regular expressions, operators, gawk: GNU Regexp Operators.
(line 6)
* regular expressions, operators, precedence of: Regexp Operators.
- (line 152)
+ (line 156)
* regular expressions, searching for: Egrep Program. (line 6)
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
@@ -27025,7 +27947,7 @@ Index
* right angle bracket (>), >> operator (I/O): Redirection. (line 50)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 74)
-* RLENGTH variable: Auto-set. (line 183)
+* RLENGTH variable: Auto-set. (line 200)
* RLENGTH variable, match() function and: String Functions. (line 223)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
@@ -27036,23 +27958,27 @@ Index
* Robbins, Arnold: Command Line Field Separator.
(line 80)
* Robbins, Bill: Getline/Pipe. (line 36)
-* Robbins, Harry: Acknowledgments. (line 81)
-* Robbins, Jean: Acknowledgments. (line 81)
+* Robbins, Harry: Acknowledgments. (line 83)
+* Robbins, Jean: Acknowledgments. (line 83)
* Robbins, Miriam <1>: Passwd Functions. (line 90)
* Robbins, Miriam <2>: Getline/Pipe. (line 36)
-* Robbins, Miriam: Acknowledgments. (line 81)
+* Robbins, Miriam: Acknowledgments. (line 83)
* Robinson, Will: Dynamic Extensions. (line 6)
* robot, the: Dynamic Extensions. (line 6)
* Rommel, Kai Uwe: Contributors. (line 43)
* round() user-defined function: Round Function. (line 16)
+* rounding mode, floating-point: Rounding Mode. (line 6)
* rounding numbers: Round Function. (line 6)
-* RS variable <1>: User-modified. (line 134)
+* ROUNDMODE variable <1>: Setting Rounding Mode.
+ (line 6)
+* ROUNDMODE variable: User-modified. (line 138)
+* RS variable <1>: User-modified. (line 143)
* RS variable: Records. (line 20)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift() function (gawk): Bitwise Functions. (line 51)
-* RSTART variable: Auto-set. (line 189)
+* RSTART variable: Auto-set. (line 206)
* RSTART variable, match() function and: String Functions. (line 223)
-* RT variable <1>: Auto-set. (line 196)
+* RT variable <1>: Auto-set. (line 213)
* RT variable <2>: Getline/Variable/File.
(line 10)
* RT variable <3>: Multiple Line. (line 129)
@@ -27065,7 +27991,7 @@ Index
* rvalues/lvalues: Assignment Ops. (line 32)
* s debugger command (alias for step): Debugger Execution Control.
(line 68)
-* sandbox mode: Options. (line 254)
+* sandbox mode: Options. (line 263)
* scalar values: Basic Data Typing. (line 13)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
@@ -27095,11 +28021,11 @@ Index
* separators, field, FIELDWIDTHS variable and: User-modified. (line 35)
* separators, field, FPAT variable and: User-modified. (line 45)
* separators, field, POSIX and: Fields. (line 6)
-* separators, for records <1>: User-modified. (line 134)
+* separators, for records <1>: User-modified. (line 143)
* separators, for records: Records. (line 14)
* separators, for records, regular expressions as: Records. (line 112)
* separators, for statements in actions: Action Overview. (line 19)
-* separators, subscript: User-modified. (line 147)
+* separators, subscript: User-modified. (line 156)
* set debugger command: Viewing And Changing Data.
(line 59)
* shells, piping commands into: Redirection. (line 143)
@@ -27136,7 +28062,7 @@ Index
* SIGUSR1 signal: Profiling. (line 180)
* silent debugger command: Debugger Execution Control.
(line 10)
-* sin() function: Numeric Functions. (line 74)
+* sin() function: Numeric Functions. (line 75)
* single precision floating-point: Basic Data Typing. (line 36)
* single quote (') <1>: Quoting. (line 31)
* single quote (') <2>: Long. (line 33)
@@ -27161,7 +28087,7 @@ Index
* source code, jawk: Other Versions. (line 97)
* source code, libmawk: Other Versions. (line 105)
* source code, mawk: Other Versions. (line 35)
-* source code, mixing: Options. (line 114)
+* source code, mixing: Options. (line 117)
* source code, pawk: Other Versions. (line 69)
* source code, QSE Awk: Other Versions. (line 109)
* source code, QuikTrim Awk: Other Versions. (line 113)
@@ -27179,9 +28105,9 @@ Index
* sprintf() function, OFMT variable and: User-modified. (line 124)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
-* sqrt() function: Numeric Functions. (line 77)
+* sqrt() function: Numeric Functions. (line 78)
* square brackets ([]): Regexp Operators. (line 55)
-* srand() function: Numeric Functions. (line 81)
+* srand() function: Numeric Functions. (line 82)
* Stallman, Richard <1>: Glossary. (line 301)
* Stallman, Richard <2>: Contributors. (line 24)
* Stallman, Richard <3>: Acknowledgments. (line 18)
@@ -27232,7 +28158,7 @@ Index
(line 43)
* sub() function, arguments of: String Functions. (line 462)
* sub() function, escape processing: Gory Details. (line 6)
-* subscript separators: User-modified. (line 147)
+* subscript separators: User-modified. (line 156)
* subscripts in arrays, multidimensional: Multi-dimensional. (line 10)
* subscripts in arrays, multidimensional, scanning: Multi-scanning.
(line 11)
@@ -27240,7 +28166,7 @@ Index
(line 6)
* subscripts in arrays, uninitialized variables as: Uninitialized Subscripts.
(line 6)
-* SUBSEP variable: User-modified. (line 147)
+* SUBSEP variable: User-modified. (line 156)
* SUBSEP variable, multidimensional arrays: Multi-dimensional.
(line 16)
* substr() function: String Functions. (line 481)
@@ -27273,7 +28199,7 @@ Index
* text, printing: Print. (line 22)
* text, printing, unduplicated lines of: Uniq Program. (line 6)
* TEXTDOMAIN variable <1>: Programmer i18n. (line 9)
-* TEXTDOMAIN variable: User-modified. (line 153)
+* TEXTDOMAIN variable: User-modified. (line 162)
* TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 60)
* TEXTDOMAIN variable, portability and: I18N Portability. (line 20)
* textdomain() function (C library): Explaining gettext. (line 27)
@@ -27290,6 +28216,7 @@ Index
* time, managing: Gettimeofday Function.
(line 6)
* time, retrieving: Time Functions. (line 17)
+* timeout, reading input: Read Timeout. (line 6)
* timestamps: Time Functions. (line 6)
* timestamps, converting dates to: Time Functions. (line 74)
* timestamps, formatted: Gettimeofday Function.
@@ -27300,7 +28227,7 @@ Index
* trace debugger command: Miscellaneous Debugger Commands.
(line 110)
* translate.awk program: Translate Program. (line 55)
-* troubleshooting, --non-decimal-data option: Options. (line 182)
+* troubleshooting, --non-decimal-data option: Options. (line 191)
* troubleshooting, == operator: Comparison Operators.
(line 37)
* troubleshooting, awk uses FS not IFS: Field Separators. (line 29)
@@ -27332,7 +28259,7 @@ Index
* troubleshooting, substr() function: String Functions. (line 499)
* troubleshooting, system() function: I/O Functions. (line 85)
* troubleshooting, typographical errors, global variables: Options.
- (line 95)
+ (line 98)
* true, logical: Truth Values. (line 6)
* Trueman, David <1>: Contributors. (line 31)
* Trueman, David <2>: Acknowledgments. (line 47)
@@ -27403,7 +28330,7 @@ Index
(line 6)
* variables, getline command into, using: Getline/Variable. (line 6)
* variables, global, for library functions: Library Names. (line 11)
-* variables, global, printing list of: Options. (line 90)
+* variables, global, printing list of: Options. (line 93)
* variables, initializing: Using Variables. (line 20)
* variables, local: Variable Scope. (line 6)
* variables, names of: Arrays. (line 18)
@@ -27433,7 +28360,7 @@ Index
* Wall, Larry <1>: Future Extensions. (line 6)
* Wall, Larry: Array Intro. (line 6)
* Wallin, Anders: Acknowledgments. (line 60)
-* warnings, issuing: Options. (line 163)
+* warnings, issuing: Options. (line 166)
* watch debugger command: Viewing And Changing Data.
(line 67)
* wc utility: Wc Program. (line 6)
@@ -27445,7 +28372,7 @@ Index
* whitespace, as field separators: Default Field Splitting.
(line 6)
* whitespace, functions, calling: Calling Built-in. (line 10)
-* whitespace, newlines as: Options. (line 228)
+* whitespace, newlines as: Options. (line 237)
* Williams, Kent: Contributors. (line 35)
* Woehlke, Matthew: Contributors. (line 79)
* Woods, John: Contributors. (line 28)
@@ -27500,418 +28427,441 @@ Index

Tag Table:
-Node: Top1346
-Node: Foreword30346
-Node: Preface34691
-Ref: Preface-Footnote-137744
-Ref: Preface-Footnote-237850
-Node: History38082
-Node: Names40473
-Ref: Names-Footnote-141950
-Node: This Manual42022
-Ref: This Manual-Footnote-146960
-Node: Conventions47060
-Node: Manual History49194
-Ref: Manual History-Footnote-152464
-Ref: Manual History-Footnote-252505
-Node: How To Contribute52579
-Node: Acknowledgments53723
-Node: Getting Started58054
-Node: Running gawk60433
-Node: One-shot61619
-Node: Read Terminal62844
-Ref: Read Terminal-Footnote-164494
-Ref: Read Terminal-Footnote-264770
-Node: Long64941
-Node: Executable Scripts66317
-Ref: Executable Scripts-Footnote-168186
-Ref: Executable Scripts-Footnote-268288
-Node: Comments68739
-Node: Quoting71206
-Node: DOS Quoting75829
-Node: Sample Data Files76504
-Node: Very Simple79536
-Node: Two Rules84135
-Node: More Complex86282
-Ref: More Complex-Footnote-189212
-Node: Statements/Lines89297
-Ref: Statements/Lines-Footnote-193759
-Node: Other Features94024
-Node: When94952
-Node: Invoking Gawk97099
-Node: Command Line98484
-Node: Options99267
-Ref: Options-Footnote-1113412
-Node: Other Arguments113437
-Node: Naming Standard Input116095
-Node: Environment Variables117189
-Node: AWKPATH Variable117633
-Ref: AWKPATH Variable-Footnote-1120230
-Node: Other Environment Variables120490
-Node: Exit Status122830
-Node: Include Files123505
-Node: Obsolete126990
-Node: Undocumented127676
-Node: Regexp127917
-Node: Regexp Usage129306
-Node: Escape Sequences131332
-Node: Regexp Operators137095
-Ref: Regexp Operators-Footnote-1144292
-Ref: Regexp Operators-Footnote-2144439
-Node: Bracket Expressions144537
-Ref: table-char-classes146427
-Node: GNU Regexp Operators148950
-Node: Case-sensitivity152673
-Ref: Case-sensitivity-Footnote-1155641
-Ref: Case-sensitivity-Footnote-2155876
-Node: Leftmost Longest155984
-Node: Computed Regexps157185
-Node: Reading Files160595
-Node: Records162536
-Ref: Records-Footnote-1171210
-Node: Fields171247
-Ref: Fields-Footnote-1174280
-Node: Nonconstant Fields174366
-Node: Changing Fields176568
-Node: Field Separators182549
-Node: Default Field Splitting185178
-Node: Regexp Field Splitting186295
-Node: Single Character Fields189637
-Node: Command Line Field Separator190696
-Node: Field Splitting Summary194137
-Ref: Field Splitting Summary-Footnote-1197329
-Node: Constant Size197430
-Node: Splitting By Content202014
-Ref: Splitting By Content-Footnote-1205740
-Node: Multiple Line205780
-Ref: Multiple Line-Footnote-1211627
-Node: Getline211806
-Node: Plain Getline214034
-Node: Getline/Variable216123
-Node: Getline/File217264
-Node: Getline/Variable/File218586
-Ref: Getline/Variable/File-Footnote-1220185
-Node: Getline/Pipe220272
-Node: Getline/Variable/Pipe222832
-Node: Getline/Coprocess223939
-Node: Getline/Variable/Coprocess225182
-Node: Getline Notes225896
-Node: Getline Summary227838
-Ref: table-getline-variants228181
-Node: Command line directories229037
-Node: Printing229662
-Node: Print231293
-Node: Print Examples232630
-Node: Output Separators235414
-Node: OFMT237174
-Node: Printf238532
-Node: Basic Printf239438
-Node: Control Letters240977
-Node: Format Modifiers244789
-Node: Printf Examples250798
-Node: Redirection253513
-Node: Special Files260497
-Node: Special FD261030
-Ref: Special FD-Footnote-1264655
-Node: Special Network264729
-Node: Special Caveats265579
-Node: Close Files And Pipes266375
-Ref: Close Files And Pipes-Footnote-1273398
-Ref: Close Files And Pipes-Footnote-2273546
-Node: Expressions273696
-Node: Values274828
-Node: Constants275504
-Node: Scalar Constants276184
-Ref: Scalar Constants-Footnote-1277043
-Node: Nondecimal-numbers277225
-Node: Regexp Constants280284
-Node: Using Constant Regexps280759
-Node: Variables283814
-Node: Using Variables284469
-Node: Assignment Options286193
-Node: Conversion288065
-Ref: table-locale-affects293441
-Ref: Conversion-Footnote-1294065
-Node: All Operators294174
-Node: Arithmetic Ops294804
-Node: Concatenation297309
-Ref: Concatenation-Footnote-1300102
-Node: Assignment Ops300222
-Ref: table-assign-ops305210
-Node: Increment Ops306618
-Node: Truth Values and Conditions310088
-Node: Truth Values311171
-Node: Typing and Comparison312220
-Node: Variable Typing313009
-Ref: Variable Typing-Footnote-1316906
-Node: Comparison Operators317028
-Ref: table-relational-ops317438
-Node: POSIX String Comparison320987
-Ref: POSIX String Comparison-Footnote-1321943
-Node: Boolean Ops322081
-Ref: Boolean Ops-Footnote-1326159
-Node: Conditional Exp326250
-Node: Function Calls327982
-Node: Precedence331576
-Node: Locales335245
-Node: Patterns and Actions336334
-Node: Pattern Overview337388
-Node: Regexp Patterns339057
-Node: Expression Patterns339600
-Node: Ranges343285
-Node: BEGIN/END346251
-Node: Using BEGIN/END347013
-Ref: Using BEGIN/END-Footnote-1349744
-Node: I/O And BEGIN/END349850
-Node: BEGINFILE/ENDFILE352132
-Node: Empty355025
-Node: Using Shell Variables355341
-Node: Action Overview357626
-Node: Statements359983
-Node: If Statement361837
-Node: While Statement363336
-Node: Do Statement365380
-Node: For Statement366536
-Node: Switch Statement369688
-Node: Break Statement371785
-Node: Continue Statement373775
-Node: Next Statement375568
-Node: Nextfile Statement377958
-Node: Exit Statement380503
-Node: Built-in Variables382919
-Node: User-modified384014
-Ref: User-modified-Footnote-1392040
-Node: Auto-set392102
-Ref: Auto-set-Footnote-1401393
-Node: ARGC and ARGV401598
-Node: Arrays405449
-Node: Array Basics406954
-Node: Array Intro407780
-Node: Reference to Elements412098
-Node: Assigning Elements414368
-Node: Array Example414859
-Node: Scanning an Array416591
-Node: Controlling Scanning418905
-Ref: Controlling Scanning-Footnote-1423838
-Node: Delete424154
-Ref: Delete-Footnote-1426589
-Node: Numeric Array Subscripts426646
-Node: Uninitialized Subscripts428829
-Node: Multi-dimensional430457
-Node: Multi-scanning433551
-Node: Arrays of Arrays435142
-Node: Functions439787
-Node: Built-in440609
-Node: Calling Built-in441687
-Node: Numeric Functions443675
-Ref: Numeric Functions-Footnote-1447440
-Ref: Numeric Functions-Footnote-2447797
-Ref: Numeric Functions-Footnote-3447845
-Node: String Functions448114
-Ref: String Functions-Footnote-1471611
-Ref: String Functions-Footnote-2471740
-Ref: String Functions-Footnote-3471988
-Node: Gory Details472075
-Ref: table-sub-escapes473754
-Ref: table-sub-posix-92475108
-Ref: table-sub-proposed476451
-Ref: table-posix-sub477801
-Ref: table-gensub-escapes479347
-Ref: Gory Details-Footnote-1480554
-Ref: Gory Details-Footnote-2480605
-Node: I/O Functions480756
-Ref: I/O Functions-Footnote-1487411
-Node: Time Functions487558
-Ref: Time Functions-Footnote-1498450
-Ref: Time Functions-Footnote-2498518
-Ref: Time Functions-Footnote-3498676
-Ref: Time Functions-Footnote-4498787
-Ref: Time Functions-Footnote-5498899
-Ref: Time Functions-Footnote-6499126
-Node: Bitwise Functions499392
-Ref: table-bitwise-ops499950
-Ref: Bitwise Functions-Footnote-1504110
-Node: Type Functions504294
-Node: I18N Functions504764
-Node: User-defined506391
-Node: Definition Syntax507195
-Ref: Definition Syntax-Footnote-1512105
-Node: Function Example512174
-Node: Function Caveats514768
-Node: Calling A Function515189
-Node: Variable Scope516304
-Node: Pass By Value/Reference518279
-Node: Return Statement521719
-Node: Dynamic Typing524700
-Node: Indirect Calls525435
-Node: Internationalization535120
-Node: I18N and L10N536546
-Node: Explaining gettext537232
-Ref: Explaining gettext-Footnote-1542298
-Ref: Explaining gettext-Footnote-2542482
-Node: Programmer i18n542647
-Node: Translator i18n546847
-Node: String Extraction547640
-Ref: String Extraction-Footnote-1548601
-Node: Printf Ordering548687
-Ref: Printf Ordering-Footnote-1551471
-Node: I18N Portability551535
-Ref: I18N Portability-Footnote-1553984
-Node: I18N Example554047
-Ref: I18N Example-Footnote-1556682
-Node: Gawk I18N556754
-Node: Advanced Features557371
-Node: Nondecimal Data558884
-Node: Array Sorting560467
-Node: Controlling Array Traversal561164
-Node: Array Sorting Functions569401
-Ref: Array Sorting Functions-Footnote-1573075
-Ref: Array Sorting Functions-Footnote-2573168
-Node: Two-way I/O573362
-Ref: Two-way I/O-Footnote-1578794
-Node: TCP/IP Networking578864
-Node: Profiling581708
-Node: Library Functions589162
-Ref: Library Functions-Footnote-1592169
-Node: Library Names592340
-Ref: Library Names-Footnote-1595811
-Ref: Library Names-Footnote-2596031
-Node: General Functions596117
-Node: Strtonum Function597070
-Node: Assert Function600000
-Node: Round Function603326
-Node: Cliff Random Function604869
-Node: Ordinal Functions605885
-Ref: Ordinal Functions-Footnote-1608955
-Ref: Ordinal Functions-Footnote-2609207
-Node: Join Function609416
-Ref: Join Function-Footnote-1611187
-Node: Gettimeofday Function611387
-Node: Data File Management615102
-Node: Filetrans Function615734
-Node: Rewind Function619873
-Node: File Checking621260
-Node: Empty Files622354
-Node: Ignoring Assigns624584
-Node: Getopt Function626137
-Ref: Getopt Function-Footnote-1637441
-Node: Passwd Functions637644
-Ref: Passwd Functions-Footnote-1646619
-Node: Group Functions646707
-Node: Walking Arrays654791
-Node: Sample Programs656360
-Node: Running Examples657025
-Node: Clones657753
-Node: Cut Program658977
-Node: Egrep Program668822
-Ref: Egrep Program-Footnote-1676595
-Node: Id Program676705
-Node: Split Program680321
-Ref: Split Program-Footnote-1683840
-Node: Tee Program683968
-Node: Uniq Program686771
-Node: Wc Program694200
-Ref: Wc Program-Footnote-1698466
-Ref: Wc Program-Footnote-2698666
-Node: Miscellaneous Programs698758
-Node: Dupword Program699946
-Node: Alarm Program701977
-Node: Translate Program706726
-Ref: Translate Program-Footnote-1711113
-Ref: Translate Program-Footnote-2711341
-Node: Labels Program711475
-Ref: Labels Program-Footnote-1714846
-Node: Word Sorting714930
-Node: History Sorting718814
-Node: Extract Program720653
-Ref: Extract Program-Footnote-1728136
-Node: Simple Sed728264
-Node: Igawk Program731326
-Ref: Igawk Program-Footnote-1746483
-Ref: Igawk Program-Footnote-2746684
-Node: Anagram Program746822
-Node: Signature Program749890
-Node: Debugger750990
-Node: Debugging751942
-Node: Debugging Concepts752375
-Node: Debugging Terms754231
-Node: Awk Debugging756828
-Node: Sample Debugging Session757720
-Node: Debugger Invocation758240
-Node: Finding The Bug759569
-Node: List of Debugger Commands766057
-Node: Breakpoint Control767391
-Node: Debugger Execution Control771055
-Node: Viewing And Changing Data774415
-Node: Execution Stack777771
-Node: Debugger Info779238
-Node: Miscellaneous Debugger Commands783219
-Node: Readline Support788664
-Node: Limitations789495
-Node: Language History791747
-Node: V7/SVR3.1793259
-Node: SVR4795580
-Node: POSIX797022
-Node: BTL798030
-Node: POSIX/GNU798764
-Node: Common Extensions803915
-Node: Ranges and Locales805022
-Ref: Ranges and Locales-Footnote-1809626
-Node: Contributors809847
-Node: Installation814108
-Node: Gawk Distribution815002
-Node: Getting815486
-Node: Extracting816312
-Node: Distribution contents818004
-Node: Unix Installation823226
-Node: Quick Installation823843
-Node: Additional Configuration Options825805
-Node: Configuration Philosophy827282
-Node: Non-Unix Installation829624
-Node: PC Installation830082
-Node: PC Binary Installation831381
-Node: PC Compiling833229
-Node: PC Testing836173
-Node: PC Using837349
-Node: Cygwin841534
-Node: MSYS842534
-Node: VMS Installation843048
-Node: VMS Compilation843651
-Ref: VMS Compilation-Footnote-1844658
-Node: VMS Installation Details844716
-Node: VMS Running846351
-Node: VMS Old Gawk847958
-Node: Bugs848432
-Node: Other Versions852284
-Node: Notes857599
-Node: Compatibility Mode858291
-Node: Additions859074
-Node: Accessing The Source859886
-Node: Adding Code861311
-Node: New Ports867278
-Node: Dynamic Extensions871391
-Node: Internals872831
-Node: Plugin License881350
-Node: Loading Extensions881988
-Node: Sample Library883798
-Node: Internal File Description884488
-Node: Internal File Ops888203
-Ref: Internal File Ops-Footnote-1892927
-Node: Using Internal File Ops893067
-Node: Future Extensions895444
-Node: Basic Concepts897948
-Node: Basic High Level898705
-Ref: Basic High Level-Footnote-1902740
-Node: Basic Data Typing902925
-Node: Floating Point Issues907450
-Node: String Conversion Precision908533
-Ref: String Conversion Precision-Footnote-1910233
-Node: Unexpected Results910342
-Node: POSIX Floating Point Problems912168
-Ref: POSIX Floating Point Problems-Footnote-1915873
-Node: Glossary915911
-Node: Copying940887
-Node: GNU Free Documentation License978444
-Node: Index1003581
+Node: Top1352
+Node: Foreword31559
+Node: Preface35904
+Ref: Preface-Footnote-138957
+Ref: Preface-Footnote-239063
+Node: History39295
+Node: Names41686
+Ref: Names-Footnote-143163
+Node: This Manual43235
+Ref: This Manual-Footnote-148173
+Node: Conventions48273
+Node: Manual History50407
+Ref: Manual History-Footnote-153677
+Ref: Manual History-Footnote-253718
+Node: How To Contribute53792
+Node: Acknowledgments54936
+Node: Getting Started59432
+Node: Running gawk61811
+Node: One-shot62997
+Node: Read Terminal64222
+Ref: Read Terminal-Footnote-165872
+Ref: Read Terminal-Footnote-266148
+Node: Long66319
+Node: Executable Scripts67695
+Ref: Executable Scripts-Footnote-169564
+Ref: Executable Scripts-Footnote-269666
+Node: Comments70213
+Node: Quoting72680
+Node: DOS Quoting77303
+Node: Sample Data Files77978
+Node: Very Simple81010
+Node: Two Rules85609
+Node: More Complex87756
+Ref: More Complex-Footnote-190686
+Node: Statements/Lines90771
+Ref: Statements/Lines-Footnote-195233
+Node: Other Features95498
+Node: When96426
+Node: Invoking Gawk98573
+Node: Command Line99958
+Node: Options100741
+Ref: Options-Footnote-1115205
+Node: Other Arguments115230
+Node: Naming Standard Input117888
+Node: Environment Variables118982
+Node: AWKPATH Variable119426
+Ref: AWKPATH Variable-Footnote-1122023
+Node: Other Environment Variables122283
+Node: Exit Status124775
+Node: Include Files125450
+Node: Obsolete128935
+Node: Undocumented129621
+Node: Regexp129862
+Node: Regexp Usage131251
+Node: Escape Sequences133277
+Node: Regexp Operators139040
+Ref: Regexp Operators-Footnote-1146420
+Ref: Regexp Operators-Footnote-2146567
+Node: Bracket Expressions146665
+Ref: table-char-classes148555
+Node: GNU Regexp Operators151078
+Node: Case-sensitivity154801
+Ref: Case-sensitivity-Footnote-1157769
+Ref: Case-sensitivity-Footnote-2158004
+Node: Leftmost Longest158112
+Node: Computed Regexps159313
+Node: Reading Files162723
+Node: Records164727
+Ref: Records-Footnote-1173401
+Node: Fields173438
+Ref: Fields-Footnote-1176471
+Node: Nonconstant Fields176557
+Node: Changing Fields178759
+Node: Field Separators184740
+Node: Default Field Splitting187369
+Node: Regexp Field Splitting188486
+Node: Single Character Fields191828
+Node: Command Line Field Separator192887
+Node: Field Splitting Summary196328
+Ref: Field Splitting Summary-Footnote-1199520
+Node: Constant Size199621
+Node: Splitting By Content204205
+Ref: Splitting By Content-Footnote-1207931
+Node: Multiple Line207971
+Ref: Multiple Line-Footnote-1213818
+Node: Getline213997
+Node: Plain Getline216213
+Node: Getline/Variable218302
+Node: Getline/File219443
+Node: Getline/Variable/File220765
+Ref: Getline/Variable/File-Footnote-1222364
+Node: Getline/Pipe222451
+Node: Getline/Variable/Pipe225011
+Node: Getline/Coprocess226118
+Node: Getline/Variable/Coprocess227361
+Node: Getline Notes228075
+Node: Getline Summary230017
+Ref: table-getline-variants230360
+Node: Read Timeout231216
+Ref: Read Timeout-Footnote-1234961
+Node: Command line directories235018
+Node: Printing235648
+Node: Print237279
+Node: Print Examples238616
+Node: Output Separators241400
+Node: OFMT243160
+Node: Printf244518
+Node: Basic Printf245424
+Node: Control Letters246963
+Node: Format Modifiers250775
+Node: Printf Examples256784
+Node: Redirection259499
+Node: Special Files266483
+Node: Special FD267016
+Ref: Special FD-Footnote-1270641
+Node: Special Network270715
+Node: Special Caveats271565
+Node: Close Files And Pipes272361
+Ref: Close Files And Pipes-Footnote-1279384
+Ref: Close Files And Pipes-Footnote-2279532
+Node: Expressions279682
+Node: Values280814
+Node: Constants281490
+Node: Scalar Constants282170
+Ref: Scalar Constants-Footnote-1283029
+Node: Nondecimal-numbers283211
+Node: Regexp Constants286270
+Node: Using Constant Regexps286745
+Node: Variables289800
+Node: Using Variables290455
+Node: Assignment Options292179
+Node: Conversion294051
+Ref: table-locale-affects299427
+Ref: Conversion-Footnote-1300051
+Node: All Operators300160
+Node: Arithmetic Ops300790
+Node: Concatenation303295
+Ref: Concatenation-Footnote-1306088
+Node: Assignment Ops306208
+Ref: table-assign-ops311196
+Node: Increment Ops312604
+Node: Truth Values and Conditions316074
+Node: Truth Values317157
+Node: Typing and Comparison318206
+Node: Variable Typing318995
+Ref: Variable Typing-Footnote-1322892
+Node: Comparison Operators323014
+Ref: table-relational-ops323424
+Node: POSIX String Comparison326973
+Ref: POSIX String Comparison-Footnote-1327929
+Node: Boolean Ops328067
+Ref: Boolean Ops-Footnote-1332145
+Node: Conditional Exp332236
+Node: Function Calls333968
+Node: Precedence337562
+Node: Locales341231
+Node: Patterns and Actions342320
+Node: Pattern Overview343374
+Node: Regexp Patterns345043
+Node: Expression Patterns345586
+Node: Ranges349271
+Node: BEGIN/END352237
+Node: Using BEGIN/END352999
+Ref: Using BEGIN/END-Footnote-1355730
+Node: I/O And BEGIN/END355836
+Node: BEGINFILE/ENDFILE358118
+Node: Empty361011
+Node: Using Shell Variables361327
+Node: Action Overview363612
+Node: Statements365969
+Node: If Statement367823
+Node: While Statement369322
+Node: Do Statement371366
+Node: For Statement372522
+Node: Switch Statement375674
+Node: Break Statement377771
+Node: Continue Statement379761
+Node: Next Statement381554
+Node: Nextfile Statement383944
+Node: Exit Statement386489
+Node: Built-in Variables388905
+Node: User-modified390000
+Ref: User-modified-Footnote-1398355
+Node: Auto-set398417
+Ref: Auto-set-Footnote-1408263
+Node: ARGC and ARGV408468
+Node: Arrays412319
+Node: Array Basics413824
+Node: Array Intro414650
+Node: Reference to Elements418968
+Node: Assigning Elements421238
+Node: Array Example421729
+Node: Scanning an Array423461
+Node: Controlling Scanning425775
+Ref: Controlling Scanning-Footnote-1430708
+Node: Delete431024
+Ref: Delete-Footnote-1433459
+Node: Numeric Array Subscripts433516
+Node: Uninitialized Subscripts435699
+Node: Multi-dimensional437327
+Node: Multi-scanning440421
+Node: Arrays of Arrays442012
+Node: Functions446657
+Node: Built-in447479
+Node: Calling Built-in448557
+Node: Numeric Functions450545
+Ref: Numeric Functions-Footnote-1454377
+Ref: Numeric Functions-Footnote-2454734
+Ref: Numeric Functions-Footnote-3454782
+Node: String Functions455051
+Ref: String Functions-Footnote-1478548
+Ref: String Functions-Footnote-2478677
+Ref: String Functions-Footnote-3478925
+Node: Gory Details479012
+Ref: table-sub-escapes480691
+Ref: table-sub-posix-92482045
+Ref: table-sub-proposed483388
+Ref: table-posix-sub484738
+Ref: table-gensub-escapes486284
+Ref: Gory Details-Footnote-1487491
+Ref: Gory Details-Footnote-2487542
+Node: I/O Functions487693
+Ref: I/O Functions-Footnote-1494348
+Node: Time Functions494495
+Ref: Time Functions-Footnote-1505387
+Ref: Time Functions-Footnote-2505455
+Ref: Time Functions-Footnote-3505613
+Ref: Time Functions-Footnote-4505724
+Ref: Time Functions-Footnote-5505836
+Ref: Time Functions-Footnote-6506063
+Node: Bitwise Functions506329
+Ref: table-bitwise-ops506887
+Ref: Bitwise Functions-Footnote-1511047
+Node: Type Functions511231
+Node: I18N Functions511701
+Node: User-defined513328
+Node: Definition Syntax514132
+Ref: Definition Syntax-Footnote-1519042
+Node: Function Example519111
+Node: Function Caveats521705
+Node: Calling A Function522126
+Node: Variable Scope523241
+Node: Pass By Value/Reference525216
+Node: Return Statement528656
+Node: Dynamic Typing531637
+Node: Indirect Calls532372
+Node: Internationalization542057
+Node: I18N and L10N543496
+Node: Explaining gettext544182
+Ref: Explaining gettext-Footnote-1549248
+Ref: Explaining gettext-Footnote-2549432
+Node: Programmer i18n549597
+Node: Translator i18n553797
+Node: String Extraction554590
+Ref: String Extraction-Footnote-1555551
+Node: Printf Ordering555637
+Ref: Printf Ordering-Footnote-1558421
+Node: I18N Portability558485
+Ref: I18N Portability-Footnote-1560934
+Node: I18N Example560997
+Ref: I18N Example-Footnote-1563632
+Node: Gawk I18N563704
+Node: Arbitrary Precision Arithmetic564321
+Ref: Arbitrary Precision Arithmetic-Footnote-1567196
+Node: Floating-point Programming567344
+Node: Floating-point Representation572614
+Node: Floating-point Context573718
+Ref: table-ieee-formats574553
+Node: Rounding Mode575923
+Ref: table-rounding-modes576550
+Ref: Rounding Mode-Footnote-1579673
+Node: Arbitrary Precision Floats579854
+Ref: Arbitrary Precision Floats-Footnote-1581895
+Node: Setting Precision582206
+Node: Setting Rounding Mode584964
+Node: Floating-point Constants585881
+Node: Changing Precision587300
+Ref: Changing Precision-Footnote-1588700
+Node: Exact Arithmetic588873
+Node: Integer Programming591886
+Node: Arbitrary Precision Integers593666
+Ref: Arbitrary Precision Integers-Footnote-1596690
+Node: MPFR and GMP Libraries596836
+Node: Advanced Features597221
+Node: Nondecimal Data598744
+Node: Array Sorting600327
+Node: Controlling Array Traversal601024
+Node: Array Sorting Functions609261
+Ref: Array Sorting Functions-Footnote-1612935
+Ref: Array Sorting Functions-Footnote-2613028
+Node: Two-way I/O613222
+Ref: Two-way I/O-Footnote-1618654
+Node: TCP/IP Networking618724
+Node: Profiling621568
+Node: Library Functions629022
+Ref: Library Functions-Footnote-1632029
+Node: Library Names632200
+Ref: Library Names-Footnote-1635671
+Ref: Library Names-Footnote-2635891
+Node: General Functions635977
+Node: Strtonum Function636930
+Node: Assert Function639860
+Node: Round Function643186
+Node: Cliff Random Function644729
+Node: Ordinal Functions645745
+Ref: Ordinal Functions-Footnote-1648815
+Ref: Ordinal Functions-Footnote-2649067
+Node: Join Function649276
+Ref: Join Function-Footnote-1651047
+Node: Gettimeofday Function651247
+Node: Data File Management654962
+Node: Filetrans Function655594
+Node: Rewind Function659733
+Node: File Checking661120
+Node: Empty Files662214
+Node: Ignoring Assigns664444
+Node: Getopt Function665997
+Ref: Getopt Function-Footnote-1677301
+Node: Passwd Functions677504
+Ref: Passwd Functions-Footnote-1686479
+Node: Group Functions686567
+Node: Walking Arrays694651
+Node: Sample Programs696220
+Node: Running Examples696885
+Node: Clones697613
+Node: Cut Program698837
+Node: Egrep Program708682
+Ref: Egrep Program-Footnote-1716455
+Node: Id Program716565
+Node: Split Program720181
+Ref: Split Program-Footnote-1723700
+Node: Tee Program723828
+Node: Uniq Program726631
+Node: Wc Program734060
+Ref: Wc Program-Footnote-1738326
+Ref: Wc Program-Footnote-2738526
+Node: Miscellaneous Programs738618
+Node: Dupword Program739806
+Node: Alarm Program741837
+Node: Translate Program746586
+Ref: Translate Program-Footnote-1750973
+Ref: Translate Program-Footnote-2751201
+Node: Labels Program751335
+Ref: Labels Program-Footnote-1754706
+Node: Word Sorting754790
+Node: History Sorting758674
+Node: Extract Program760513
+Ref: Extract Program-Footnote-1767996
+Node: Simple Sed768124
+Node: Igawk Program771186
+Ref: Igawk Program-Footnote-1786343
+Ref: Igawk Program-Footnote-2786544
+Node: Anagram Program786682
+Node: Signature Program789750
+Node: Debugger790850
+Node: Debugging791802
+Node: Debugging Concepts792235
+Node: Debugging Terms794091
+Node: Awk Debugging796688
+Node: Sample Debugging Session797580
+Node: Debugger Invocation798100
+Node: Finding The Bug799429
+Node: List of Debugger Commands805917
+Node: Breakpoint Control807251
+Node: Debugger Execution Control810915
+Node: Viewing And Changing Data814275
+Node: Execution Stack817631
+Node: Debugger Info819098
+Node: Miscellaneous Debugger Commands823079
+Node: Readline Support828524
+Node: Limitations829355
+Node: Language History831607
+Node: V7/SVR3.1833119
+Node: SVR4835440
+Node: POSIX836882
+Node: BTL837890
+Node: POSIX/GNU838624
+Node: Common Extensions843775
+Node: Ranges and Locales844882
+Ref: Ranges and Locales-Footnote-1849486
+Node: Contributors849707
+Node: Installation853968
+Node: Gawk Distribution854862
+Node: Getting855346
+Node: Extracting856172
+Node: Distribution contents857864
+Node: Unix Installation863086
+Node: Quick Installation863703
+Node: Additional Configuration Options865665
+Node: Configuration Philosophy867142
+Node: Non-Unix Installation869484
+Node: PC Installation869942
+Node: PC Binary Installation871241
+Node: PC Compiling873089
+Node: PC Testing876033
+Node: PC Using877209
+Node: Cygwin881394
+Node: MSYS882394
+Node: VMS Installation882908
+Node: VMS Compilation883511
+Ref: VMS Compilation-Footnote-1884518
+Node: VMS Installation Details884576
+Node: VMS Running886211
+Node: VMS Old Gawk887818
+Node: Bugs888292
+Node: Other Versions892144
+Node: Notes897459
+Node: Compatibility Mode898151
+Node: Additions898934
+Node: Accessing The Source899746
+Node: Adding Code901171
+Node: New Ports907138
+Node: Dynamic Extensions911251
+Node: Internals912691
+Node: Plugin License921210
+Node: Loading Extensions921848
+Node: Sample Library923658
+Node: Internal File Description924348
+Node: Internal File Ops928063
+Ref: Internal File Ops-Footnote-1932787
+Node: Using Internal File Ops932927
+Node: Future Extensions935304
+Node: Basic Concepts937808
+Node: Basic High Level938565
+Ref: Basic High Level-Footnote-1942600
+Node: Basic Data Typing942785
+Node: Floating Point Issues947310
+Node: String Conversion Precision948393
+Ref: String Conversion Precision-Footnote-1950093
+Node: Unexpected Results950202
+Node: POSIX Floating Point Problems952028
+Ref: POSIX Floating Point Problems-Footnote-1955733
+Node: Glossary955771
+Node: Copying980747
+Node: GNU Free Documentation License1018304
+Node: Index1043441

End Tag Table