aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-12-26 20:47:32 +0200
committerArnold D. Robbins <arnold@skeeve.com>2020-12-26 20:47:32 +0200
commitf7a69176569a76daab7b772157a76ddb8f85e046 (patch)
treeb02f311383b72b3b6c156343afd3b9dad8c61602
parentdaaaab1ae680cbaf6575741c314a19ae9d57ef8f (diff)
downloadegawk-f7a69176569a76daab7b772157a76ddb8f85e046.tar.gz
egawk-f7a69176569a76daab7b772157a76ddb8f85e046.tar.bz2
egawk-f7a69176569a76daab7b772157a76ddb8f85e046.zip
Doc updates.
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gawk.info1009
-rw-r--r--doc/gawk.texi11
-rw-r--r--doc/gawktexi.in11
4 files changed, 539 insertions, 497 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 39d32ce3..b8955456 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2020-12-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (More CSV): Add indexing and reference to
+ Manuel Collado's CSVMODE library.
+
2020-12-07 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in (awk split records): Remove the bit about POSIX
diff --git a/doc/gawk.info b/doc/gawk.info
index 7a01d25a..84aaf435 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -5662,6 +5662,11 @@ And here is his test program:
-| <p,,s>
-| NF = 3 <p><><s>
+ In general, using 'FPAT' to do your own CSV parsing is like having a
+bed with a blanket that's not quite big enough. There's always a corner
+that isn't covered. We recommend, instead, that you use Manuel
+Collado's 'CSVMODE' library for 'gawk' (http://mcollado.z15.es/xgawk/).
+

