aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2013-04-12 14:15:35 +0300
committerArnold D. Robbins <arnold@skeeve.com>2013-04-12 14:15:35 +0300
commit74ad8503620cdccd1624fa52cb80f15d777a8b23 (patch)
tree140e5fbe6e1d0868e3417f3644407e8d19b83af6
parentc2e2ed2a5ff176a215f0025598292dbf49b0102a (diff)
downloadegawk-74ad8503620cdccd1624fa52cb80f15d777a8b23.tar.gz
egawk-74ad8503620cdccd1624fa52cb80f15d777a8b23.tar.bz2
egawk-74ad8503620cdccd1624fa52cb80f15d777a8b23.zip
And more cleanup.
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info549
-rw-r--r--doc/gawk.texi17
3 files changed, 297 insertions, 273 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 8ff5ef47..fa6faf7d 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2013-04-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi: Continue cleanup.
+
2013-04-11 Arnold D. Robbins <arnold@skeeve.com>
* gawk.texi: Continue cleanup.
diff --git a/doc/gawk.info b/doc/gawk.info
index 2959d893..30879eaa 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -13074,8 +13074,9 @@ problem if a program calls an undefined function.
If `--lint' is specified (*note Options::), `gawk' reports calls to
undefined functions.
- Some `awk' implementations generate a runtime error if you use the
-`next' statement (*note Next Statement::) inside a user-defined
+ Some `awk' implementations generate a runtime error if you use
+either the `next' statement or the `nextfile' statement (*note Next
+Statement::, also *note Nextfile Statement::) inside a user-defined
function. `gawk' does not have this limitation.

@@ -15250,6 +15251,14 @@ value. Here is a main program to demonstrate:
-| a[2][2] = 22
-| a[3] = 3
+ Walking an array and processing each element is a general-purpose
+operation. You might want to consider generalizing the `walk_array()'
+function by adding an additional parameter named `process'.
+
+ Then, inside the loop, instead of simply printing the array element's
+index and value, use the indirect function call syntax (*note Indirect
+Calls::) on `process', passing it the index and the value.
+

