summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2021-04-06 15:16:47 +0300
committerArnold D. Robbins <arnold@skeeve.com>2021-04-06 15:16:47 +0300
commit4ee6a6599fede9edeab525813d834a5f9d241391 (patch)
tree5837765866cf6387297d3f6fe6e8dfa6fc279e65
parent1f10523de0fc469f0604f5642562f92da608311d (diff)
downloadgawk-4ee6a6599fede9edeab525813d834a5f9d241391.tar.gz
Finish documenting bool in the manual.
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info765
-rw-r--r--doc/gawk.texi54
-rw-r--r--doc/gawktexi.in54
4 files changed, 458 insertions, 419 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 4659f15c..d73a864b 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-06 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Finish documenting bool features.
+
2021-04-04 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: Start documenting bool features.
diff --git a/doc/gawk.info b/doc/gawk.info
index 9f3abe03..008160c7 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -12847,12 +12847,15 @@ File: gawk.info, Node: Boolean Functions, Next: Numeric Functions, Prev: Call
9.1.2 Generating Boolean Values
-------------------------------
-This functions is specific to 'gawk'. It is not available in
+This function is specific to 'gawk'. It is not available in
compatibility mode (*note Options::):
'bool(EXPRESSION)'
-
- blah blah
+ Return a Boolean-typed value based on the regular Boolean value of
+ EXPRESSION. Boolean "true" values have numeric value one and
+ string value '"TRUE"'. Boolean "false" values have numeric zero
+ and string value '"FALSE"'. This is discussed in more detail in
+ *note Boolean Typed Values::.