File: gawk.info, Node: Testing field creation, Next: Multiple Line, Prev: Splitting By Content, Up: Reading Files
@@ -35339,6 +35344,7 @@ Index
* Close, Diane <1>: Contributors. (line 21)
* Collado, Manuel: Acknowledgments. (line 60)
* Collado, Manuel <1>: More CSV. (line 6)
+* Collado, Manuel <2>: More CSV. (line 52)
* collating elements: Bracket Expressions. (line 90)
* collating symbols: Bracket Expressions. (line 97)
* Colombo, Antonio: Acknowledgments. (line 60)
@@ -35348,6 +35354,10 @@ Index
* columns, aligning: Print Examples. (line 69)
* columns, cutting: Cut Program. (line 6)
* comma (,), in range patterns: Ranges. (line 6)
+* Comma separated values (CSV) data, parsing with FPAT: Splitting By Content.
+ (line 19)
+* Comma separated values (CSV) data, parsing with FPAT library: More CSV.
+ (line 52)
* command completion, in debugger: Readline Support. (line 6)
* command line, formats: Running gawk. (line 12)
* command line, option -f: Long. (line 12)
@@ -35463,6 +35473,11 @@ Index
* csh utility: Statements/Lines. (line 45)
* csh utility, POSIXLY_CORRECT environment variable: Options. (line 406)
* csh utility, |& operator, comparison with: Two-way I/O. (line 27)
+* CSV (comma separated values) data, parsing with FPAT: Splitting By Content.
+ (line 19)
+* CSV (comma separated values) data, parsing with CSVMODE library: More CSV.
+ (line 52)
+* CSVMODE library for gawk: More CSV. (line 52)
* ctime() user-defined function: Function Example. (line 74)
* Curreli, Marco: Contributors. (line 147)
* currency symbols, localization: Explaining gettext. (line 104)
@@ -38071,503 +38086,503 @@ Node: Fields with fixed data246170
Node: Splitting By Content247688
Ref: Splitting By Content-Footnote-1251471
Node: More CSV251634
-Node: Testing field creation252944
-Node: Multiple Line254569
-Node: Getline260846
-Node: Plain Getline263315
-Node: Getline/Variable265888
-Node: Getline/File267039
-Node: Getline/Variable/File268427
-Ref: Getline/Variable/File-Footnote-1270032
-Node: Getline/Pipe270120
-Node: Getline/Variable/Pipe272824
-Node: Getline/Coprocess273959
-Node: Getline/Variable/Coprocess275226
-Node: Getline Notes275968
-Node: Getline Summary278765
-Ref: table-getline-variants279189
-Node: Read Timeout279937
-Ref: Read Timeout-Footnote-1283843
-Node: Retrying Input283901
-Node: Command-line directories285100
-Node: Input Summary286006
-Node: Input Exercises289178
-Node: Printing289612
-Node: Print291446
-Node: Print Examples292903
-Node: Output Separators295683
-Node: OFMT297700
-Node: Printf299056
-Node: Basic Printf299841
-Node: Control Letters301415
-Node: Format Modifiers306579
-Node: Printf Examples312594
-Node: Redirection315080
-Node: Special FD321921
-Ref: Special FD-Footnote-1325089
-Node: Special Files325163
-Node: Other Inherited Files325780
-Node: Special Network326781
-Node: Special Caveats327641
-Node: Close Files And Pipes328590
-Ref: table-close-pipe-return-values335497
-Ref: Close Files And Pipes-Footnote-1336310
-Ref: Close Files And Pipes-Footnote-2336458
-Node: Nonfatal336610
-Node: Output Summary338948
-Node: Output Exercises340170
-Node: Expressions340849
-Node: Values342037
-Node: Constants342715
-Node: Scalar Constants343406
-Ref: Scalar Constants-Footnote-1345916
-Node: Nondecimal-numbers346166
-Node: Regexp Constants349167
-Node: Using Constant Regexps349693
-Node: Standard Regexp Constants350315
-Node: Strong Regexp Constants353503
-Node: Variables356515
-Node: Using Variables357172
-Node: Assignment Options359082
-Node: Conversion361553
-Node: Strings And Numbers362077
-Ref: Strings And Numbers-Footnote-1365140
-Node: Locale influences conversions365249
-Ref: table-locale-affects368007
-Node: All Operators368625
-Node: Arithmetic Ops369254
-Node: Concatenation371970
-Ref: Concatenation-Footnote-1374817
-Node: Assignment Ops374924
-Ref: table-assign-ops379915
-Node: Increment Ops381228
-Node: Truth Values and Conditions384688
-Node: Truth Values385762
-Node: Typing and Comparison386810
-Node: Variable Typing387630
-Ref: Variable Typing-Footnote-1394093
-Ref: Variable Typing-Footnote-2394165
-Node: Comparison Operators394242
-Ref: table-relational-ops394661
-Node: POSIX String Comparison398156
-Ref: POSIX String Comparison-Footnote-1399851
-Ref: POSIX String Comparison-Footnote-2399990
-Node: Boolean Ops400074
-Ref: Boolean Ops-Footnote-1404556
-Node: Conditional Exp404648
-Node: Function Calls406384
-Node: Precedence410261
-Node: Locales413920
-Node: Expressions Summary415552
-Node: Patterns and Actions418125
-Node: Pattern Overview419245
-Node: Regexp Patterns420922
-Node: Expression Patterns421464
-Node: Ranges425245
-Node: BEGIN/END428353
-Node: Using BEGIN/END429114
-Ref: Using BEGIN/END-Footnote-1431868
-Node: I/O And BEGIN/END431974
-Node: BEGINFILE/ENDFILE434287
-Node: Empty437518
-Node: Using Shell Variables437835
-Node: Action Overview440109
-Node: Statements442434
-Node: If Statement444282
-Node: While Statement445777
-Node: Do Statement447805
-Node: For Statement448953
-Node: Switch Statement452124
-Node: Break Statement454565
-Node: Continue Statement456657
-Node: Next Statement458484
-Node: Nextfile Statement460867
-Node: Exit Statement463556
-Node: Built-in Variables465959
-Node: User-modified467092
-Node: Auto-set474859
-Ref: Auto-set-Footnote-1491666
-Ref: Auto-set-Footnote-2491872
-Node: ARGC and ARGV491928
-Node: Pattern Action Summary496141
-Node: Arrays498571
-Node: Array Basics499900
-Node: Array Intro500744
-Ref: figure-array-elements502719
-Ref: Array Intro-Footnote-1505423
-Node: Reference to Elements505551
-Node: Assigning Elements508015
-Node: Array Example508506
-Node: Scanning an Array510265
-Node: Controlling Scanning513287
-Ref: Controlling Scanning-Footnote-1519743
-Node: Numeric Array Subscripts520059
-Node: Uninitialized Subscripts522243
-Node: Delete523862
-Ref: Delete-Footnote-1526614
-Node: Multidimensional526671
-Node: Multiscanning529766
-Node: Arrays of Arrays531357
-Node: Arrays Summary536125
-Node: Functions538218
-Node: Built-in539256
-Node: Calling Built-in540337
-Node: Numeric Functions542333
-Ref: Numeric Functions-Footnote-1546361
-Ref: Numeric Functions-Footnote-2547009
-Ref: Numeric Functions-Footnote-3547057
-Node: String Functions547329
-Ref: String Functions-Footnote-1571470
-Ref: String Functions-Footnote-2571598
-Ref: String Functions-Footnote-3571846
-Node: Gory Details571933
-Ref: table-sub-escapes573724
-Ref: table-sub-proposed575243
-Ref: table-posix-sub576606
-Ref: table-gensub-escapes578147
-Ref: Gory Details-Footnote-1578970
-Node: I/O Functions579124
-Ref: table-system-return-values585578
-Ref: I/O Functions-Footnote-1587658
-Ref: I/O Functions-Footnote-2587806
-Node: Time Functions587926
-Ref: Time Functions-Footnote-1598597
-Ref: Time Functions-Footnote-2598665
-Ref: Time Functions-Footnote-3598823
-Ref: Time Functions-Footnote-4598934
-Ref: Time Functions-Footnote-5599046
-Ref: Time Functions-Footnote-6599273
-Node: Bitwise Functions599539
-Ref: table-bitwise-ops600133
-Ref: Bitwise Functions-Footnote-1606196
-Ref: Bitwise Functions-Footnote-2606369
-Node: Type Functions606560
-Node: I18N Functions609423
-Node: User-defined611074
-Node: Definition Syntax611886
-Ref: Definition Syntax-Footnote-1617580
-Node: Function Example617651
-Ref: Function Example-Footnote-1620573
-Node: Function Calling620595
-Node: Calling A Function621183
-Node: Variable Scope622141
-Node: Pass By Value/Reference625135
-Node: Function Caveats627779
-Ref: Function Caveats-Footnote-1629826
-Node: Return Statement629946
-Node: Dynamic Typing632925
-Node: Indirect Calls633855
-Ref: Indirect Calls-Footnote-1644107
-Node: Functions Summary644235
-Node: Library Functions646940
-Ref: Library Functions-Footnote-1650547
-Ref: Library Functions-Footnote-2650690
-Node: Library Names650861
-Ref: Library Names-Footnote-1654528
-Ref: Library Names-Footnote-2654751
-Node: General Functions654837
-Node: Strtonum Function655940
-Node: Assert Function658962
-Node: Round Function662288
-Node: Cliff Random Function663828
-Node: Ordinal Functions664844
-Ref: Ordinal Functions-Footnote-1667907
-Ref: Ordinal Functions-Footnote-2668159
-Node: Join Function668369
-Ref: Join Function-Footnote-1670139
-Node: Getlocaltime Function670339
-Node: Readfile Function674081
-Node: Shell Quoting676058
-Node: Data File Management677459
-Node: Filetrans Function678091
-Node: Rewind Function682187
-Node: File Checking684096
-Ref: File Checking-Footnote-1685430
-Node: Empty Files685631
-Node: Ignoring Assigns687610
-Node: Getopt Function689160
-Ref: Getopt Function-Footnote-1704371
-Node: Passwd Functions704571
-Ref: Passwd Functions-Footnote-1713410
-Node: Group Functions713498
-Ref: Group Functions-Footnote-1721396
-Node: Walking Arrays721603
-Node: Library Functions Summary724611
-Node: Library Exercises726017
-Node: Sample Programs726482
-Node: Running Examples727252
-Node: Clones727980
-Node: Cut Program729204
-Node: Egrep Program739344
-Node: Id Program748355
-Node: Split Program758302
-Ref: Split Program-Footnote-1768192
-Node: Tee Program768365
-Node: Uniq Program771155
-Node: Wc Program778743
-Node: Bytes vs. Characters779140
-Node: Using extensions780688
-Node: wc program781442
-Node: Miscellaneous Programs786307
-Node: Dupword Program787520
-Node: Alarm Program789550
-Node: Translate Program794405
-Ref: Translate Program-Footnote-1798970
-Node: Labels Program799240
-Ref: Labels Program-Footnote-1802591
-Node: Word Sorting802675
-Node: History Sorting806747
-Node: Extract Program808972
-Node: Simple Sed817026
-Node: Igawk Program820100
-Ref: Igawk Program-Footnote-1834431
-Ref: Igawk Program-Footnote-2834633
-Ref: Igawk Program-Footnote-3834755
-Node: Anagram Program834870
-Node: Signature Program837932
-Node: Programs Summary839179
-Node: Programs Exercises840393
-Ref: Programs Exercises-Footnote-1844523
-Node: Advanced Features844609
-Node: Nondecimal Data846676
-Node: Array Sorting848267
-Node: Controlling Array Traversal848967
-Ref: Controlling Array Traversal-Footnote-1857335
-Node: Array Sorting Functions857453
-Ref: Array Sorting Functions-Footnote-1862544
-Node: Two-way I/O862740
-Ref: Two-way I/O-Footnote-1870461
-Ref: Two-way I/O-Footnote-2870648
-Node: TCP/IP Networking870730
-Node: Profiling873848
-Node: Extension Philosophy883157
-Node: Advanced Features Summary884608
-Node: Internationalization886607
-Node: I18N and L10N888087
-Node: Explaining gettext888774
-Ref: Explaining gettext-Footnote-1894666
-Ref: Explaining gettext-Footnote-2894851
-Node: Programmer i18n895016
-Ref: Programmer i18n-Footnote-1899965
-Node: Translator i18n900014
-Node: String Extraction900808
-Ref: String Extraction-Footnote-1901940
-Node: Printf Ordering902026
-Ref: Printf Ordering-Footnote-1904812
-Node: I18N Portability904876
-Ref: I18N Portability-Footnote-1907332
-Node: I18N Example907395
-Ref: I18N Example-Footnote-1910670
-Ref: I18N Example-Footnote-2910743
-Node: Gawk I18N910852
-Node: I18N Summary911501
-Node: Debugger912842
-Node: Debugging913842
-Node: Debugging Concepts914283
-Node: Debugging Terms916092
-Node: Awk Debugging918667
-Ref: Awk Debugging-Footnote-1919612
-Node: Sample Debugging Session919744
-Node: Debugger Invocation920278
-Node: Finding The Bug921664
-Node: List of Debugger Commands928138
-Node: Breakpoint Control929471
-Node: Debugger Execution Control933165
-Node: Viewing And Changing Data936527
-Node: Execution Stack940068
-Node: Debugger Info941705
-Node: Miscellaneous Debugger Commands945776
-Node: Readline Support950838
-Node: Limitations951734
-Node: Debugging Summary954288
-Node: Namespaces955567
-Node: Global Namespace956678
-Node: Qualified Names958076
-Node: Default Namespace959075
-Node: Changing The Namespace959816
-Node: Naming Rules961430
-Node: Internal Name Management963278
-Node: Namespace Example964320
-Node: Namespace And Features966882
-Node: Namespace Summary968317
-Node: Arbitrary Precision Arithmetic969794
-Node: Computer Arithmetic971281
-Ref: table-numeric-ranges975047
-Ref: table-floating-point-ranges975540
-Ref: Computer Arithmetic-Footnote-1976198
-Node: Math Definitions976255
-Ref: table-ieee-formats979571
-Ref: Math Definitions-Footnote-1980174
-Node: MPFR features980279
-Node: FP Math Caution981997
-Ref: FP Math Caution-Footnote-1983069
-Node: Inexactness of computations983438
-Node: Inexact representation984398
-Node: Comparing FP Values985758
-Node: Errors accumulate986999
-Node: Getting Accuracy988432
-Node: Try To Round991142
-Node: Setting precision992041
-Ref: table-predefined-precision-strings992738
-Node: Setting the rounding mode994568
-Ref: table-gawk-rounding-modes994942
-Ref: Setting the rounding mode-Footnote-1998873
-Node: Arbitrary Precision Integers999052
-Ref: Arbitrary Precision Integers-Footnote-11002227
-Node: Checking for MPFR1002376
-Node: POSIX Floating Point Problems1003850
-Ref: POSIX Floating Point Problems-Footnote-11008135
-Node: Floating point summary1008173
-Node: Dynamic Extensions1010363
-Node: Extension Intro1011916
-Node: Plugin License1013182
-Node: Extension Mechanism Outline1013979
-Ref: figure-load-extension1014418
-Ref: figure-register-new-function1015983
-Ref: figure-call-new-function1017075
-Node: Extension API Description1019137
-Node: Extension API Functions Introduction1020850
-Ref: table-api-std-headers1022686
-Node: General Data Types1026935
-Ref: General Data Types-Footnote-11035565
-Node: Memory Allocation Functions1035864
-Ref: Memory Allocation Functions-Footnote-11040365
-Node: Constructor Functions1040464
-Node: API Ownership of MPFR and GMP Values1043930
-Node: Registration Functions1045243
-Node: Extension Functions1045943
-Node: Exit Callback Functions1051265
-Node: Extension Version String1052515
-Node: Input Parsers1053178
-Node: Output Wrappers1065899
-Node: Two-way processors1070411
-Node: Printing Messages1072676
-Ref: Printing Messages-Footnote-11073847
-Node: Updating ERRNO1074000
-Node: Requesting Values1074739
-Ref: table-value-types-returned1075476
-Node: Accessing Parameters1076412
-Node: Symbol Table Access1077649
-Node: Symbol table by name1078161
-Ref: Symbol table by name-Footnote-11081185
-Node: Symbol table by cookie1081313
-Ref: Symbol table by cookie-Footnote-11085498
-Node: Cached values1085562
-Ref: Cached values-Footnote-11089098
-Node: Array Manipulation1089251
-Ref: Array Manipulation-Footnote-11090342
-Node: Array Data Types1090379
-Ref: Array Data Types-Footnote-11093037
-Node: Array Functions1093129
-Node: Flattening Arrays1097627
-Node: Creating Arrays1104603
-Node: Redirection API1109370
-Node: Extension API Variables1112203
-Node: Extension Versioning1112914
-Ref: gawk-api-version1113343
-Node: Extension GMP/MPFR Versioning1115074
-Node: Extension API Informational Variables1116702
-Node: Extension API Boilerplate1117775
-Node: Changes from API V11121749
-Node: Finding Extensions1123321
-Node: Extension Example1123880
-Node: Internal File Description1124678
-Node: Internal File Ops1128758
-Ref: Internal File Ops-Footnote-11140108
-Node: Using Internal File Ops1140248
-Ref: Using Internal File Ops-Footnote-11142631
-Node: Extension Samples1142905
-Node: Extension Sample File Functions1144434
-Node: Extension Sample Fnmatch1152083
-Node: Extension Sample Fork1153570
-Node: Extension Sample Inplace1154788
-Node: Extension Sample Ord1158414
-Node: Extension Sample Readdir1159250
-Ref: table-readdir-file-types1160139
-Node: Extension Sample Revout1161206
-Node: Extension Sample Rev2way1161795
-Node: Extension Sample Read write array1162535
-Node: Extension Sample Readfile1164477
-Node: Extension Sample Time1165572
-Node: Extension Sample API Tests1167324
-Node: gawkextlib1167816
-Node: Extension summary1170734
-Node: Extension Exercises1174436
-Node: Language History1175678
-Node: V7/SVR3.11177334
-Node: SVR41179486
-Node: POSIX1180920
-Node: BTL1182301
-Node: POSIX/GNU1183030
-Node: Feature History1188808
-Node: Common Extensions1205127
-Node: Ranges and Locales1206410
-Ref: Ranges and Locales-Footnote-11211026
-Ref: Ranges and Locales-Footnote-21211053
-Ref: Ranges and Locales-Footnote-31211288
-Node: Contributors1211511
-Node: History summary1217508
-Node: Installation1218888
-Node: Gawk Distribution1219832
-Node: Getting1220316
-Node: Extracting1221279
-Node: Distribution contents1222917
-Node: Unix Installation1229397
-Node: Quick Installation1230079
-Node: Shell Startup Files1232493
-Node: Additional Configuration Options1233582
-Node: Configuration Philosophy1235897
-Node: Non-Unix Installation1238266
-Node: PC Installation1238726
-Node: PC Binary Installation1239564
-Node: PC Compiling1239999
-Node: PC Using1241116
-Node: Cygwin1244669
-Node: MSYS1245893
-Node: VMS Installation1246495
-Node: VMS Compilation1247286
-Ref: VMS Compilation-Footnote-11248515
-Node: VMS Dynamic Extensions1248573
-Node: VMS Installation Details1250258
-Node: VMS Running1252511
-Node: VMS GNV1256790
-Node: VMS Old Gawk1257525
-Node: Bugs1257996
-Node: Bug address1258659
-Node: Usenet1261641
-Node: Maintainers1262645
-Node: Other Versions1263830
-Node: Installation summary1270918
-Node: Notes1272127
-Node: Compatibility Mode1272921
-Node: Additions1273703
-Node: Accessing The Source1274628
-Node: Adding Code1276065
-Node: New Ports1282284
-Node: Derived Files1286659
-Ref: Derived Files-Footnote-11292319
-Ref: Derived Files-Footnote-21292354
-Ref: Derived Files-Footnote-31292952
-Node: Future Extensions1293066
-Node: Implementation Limitations1293724
-Node: Extension Design1294934
-Node: Old Extension Problems1296078
-Ref: Old Extension Problems-Footnote-11297596
-Node: Extension New Mechanism Goals1297653
-Ref: Extension New Mechanism Goals-Footnote-11301017
-Node: Extension Other Design Decisions1301206
-Node: Extension Future Growth1303319
-Node: Notes summary1303925
-Node: Basic Concepts1305083
-Node: Basic High Level1305764
-Ref: figure-general-flow1306046
-Ref: figure-process-flow1306731
-Ref: Basic High Level-Footnote-11310032
-Node: Basic Data Typing1310217
-Node: Glossary1313545
-Node: Copying1345430
-Node: GNU Free Documentation License1382973
-Node: Index1408093
+Node: Testing field creation253226
+Node: Multiple Line254851
+Node: Getline261128
+Node: Plain Getline263597
+Node: Getline/Variable266170
+Node: Getline/File267321
+Node: Getline/Variable/File268709
+Ref: Getline/Variable/File-Footnote-1270314
+Node: Getline/Pipe270402
+Node: Getline/Variable/Pipe273106
+Node: Getline/Coprocess274241
+Node: Getline/Variable/Coprocess275508
+Node: Getline Notes276250
+Node: Getline Summary279047
+Ref: table-getline-variants279471
+Node: Read Timeout280219
+Ref: Read Timeout-Footnote-1284125
+Node: Retrying Input284183
+Node: Command-line directories285382
+Node: Input Summary286288
+Node: Input Exercises289460
+Node: Printing289894
+Node: Print291728
+Node: Print Examples293185
+Node: Output Separators295965
+Node: OFMT297982
+Node: Printf299338
+Node: Basic Printf300123
+Node: Control Letters301697
+Node: Format Modifiers306861
+Node: Printf Examples312876
+Node: Redirection315362
+Node: Special FD322203
+Ref: Special FD-Footnote-1325371
+Node: Special Files325445
+Node: Other Inherited Files326062
+Node: Special Network327063
+Node: Special Caveats327923
+Node: Close Files And Pipes328872
+Ref: table-close-pipe-return-values335779
+Ref: Close Files And Pipes-Footnote-1336592
+Ref: Close Files And Pipes-Footnote-2336740
+Node: Nonfatal336892
+Node: Output Summary339230
+Node: Output Exercises340452
+Node: Expressions341131
+Node: Values342319
+Node: Constants342997
+Node: Scalar Constants343688
+Ref: Scalar Constants-Footnote-1346198
+Node: Nondecimal-numbers346448
+Node: Regexp Constants349449
+Node: Using Constant Regexps349975
+Node: Standard Regexp Constants350597
+Node: Strong Regexp Constants353785
+Node: Variables356797
+Node: Using Variables357454
+Node: Assignment Options359364
+Node: Conversion361835
+Node: Strings And Numbers362359
+Ref: Strings And Numbers-Footnote-1365422
+Node: Locale influences conversions365531
+Ref: table-locale-affects368289
+Node: All Operators368907
+Node: Arithmetic Ops369536
+Node: Concatenation372252
+Ref: Concatenation-Footnote-1375099
+Node: Assignment Ops375206
+Ref: table-assign-ops380197
+Node: Increment Ops381510
+Node: Truth Values and Conditions384970
+Node: Truth Values386044
+Node: Typing and Comparison387092
+Node: Variable Typing387912
+Ref: Variable Typing-Footnote-1394375
+Ref: Variable Typing-Footnote-2394447
+Node: Comparison Operators394524
+Ref: table-relational-ops394943
+Node: POSIX String Comparison398438
+Ref: POSIX String Comparison-Footnote-1400133
+Ref: POSIX String Comparison-Footnote-2400272
+Node: Boolean Ops400356
+Ref: Boolean Ops-Footnote-1404838
+Node: Conditional Exp404930
+Node: Function Calls406666
+Node: Precedence410543
+Node: Locales414202
+Node: Expressions Summary415834
+Node: Patterns and Actions418407
+Node: Pattern Overview419527
+Node: Regexp Patterns421204
+Node: Expression Patterns421746
+Node: Ranges425527
+Node: BEGIN/END428635
+Node: Using BEGIN/END429396
+Ref: Using BEGIN/END-Footnote-1432150
+Node: I/O And BEGIN/END432256
+Node: BEGINFILE/ENDFILE434569
+Node: Empty437800
+Node: Using Shell Variables438117
+Node: Action Overview440391
+Node: Statements442716
+Node: If Statement444564
+Node: While Statement446059
+Node: Do Statement448087
+Node: For Statement449235
+Node: Switch Statement452406
+Node: Break Statement454847
+Node: Continue Statement456939
+Node: Next Statement458766
+Node: Nextfile Statement461149
+Node: Exit Statement463838
+Node: Built-in Variables466241
+Node: User-modified467374
+Node: Auto-set475141
+Ref: Auto-set-Footnote-1491948
+Ref: Auto-set-Footnote-2492154
+Node: ARGC and ARGV492210
+Node: Pattern Action Summary496423
+Node: Arrays498853
+Node: Array Basics500182
+Node: Array Intro501026
+Ref: figure-array-elements503001
+Ref: Array Intro-Footnote-1505705
+Node: Reference to Elements505833
+Node: Assigning Elements508297
+Node: Array Example508788
+Node: Scanning an Array510547
+Node: Controlling Scanning513569
+Ref: Controlling Scanning-Footnote-1520025
+Node: Numeric Array Subscripts520341
+Node: Uninitialized Subscripts522525
+Node: Delete524144
+Ref: Delete-Footnote-1526896
+Node: Multidimensional526953
+Node: Multiscanning530048
+Node: Arrays of Arrays531639
+Node: Arrays Summary536407
+Node: Functions538500
+Node: Built-in539538
+Node: Calling Built-in540619
+Node: Numeric Functions542615
+Ref: Numeric Functions-Footnote-1546643
+Ref: Numeric Functions-Footnote-2547291
+Ref: Numeric Functions-Footnote-3547339
+Node: String Functions547611
+Ref: String Functions-Footnote-1571752
+Ref: String Functions-Footnote-2571880
+Ref: String Functions-Footnote-3572128
+Node: Gory Details572215
+Ref: table-sub-escapes574006
+Ref: table-sub-proposed575525
+Ref: table-posix-sub576888
+Ref: table-gensub-escapes578429
+Ref: Gory Details-Footnote-1579252
+Node: I/O Functions579406
+Ref: table-system-return-values585860
+Ref: I/O Functions-Footnote-1587940
+Ref: I/O Functions-Footnote-2588088
+Node: Time Functions588208
+Ref: Time Functions-Footnote-1598879
+Ref: Time Functions-Footnote-2598947
+Ref: Time Functions-Footnote-3599105
+Ref: Time Functions-Footnote-4599216
+Ref: Time Functions-Footnote-5599328
+Ref: Time Functions-Footnote-6599555
+Node: Bitwise Functions599821
+Ref: table-bitwise-ops600415
+Ref: Bitwise Functions-Footnote-1606478
+Ref: Bitwise Functions-Footnote-2606651
+Node: Type Functions606842
+Node: I18N Functions609705
+Node: User-defined611356
+Node: Definition Syntax612168
+Ref: Definition Syntax-Footnote-1617862
+Node: Function Example617933
+Ref: Function Example-Footnote-1620855
+Node: Function Calling620877
+Node: Calling A Function621465
+Node: Variable Scope622423
+Node: Pass By Value/Reference625417
+Node: Function Caveats628061
+Ref: Function Caveats-Footnote-1630108
+Node: Return Statement630228
+Node: Dynamic Typing633207
+Node: Indirect Calls634137
+Ref: Indirect Calls-Footnote-1644389
+Node: Functions Summary644517
+Node: Library Functions647222
+Ref: Library Functions-Footnote-1650829
+Ref: Library Functions-Footnote-2650972
+Node: Library Names651143
+Ref: Library Names-Footnote-1654810
+Ref: Library Names-Footnote-2655033
+Node: General Functions655119
+Node: Strtonum Function656222
+Node: Assert Function659244
+Node: Round Function662570
+Node: Cliff Random Function664110
+Node: Ordinal Functions665126
+Ref: Ordinal Functions-Footnote-1668189
+Ref: Ordinal Functions-Footnote-2668441
+Node: Join Function668651
+Ref: Join Function-Footnote-1670421
+Node: Getlocaltime Function670621
+Node: Readfile Function674363
+Node: Shell Quoting676340
+Node: Data File Management677741
+Node: Filetrans Function678373
+Node: Rewind Function682469
+Node: File Checking684378
+Ref: File Checking-Footnote-1685712
+Node: Empty Files685913
+Node: Ignoring Assigns687892
+Node: Getopt Function689442
+Ref: Getopt Function-Footnote-1704653
+Node: Passwd Functions704853
+Ref: Passwd Functions-Footnote-1713692
+Node: Group Functions713780
+Ref: Group Functions-Footnote-1721678
+Node: Walking Arrays721885
+Node: Library Functions Summary724893
+Node: Library Exercises726299
+Node: Sample Programs726764
+Node: Running Examples727534
+Node: Clones728262
+Node: Cut Program729486
+Node: Egrep Program739626
+Node: Id Program748637
+Node: Split Program758584
+Ref: Split Program-Footnote-1768474
+Node: Tee Program768647
+Node: Uniq Program771437
+Node: Wc Program779025
+Node: Bytes vs. Characters779422
+Node: Using extensions780970
+Node: wc program781724
+Node: Miscellaneous Programs786589
+Node: Dupword Program787802
+Node: Alarm Program789832
+Node: Translate Program794687
+Ref: Translate Program-Footnote-1799252
+Node: Labels Program799522
+Ref: Labels Program-Footnote-1802873
+Node: Word Sorting802957
+Node: History Sorting807029
+Node: Extract Program809254
+Node: Simple Sed817308
+Node: Igawk Program820382
+Ref: Igawk Program-Footnote-1834713
+Ref: Igawk Program-Footnote-2834915
+Ref: Igawk Program-Footnote-3835037
+Node: Anagram Program835152
+Node: Signature Program838214
+Node: Programs Summary839461
+Node: Programs Exercises840675
+Ref: Programs Exercises-Footnote-1844805
+Node: Advanced Features844891
+Node: Nondecimal Data846958
+Node: Array Sorting848549
+Node: Controlling Array Traversal849249
+Ref: Controlling Array Traversal-Footnote-1857617
+Node: Array Sorting Functions857735
+Ref: Array Sorting Functions-Footnote-1862826
+Node: Two-way I/O863022
+Ref: Two-way I/O-Footnote-1870743
+Ref: Two-way I/O-Footnote-2870930
+Node: TCP/IP Networking871012
+Node: Profiling874130
+Node: Extension Philosophy883439
+Node: Advanced Features Summary884890
+Node: Internationalization886889
+Node: I18N and L10N888369
+Node: Explaining gettext889056
+Ref: Explaining gettext-Footnote-1894948
+Ref: Explaining gettext-Footnote-2895133
+Node: Programmer i18n895298
+Ref: Programmer i18n-Footnote-1900247
+Node: Translator i18n900296
+Node: String Extraction901090
+Ref: String Extraction-Footnote-1902222
+Node: Printf Ordering902308
+Ref: Printf Ordering-Footnote-1905094
+Node: I18N Portability905158
+Ref: I18N Portability-Footnote-1907614
+Node: I18N Example907677
+Ref: I18N Example-Footnote-1910952
+Ref: I18N Example-Footnote-2911025
+Node: Gawk I18N911134
+Node: I18N Summary911783
+Node: Debugger913124
+Node: Debugging914124
+Node: Debugging Concepts914565
+Node: Debugging Terms916374
+Node: Awk Debugging918949
+Ref: Awk Debugging-Footnote-1919894
+Node: Sample Debugging Session920026
+Node: Debugger Invocation920560
+Node: Finding The Bug921946
+Node: List of Debugger Commands928420
+Node: Breakpoint Control929753
+Node: Debugger Execution Control933447
+Node: Viewing And Changing Data936809
+Node: Execution Stack940350
+Node: Debugger Info941987
+Node: Miscellaneous Debugger Commands946058
+Node: Readline Support951120
+Node: Limitations952016
+Node: Debugging Summary954570
+Node: Namespaces955849
+Node: Global Namespace956960
+Node: Qualified Names958358
+Node: Default Namespace959357
+Node: Changing The Namespace960098
+Node: Naming Rules961712
+Node: Internal Name Management963560
+Node: Namespace Example964602
+Node: Namespace And Features967164
+Node: Namespace Summary968599
+Node: Arbitrary Precision Arithmetic970076
+Node: Computer Arithmetic971563
+Ref: table-numeric-ranges975329
+Ref: table-floating-point-ranges975822
+Ref: Computer Arithmetic-Footnote-1976480
+Node: Math Definitions976537
+Ref: table-ieee-formats979853
+Ref: Math Definitions-Footnote-1980456
+Node: MPFR features980561
+Node: FP Math Caution982279
+Ref: FP Math Caution-Footnote-1983351
+Node: Inexactness of computations983720
+Node: Inexact representation984680
+Node: Comparing FP Values986040
+Node: Errors accumulate987281
+Node: Getting Accuracy988714
+Node: Try To Round991424
+Node: Setting precision992323
+Ref: table-predefined-precision-strings993020
+Node: Setting the rounding mode994850
+Ref: table-gawk-rounding-modes995224
+Ref: Setting the rounding mode-Footnote-1999155
+Node: Arbitrary Precision Integers999334
+Ref: Arbitrary Precision Integers-Footnote-11002509
+Node: Checking for MPFR1002658
+Node: POSIX Floating Point Problems1004132
+Ref: POSIX Floating Point Problems-Footnote-11008417
+Node: Floating point summary1008455
+Node: Dynamic Extensions1010645
+Node: Extension Intro1012198
+Node: Plugin License1013464
+Node: Extension Mechanism Outline1014261
+Ref: figure-load-extension1014700
+Ref: figure-register-new-function1016265
+Ref: figure-call-new-function1017357
+Node: Extension API Description1019419
+Node: Extension API Functions Introduction1021132
+Ref: table-api-std-headers1022968
+Node: General Data Types1027217
+Ref: General Data Types-Footnote-11035847
+Node: Memory Allocation Functions1036146
+Ref: Memory Allocation Functions-Footnote-11040647
+Node: Constructor Functions1040746
+Node: API Ownership of MPFR and GMP Values1044212
+Node: Registration Functions1045525
+Node: Extension Functions1046225
+Node: Exit Callback Functions1051547
+Node: Extension Version String1052797
+Node: Input Parsers1053460
+Node: Output Wrappers1066181
+Node: Two-way processors1070693
+Node: Printing Messages1072958
+Ref: Printing Messages-Footnote-11074129
+Node: Updating ERRNO1074282
+Node: Requesting Values1075021
+Ref: table-value-types-returned1075758
+Node: Accessing Parameters1076694
+Node: Symbol Table Access1077931
+Node: Symbol table by name1078443
+Ref: Symbol table by name-Footnote-11081467
+Node: Symbol table by cookie1081595
+Ref: Symbol table by cookie-Footnote-11085780
+Node: Cached values1085844
+Ref: Cached values-Footnote-11089380
+Node: Array Manipulation1089533
+Ref: Array Manipulation-Footnote-11090624
+Node: Array Data Types1090661
+Ref: Array Data Types-Footnote-11093319
+Node: Array Functions1093411
+Node: Flattening Arrays1097909
+Node: Creating Arrays1104885
+Node: Redirection API1109652
+Node: Extension API Variables1112485
+Node: Extension Versioning1113196
+Ref: gawk-api-version1113625
+Node: Extension GMP/MPFR Versioning1115356
+Node: Extension API Informational Variables1116984
+Node: Extension API Boilerplate1118057
+Node: Changes from API V11122031
+Node: Finding Extensions1123603
+Node: Extension Example1124162
+Node: Internal File Description1124960
+Node: Internal File Ops1129040
+Ref: Internal File Ops-Footnote-11140390
+Node: Using Internal File Ops1140530
+Ref: Using Internal File Ops-Footnote-11142913
+Node: Extension Samples1143187
+Node: Extension Sample File Functions1144716
+Node: Extension Sample Fnmatch1152365
+Node: Extension Sample Fork1153852
+Node: Extension Sample Inplace1155070
+Node: Extension Sample Ord1158696
+Node: Extension Sample Readdir1159532
+Ref: table-readdir-file-types1160421
+Node: Extension Sample Revout1161488
+Node: Extension Sample Rev2way1162077
+Node: Extension Sample Read write array1162817
+Node: Extension Sample Readfile1164759
+Node: Extension Sample Time1165854
+Node: Extension Sample API Tests1167606
+Node: gawkextlib1168098
+Node: Extension summary1171016
+Node: Extension Exercises1174718
+Node: Language History1175960
+Node: V7/SVR3.11177616
+Node: SVR41179768
+Node: POSIX1181202
+Node: BTL1182583
+Node: POSIX/GNU1183312
+Node: Feature History1189090
+Node: Common Extensions1205409
+Node: Ranges and Locales1206692
+Ref: Ranges and Locales-Footnote-11211308
+Ref: Ranges and Locales-Footnote-21211335
+Ref: Ranges and Locales-Footnote-31211570
+Node: Contributors1211793
+Node: History summary1217790
+Node: Installation1219170
+Node: Gawk Distribution1220114
+Node: Getting1220598
+Node: Extracting1221561
+Node: Distribution contents1223199
+Node: Unix Installation1229679
+Node: Quick Installation1230361
+Node: Shell Startup Files1232775
+Node: Additional Configuration Options1233864
+Node: Configuration Philosophy1236179
+Node: Non-Unix Installation1238548
+Node: PC Installation1239008
+Node: PC Binary Installation1239846
+Node: PC Compiling1240281
+Node: PC Using1241398
+Node: Cygwin1244951
+Node: MSYS1246175
+Node: VMS Installation1246777
+Node: VMS Compilation1247568
+Ref: VMS Compilation-Footnote-11248797
+Node: VMS Dynamic Extensions1248855
+Node: VMS Installation Details1250540
+Node: VMS Running1252793
+Node: VMS GNV1257072
+Node: VMS Old Gawk1257807
+Node: Bugs1258278
+Node: Bug address1258941
+Node: Usenet1261923
+Node: Maintainers1262927
+Node: Other Versions1264112
+Node: Installation summary1271200
+Node: Notes1272409
+Node: Compatibility Mode1273203
+Node: Additions1273985
+Node: Accessing The Source1274910
+Node: Adding Code1276347
+Node: New Ports1282566
+Node: Derived Files1286941
+Ref: Derived Files-Footnote-11292601
+Ref: Derived Files-Footnote-21292636
+Ref: Derived Files-Footnote-31293234
+Node: Future Extensions1293348
+Node: Implementation Limitations1294006
+Node: Extension Design1295216
+Node: Old Extension Problems1296360
+Ref: Old Extension Problems-Footnote-11297878
+Node: Extension New Mechanism Goals1297935
+Ref: Extension New Mechanism Goals-Footnote-11301299
+Node: Extension Other Design Decisions1301488
+Node: Extension Future Growth1303601
+Node: Notes summary1304207
+Node: Basic Concepts1305365
+Node: Basic High Level1306046
+Ref: figure-general-flow1306328
+Ref: figure-process-flow1307013
+Ref: Basic High Level-Footnote-11310314
+Node: Basic Data Typing1310499
+Node: Glossary1313827
+Node: Copying1345712
+Node: GNU Free Documentation License1383255
+Node: Index1408375

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index a6f49cb5..e4d02059 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -8291,6 +8291,8 @@ words, @code{FS} defines what a field @emph{is not}, instead of what a field
However, there are times when you really want to define the fields by
what they are, and not by what they are not.
+@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT}
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT}
The most notorious such case
is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet programs,
for example, can export their data into text files, where each record is
@@ -8474,6 +8476,15 @@ $ @kbd{gawk -v fpat=2 -f test-csv.awk sample.csv}
@print{} NF = 3 <p><><s>
@end example
+@cindex Collado, Manuel
+@cindex @code{CSVMODE} library for @command{gawk}
+@cindex CSV (comma separated values) data @subentry parsing with @code{CSVMODE} library
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} library
+In general, using @code{FPAT} to do your own CSV parsing is like having
+a bed with a blanket that's not quite big enough. There's always a corner
+that isn't covered. We recommend, instead, that you use Manuel Collado's
+@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for @command{gawk}}.
+
@node Testing field creation
@section Checking How @command{gawk} Is Splitting Records
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 78a28be1..d784d386 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -7844,6 +7844,8 @@ words, @code{FS} defines what a field @emph{is not}, instead of what a field
However, there are times when you really want to define the fields by
what they are, and not by what they are not.
+@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT}
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT}
The most notorious such case
is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet programs,
for example, can export their data into text files, where each record is
@@ -8027,6 +8029,15 @@ $ @kbd{gawk -v fpat=2 -f test-csv.awk sample.csv}
@print{} NF = 3 <p><><s>
@end example
+@cindex Collado, Manuel
+@cindex @code{CSVMODE} library for @command{gawk}
+@cindex CSV (comma separated values) data @subentry parsing with @code{CSVMODE} library
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} library
+In general, using @code{FPAT} to do your own CSV parsing is like having
+a bed with a blanket that's not quite big enough. There's always a corner
+that isn't covered. We recommend, instead, that you use Manuel Collado's
+@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for @command{gawk}}.
+
@node Testing field creation
@section Checking How @command{gawk} Is Splitting Records