File: gawk.info, Node: Sample Programs, Next: Internationalization, Prev: Library Functions, Up: Top
@@ -32193,273 +32202,273 @@ Node: Function Caveats540688
Node: Calling A Function541109
Node: Variable Scope542224
Node: Pass By Value/Reference545187
-Node: Return Statement548627
-Node: Dynamic Typing551608
-Node: Indirect Calls552539
-Node: Library Functions562224
-Ref: Library Functions-Footnote-1565737
-Ref: Library Functions-Footnote-2565880
-Node: Library Names566051
-Ref: Library Names-Footnote-1569522
-Ref: Library Names-Footnote-2569742
-Node: General Functions569828
-Node: Strtonum Function570781
-Node: Assert Function573711
-Node: Round Function577037
-Node: Cliff Random Function578580
-Node: Ordinal Functions579596
-Ref: Ordinal Functions-Footnote-1582666
-Ref: Ordinal Functions-Footnote-2582918
-Node: Join Function583127
-Ref: Join Function-Footnote-1584898
-Node: Getlocaltime Function585098
-Node: Data File Management588813
-Node: Filetrans Function589445
-Node: Rewind Function593584
-Node: File Checking594971
-Node: Empty Files596065
-Node: Ignoring Assigns598295
-Node: Getopt Function599848
-Ref: Getopt Function-Footnote-1611152
-Node: Passwd Functions611355
-Ref: Passwd Functions-Footnote-1620330
-Node: Group Functions620418
-Node: Walking Arrays628502
-Node: Sample Programs630071
-Node: Running Examples630748
-Node: Clones631476
-Node: Cut Program632700
-Node: Egrep Program642545
-Ref: Egrep Program-Footnote-1650318
-Node: Id Program650428
-Node: Split Program654044
-Ref: Split Program-Footnote-1657563
-Node: Tee Program657691
-Node: Uniq Program660494
-Node: Wc Program667923
-Ref: Wc Program-Footnote-1672189
-Ref: Wc Program-Footnote-2672389
-Node: Miscellaneous Programs672481
-Node: Dupword Program673669
-Node: Alarm Program675700
-Node: Translate Program680449
-Ref: Translate Program-Footnote-1684836
-Ref: Translate Program-Footnote-2685064
-Node: Labels Program685198
-Ref: Labels Program-Footnote-1688569
-Node: Word Sorting688653
-Node: History Sorting692537
-Node: Extract Program694376
-Ref: Extract Program-Footnote-1701877
-Node: Simple Sed702005
-Node: Igawk Program705067
-Ref: Igawk Program-Footnote-1720224
-Ref: Igawk Program-Footnote-2720425
-Node: Anagram Program720563
-Node: Signature Program723631
-Node: Internationalization724731
-Node: I18N and L10N726163
-Node: Explaining gettext726849
-Ref: Explaining gettext-Footnote-1731915
-Ref: Explaining gettext-Footnote-2732099
-Node: Programmer i18n732264
-Node: Translator i18n736464
-Node: String Extraction737257
-Ref: String Extraction-Footnote-1738218
-Node: Printf Ordering738304
-Ref: Printf Ordering-Footnote-1741088
-Node: I18N Portability741152
-Ref: I18N Portability-Footnote-1743601
-Node: I18N Example743664
-Ref: I18N Example-Footnote-1746299
-Node: Gawk I18N746371
-Node: Advanced Features746988
-Node: Nondecimal Data748492
-Node: Array Sorting750075
-Node: Controlling Array Traversal750772
-Node: Array Sorting Functions759010
-Ref: Array Sorting Functions-Footnote-1762684
-Ref: Array Sorting Functions-Footnote-2762777
-Node: Two-way I/O762971
-Ref: Two-way I/O-Footnote-1768403
-Node: TCP/IP Networking768473
-Node: Profiling771317
-Node: Debugger778771
-Node: Debugging779739
-Node: Debugging Concepts780172
-Node: Debugging Terms782028
-Node: Awk Debugging784625
-Node: Sample Debugging Session785517
-Node: Debugger Invocation786037
-Node: Finding The Bug787366
-Node: List of Debugger Commands793854
-Node: Breakpoint Control795188
-Node: Debugger Execution Control798852
-Node: Viewing And Changing Data802212
-Node: Execution Stack805568
-Node: Debugger Info807035
-Node: Miscellaneous Debugger Commands811017
-Node: Readline Support816462
-Node: Limitations817293
-Node: Arbitrary Precision Arithmetic819545
-Ref: Arbitrary Precision Arithmetic-Footnote-1821187
-Node: General Arithmetic821335
-Node: Floating Point Issues823055
-Node: String Conversion Precision823936
-Ref: String Conversion Precision-Footnote-1825642
-Node: Unexpected Results825751
-Node: POSIX Floating Point Problems827904
-Ref: POSIX Floating Point Problems-Footnote-1831729
-Node: Integer Programming831767
-Node: Floating-point Programming833520
-Ref: Floating-point Programming-Footnote-1839829
-Node: Floating-point Representation840093
-Node: Floating-point Context841258
-Ref: table-ieee-formats842100
-Node: Rounding Mode843484
-Ref: table-rounding-modes843963
-Ref: Rounding Mode-Footnote-1846967
-Node: Gawk and MPFR847148
-Node: Arbitrary Precision Floats848390
-Ref: Arbitrary Precision Floats-Footnote-1850819
-Node: Setting Precision851130
-Node: Setting Rounding Mode853863
-Ref: table-gawk-rounding-modes854267
-Node: Floating-point Constants855447
-Node: Changing Precision856871
-Ref: Changing Precision-Footnote-1858271
-Node: Exact Arithmetic858445
-Node: Arbitrary Precision Integers861553
-Ref: Arbitrary Precision Integers-Footnote-1864553
-Node: Dynamic Extensions864700
-Node: Extension Intro866077
-Node: Plugin License867285
-Node: Extension Mechanism Outline867970
-Ref: load-extension868387
-Ref: load-new-function869865
-Ref: call-new-function870860
-Node: Extension API Description872868
-Node: Extension API Functions Introduction874207
-Node: General Data Types878985
-Ref: General Data Types-Footnote-1884587
-Node: Requesting Values884886
-Ref: table-value-types-returned885617
-Node: Constructor Functions886571
-Node: Registration Functions889567
-Node: Extension Functions890252
-Node: Exit Callback Functions892426
-Node: Extension Version String893669
-Node: Input Parsers894319
-Node: Output Wrappers904036
-Node: Two-way processors908452
-Node: Printing Messages910582
-Ref: Printing Messages-Footnote-1911659
-Node: Updating `ERRNO'911811
-Node: Accessing Parameters912550
-Node: Symbol Table Access913780
-Node: Symbol table by name914292
-Node: Symbol table by cookie915865
-Ref: Symbol table by cookie-Footnote-1919994
-Node: Cached values920057
-Ref: Cached values-Footnote-1923500
-Node: Array Manipulation923591
-Ref: Array Manipulation-Footnote-1924689
-Node: Array Data Types924728
-Ref: Array Data Types-Footnote-1927431
-Node: Array Functions927523
-Node: Flattening Arrays931289
-Node: Creating Arrays938128
-Node: Extension API Variables942923
-Node: Extension Versioning943559
-Node: Extension API Informational Variables945460
-Node: Extension API Boilerplate946546
-Node: Finding Extensions950377
-Node: Extension Example950924
-Node: Internal File Description951662
-Node: Internal File Ops955350
-Ref: Internal File Ops-Footnote-1966797
-Node: Using Internal File Ops966937
-Ref: Using Internal File Ops-Footnote-1969290
-Node: Extension Samples969556
-Node: Extension Sample File Functions971080
-Node: Extension Sample Fnmatch979553
-Node: Extension Sample Fork981279
-Node: Extension Sample Inplace982497
-Node: Extension Sample Ord984289
-Node: Extension Sample Readdir985068
-Node: Extension Sample Revout986572
-Node: Extension Sample Rev2way987165
-Node: Extension Sample Read write array987855
-Node: Extension Sample Readfile989738
-Node: Extension Sample API Tests990495
-Node: Extension Sample Time991020
-Node: gawkextlib992327
-Node: Language History994708
-Node: V7/SVR3.1996230
-Node: SVR4998551
-Node: POSIX999993
-Node: BTL1001001
-Node: POSIX/GNU1001806
-Node: Common Extensions1007341
-Node: Ranges and Locales1008448
-Ref: Ranges and Locales-Footnote-11013066
-Ref: Ranges and Locales-Footnote-21013093
-Ref: Ranges and Locales-Footnote-31013353
-Node: Contributors1013574
-Node: Installation1017870
-Node: Gawk Distribution1018764
-Node: Getting1019248
-Node: Extracting1020074
-Node: Distribution contents1021766
-Node: Unix Installation1027027
-Node: Quick Installation1027644
-Node: Additional Configuration Options1029606
-Node: Configuration Philosophy1031083
-Node: Non-Unix Installation1033425
-Node: PC Installation1033883
-Node: PC Binary Installation1035182
-Node: PC Compiling1037030
-Node: PC Testing1039974
-Node: PC Using1041150
-Node: Cygwin1045335
-Node: MSYS1046335
-Node: VMS Installation1046849
-Node: VMS Compilation1047452
-Ref: VMS Compilation-Footnote-11048459
-Node: VMS Installation Details1048517
-Node: VMS Running1050152
-Node: VMS Old Gawk1051759
-Node: Bugs1052233
-Node: Other Versions1056085
-Node: Notes1061415
-Node: Compatibility Mode1062215
-Node: Additions1062998
-Node: Accessing The Source1063925
-Node: Adding Code1065528
-Node: New Ports1071570
-Node: Derived Files1075705
-Ref: Derived Files-Footnote-11081026
-Ref: Derived Files-Footnote-21081060
-Ref: Derived Files-Footnote-31081660
-Node: Future Extensions1081758
-Node: Implementation Limitations1082339
-Node: Extension Design1083591
-Node: Old Extension Problems1084740
-Ref: Old Extension Problems-Footnote-11086248
-Node: Extension New Mechanism Goals1086305
-Ref: Extension New Mechanism Goals-Footnote-11089664
-Node: Extension Other Design Decisions1089850
-Node: Extension Future Growth1091956
-Node: Old Extension Mechansim1092777
-Node: Basic Concepts1094534
-Node: Basic High Level1095215
-Ref: figure-general-flow1095486
-Ref: figure-process-flow1096085
-Ref: Basic High Level-Footnote-11099314
-Node: Basic Data Typing1099499
-Node: Glossary1102854
-Node: Copying1128332
-Node: GNU Free Documentation License1165889
-Node: Index1191026
+Node: Return Statement548695
+Node: Dynamic Typing551676
+Node: Indirect Calls552607
+Node: Library Functions562292
+Ref: Library Functions-Footnote-1565805
+Ref: Library Functions-Footnote-2565948
+Node: Library Names566119
+Ref: Library Names-Footnote-1569590
+Ref: Library Names-Footnote-2569810
+Node: General Functions569896
+Node: Strtonum Function570849
+Node: Assert Function573779
+Node: Round Function577105
+Node: Cliff Random Function578648
+Node: Ordinal Functions579664
+Ref: Ordinal Functions-Footnote-1582734
+Ref: Ordinal Functions-Footnote-2582986
+Node: Join Function583195
+Ref: Join Function-Footnote-1584966
+Node: Getlocaltime Function585166
+Node: Data File Management588881
+Node: Filetrans Function589513
+Node: Rewind Function593652
+Node: File Checking595039
+Node: Empty Files596133
+Node: Ignoring Assigns598363
+Node: Getopt Function599916
+Ref: Getopt Function-Footnote-1611220
+Node: Passwd Functions611423
+Ref: Passwd Functions-Footnote-1620398
+Node: Group Functions620486
+Node: Walking Arrays628570
+Node: Sample Programs630544
+Node: Running Examples631221
+Node: Clones631949
+Node: Cut Program633173
+Node: Egrep Program643018
+Ref: Egrep Program-Footnote-1650791
+Node: Id Program650901
+Node: Split Program654517
+Ref: Split Program-Footnote-1658036
+Node: Tee Program658164
+Node: Uniq Program660967
+Node: Wc Program668396
+Ref: Wc Program-Footnote-1672662
+Ref: Wc Program-Footnote-2672862
+Node: Miscellaneous Programs672954
+Node: Dupword Program674142
+Node: Alarm Program676173
+Node: Translate Program680922
+Ref: Translate Program-Footnote-1685309
+Ref: Translate Program-Footnote-2685537
+Node: Labels Program685671
+Ref: Labels Program-Footnote-1689042
+Node: Word Sorting689126
+Node: History Sorting693010
+Node: Extract Program694849
+Ref: Extract Program-Footnote-1702350
+Node: Simple Sed702478
+Node: Igawk Program705540
+Ref: Igawk Program-Footnote-1720697
+Ref: Igawk Program-Footnote-2720898
+Node: Anagram Program721036
+Node: Signature Program724104
+Node: Internationalization725204
+Node: I18N and L10N726636
+Node: Explaining gettext727322
+Ref: Explaining gettext-Footnote-1732388
+Ref: Explaining gettext-Footnote-2732572
+Node: Programmer i18n732737
+Node: Translator i18n736937
+Node: String Extraction737730
+Ref: String Extraction-Footnote-1738691
+Node: Printf Ordering738777
+Ref: Printf Ordering-Footnote-1741561
+Node: I18N Portability741625
+Ref: I18N Portability-Footnote-1744074
+Node: I18N Example744137
+Ref: I18N Example-Footnote-1746772
+Node: Gawk I18N746844
+Node: Advanced Features747461
+Node: Nondecimal Data748965
+Node: Array Sorting750548
+Node: Controlling Array Traversal751245
+Node: Array Sorting Functions759483
+Ref: Array Sorting Functions-Footnote-1763157
+Ref: Array Sorting Functions-Footnote-2763250
+Node: Two-way I/O763444
+Ref: Two-way I/O-Footnote-1768876
+Node: TCP/IP Networking768946
+Node: Profiling771790
+Node: Debugger779244
+Node: Debugging780212
+Node: Debugging Concepts780645
+Node: Debugging Terms782501
+Node: Awk Debugging785098
+Node: Sample Debugging Session785990
+Node: Debugger Invocation786510
+Node: Finding The Bug787839
+Node: List of Debugger Commands794327
+Node: Breakpoint Control795661
+Node: Debugger Execution Control799325
+Node: Viewing And Changing Data802685
+Node: Execution Stack806041
+Node: Debugger Info807508
+Node: Miscellaneous Debugger Commands811490
+Node: Readline Support816935
+Node: Limitations817766
+Node: Arbitrary Precision Arithmetic820018
+Ref: Arbitrary Precision Arithmetic-Footnote-1821660
+Node: General Arithmetic821808
+Node: Floating Point Issues823528
+Node: String Conversion Precision824409
+Ref: String Conversion Precision-Footnote-1826115
+Node: Unexpected Results826224
+Node: POSIX Floating Point Problems828377
+Ref: POSIX Floating Point Problems-Footnote-1832202
+Node: Integer Programming832240
+Node: Floating-point Programming833993
+Ref: Floating-point Programming-Footnote-1840302
+Node: Floating-point Representation840566
+Node: Floating-point Context841731
+Ref: table-ieee-formats842573
+Node: Rounding Mode843957
+Ref: table-rounding-modes844436
+Ref: Rounding Mode-Footnote-1847440
+Node: Gawk and MPFR847621
+Node: Arbitrary Precision Floats848863
+Ref: Arbitrary Precision Floats-Footnote-1851292
+Node: Setting Precision851603
+Node: Setting Rounding Mode854336
+Ref: table-gawk-rounding-modes854740
+Node: Floating-point Constants855920
+Node: Changing Precision857344
+Ref: Changing Precision-Footnote-1858744
+Node: Exact Arithmetic858918
+Node: Arbitrary Precision Integers862026
+Ref: Arbitrary Precision Integers-Footnote-1865026
+Node: Dynamic Extensions865173
+Node: Extension Intro866550
+Node: Plugin License867758
+Node: Extension Mechanism Outline868443
+Ref: load-extension868860
+Ref: load-new-function870338
+Ref: call-new-function871333
+Node: Extension API Description873341
+Node: Extension API Functions Introduction874680
+Node: General Data Types879458
+Ref: General Data Types-Footnote-1885060
+Node: Requesting Values885359
+Ref: table-value-types-returned886090
+Node: Constructor Functions887044
+Node: Registration Functions890040
+Node: Extension Functions890725
+Node: Exit Callback Functions892899
+Node: Extension Version String894142
+Node: Input Parsers894792
+Node: Output Wrappers904509
+Node: Two-way processors908925
+Node: Printing Messages911055
+Ref: Printing Messages-Footnote-1912132
+Node: Updating `ERRNO'912284
+Node: Accessing Parameters913023
+Node: Symbol Table Access914253
+Node: Symbol table by name914765
+Node: Symbol table by cookie916338
+Ref: Symbol table by cookie-Footnote-1920467
+Node: Cached values920530
+Ref: Cached values-Footnote-1923973
+Node: Array Manipulation924064
+Ref: Array Manipulation-Footnote-1925162
+Node: Array Data Types925201
+Ref: Array Data Types-Footnote-1927904
+Node: Array Functions927996
+Node: Flattening Arrays931762
+Node: Creating Arrays938601
+Node: Extension API Variables943396
+Node: Extension Versioning944032
+Node: Extension API Informational Variables945933
+Node: Extension API Boilerplate947019
+Node: Finding Extensions950850
+Node: Extension Example951397
+Node: Internal File Description952135
+Node: Internal File Ops955823
+Ref: Internal File Ops-Footnote-1967270
+Node: Using Internal File Ops967410
+Ref: Using Internal File Ops-Footnote-1969763
+Node: Extension Samples970029
+Node: Extension Sample File Functions971553
+Node: Extension Sample Fnmatch980026
+Node: Extension Sample Fork981752
+Node: Extension Sample Inplace982970
+Node: Extension Sample Ord984762
+Node: Extension Sample Readdir985541
+Node: Extension Sample Revout987045
+Node: Extension Sample Rev2way987638
+Node: Extension Sample Read write array988328
+Node: Extension Sample Readfile990211
+Node: Extension Sample API Tests990968
+Node: Extension Sample Time991493
+Node: gawkextlib992800
+Node: Language History995181
+Node: V7/SVR3.1996703
+Node: SVR4999024
+Node: POSIX1000466
+Node: BTL1001474
+Node: POSIX/GNU1002279
+Node: Common Extensions1007814
+Node: Ranges and Locales1008921
+Ref: Ranges and Locales-Footnote-11013539
+Ref: Ranges and Locales-Footnote-21013566
+Ref: Ranges and Locales-Footnote-31013826
+Node: Contributors1014047
+Node: Installation1018343
+Node: Gawk Distribution1019237
+Node: Getting1019721
+Node: Extracting1020547
+Node: Distribution contents1022239
+Node: Unix Installation1027500
+Node: Quick Installation1028117
+Node: Additional Configuration Options1030079
+Node: Configuration Philosophy1031556
+Node: Non-Unix Installation1033898
+Node: PC Installation1034356
+Node: PC Binary Installation1035655
+Node: PC Compiling1037503
+Node: PC Testing1040447
+Node: PC Using1041623
+Node: Cygwin1045808
+Node: MSYS1046808
+Node: VMS Installation1047322
+Node: VMS Compilation1047925
+Ref: VMS Compilation-Footnote-11048932
+Node: VMS Installation Details1048990
+Node: VMS Running1050625
+Node: VMS Old Gawk1052232
+Node: Bugs1052706
+Node: Other Versions1056558
+Node: Notes1061888
+Node: Compatibility Mode1062688
+Node: Additions1063471
+Node: Accessing The Source1064398
+Node: Adding Code1066001
+Node: New Ports1072043
+Node: Derived Files1076178
+Ref: Derived Files-Footnote-11081499
+Ref: Derived Files-Footnote-21081533
+Ref: Derived Files-Footnote-31082133
+Node: Future Extensions1082231
+Node: Implementation Limitations1082812
+Node: Extension Design1084064
+Node: Old Extension Problems1085213
+Ref: Old Extension Problems-Footnote-11086721
+Node: Extension New Mechanism Goals1086778
+Ref: Extension New Mechanism Goals-Footnote-11090137
+Node: Extension Other Design Decisions1090323
+Node: Extension Future Growth1092429
+Node: Old Extension Mechansim1093250
+Node: Basic Concepts1095007
+Node: Basic High Level1095688
+Ref: figure-general-flow1095959
+Ref: figure-process-flow1096558
+Ref: Basic High Level-Footnote-11099787
+Node: Basic Data Typing1099972
+Node: Glossary1103327
+Node: Copying1128805
+Node: GNU Free Documentation License1166362
+Node: Index1191499

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 22295c6a..fc6faa14 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -13665,7 +13665,7 @@ A contiguous array of four elements might look like the following example,
conceptually, if the element values are 8, @code{"foo"},
@code{""}, and 30:
-@c @strong{FIXME: NEXT ED:} Use real images here
+@c @strong{FIXME: NEXT ED:} Use real images here, and an @float
@iftex
@c from Karl Berry, much thanks for the help.
@tex
@@ -17551,8 +17551,9 @@ If @option{--lint} is specified
@cindex portability, @code{next} statement in user-defined functions
Some @command{awk} implementations generate a runtime
-error if you use the @code{next} statement
-(@pxref{Next Statement})
+error if you use either the @code{next} statement
+or the @code{nextfile} statement
+(@pxref{Next Statement}, also @pxref{Nextfile Statement})
inside a user-defined function.
@command{gawk} does not have this limitation.
@c ENDOFRANGE fudc
@@ -20476,6 +20477,16 @@ $ @kbd{gawk -f walk_array.awk}
@print{} a[3] = 3
@end example
+Walking an array and processing each element is a general-purpose
+operation. You might want to consider generalizing the @code{walk_array()}
+function by adding an additional parameter named @code{process}.
+
+Then, inside the loop, instead of simply printing the array element's
+index and value, use the indirect function call syntax
+(@pxref{Indirect Calls}) on @code{process}, passing it the index
+and the value.
+
+
@c ENDOFRANGE libfgdata
@c ENDOFRANGE flibgdata
@c ENDOFRANGE gdatar