File: gawk.info, Node: Numeric Functions, Next: String Functions, Prev: Boolean Functions, Up: Built-in
@@ -14428,6 +14431,9 @@ contexts.
'"array"'
X is an array.
+ '"bool"'
+ X is a Boolean typed value (*note Boolean Typed Values::).
+
'"regexp"'
X is a strongly typed regexp (*note Strong Regexp
Constants::).
@@ -20948,19 +20954,18 @@ File: gawk.info, Node: Boolean Typed Values, Next: Array Sorting, Prev: Nonde
12.2 Boolean Typed Values
=========================
-This minor node describes an advanced, 'gawk'-specific extension.
-
- Scalar values in 'awk' are either numbers or strings. 'gawk' also
-supports values of type 'regexp' (FIXME pxref).
+Scalar values in 'awk' are either numbers or strings. 'gawk' also
+supports values of type 'regexp' (*note Strong Regexp Constants::).
- As seen in FIXME @ref{} here, Boolean values in 'awk' don't have a
-separate type: a value counts as "true" if it is nonzero or non-null,
-and as "false" otherwise.
+ As described in *note Truth Values::, Boolean values in 'awk' don't
+have a separate type: a value counts as "true" if it is nonzero or
+non-null, and as "false" otherwise.
When interchanging data with languages that do have a real Boolean
type, using a standard format such as JSON or XML, the lack of a true
-Boolean type in 'awk' is problematic. (FIXME: xref to gawkextlib json
-extension)
+Boolean type in 'awk' is problematic. (See, for example, the 'json'
+extension provided by the 'gawkextlib' project
+(https://sourceforge.net/projects/gawkextlib).)
It's easy to import Boolean data into 'awk', but then the fact that
it was originally Boolean is lost. Exporting data is even harder;
@@ -20972,14 +20977,20 @@ value of Boolean type.
The returned values are different than normal 'awk' values. When
treated as numbers, they are either one or zero, depending upon the
-truth value of the expression passed in the call. When treated as
-strings, they are either '"TRUE"' or '"FALSE"', again depending upon the
-truth value of the expression passed in the call. The value for "false"
-is thus unusual; it is zero numerically, but not empty when treated as a
-string.
+truth value of the original expression passed in the call to 'bool()'.
+When treated as strings, they are either '"TRUE"' or '"FALSE"', again
+depending upon the truth value of the expression passed in the call to
+'bool()'. The value for "false" is thus unusual; it is zero
+numerically, but not empty when treated as a string.
+
+ The 'typeof()' function (*note Type Functions::) returns '"bool"' for
+these values.
- The 'typeof()' function (FIXME pxref here) returns '"bool"' for these
-values.
+ While it would have been possible to add two new built-in variables
+of Boolean type named 'TRUE' and 'FALSE', doing so would undoubtedly
+have broken many existing 'awk' programs. Instead, having a "generator"
+function that creates Boolean values gives flexibility, without breaking
+any existing code.

File: gawk.info, Node: Array Sorting, Next: Two-way I/O, Prev: Boolean Typed Values, Up: Advanced Features
@@ -38426,364 +38437,364 @@ Node: Functions540711
Node: Built-in541749
Node: Calling Built-in542902
Node: Boolean Functions544898
-Node: Numeric Functions545211
-Ref: Numeric Functions-Footnote-1549238
-Ref: Numeric Functions-Footnote-2549886
-Ref: Numeric Functions-Footnote-3549934
-Node: String Functions550206
-Ref: String Functions-Footnote-1574347
-Ref: String Functions-Footnote-2574475
-Ref: String Functions-Footnote-3574723
-Node: Gory Details574810
-Ref: table-sub-escapes576601
-Ref: table-sub-proposed578120
-Ref: table-posix-sub579483
-Ref: table-gensub-escapes581024
-Ref: Gory Details-Footnote-1581847
-Node: I/O Functions582001
-Ref: table-system-return-values588455
-Ref: I/O Functions-Footnote-1590535
-Ref: I/O Functions-Footnote-2590683
-Node: Time Functions590803
-Ref: Time Functions-Footnote-1601474
-Ref: Time Functions-Footnote-2601542
-Ref: Time Functions-Footnote-3601700
-Ref: Time Functions-Footnote-4601811
-Ref: Time Functions-Footnote-5601923
-Ref: Time Functions-Footnote-6602150
-Node: Bitwise Functions602416
-Ref: table-bitwise-ops603010
-Ref: Bitwise Functions-Footnote-1609073
-Ref: Bitwise Functions-Footnote-2609246
-Node: Type Functions609437
-Node: I18N Functions612300
-Node: User-defined613951
-Node: Definition Syntax614763
-Ref: Definition Syntax-Footnote-1620457
-Node: Function Example620528
-Ref: Function Example-Footnote-1623450
-Node: Function Calling623472
-Node: Calling A Function624060
-Node: Variable Scope625018
-Node: Pass By Value/Reference628012
-Node: Function Caveats630656
-Ref: Function Caveats-Footnote-1632703
-Node: Return Statement632823
-Node: Dynamic Typing635802
-Node: Indirect Calls636732
-Ref: Indirect Calls-Footnote-1646987
-Node: Functions Summary647115
-Node: Library Functions649820
-Ref: Library Functions-Footnote-1653427
-Ref: Library Functions-Footnote-2653570
-Node: Library Names653741
-Ref: Library Names-Footnote-1657408
-Ref: Library Names-Footnote-2657631
-Node: General Functions657717
-Node: Strtonum Function658820
-Node: Assert Function661842
-Node: Round Function665168
-Node: Cliff Random Function666708
-Node: Ordinal Functions667724
-Ref: Ordinal Functions-Footnote-1670787
-Ref: Ordinal Functions-Footnote-2671039
-Node: Join Function671249
-Ref: Join Function-Footnote-1673019
-Node: Getlocaltime Function673219
-Node: Readfile Function676961
-Node: Shell Quoting678938
-Node: Data File Management680339
-Node: Filetrans Function680971
-Node: Rewind Function685067
-Node: File Checking686976
-Ref: File Checking-Footnote-1688310
-Node: Empty Files688511
-Node: Ignoring Assigns690490
-Node: Getopt Function692040
-Ref: Getopt Function-Footnote-1707251
-Node: Passwd Functions707451
-Ref: Passwd Functions-Footnote-1716290
-Node: Group Functions716378
-Ref: Group Functions-Footnote-1724276
-Node: Walking Arrays724483
-Node: Library Functions Summary727491
-Node: Library Exercises728897
-Node: Sample Programs729362
-Node: Running Examples730132
-Node: Clones730860
-Node: Cut Program732084
-Node: Egrep Program742224
-Node: Id Program751225
-Node: Split Program761172
-Ref: Split Program-Footnote-1771062
-Node: Tee Program771235
-Node: Uniq Program774025
-Node: Wc Program781613
-Node: Bytes vs. Characters782000
-Node: Using extensions783548
-Node: wc program784302
-Node: Miscellaneous Programs789167
-Node: Dupword Program790380
-Node: Alarm Program792410
-Node: Translate Program797265
-Ref: Translate Program-Footnote-1801830
-Node: Labels Program802100
-Ref: Labels Program-Footnote-1805451
-Node: Word Sorting805535
-Node: History Sorting809607
-Node: Extract Program811832
-Node: Simple Sed819886
-Node: Igawk Program822960
-Ref: Igawk Program-Footnote-1837291
-Ref: Igawk Program-Footnote-2837493
-Ref: Igawk Program-Footnote-3837615
-Node: Anagram Program837730
-Node: Signature Program840792
-Node: Programs Summary842039
-Node: Programs Exercises843253
-Ref: Programs Exercises-Footnote-1847383
-Node: Advanced Features847469
-Node: Nondecimal Data849593
-Node: Boolean Typed Values851191
-Node: Array Sorting852815
-Node: Controlling Array Traversal853520
-Ref: Controlling Array Traversal-Footnote-1861888
-Node: Array Sorting Functions862006
-Ref: Array Sorting Functions-Footnote-1867097
-Node: Two-way I/O867293
-Ref: Two-way I/O-Footnote-1875014
-Ref: Two-way I/O-Footnote-2875201
-Node: TCP/IP Networking875283
-Node: Profiling878401
-Node: Extension Philosophy887710
-Node: Advanced Features Summary889189
-Node: Internationalization891204
-Node: I18N and L10N892684
-Node: Explaining gettext893371
-Ref: Explaining gettext-Footnote-1899263
-Ref: Explaining gettext-Footnote-2899448
-Node: Programmer i18n899613
-Ref: Programmer i18n-Footnote-1904562
-Node: Translator i18n904611
-Node: String Extraction905405
-Ref: String Extraction-Footnote-1906537
-Node: Printf Ordering906623
-Ref: Printf Ordering-Footnote-1909409
-Node: I18N Portability909473
-Ref: I18N Portability-Footnote-1911929
-Node: I18N Example911992
-Ref: I18N Example-Footnote-1915267
-Ref: I18N Example-Footnote-2915340
-Node: Gawk I18N915449
-Node: I18N Summary916098
-Node: Debugger917439
-Node: Debugging918439
-Node: Debugging Concepts918880
-Node: Debugging Terms920689
-Node: Awk Debugging923264
-Ref: Awk Debugging-Footnote-1924209
-Node: Sample Debugging Session924341
-Node: Debugger Invocation924875
-Node: Finding The Bug926261
-Node: List of Debugger Commands932735
-Node: Breakpoint Control934068
-Node: Debugger Execution Control937762
-Node: Viewing And Changing Data941124
-Node: Execution Stack944665
-Node: Debugger Info946302
-Node: Miscellaneous Debugger Commands950373
-Node: Readline Support955435
-Node: Limitations956331
-Node: Debugging Summary958885
-Node: Namespaces960164
-Node: Global Namespace961275
-Node: Qualified Names962673
-Node: Default Namespace963672
-Node: Changing The Namespace964413
-Node: Naming Rules966027
-Node: Internal Name Management967875
-Node: Namespace Example968917
-Node: Namespace And Features971479
-Node: Namespace Summary972914
-Node: Arbitrary Precision Arithmetic974391
-Node: Computer Arithmetic975878
-Ref: table-numeric-ranges979644
-Ref: table-floating-point-ranges980137
-Ref: Computer Arithmetic-Footnote-1980795
-Node: Math Definitions980852
-Ref: table-ieee-formats983828
-Node: MPFR features984395
-Node: FP Math Caution986113
-Ref: FP Math Caution-Footnote-1987185
-Node: Inexactness of computations987554
-Node: Inexact representation988585
-Node: Comparing FP Values989945
-Node: Errors accumulate991186
-Node: Strange values992642
-Ref: Strange values-Footnote-1995230
-Node: Getting Accuracy995335
-Node: Try To Round998045
-Node: Setting precision998944
-Ref: table-predefined-precision-strings999641
-Node: Setting the rounding mode1001471
-Ref: table-gawk-rounding-modes1001845
-Ref: Setting the rounding mode-Footnote-11005776
-Node: Arbitrary Precision Integers1005955
-Ref: Arbitrary Precision Integers-Footnote-11009130
-Node: Checking for MPFR1009279
-Node: POSIX Floating Point Problems1010753
-Ref: POSIX Floating Point Problems-Footnote-11015038
-Node: Floating point summary1015076
-Node: Dynamic Extensions1017266
-Node: Extension Intro1018819
-Node: Plugin License1020085
-Node: Extension Mechanism Outline1020882
-Ref: figure-load-extension1021321
-Ref: figure-register-new-function1022886
-Ref: figure-call-new-function1023978
-Node: Extension API Description1026040
-Node: Extension API Functions Introduction1027753
-Ref: table-api-std-headers1029589
-Node: General Data Types1033838
-Ref: General Data Types-Footnote-11042544
-Node: Memory Allocation Functions1042843
-Ref: Memory Allocation Functions-Footnote-11047344
-Node: Constructor Functions1047443
-Node: API Ownership of MPFR and GMP Values1051096
-Node: Registration Functions1052409
-Node: Extension Functions1053109
-Node: Exit Callback Functions1058431
-Node: Extension Version String1059681
-Node: Input Parsers1060344
-Node: Output Wrappers1073065
-Node: Two-way processors1077577
-Node: Printing Messages1079842
-Ref: Printing Messages-Footnote-11081013
-Node: Updating ERRNO1081166
-Node: Requesting Values1081905
-Ref: table-value-types-returned1082642
-Node: Accessing Parameters1083750
-Node: Symbol Table Access1084987
-Node: Symbol table by name1085499
-Ref: Symbol table by name-Footnote-11088523
-Node: Symbol table by cookie1088651
-Ref: Symbol table by cookie-Footnote-11092836
-Node: Cached values1092900
-Ref: Cached values-Footnote-11096436
-Node: Array Manipulation1096589
-Ref: Array Manipulation-Footnote-11097680
-Node: Array Data Types1097717
-Ref: Array Data Types-Footnote-11100375
-Node: Array Functions1100467
-Node: Flattening Arrays1104965
-Node: Creating Arrays1111941
-Node: Redirection API1116708
-Node: Extension API Variables1119541
-Node: Extension Versioning1120252
-Ref: gawk-api-version1120681
-Node: Extension GMP/MPFR Versioning1122412
-Node: Extension API Informational Variables1124040
-Node: Extension API Boilerplate1125113
-Node: Changes from API V11129087
-Node: Finding Extensions1130659
-Node: Extension Example1131218
-Node: Internal File Description1132016
-Node: Internal File Ops1136096
-Ref: Internal File Ops-Footnote-11147446
-Node: Using Internal File Ops1147586
-Ref: Using Internal File Ops-Footnote-11149969
-Node: Extension Samples1150243
-Node: Extension Sample File Functions1151772
-Node: Extension Sample Fnmatch1159421
-Node: Extension Sample Fork1160908
-Node: Extension Sample Inplace1162126
-Node: Extension Sample Ord1165752
-Node: Extension Sample Readdir1166588
-Ref: table-readdir-file-types1167477
-Node: Extension Sample Revout1168544
-Node: Extension Sample Rev2way1169133
-Node: Extension Sample Read write array1169873
-Node: Extension Sample Readfile1171815
-Node: Extension Sample Time1172910
-Node: Extension Sample API Tests1174662
-Node: gawkextlib1175154
-Node: Extension summary1178072
-Node: Extension Exercises1181774
-Node: Language History1183016
-Node: V7/SVR3.11184672
-Node: SVR41186824
-Node: POSIX1188258
-Node: BTL1189639
-Node: POSIX/GNU1190368
-Node: Feature History1196146
-Node: Common Extensions1212465
-Node: Ranges and Locales1213748
-Ref: Ranges and Locales-Footnote-11218364
-Ref: Ranges and Locales-Footnote-21218391
-Ref: Ranges and Locales-Footnote-31218626
-Node: Contributors1218849
-Node: History summary1224846
-Node: Installation1226226
-Node: Gawk Distribution1227170
-Node: Getting1227654
-Node: Extracting1228617
-Node: Distribution contents1230255
-Node: Unix Installation1236735
-Node: Quick Installation1237417
-Node: Shell Startup Files1239831
-Node: Additional Configuration Options1240920
-Node: Configuration Philosophy1243235
-Node: Non-Unix Installation1245604
-Node: PC Installation1246064
-Node: PC Binary Installation1246902
-Node: PC Compiling1247337
-Node: PC Using1248454
-Node: Cygwin1252007
-Node: MSYS1253231
-Node: VMS Installation1253833
-Node: VMS Compilation1254624
-Ref: VMS Compilation-Footnote-11255853
-Node: VMS Dynamic Extensions1255911
-Node: VMS Installation Details1257596
-Node: VMS Running1259849
-Node: VMS GNV1264128
-Node: VMS Old Gawk1264863
-Node: Bugs1265334
-Node: Bug address1265997
-Node: Usenet1268979
-Node: Maintainers1269983
-Node: Other Versions1271168
-Node: Installation summary1279033
-Node: Notes1280242
-Node: Compatibility Mode1281036
-Node: Additions1281818
-Node: Accessing The Source1282743
-Node: Adding Code1284180
-Node: New Ports1290399
-Node: Derived Files1294774
-Ref: Derived Files-Footnote-11300434
-Ref: Derived Files-Footnote-21300469
-Ref: Derived Files-Footnote-31301067
-Node: Future Extensions1301181
-Node: Implementation Limitations1301839
-Node: Extension Design1303049
-Node: Old Extension Problems1304193
-Ref: Old Extension Problems-Footnote-11305711
-Node: Extension New Mechanism Goals1305768
-Ref: Extension New Mechanism Goals-Footnote-11309132
-Node: Extension Other Design Decisions1309321
-Node: Extension Future Growth1311434
-Node: Notes summary1312040
-Node: Basic Concepts1313198
-Node: Basic High Level1313879
-Ref: figure-general-flow1314161
-Ref: figure-process-flow1314846
-Ref: Basic High Level-Footnote-11318147
-Node: Basic Data Typing1318332
-Node: Glossary1321660
-Node: Copying1353545
-Node: GNU Free Documentation License1391088
-Node: Index1416208
+Node: Numeric Functions545508
+Ref: Numeric Functions-Footnote-1549535
+Ref: Numeric Functions-Footnote-2550183
+Ref: Numeric Functions-Footnote-3550231
+Node: String Functions550503
+Ref: String Functions-Footnote-1574644
+Ref: String Functions-Footnote-2574772
+Ref: String Functions-Footnote-3575020
+Node: Gory Details575107
+Ref: table-sub-escapes576898
+Ref: table-sub-proposed578417
+Ref: table-posix-sub579780
+Ref: table-gensub-escapes581321
+Ref: Gory Details-Footnote-1582144
+Node: I/O Functions582298
+Ref: table-system-return-values588752
+Ref: I/O Functions-Footnote-1590832
+Ref: I/O Functions-Footnote-2590980
+Node: Time Functions591100
+Ref: Time Functions-Footnote-1601771
+Ref: Time Functions-Footnote-2601839
+Ref: Time Functions-Footnote-3601997
+Ref: Time Functions-Footnote-4602108
+Ref: Time Functions-Footnote-5602220
+Ref: Time Functions-Footnote-6602447
+Node: Bitwise Functions602713
+Ref: table-bitwise-ops603307
+Ref: Bitwise Functions-Footnote-1609370
+Ref: Bitwise Functions-Footnote-2609543
+Node: Type Functions609734
+Node: I18N Functions612681
+Node: User-defined614332
+Node: Definition Syntax615144
+Ref: Definition Syntax-Footnote-1620838
+Node: Function Example620909
+Ref: Function Example-Footnote-1623831
+Node: Function Calling623853
+Node: Calling A Function624441
+Node: Variable Scope625399
+Node: Pass By Value/Reference628393
+Node: Function Caveats631037
+Ref: Function Caveats-Footnote-1633084
+Node: Return Statement633204
+Node: Dynamic Typing636183
+Node: Indirect Calls637113
+Ref: Indirect Calls-Footnote-1647368
+Node: Functions Summary647496
+Node: Library Functions650201
+Ref: Library Functions-Footnote-1653808
+Ref: Library Functions-Footnote-2653951
+Node: Library Names654122
+Ref: Library Names-Footnote-1657789
+Ref: Library Names-Footnote-2658012
+Node: General Functions658098
+Node: Strtonum Function659201
+Node: Assert Function662223
+Node: Round Function665549
+Node: Cliff Random Function667089
+Node: Ordinal Functions668105
+Ref: Ordinal Functions-Footnote-1671168
+Ref: Ordinal Functions-Footnote-2671420
+Node: Join Function671630
+Ref: Join Function-Footnote-1673400
+Node: Getlocaltime Function673600
+Node: Readfile Function677342
+Node: Shell Quoting679319
+Node: Data File Management680720
+Node: Filetrans Function681352
+Node: Rewind Function685448
+Node: File Checking687357
+Ref: File Checking-Footnote-1688691
+Node: Empty Files688892
+Node: Ignoring Assigns690871
+Node: Getopt Function692421
+Ref: Getopt Function-Footnote-1707632
+Node: Passwd Functions707832
+Ref: Passwd Functions-Footnote-1716671
+Node: Group Functions716759
+Ref: Group Functions-Footnote-1724657
+Node: Walking Arrays724864
+Node: Library Functions Summary727872
+Node: Library Exercises729278
+Node: Sample Programs729743
+Node: Running Examples730513
+Node: Clones731241
+Node: Cut Program732465
+Node: Egrep Program742605
+Node: Id Program751606
+Node: Split Program761553
+Ref: Split Program-Footnote-1771443
+Node: Tee Program771616
+Node: Uniq Program774406
+Node: Wc Program781994
+Node: Bytes vs. Characters782381
+Node: Using extensions783929
+Node: wc program784683
+Node: Miscellaneous Programs789548
+Node: Dupword Program790761
+Node: Alarm Program792791
+Node: Translate Program797646
+Ref: Translate Program-Footnote-1802211
+Node: Labels Program802481
+Ref: Labels Program-Footnote-1805832
+Node: Word Sorting805916
+Node: History Sorting809988
+Node: Extract Program812213
+Node: Simple Sed820267
+Node: Igawk Program823341
+Ref: Igawk Program-Footnote-1837672
+Ref: Igawk Program-Footnote-2837874
+Ref: Igawk Program-Footnote-3837996
+Node: Anagram Program838111
+Node: Signature Program841173
+Node: Programs Summary842420
+Node: Programs Exercises843634
+Ref: Programs Exercises-Footnote-1847764
+Node: Advanced Features847850
+Node: Nondecimal Data849974
+Node: Boolean Typed Values851572
+Node: Array Sorting853580
+Node: Controlling Array Traversal854285
+Ref: Controlling Array Traversal-Footnote-1862653
+Node: Array Sorting Functions862771
+Ref: Array Sorting Functions-Footnote-1867862
+Node: Two-way I/O868058
+Ref: Two-way I/O-Footnote-1875779
+Ref: Two-way I/O-Footnote-2875966
+Node: TCP/IP Networking876048
+Node: Profiling879166
+Node: Extension Philosophy888475
+Node: Advanced Features Summary889954
+Node: Internationalization891969
+Node: I18N and L10N893449
+Node: Explaining gettext894136
+Ref: Explaining gettext-Footnote-1900028
+Ref: Explaining gettext-Footnote-2900213
+Node: Programmer i18n900378
+Ref: Programmer i18n-Footnote-1905327
+Node: Translator i18n905376
+Node: String Extraction906170
+Ref: String Extraction-Footnote-1907302
+Node: Printf Ordering907388
+Ref: Printf Ordering-Footnote-1910174
+Node: I18N Portability910238
+Ref: I18N Portability-Footnote-1912694
+Node: I18N Example912757
+Ref: I18N Example-Footnote-1916032
+Ref: I18N Example-Footnote-2916105
+Node: Gawk I18N916214
+Node: I18N Summary916863
+Node: Debugger918204
+Node: Debugging919204
+Node: Debugging Concepts919645
+Node: Debugging Terms921454
+Node: Awk Debugging924029
+Ref: Awk Debugging-Footnote-1924974
+Node: Sample Debugging Session925106
+Node: Debugger Invocation925640
+Node: Finding The Bug927026
+Node: List of Debugger Commands933500
+Node: Breakpoint Control934833
+Node: Debugger Execution Control938527
+Node: Viewing And Changing Data941889
+Node: Execution Stack945430
+Node: Debugger Info947067
+Node: Miscellaneous Debugger Commands951138
+Node: Readline Support956200
+Node: Limitations957096
+Node: Debugging Summary959650
+Node: Namespaces960929
+Node: Global Namespace962040
+Node: Qualified Names963438
+Node: Default Namespace964437
+Node: Changing The Namespace965178
+Node: Naming Rules966792
+Node: Internal Name Management968640
+Node: Namespace Example969682
+Node: Namespace And Features972244
+Node: Namespace Summary973679
+Node: Arbitrary Precision Arithmetic975156
+Node: Computer Arithmetic976643
+Ref: table-numeric-ranges980409
+Ref: table-floating-point-ranges980902
+Ref: Computer Arithmetic-Footnote-1981560
+Node: Math Definitions981617
+Ref: table-ieee-formats984593
+Node: MPFR features985160
+Node: FP Math Caution986878
+Ref: FP Math Caution-Footnote-1987950
+Node: Inexactness of computations988319
+Node: Inexact representation989350
+Node: Comparing FP Values990710
+Node: Errors accumulate991951
+Node: Strange values993407
+Ref: Strange values-Footnote-1995995
+Node: Getting Accuracy996100
+Node: Try To Round998810
+Node: Setting precision999709
+Ref: table-predefined-precision-strings1000406
+Node: Setting the rounding mode1002236
+Ref: table-gawk-rounding-modes1002610
+Ref: Setting the rounding mode-Footnote-11006541
+Node: Arbitrary Precision Integers1006720
+Ref: Arbitrary Precision Integers-Footnote-11009895
+Node: Checking for MPFR1010044
+Node: POSIX Floating Point Problems1011518
+Ref: POSIX Floating Point Problems-Footnote-11015803
+Node: Floating point summary1015841
+Node: Dynamic Extensions1018031
+Node: Extension Intro1019584
+Node: Plugin License1020850
+Node: Extension Mechanism Outline1021647
+Ref: figure-load-extension1022086
+Ref: figure-register-new-function1023651
+Ref: figure-call-new-function1024743
+Node: Extension API Description1026805
+Node: Extension API Functions Introduction1028518
+Ref: table-api-std-headers1030354
+Node: General Data Types1034603
+Ref: General Data Types-Footnote-11043309
+Node: Memory Allocation Functions1043608
+Ref: Memory Allocation Functions-Footnote-11048109
+Node: Constructor Functions1048208
+Node: API Ownership of MPFR and GMP Values1051861
+Node: Registration Functions1053174
+Node: Extension Functions1053874
+Node: Exit Callback Functions1059196
+Node: Extension Version String1060446
+Node: Input Parsers1061109
+Node: Output Wrappers1073830
+Node: Two-way processors1078342
+Node: Printing Messages1080607
+Ref: Printing Messages-Footnote-11081778
+Node: Updating ERRNO1081931
+Node: Requesting Values1082670
+Ref: table-value-types-returned1083407
+Node: Accessing Parameters1084515
+Node: Symbol Table Access1085752
+Node: Symbol table by name1086264
+Ref: Symbol table by name-Footnote-11089288
+Node: Symbol table by cookie1089416
+Ref: Symbol table by cookie-Footnote-11093601
+Node: Cached values1093665
+Ref: Cached values-Footnote-11097201
+Node: Array Manipulation1097354
+Ref: Array Manipulation-Footnote-11098445
+Node: Array Data Types1098482
+Ref: Array Data Types-Footnote-11101140
+Node: Array Functions1101232
+Node: Flattening Arrays1105730
+Node: Creating Arrays1112706
+Node: Redirection API1117473
+Node: Extension API Variables1120306
+Node: Extension Versioning1121017
+Ref: gawk-api-version1121446
+Node: Extension GMP/MPFR Versioning1123177
+Node: Extension API Informational Variables1124805
+Node: Extension API Boilerplate1125878
+Node: Changes from API V11129852
+Node: Finding Extensions1131424
+Node: Extension Example1131983
+Node: Internal File Description1132781
+Node: Internal File Ops1136861
+Ref: Internal File Ops-Footnote-11148211
+Node: Using Internal File Ops1148351
+Ref: Using Internal File Ops-Footnote-11150734
+Node: Extension Samples1151008
+Node: Extension Sample File Functions1152537
+Node: Extension Sample Fnmatch1160186
+Node: Extension Sample Fork1161673
+Node: Extension Sample Inplace1162891
+Node: Extension Sample Ord1166517
+Node: Extension Sample Readdir1167353
+Ref: table-readdir-file-types1168242
+Node: Extension Sample Revout1169309
+Node: Extension Sample Rev2way1169898
+Node: Extension Sample Read write array1170638
+Node: Extension Sample Readfile1172580
+Node: Extension Sample Time1173675
+Node: Extension Sample API Tests1175427
+Node: gawkextlib1175919
+Node: Extension summary1178837
+Node: Extension Exercises1182539
+Node: Language History1183781
+Node: V7/SVR3.11185437
+Node: SVR41187589
+Node: POSIX1189023
+Node: BTL1190404
+Node: POSIX/GNU1191133
+Node: Feature History1196911
+Node: Common Extensions1213230
+Node: Ranges and Locales1214513
+Ref: Ranges and Locales-Footnote-11219129
+Ref: Ranges and Locales-Footnote-21219156
+Ref: Ranges and Locales-Footnote-31219391
+Node: Contributors1219614
+Node: History summary1225611
+Node: Installation1226991
+Node: Gawk Distribution1227935
+Node: Getting1228419
+Node: Extracting1229382
+Node: Distribution contents1231020
+Node: Unix Installation1237500
+Node: Quick Installation1238182
+Node: Shell Startup Files1240596
+Node: Additional Configuration Options1241685
+Node: Configuration Philosophy1244000
+Node: Non-Unix Installation1246369
+Node: PC Installation1246829
+Node: PC Binary Installation1247667
+Node: PC Compiling1248102
+Node: PC Using1249219
+Node: Cygwin1252772
+Node: MSYS1253996
+Node: VMS Installation1254598
+Node: VMS Compilation1255389
+Ref: VMS Compilation-Footnote-11256618
+Node: VMS Dynamic Extensions1256676
+Node: VMS Installation Details1258361
+Node: VMS Running1260614
+Node: VMS GNV1264893
+Node: VMS Old Gawk1265628
+Node: Bugs1266099
+Node: Bug address1266762
+Node: Usenet1269744
+Node: Maintainers1270748
+Node: Other Versions1271933
+Node: Installation summary1279798
+Node: Notes1281007
+Node: Compatibility Mode1281801
+Node: Additions1282583
+Node: Accessing The Source1283508
+Node: Adding Code1284945
+Node: New Ports1291164
+Node: Derived Files1295539
+Ref: Derived Files-Footnote-11301199
+Ref: Derived Files-Footnote-21301234
+Ref: Derived Files-Footnote-31301832
+Node: Future Extensions1301946
+Node: Implementation Limitations1302604
+Node: Extension Design1303814
+Node: Old Extension Problems1304958
+Ref: Old Extension Problems-Footnote-11306476
+Node: Extension New Mechanism Goals1306533
+Ref: Extension New Mechanism Goals-Footnote-11309897
+Node: Extension Other Design Decisions1310086
+Node: Extension Future Growth1312199
+Node: Notes summary1312805
+Node: Basic Concepts1313963
+Node: Basic High Level1314644
+Ref: figure-general-flow1314926
+Ref: figure-process-flow1315611
+Ref: Basic High Level-Footnote-11318912
+Node: Basic Data Typing1319097
+Node: Glossary1322425
+Node: Copying1354310
+Node: GNU Free Documentation License1391853
+Node: Index1416973

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 280b3168..6a7feaaa 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -18385,15 +18385,18 @@ two arguments 11 and 10.
@subsection Generating Boolean Values
@cindex boolean function
-This functions is specific to @command{gawk}. It is not
+This function is specific to @command{gawk}. It is not
available in compatibility mode (@pxref{Options}):
@c @asis for docbook
@table @asis
@item @code{bool(@var{expression})}
@cindexgawkfunc{bool}
-
-blah blah
+Return a Boolean-typed value based on the regular Boolean value
+of @var{expression}. Boolean ``true'' values have numeric value one
+and string value @code{"TRUE"}. Boolean ``false'' values have numeric
+zero and string value @code{"FALSE"}. This is discussed in more
+detail in @ref{Boolean Typed Values}.
@end table
@node Numeric Functions
@@ -20912,6 +20915,9 @@ Return one of the following strings, depending upon the type of @var{x}:
@item "array"
@var{x} is an array.
+@item "bool"
+@var{x} is a Boolean typed value (@pxref{Boolean Typed Values}).
+
@item "regexp"
@var{x} is a strongly typed regexp (@pxref{Strong Regexp Constants}).
@@ -29475,19 +29481,19 @@ This option may disappear in a future version of @command{gawk}.
@node Boolean Typed Values
@section Boolean Typed Values
-This @value{SECTION} describes an advanced, @command{gawk}-specific extension.
-
Scalar values in @command{awk} are either numbers or strings.
-@command{gawk} also supports values of type @code{regexp} (FIXME pxref).
+@command{gawk} also supports values of type @code{regexp}
+(@pxref{Strong Regexp Constants}).
-As seen in FIXME @@ref@{@} here, Boolean values in @command{awk} don't have a separate
-type: a value counts as ``true'' if it is nonzero or non-null, and as
-``false'' otherwise.
+As described in @ref{Truth Values}, Boolean values in @command{awk}
+don't have a separate type: a value counts as ``true'' if it is nonzero
+or non-null, and as ``false'' otherwise.
When interchanging data with languages that do have a real Boolean type,
using a standard format such as JSON or XML, the lack of a true Boolean
-type in @command{awk} is problematic. (FIXME: xref to gawkextlib json
-extension)
+type in @command{awk} is problematic.
+(See, for example, the @code{json} extension provided by
+@uref{https://sourceforge.net/projects/gawkextlib, the @code{gawkextlib} project}.)
It's easy to import Boolean data into @command{awk}, but then the fact
that it was originally Boolean is lost. Exporting data is even harder;
@@ -29497,16 +29503,22 @@ To solve this problem, @command{gawk} provides a function named @code{bool()}.
It takes one argument, which is any @command{awk} expression, and it
returns a value of Boolean type.
-The returned values are different than
-normal @command{awk} values. When treated as numbers, they are either
-one or zero, depending upon the truth value of the expression passed
-in the call. When treated as strings, they are either @code{"TRUE"}
-or @code{"FALSE"}, again depending upon the truth value of the expression passed
-in the call. The value for ``false'' is thus unusual; it is zero numerically,
-but not empty when treated as a string.
-
-The @code{typeof()} function (FIXME pxref here) returns @code{"bool"}
-for these values.
+The returned values are different than normal @command{awk} values. When
+treated as numbers, they are either one or zero, depending upon the truth
+value of the original expression passed in the call to @code{bool()}. When
+treated as strings, they are either @code{"TRUE"} or @code{"FALSE"},
+again depending upon the truth value of the expression passed in the
+call to @code{bool()}. The value for ``false'' is thus unusual; it is
+zero numerically, but not empty when treated as a string.
+
+The @code{typeof()} function (@pxref{Type Functions}) returns
+@code{"bool"} for these values.
+
+While it would have been possible to add two new built-in variables
+of Boolean type named @code{TRUE} and @code{FALSE}, doing so would
+undoubtedly have broken many existing @command{awk} programs. Instead,
+having a ``generator'' function that creates Boolean values gives
+flexibility, without breaking any existing code.
@node Array Sorting
@section Controlling Array Traversal and Array Sorting
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 6937cec6..ae46956d 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -17526,15 +17526,18 @@ two arguments 11 and 10.
@subsection Generating Boolean Values
@cindex boolean function
-This functions is specific to @command{gawk}. It is not
+This function is specific to @command{gawk}. It is not
available in compatibility mode (@pxref{Options}):
@c @asis for docbook
@table @asis
@item @code{bool(@var{expression})}
@cindexgawkfunc{bool}
-
-blah blah
+Return a Boolean-typed value based on the regular Boolean value
+of @var{expression}. Boolean ``true'' values have numeric value one
+and string value @code{"TRUE"}. Boolean ``false'' values have numeric
+zero and string value @code{"FALSE"}. This is discussed in more
+detail in @ref{Boolean Typed Values}.
@end table
@node Numeric Functions
@@ -19824,6 +19827,9 @@ Return one of the following strings, depending upon the type of @var{x}:
@item "array"
@var{x} is an array.
+@item "bool"
+@var{x} is a Boolean typed value (@pxref{Boolean Typed Values}).
+
@item "regexp"
@var{x} is a strongly typed regexp (@pxref{Strong Regexp Constants}).
@@ -28357,19 +28363,19 @@ This option may disappear in a future version of @command{gawk}.
@node Boolean Typed Values
@section Boolean Typed Values
-This @value{SECTION} describes an advanced, @command{gawk}-specific extension.
-
Scalar values in @command{awk} are either numbers or strings.
-@command{gawk} also supports values of type @code{regexp} (FIXME pxref).
+@command{gawk} also supports values of type @code{regexp}
+(@pxref{Strong Regexp Constants}).
-As seen in FIXME @@ref@{@} here, Boolean values in @command{awk} don't have a separate
-type: a value counts as ``true'' if it is nonzero or non-null, and as
-``false'' otherwise.
+As described in @ref{Truth Values}, Boolean values in @command{awk}
+don't have a separate type: a value counts as ``true'' if it is nonzero
+or non-null, and as ``false'' otherwise.
When interchanging data with languages that do have a real Boolean type,
using a standard format such as JSON or XML, the lack of a true Boolean
-type in @command{awk} is problematic. (FIXME: xref to gawkextlib json
-extension)
+type in @command{awk} is problematic.
+(See, for example, the @code{json} extension provided by
+@uref{https://sourceforge.net/projects/gawkextlib, the @code{gawkextlib} project}.)
It's easy to import Boolean data into @command{awk}, but then the fact
that it was originally Boolean is lost. Exporting data is even harder;
@@ -28379,16 +28385,22 @@ To solve this problem, @command{gawk} provides a function named @code{bool()}.
It takes one argument, which is any @command{awk} expression, and it
returns a value of Boolean type.
-The returned values are different than
-normal @command{awk} values. When treated as numbers, they are either
-one or zero, depending upon the truth value of the expression passed
-in the call. When treated as strings, they are either @code{"TRUE"}
-or @code{"FALSE"}, again depending upon the truth value of the expression passed
-in the call. The value for ``false'' is thus unusual; it is zero numerically,
-but not empty when treated as a string.
-
-The @code{typeof()} function (FIXME pxref here) returns @code{"bool"}
-for these values.
+The returned values are different than normal @command{awk} values. When
+treated as numbers, they are either one or zero, depending upon the truth
+value of the original expression passed in the call to @code{bool()}. When
+treated as strings, they are either @code{"TRUE"} or @code{"FALSE"},
+again depending upon the truth value of the expression passed in the
+call to @code{bool()}. The value for ``false'' is thus unusual; it is
+zero numerically, but not empty when treated as a string.
+
+The @code{typeof()} function (@pxref{Type Functions}) returns
+@code{"bool"} for these values.
+
+While it would have been possible to add two new built-in variables
+of Boolean type named @code{TRUE} and @code{FALSE}, doing so would
+undoubtedly have broken many existing @command{awk} programs. Instead,
+having a ``generator'' function that creates Boolean values gives
+flexibility, without breaking any existing code.
@node Array Sorting
@section Controlling Array Traversal and Array Sorting