diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/ChangeLog | 13 | ||||
-rw-r--r-- | doc/gawk.info | 1203 | ||||
-rw-r--r-- | doc/gawk.texi | 171 | ||||
-rw-r--r-- | doc/gawktexi.in | 171 |
4 files changed, 989 insertions, 569 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index 4dc782e1..5ff9bc41 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,16 +1,29 @@ +2013-12-29 John E. Malmberg <wb8tyw@qsl.net> + + * gawktexi.in: VMS dynamic extensions. + 2013-12-26 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: More minor additions / fixes. + (Bugs): Add John Malmberg for VMS. 2013-12-25 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Minor additions / fixes. +2013-12-23 John E. Malmberg <wb8tyw@qsl.net> + + * gawktexi.in: Document the VMS exit status encoding. + 2013-12-21 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in (Additional Configuration Options): Document the --disable-extensions option. +2013-12-16 John E. Malmberg <wb8tyw@qsl.net> + + * gawktexi.in: Updates to VMS sections. + 2013-12-12 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Fix the presentation of asort() and asorti(). diff --git a/doc/gawk.info b/doc/gawk.info index 358551af..4196f313 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -614,9 +614,12 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) * VMS Installation:: Installing `gawk' on VMS. * VMS Compilation:: How to compile `gawk' under VMS. +* VMS Dynamic Extensions:: Compiling `gawk' dynamic + extensions on VMS. * VMS Installation Details:: How to install `gawk' under VMS. * VMS Running:: How to run `gawk' under VMS. +* VMS GNV:: The VMS GNV Project. * VMS Old Gawk:: An old version comes with some VMS systems. * Bugs:: Reporting Problems and Bugs. @@ -10735,7 +10738,7 @@ File: gawk.info, Node: Multidimensional, Next: Arrays of Arrays, Prev: Uninit * Menu: -* Multiscanning:: Scanning multidimensional arrays. +* Multiscanning:: Scanning multidimensional arrays. A multidimensional array is an array in which an element is identified by a sequence of indices instead of a single index. For @@ -25208,6 +25211,8 @@ the current version of `gawk'. - Prestandard VAX C compiler for VAX/VMS + - GCC for VAX and Alpha has not been tested for a while. + @@ -26244,51 +26249,119 @@ older designation "VMS" is used throughout to refer to OpenVMS. * Menu: * VMS Compilation:: How to compile `gawk' under VMS. +* VMS Dynamic Extensions:: Compiling `gawk' dynamic extensions on + VMS. * VMS Installation Details:: How to install `gawk' under VMS. * VMS Running:: How to run `gawk' under VMS. +* VMS GNV:: The VMS GNV Project. * VMS Old Gawk:: An old version comes with some VMS systems. -File: gawk.info, Node: VMS Compilation, Next: VMS Installation Details, Up: VMS Installation +File: gawk.info, Node: VMS Compilation, Next: VMS Dynamic Extensions, Up: VMS Installation B.3.2.1 Compiling `gawk' on VMS ............................... To compile `gawk' under VMS, there is a `DCL' command procedure that issues all the necessary `CC' and `LINK' commands. There is also a -`Makefile' for use with the `MMS' utility. From the source directory, -use either: +`Makefile' for use with the `MMS' and `MMK' utilities. From the source +directory, use either: + + $ @[.vms]vmsbuild.com + +or: - $ @[.VMS]VMSBUILD.COM + $ MMS/DESCRIPTION=[.vms]descrip.mms gawk or: - $ MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK + $ MMK/DESCRIPTION=[.vms]descrip.mms gawk + + `MMK' is an open source, free, near-clone of `MMS' and can better +handle `ODS-5' volumes with upper- and lowercase filenames. `MMK' is +available from `https://github.com/endlesssoftware/mmk'. + + With `ODS-5' volumes and extended parsing enabled, the case of the +target parameter may need to be exact. Older versions of `gawk' could be built with VAX C or GNU C on VAX/VMS, as well as with DEC C, but that is no longer supported. DEC C (also briefly known as "Compaq C" and now known as "HP C," but referred -to here as "DEC C") is required. Both `VMSBUILD.COM' and `DESCRIP.MMS' +to here as "DEC C") is required. Both `vmsbuild.com' and `descrip.mms' contain some obsolete support for the older compilers but are set up to use DEC C by default. - `gawk' has been tested under Alpha/VMS 7.3-1 using Compaq C V6.4, -and on Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.(1) + `gawk' has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using +Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3. +The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha +and IA64 VMS 8.4 used HP C 7.3.(1) + + Work is currently being done for a procedure to build `gawk' and +create a PCSI kit for compatible with the GNV product. ---------- Footnotes ---------- (1) The IA64 architecture is also known as "Itanium." -File: gawk.info, Node: VMS Installation Details, Next: VMS Running, Prev: VMS Compilation, Up: VMS Installation +File: gawk.info, Node: VMS Dynamic Extensions, Next: VMS Installation Details, Prev: VMS Compilation, Up: VMS Installation + +B.3.2.2 Compiling `gawk' Dynamic Extensions on VMS +.................................................. + +The extensions that have been ported to VMS can be built using one of +the following commands. + + $ MMS/DESCRIPTION=[.vms]descrip.mms extensions + +or: + + $ MMK/DESCRIPTION=[.vms]descrip.mms extensions + + `gawk' uses `AWKLIBPATH' as either an environment variable or a +logical name to find the dynamic extensions. + + Dynamic extensions need to be compiled with the same compiler +options for floating point, pointer size, and symbol name handling as +were used to compile `gawk' itself. Alpha and Itanium should use IEEE +floating point. The pointer size is 32 bits, and the symbol name +handling should be exact case with CRC shortening for symbols longer +than 32 bits. + + For Alpha and Itanium: + + /name=(as_is,short) + /float=ieee/ieee_mode=denorm_results + + For VAX: + + /name=(as_is,short) + + Compile time macros need to be defined before the first VMS-supplied +header file is included. + + #if (__CRTL_VER >= 70200000) && !defined (__VAX) + #define _LARGEFILE 1 + #endif + + #ifndef __VAX + #ifdef __CRTL_VER + #if __CRTL_VER >= 80200000 + #define _USE_STD_STAT 1 + #endif + #endif + #endif + + +File: gawk.info, Node: VMS Installation Details, Next: VMS Running, Prev: VMS Dynamic Extensions, Up: VMS Installation -B.3.2.2 Installing `gawk' on VMS +B.3.2.3 Installing `gawk' on VMS ................................ -To install `gawk', all you need is a "foreign" command, which is a -`DCL' symbol whose value begins with a dollar sign. For example: +To use `gawk', all you need is a "foreign" command, which is a `DCL' +symbol whose value begins with a dollar sign. For example: - $ GAWK :== $disk1:[gnubin]GAWK + $ GAWK :== $disk1:[gnubin]gawk Substitute the actual location of `gawk.exe' for `$disk1:[gnubin]'. The symbol should be placed in the `login.com' of any user who wants to run @@ -26296,9 +26369,14 @@ symbol should be placed in the `login.com' of any user who wants to run Alternatively, the symbol may be placed in the system-wide `sylogin.com' procedure, which allows all users to run `gawk'. + If your `gawk' was installed by a PCSI kit into the `GNV$GNU:' +directory tree, the program will be known as +`GNV$GNU:[bin]gnv$gawk.exe' and the help file will be +`GNV$GNU:[vms_help]gawk.hlp'. + Optionally, the help entry can be loaded into a VMS help library: - $ LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP + $ LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp (You may want to substitute a site-specific help library rather than the standard VMS library `HELPLIB'.) After loading the help text, the @@ -26320,9 +26398,9 @@ If `AWK_LIBRARY' has no definition, a default value of `SYS$LIBRARY:' is used for it. -File: gawk.info, Node: VMS Running, Next: VMS Old Gawk, Prev: VMS Installation Details, Up: VMS Installation +File: gawk.info, Node: VMS Running, Next: VMS GNV, Prev: VMS Installation Details, Up: VMS Installation -B.3.2.3 Running `gawk' on VMS +B.3.2.4 Running `gawk' on VMS ............................. Command-line parsing and quoting conventions are significantly different @@ -26348,6 +26426,35 @@ If any other dash-type options (or multiple parameters such as data files to process) are present, there is no ambiguity and `--' can be omitted. + The `exit' value is a Unix-style value and is encoded to a VMS exit +status value when the program exits. + + The VMS severity bits will be set based on the `exit' value. A +failure is indicated by 1 and VMS sets the `ERROR' status. A fatal +error is indicated by 2 and VMS will set the `FATAL' status. All other +values will have the `SUCCESS' status. The exit value is encoded to +comply with VMS coding standards and will have the `C_FACILITY_NO' of +`0x350000' with the constant `0xA000' added to the number shifted over +by 3 bits to make room for the severity codes. + + To extract the actual `gawk' exit code from the VMS status use: + + unix_status = (vms_status .and. &x7f8) / 8 + +A C program that uses `exec()' to call `gawk' will get the original +Unix-style exit value. + + Older versions of `gawk' treated a Unix exit code 0 as 1, a failure +as 2, a fatal error as 4, and passed all the other numbers through. +This violated the VMS exit status coding requirements. + + VAX/VMS floating point uses unbiased rounding. *Note Round +Function::. + + VMS reports time values in GMT unless one of the `SYS$TIMEZONE_RULE' +or `TZ' logical names is set. Older versions of VMS, such as VAX/VMS +7.3 do not set these logical names. + The default search path, when looking for `awk' program files specified by the `-f' option, is `"SYS$DISK:[],AWK_LIBRARY:"'. The logical name `AWKPATH' can be used to override this default. The format @@ -26356,9 +26463,25 @@ When defining it, the value should be quoted so that it retains a single translation and not a multitranslation `RMS' searchlist. -File: gawk.info, Node: VMS Old Gawk, Prev: VMS Running, Up: VMS Installation +File: gawk.info, Node: VMS GNV, Next: VMS Old Gawk, Prev: VMS Running, Up: VMS Installation + +B.3.2.5 The VMS GNV Project +........................... + +The VMS GNV package provides a build environment similar to POSIX with +ports of a collection of open source tools. The `gawk' found in the GNV +base kit is an older port. Currently the GNV project is being +reorganized to supply individual PCSI packages for each component. See +`https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/'. + + The normal build procedure for `gawk' produces a program that is +suitable for use with GNV. At this time work is being done to create +the procedures for building a PCSI kit to replace the older `gawk' port. + + +File: gawk.info, Node: VMS Old Gawk, Prev: VMS GNV, Up: VMS Installation -B.3.2.4 Some VMS Systems Have An Old Version of `gawk' +B.3.2.6 Some VMS Systems Have An Old Version of `gawk' ...................................................... Some versions of VMS have an old version of `gawk'. To access it, @@ -26442,7 +26565,8 @@ considered authoritative if it conflicts with this Info file. MS-DOS with DJGPP Scott Deifik, <scottd.mail@sbcglobal.net>. MS-Windows with MINGW Eli Zaretskii, <eliz@gnu.org>. OS/2 Andreas Buening, <andreas.buening@nexgo.de>. -VMS Pat Rankin, <r.pat.rankin@gmail.com> +VMS Pat Rankin, <r.pat.rankin@gmail.com>, and John + Malmberg, <wb8tyw@gmail.com>. z/OS (OS/390) Dave Pitts, <dpitts@cozx.com>. If your bug is also reproducible under Unix, please send a copy of @@ -30507,6 +30631,7 @@ Index * exclamation point (!), !~ operator: Regexp Usage. (line 19) * exit statement: Exit Statement. (line 6) * exit status, of gawk: Exit Status. (line 6) +* exit status, of VMS: VMS Running. (line 29) * exp() function: Numeric Functions. (line 18) * expand utility: Very Simple. (line 69) * Expat XML parser library: gawkextlib. (line 35) @@ -30656,6 +30781,7 @@ Index (line 6) * floating-point, numbers <1>: Unexpected Results. (line 6) * floating-point, numbers: General Arithmetic. (line 6) +* floating-point, VAX/VMS: VMS Running. (line 51) * fnmatch extension function: Extension Sample Fnmatch. (line 6) * FNR variable <1>: Auto-set. (line 103) @@ -31170,6 +31296,7 @@ Index * lvalues/rvalues: Assignment Ops. (line 32) * mailing labels, printing: Labels Program. (line 6) * mailing list, GNITS: Acknowledgments. (line 52) +* Malmberg, John <1>: Bugs. (line 72) * Malmberg, John: Acknowledgments. (line 60) * mark parity: Ordinal Functions. (line 45) * marked string extraction (internationalization): String Extraction. @@ -31735,13 +31862,13 @@ Index * Schorr, Andrew: Acknowledgments. (line 60) * Schreiber, Bert: Acknowledgments. (line 38) * Schreiber, Rita: Acknowledgments. (line 38) -* search paths <1>: VMS Running. (line 29) +* search paths <1>: VMS Running. (line 58) * search paths <2>: PC Using. (line 11) * search paths <3>: Igawk Program. (line 368) * search paths <4>: AWKLIBPATH Variable. (line 6) * search paths: AWKPATH Variable. (line 6) * search paths, for shared libraries: AWKLIBPATH Variable. (line 6) -* search paths, for source files <1>: VMS Running. (line 29) +* search paths, for source files <1>: VMS Running. (line 58) * search paths, for source files <2>: PC Using. (line 11) * search paths, for source files <3>: Igawk Program. (line 368) * search paths, for source files: AWKPATH Variable. (line 6) @@ -32197,520 +32324,522 @@ Index Tag Table: Node: Top1360 -Node: Foreword40460 -Node: Preface44805 -Ref: Preface-Footnote-147858 -Ref: Preface-Footnote-247954 -Node: History48186 -Node: Names50560 -Ref: Names-Footnote-152037 -Node: This Manual52109 -Ref: This Manual-Footnote-157883 -Node: Conventions57983 -Node: Manual History60139 -Ref: Manual History-Footnote-163587 -Ref: Manual History-Footnote-263628 -Node: How To Contribute63702 -Node: Acknowledgments64846 -Node: Getting Started69055 -Node: Running gawk71434 -Node: One-shot72620 -Node: Read Terminal73845 -Ref: Read Terminal-Footnote-175495 -Ref: Read Terminal-Footnote-275771 -Node: Long75942 -Node: Executable Scripts77318 -Ref: Executable Scripts-Footnote-179151 -Ref: Executable Scripts-Footnote-279253 -Node: Comments79800 -Node: Quoting82267 -Node: DOS Quoting86890 -Node: Sample Data Files87565 -Node: Very Simple90609 -Node: Two Rules95208 -Node: More Complex97355 -Ref: More Complex-Footnote-1100285 -Node: Statements/Lines100370 -Ref: Statements/Lines-Footnote-1104832 -Node: Other Features105097 -Node: When106025 -Node: Invoking Gawk108172 -Node: Command Line109633 -Node: Options110416 -Ref: Options-Footnote-1125808 -Node: Other Arguments125833 -Node: Naming Standard Input128491 -Node: Environment Variables129585 -Node: AWKPATH Variable130143 -Ref: AWKPATH Variable-Footnote-1132901 -Node: AWKLIBPATH Variable133161 -Node: Other Environment Variables133879 -Node: Exit Status136842 -Node: Include Files137517 -Node: Loading Shared Libraries141086 -Node: Obsolete142450 -Node: Undocumented143147 -Node: Regexp143389 -Node: Regexp Usage144778 -Node: Escape Sequences146804 -Node: Regexp Operators152473 -Ref: Regexp Operators-Footnote-1159853 -Ref: Regexp Operators-Footnote-2160000 -Node: Bracket Expressions160098 -Ref: table-char-classes161988 -Node: GNU Regexp Operators164511 -Node: Case-sensitivity168234 -Ref: Case-sensitivity-Footnote-1171202 -Ref: Case-sensitivity-Footnote-2171437 -Node: Leftmost Longest171545 -Node: Computed Regexps172746 -Node: Reading Files176083 -Node: Records178085 -Ref: Records-Footnote-1186974 -Node: Fields187011 -Ref: Fields-Footnote-1190044 -Node: Nonconstant Fields190130 -Node: Changing Fields192332 -Node: Field Separators198291 -Node: Default Field Splitting200920 -Node: Regexp Field Splitting202037 -Node: Single Character Fields205379 -Node: Command Line Field Separator206438 -Node: Field Splitting Summary209879 -Ref: Field Splitting Summary-Footnote-1212990 -Node: Constant Size213091 -Node: Splitting By Content217675 -Ref: Splitting By Content-Footnote-1221401 -Node: Multiple Line221441 -Ref: Multiple Line-Footnote-1227288 -Node: Getline227467 -Node: Plain Getline229683 -Node: Getline/Variable231778 -Node: Getline/File232925 -Node: Getline/Variable/File234266 -Ref: Getline/Variable/File-Footnote-1235865 -Node: Getline/Pipe235952 -Node: Getline/Variable/Pipe238651 -Node: Getline/Coprocess239758 -Node: Getline/Variable/Coprocess241010 -Node: Getline Notes241747 -Node: Getline Summary244534 -Ref: table-getline-variants244942 -Node: Read Timeout245854 -Ref: Read Timeout-Footnote-1249595 -Node: Command line directories249652 -Node: Printing250282 -Node: Print251913 -Node: Print Examples253250 -Node: Output Separators256034 -Node: OFMT257794 -Node: Printf259152 -Node: Basic Printf260058 -Node: Control Letters261597 -Node: Format Modifiers265409 -Node: Printf Examples271418 -Node: Redirection274133 -Node: Special Files281098 -Node: Special FD281631 -Ref: Special FD-Footnote-1285256 -Node: Special Network285330 -Node: Special Caveats286180 -Node: Close Files And Pipes286976 -Ref: Close Files And Pipes-Footnote-1293959 -Ref: Close Files And Pipes-Footnote-2294107 -Node: Expressions294257 -Node: Values295389 -Node: Constants296065 -Node: Scalar Constants296745 -Ref: Scalar Constants-Footnote-1297604 -Node: Nondecimal-numbers297786 -Node: Regexp Constants300786 -Node: Using Constant Regexps301261 -Node: Variables304316 -Node: Using Variables304971 -Node: Assignment Options306695 -Node: Conversion308567 -Ref: table-locale-affects314068 -Ref: Conversion-Footnote-1314692 -Node: All Operators314801 -Node: Arithmetic Ops315431 -Node: Concatenation317936 -Ref: Concatenation-Footnote-1320728 -Node: Assignment Ops320848 -Ref: table-assign-ops325836 -Node: Increment Ops327167 -Node: Truth Values and Conditions330601 -Node: Truth Values331684 -Node: Typing and Comparison332733 -Node: Variable Typing333526 -Ref: Variable Typing-Footnote-1337423 -Node: Comparison Operators337545 -Ref: table-relational-ops337955 -Node: POSIX String Comparison341504 -Ref: POSIX String Comparison-Footnote-1342460 -Node: Boolean Ops342598 -Ref: Boolean Ops-Footnote-1346676 -Node: Conditional Exp346767 -Node: Function Calls348499 -Node: Precedence352093 -Node: Locales355762 -Node: Patterns and Actions356851 -Node: Pattern Overview357905 -Node: Regexp Patterns359574 -Node: Expression Patterns360117 -Node: Ranges363802 -Node: BEGIN/END366768 -Node: Using BEGIN/END367530 -Ref: Using BEGIN/END-Footnote-1370261 -Node: I/O And BEGIN/END370367 -Node: BEGINFILE/ENDFILE372649 -Node: Empty375563 -Node: Using Shell Variables375879 -Node: Action Overview378164 -Node: Statements380521 -Node: If Statement382375 -Node: While Statement383874 -Node: Do Statement385918 -Node: For Statement387074 -Node: Switch Statement390226 -Node: Break Statement392323 -Node: Continue Statement394313 -Node: Next Statement396106 -Node: Nextfile Statement398496 -Node: Exit Statement401139 -Node: Built-in Variables403555 -Node: User-modified404650 -Ref: User-modified-Footnote-1413008 -Node: Auto-set413070 -Ref: Auto-set-Footnote-1426148 -Ref: Auto-set-Footnote-2426353 -Node: ARGC and ARGV426409 -Node: Arrays430260 -Node: Array Basics431765 -Node: Array Intro432591 -Node: Reference to Elements436908 -Node: Assigning Elements439178 -Node: Array Example439669 -Node: Scanning an Array441401 -Node: Controlling Scanning443715 -Ref: Controlling Scanning-Footnote-1448802 -Node: Delete449118 -Ref: Delete-Footnote-1451883 -Node: Numeric Array Subscripts451940 -Node: Uninitialized Subscripts454123 -Node: Multidimensional455750 -Node: Multiscanning458842 -Node: Arrays of Arrays460431 -Node: Functions465071 -Node: Built-in465890 -Node: Calling Built-in466968 -Node: Numeric Functions468956 -Ref: Numeric Functions-Footnote-1472788 -Ref: Numeric Functions-Footnote-2473145 -Ref: Numeric Functions-Footnote-3473193 -Node: String Functions473462 -Ref: String Functions-Footnote-1496382 -Ref: String Functions-Footnote-2496511 -Ref: String Functions-Footnote-3496759 -Node: Gory Details496846 -Ref: table-sub-escapes498525 -Ref: table-sub-posix-92499879 -Ref: table-sub-proposed501230 -Ref: table-posix-sub502584 -Ref: table-gensub-escapes504129 -Ref: Gory Details-Footnote-1505305 -Ref: Gory Details-Footnote-2505356 -Node: I/O Functions505507 -Ref: I/O Functions-Footnote-1512492 -Node: Time Functions512639 -Ref: Time Functions-Footnote-1523572 -Ref: Time Functions-Footnote-2523640 -Ref: Time Functions-Footnote-3523798 -Ref: Time Functions-Footnote-4523909 -Ref: Time Functions-Footnote-5524021 -Ref: Time Functions-Footnote-6524248 -Node: Bitwise Functions524514 -Ref: table-bitwise-ops525076 -Ref: Bitwise Functions-Footnote-1529297 -Node: Type Functions529481 -Node: I18N Functions530632 -Node: User-defined532259 -Node: Definition Syntax533063 -Ref: Definition Syntax-Footnote-1537973 -Node: Function Example538042 -Node: Function Caveats540636 -Node: Calling A Function541057 -Node: Variable Scope542172 -Node: Pass By Value/Reference545135 -Node: Return Statement548643 -Node: Dynamic Typing551624 -Node: Indirect Calls552555 -Node: Library Functions562240 -Ref: Library Functions-Footnote-1565753 -Ref: Library Functions-Footnote-2565896 -Node: Library Names566067 -Ref: Library Names-Footnote-1569538 -Ref: Library Names-Footnote-2569758 -Node: General Functions569844 -Node: Strtonum Function570872 -Node: Assert Function573802 -Node: Round Function577128 -Node: Cliff Random Function578671 -Node: Ordinal Functions579687 -Ref: Ordinal Functions-Footnote-1582757 -Ref: Ordinal Functions-Footnote-2583009 -Node: Join Function583218 -Ref: Join Function-Footnote-1584989 -Node: Getlocaltime Function585189 -Node: Readfile Function588930 -Node: Data File Management590769 -Node: Filetrans Function591401 -Node: Rewind Function595470 -Node: File Checking596857 -Node: Empty Files597951 -Node: Ignoring Assigns600181 -Node: Getopt Function601734 -Ref: Getopt Function-Footnote-1613037 -Node: Passwd Functions613240 -Ref: Passwd Functions-Footnote-1622215 -Node: Group Functions622303 -Node: Walking Arrays630387 -Node: Sample Programs632524 -Node: Running Examples633198 -Node: Clones633926 -Node: Cut Program635150 -Node: Egrep Program644995 -Ref: Egrep Program-Footnote-1652768 -Node: Id Program652878 -Node: Split Program656494 -Ref: Split Program-Footnote-1660013 -Node: Tee Program660141 -Node: Uniq Program662944 -Node: Wc Program670373 -Ref: Wc Program-Footnote-1674639 -Ref: Wc Program-Footnote-2674839 -Node: Miscellaneous Programs674931 -Node: Dupword Program676119 -Node: Alarm Program678150 -Node: Translate Program682903 -Ref: Translate Program-Footnote-1687290 -Ref: Translate Program-Footnote-2687538 -Node: Labels Program687672 -Ref: Labels Program-Footnote-1691043 -Node: Word Sorting691127 -Node: History Sorting695011 -Node: Extract Program696850 -Ref: Extract Program-Footnote-1704353 -Node: Simple Sed704481 -Node: Igawk Program707543 -Ref: Igawk Program-Footnote-1722700 -Ref: Igawk Program-Footnote-2722901 -Node: Anagram Program723039 -Node: Signature Program726107 -Node: Advanced Features727207 -Node: Nondecimal Data729093 -Node: Array Sorting730676 -Node: Controlling Array Traversal731373 -Node: Array Sorting Functions739657 -Ref: Array Sorting Functions-Footnote-1743526 -Node: Two-way I/O743720 -Ref: Two-way I/O-Footnote-1749152 -Node: TCP/IP Networking749222 -Node: Profiling752066 -Node: Internationalization759563 -Node: I18N and L10N760988 -Node: Explaining gettext761674 -Ref: Explaining gettext-Footnote-1766742 -Ref: Explaining gettext-Footnote-2766926 -Node: Programmer i18n767091 -Node: Translator i18n771293 -Node: String Extraction772086 -Ref: String Extraction-Footnote-1773047 -Node: Printf Ordering773133 -Ref: Printf Ordering-Footnote-1775917 -Node: I18N Portability775981 -Ref: I18N Portability-Footnote-1778430 -Node: I18N Example778493 -Ref: I18N Example-Footnote-1781131 -Node: Gawk I18N781203 -Node: Debugger781824 -Node: Debugging782795 -Node: Debugging Concepts783228 -Node: Debugging Terms785084 -Node: Awk Debugging787681 -Node: Sample Debugging Session788573 -Node: Debugger Invocation789093 -Node: Finding The Bug790425 -Node: List of Debugger Commands796913 -Node: Breakpoint Control798247 -Node: Debugger Execution Control801911 -Node: Viewing And Changing Data805271 -Node: Execution Stack808627 -Node: Debugger Info810094 -Node: Miscellaneous Debugger Commands814076 -Node: Readline Support819252 -Node: Limitations820083 -Node: Arbitrary Precision Arithmetic822335 -Ref: Arbitrary Precision Arithmetic-Footnote-1823984 -Node: General Arithmetic824132 -Node: Floating Point Issues825852 -Node: String Conversion Precision826733 -Ref: String Conversion Precision-Footnote-1828438 -Node: Unexpected Results828547 -Node: POSIX Floating Point Problems830700 -Ref: POSIX Floating Point Problems-Footnote-1834525 -Node: Integer Programming834563 -Node: Floating-point Programming836302 -Ref: Floating-point Programming-Footnote-1842633 -Ref: Floating-point Programming-Footnote-2842903 -Node: Floating-point Representation843167 -Node: Floating-point Context844332 -Ref: table-ieee-formats845171 -Node: Rounding Mode846555 -Ref: table-rounding-modes847034 -Ref: Rounding Mode-Footnote-1850049 -Node: Gawk and MPFR850228 -Node: Arbitrary Precision Floats851483 -Ref: Arbitrary Precision Floats-Footnote-1853926 -Node: Setting Precision854242 -Ref: table-predefined-precision-strings854928 -Node: Setting Rounding Mode857073 -Ref: table-gawk-rounding-modes857477 -Node: Floating-point Constants858664 -Node: Changing Precision860093 -Ref: Changing Precision-Footnote-1861490 -Node: Exact Arithmetic861664 -Node: Arbitrary Precision Integers864802 -Ref: Arbitrary Precision Integers-Footnote-1867820 -Node: Dynamic Extensions867967 -Node: Extension Intro869425 -Node: Plugin License870690 -Node: Extension Mechanism Outline871375 -Ref: load-extension871792 -Ref: load-new-function873270 -Ref: call-new-function874265 -Node: Extension API Description876280 -Node: Extension API Functions Introduction877493 -Node: General Data Types882359 -Ref: General Data Types-Footnote-1887964 -Node: Requesting Values888263 -Ref: table-value-types-returned888994 -Node: Constructor Functions889948 -Node: Registration Functions892968 -Node: Extension Functions893653 -Node: Exit Callback Functions895878 -Node: Extension Version String897127 -Node: Input Parsers897777 -Node: Output Wrappers907534 -Node: Two-way processors912044 -Node: Printing Messages914252 -Ref: Printing Messages-Footnote-1915329 -Node: Updating `ERRNO'915481 -Node: Accessing Parameters916220 -Node: Symbol Table Access917450 -Node: Symbol table by name917962 -Node: Symbol table by cookie919709 -Ref: Symbol table by cookie-Footnote-1923839 -Node: Cached values923902 -Ref: Cached values-Footnote-1927351 -Node: Array Manipulation927442 -Ref: Array Manipulation-Footnote-1928540 -Node: Array Data Types928579 -Ref: Array Data Types-Footnote-1931282 -Node: Array Functions931374 -Node: Flattening Arrays935140 -Node: Creating Arrays941992 -Node: Extension API Variables946717 -Node: Extension Versioning947353 -Node: Extension API Informational Variables949254 -Node: Extension API Boilerplate950340 -Node: Finding Extensions954144 -Node: Extension Example954704 -Node: Internal File Description955434 -Node: Internal File Ops959525 -Ref: Internal File Ops-Footnote-1971033 -Node: Using Internal File Ops971173 -Ref: Using Internal File Ops-Footnote-1973526 -Node: Extension Samples973792 -Node: Extension Sample File Functions975316 -Node: Extension Sample Fnmatch983801 -Node: Extension Sample Fork985527 -Node: Extension Sample Inplace986745 -Node: Extension Sample Ord988523 -Node: Extension Sample Readdir989359 -Node: Extension Sample Revout990891 -Node: Extension Sample Rev2way991484 -Node: Extension Sample Read write array992174 -Node: Extension Sample Readfile994057 -Node: Extension Sample API Tests994875 -Node: Extension Sample Time995400 -Node: gawkextlib996764 -Node: Language History999545 -Node: V7/SVR3.11001067 -Node: SVR41003387 -Node: POSIX1004829 -Node: BTL1006215 -Node: POSIX/GNU1006949 -Node: Common Extensions1012484 -Node: Ranges and Locales1013790 -Ref: Ranges and Locales-Footnote-11018408 -Ref: Ranges and Locales-Footnote-21018435 -Ref: Ranges and Locales-Footnote-31018695 -Node: Contributors1018916 -Node: Installation1023991 -Node: Gawk Distribution1024885 -Node: Getting1025369 -Node: Extracting1026195 -Node: Distribution contents1027887 -Node: Unix Installation1033592 -Node: Quick Installation1034209 -Node: Additional Configuration Options1036653 -Node: Configuration Philosophy1038389 -Node: Non-Unix Installation1040743 -Node: PC Installation1041201 -Node: PC Binary Installation1042500 -Node: PC Compiling1044348 -Node: PC Testing1047292 -Node: PC Using1048468 -Node: Cygwin1052653 -Node: MSYS1053653 -Node: VMS Installation1054167 -Node: VMS Compilation1054770 -Ref: VMS Compilation-Footnote-11055777 -Node: VMS Installation Details1055835 -Node: VMS Running1057470 -Node: VMS Old Gawk1059077 -Node: Bugs1059551 -Node: Other Versions1063407 -Node: Notes1069491 -Node: Compatibility Mode1070291 -Node: Additions1071074 -Node: Accessing The Source1072001 -Node: Adding Code1073441 -Node: New Ports1079486 -Node: Derived Files1083621 -Ref: Derived Files-Footnote-11088942 -Ref: Derived Files-Footnote-21088976 -Ref: Derived Files-Footnote-31089576 -Node: Future Extensions1089674 -Node: Implementation Limitations1090257 -Node: Extension Design1091509 -Node: Old Extension Problems1092663 -Ref: Old Extension Problems-Footnote-11094171 -Node: Extension New Mechanism Goals1094228 -Ref: Extension New Mechanism Goals-Footnote-11097593 -Node: Extension Other Design Decisions1097779 -Node: Extension Future Growth1099885 -Node: Old Extension Mechanism1100721 -Node: Basic Concepts1102461 -Node: Basic High Level1103142 -Ref: figure-general-flow1103413 -Ref: figure-process-flow1104012 -Ref: Basic High Level-Footnote-11107241 -Node: Basic Data Typing1107426 -Node: Glossary1110781 -Node: Copying1136243 -Node: GNU Free Documentation License1173800 -Node: Index1198937 +Node: Foreword40645 +Node: Preface44990 +Ref: Preface-Footnote-148043 +Ref: Preface-Footnote-248139 +Node: History48371 +Node: Names50745 +Ref: Names-Footnote-152222 +Node: This Manual52294 +Ref: This Manual-Footnote-158068 +Node: Conventions58168 +Node: Manual History60324 +Ref: Manual History-Footnote-163772 +Ref: Manual History-Footnote-263813 +Node: How To Contribute63887 +Node: Acknowledgments65031 +Node: Getting Started69240 +Node: Running gawk71619 +Node: One-shot72805 +Node: Read Terminal74030 +Ref: Read Terminal-Footnote-175680 +Ref: Read Terminal-Footnote-275956 +Node: Long76127 +Node: Executable Scripts77503 +Ref: Executable Scripts-Footnote-179336 +Ref: Executable Scripts-Footnote-279438 +Node: Comments79985 +Node: Quoting82452 +Node: DOS Quoting87075 +Node: Sample Data Files87750 +Node: Very Simple90794 +Node: Two Rules95393 +Node: More Complex97540 +Ref: More Complex-Footnote-1100470 +Node: Statements/Lines100555 +Ref: Statements/Lines-Footnote-1105017 +Node: Other Features105282 +Node: When106210 +Node: Invoking Gawk108357 +Node: Command Line109818 +Node: Options110601 +Ref: Options-Footnote-1125993 +Node: Other Arguments126018 +Node: Naming Standard Input128676 +Node: Environment Variables129770 +Node: AWKPATH Variable130328 +Ref: AWKPATH Variable-Footnote-1133086 +Node: AWKLIBPATH Variable133346 +Node: Other Environment Variables134064 +Node: Exit Status137027 +Node: Include Files137702 +Node: Loading Shared Libraries141271 +Node: Obsolete142635 +Node: Undocumented143332 +Node: Regexp143574 +Node: Regexp Usage144963 +Node: Escape Sequences146989 +Node: Regexp Operators152658 +Ref: Regexp Operators-Footnote-1160038 +Ref: Regexp Operators-Footnote-2160185 +Node: Bracket Expressions160283 +Ref: table-char-classes162173 +Node: GNU Regexp Operators164696 +Node: Case-sensitivity168419 +Ref: Case-sensitivity-Footnote-1171387 +Ref: Case-sensitivity-Footnote-2171622 +Node: Leftmost Longest171730 +Node: Computed Regexps172931 +Node: Reading Files176268 +Node: Records178270 +Ref: Records-Footnote-1187159 +Node: Fields187196 +Ref: Fields-Footnote-1190229 +Node: Nonconstant Fields190315 +Node: Changing Fields192517 +Node: Field Separators198476 +Node: Default Field Splitting201105 +Node: Regexp Field Splitting202222 +Node: Single Character Fields205564 +Node: Command Line Field Separator206623 +Node: Field Splitting Summary210064 +Ref: Field Splitting Summary-Footnote-1213175 +Node: Constant Size213276 +Node: Splitting By Content217860 +Ref: Splitting By Content-Footnote-1221586 +Node: Multiple Line221626 +Ref: Multiple Line-Footnote-1227473 +Node: Getline227652 +Node: Plain Getline229868 +Node: Getline/Variable231963 +Node: Getline/File233110 +Node: Getline/Variable/File234451 +Ref: Getline/Variable/File-Footnote-1236050 +Node: Getline/Pipe236137 +Node: Getline/Variable/Pipe238836 +Node: Getline/Coprocess239943 +Node: Getline/Variable/Coprocess241195 +Node: Getline Notes241932 +Node: Getline Summary244719 +Ref: table-getline-variants245127 +Node: Read Timeout246039 +Ref: Read Timeout-Footnote-1249780 +Node: Command line directories249837 +Node: Printing250467 +Node: Print252098 +Node: Print Examples253435 +Node: Output Separators256219 +Node: OFMT257979 +Node: Printf259337 +Node: Basic Printf260243 +Node: Control Letters261782 +Node: Format Modifiers265594 +Node: Printf Examples271603 +Node: Redirection274318 +Node: Special Files281283 +Node: Special FD281816 +Ref: Special FD-Footnote-1285441 +Node: Special Network285515 +Node: Special Caveats286365 +Node: Close Files And Pipes287161 +Ref: Close Files And Pipes-Footnote-1294144 +Ref: Close Files And Pipes-Footnote-2294292 +Node: Expressions294442 +Node: Values295574 +Node: Constants296250 +Node: Scalar Constants296930 +Ref: Scalar Constants-Footnote-1297789 +Node: Nondecimal-numbers297971 +Node: Regexp Constants300971 +Node: Using Constant Regexps301446 +Node: Variables304501 +Node: Using Variables305156 +Node: Assignment Options306880 +Node: Conversion308752 +Ref: table-locale-affects314253 +Ref: Conversion-Footnote-1314877 +Node: All Operators314986 +Node: Arithmetic Ops315616 +Node: Concatenation318121 +Ref: Concatenation-Footnote-1320913 +Node: Assignment Ops321033 +Ref: table-assign-ops326021 +Node: Increment Ops327352 +Node: Truth Values and Conditions330786 +Node: Truth Values331869 +Node: Typing and Comparison332918 +Node: Variable Typing333711 +Ref: Variable Typing-Footnote-1337608 +Node: Comparison Operators337730 +Ref: table-relational-ops338140 +Node: POSIX String Comparison341689 +Ref: POSIX String Comparison-Footnote-1342645 +Node: Boolean Ops342783 +Ref: Boolean Ops-Footnote-1346861 +Node: Conditional Exp346952 +Node: Function Calls348684 +Node: Precedence352278 +Node: Locales355947 +Node: Patterns and Actions357036 +Node: Pattern Overview358090 +Node: Regexp Patterns359759 +Node: Expression Patterns360302 +Node: Ranges363987 +Node: BEGIN/END366953 +Node: Using BEGIN/END367715 +Ref: Using BEGIN/END-Footnote-1370446 +Node: I/O And BEGIN/END370552 +Node: BEGINFILE/ENDFILE372834 +Node: Empty375748 +Node: Using Shell Variables376064 +Node: Action Overview378349 +Node: Statements380706 +Node: If Statement382560 +Node: While Statement384059 +Node: Do Statement386103 +Node: For Statement387259 +Node: Switch Statement390411 +Node: Break Statement392508 +Node: Continue Statement394498 +Node: Next Statement396291 +Node: Nextfile Statement398681 +Node: Exit Statement401324 +Node: Built-in Variables403740 +Node: User-modified404835 +Ref: User-modified-Footnote-1413193 +Node: Auto-set413255 +Ref: Auto-set-Footnote-1426333 +Ref: Auto-set-Footnote-2426538 +Node: ARGC and ARGV426594 +Node: Arrays430445 +Node: Array Basics431950 +Node: Array Intro432776 +Node: Reference to Elements437093 +Node: Assigning Elements439363 +Node: Array Example439854 +Node: Scanning an Array441586 +Node: Controlling Scanning443900 +Ref: Controlling Scanning-Footnote-1448987 +Node: Delete449303 +Ref: Delete-Footnote-1452068 +Node: Numeric Array Subscripts452125 +Node: Uninitialized Subscripts454308 +Node: Multidimensional455935 +Node: Multiscanning459028 +Node: Arrays of Arrays460617 +Node: Functions465257 +Node: Built-in466076 +Node: Calling Built-in467154 +Node: Numeric Functions469142 +Ref: Numeric Functions-Footnote-1472974 +Ref: Numeric Functions-Footnote-2473331 +Ref: Numeric Functions-Footnote-3473379 +Node: String Functions473648 +Ref: String Functions-Footnote-1496568 +Ref: String Functions-Footnote-2496697 +Ref: String Functions-Footnote-3496945 +Node: Gory Details497032 +Ref: table-sub-escapes498711 +Ref: table-sub-posix-92500065 +Ref: table-sub-proposed501416 +Ref: table-posix-sub502770 +Ref: table-gensub-escapes504315 +Ref: Gory Details-Footnote-1505491 +Ref: Gory Details-Footnote-2505542 +Node: I/O Functions505693 +Ref: I/O Functions-Footnote-1512678 +Node: Time Functions512825 +Ref: Time Functions-Footnote-1523758 +Ref: Time Functions-Footnote-2523826 +Ref: Time Functions-Footnote-3523984 +Ref: Time Functions-Footnote-4524095 +Ref: Time Functions-Footnote-5524207 +Ref: Time Functions-Footnote-6524434 +Node: Bitwise Functions524700 +Ref: table-bitwise-ops525262 +Ref: Bitwise Functions-Footnote-1529483 +Node: Type Functions529667 +Node: I18N Functions530818 +Node: User-defined532445 +Node: Definition Syntax533249 +Ref: Definition Syntax-Footnote-1538159 +Node: Function Example538228 +Node: Function Caveats540822 +Node: Calling A Function541243 +Node: Variable Scope542358 +Node: Pass By Value/Reference545321 +Node: Return Statement548829 +Node: Dynamic Typing551810 +Node: Indirect Calls552741 +Node: Library Functions562426 +Ref: Library Functions-Footnote-1565939 +Ref: Library Functions-Footnote-2566082 +Node: Library Names566253 +Ref: Library Names-Footnote-1569724 +Ref: Library Names-Footnote-2569944 +Node: General Functions570030 +Node: Strtonum Function571058 +Node: Assert Function573988 +Node: Round Function577314 +Node: Cliff Random Function578857 +Node: Ordinal Functions579873 +Ref: Ordinal Functions-Footnote-1582943 +Ref: Ordinal Functions-Footnote-2583195 +Node: Join Function583404 +Ref: Join Function-Footnote-1585175 +Node: Getlocaltime Function585375 +Node: Readfile Function589116 +Node: Data File Management590955 +Node: Filetrans Function591587 +Node: Rewind Function595656 +Node: File Checking597043 +Node: Empty Files598137 +Node: Ignoring Assigns600367 +Node: Getopt Function601920 +Ref: Getopt Function-Footnote-1613223 +Node: Passwd Functions613426 +Ref: Passwd Functions-Footnote-1622401 +Node: Group Functions622489 +Node: Walking Arrays630573 +Node: Sample Programs632710 +Node: Running Examples633384 +Node: Clones634112 +Node: Cut Program635336 +Node: Egrep Program645181 +Ref: Egrep Program-Footnote-1652954 +Node: Id Program653064 +Node: Split Program656680 +Ref: Split Program-Footnote-1660199 +Node: Tee Program660327 +Node: Uniq Program663130 +Node: Wc Program670559 +Ref: Wc Program-Footnote-1674825 +Ref: Wc Program-Footnote-2675025 +Node: Miscellaneous Programs675117 +Node: Dupword Program676305 +Node: Alarm Program678336 +Node: Translate Program683089 +Ref: Translate Program-Footnote-1687476 +Ref: Translate Program-Footnote-2687724 +Node: Labels Program687858 +Ref: Labels Program-Footnote-1691229 +Node: Word Sorting691313 +Node: History Sorting695197 +Node: Extract Program697036 +Ref: Extract Program-Footnote-1704539 +Node: Simple Sed704667 +Node: Igawk Program707729 +Ref: Igawk Program-Footnote-1722886 +Ref: Igawk Program-Footnote-2723087 +Node: Anagram Program723225 +Node: Signature Program726293 +Node: Advanced Features727393 +Node: Nondecimal Data729279 +Node: Array Sorting730862 +Node: Controlling Array Traversal731559 +Node: Array Sorting Functions739843 +Ref: Array Sorting Functions-Footnote-1743712 +Node: Two-way I/O743906 +Ref: Two-way I/O-Footnote-1749338 +Node: TCP/IP Networking749408 +Node: Profiling752252 +Node: Internationalization759749 +Node: I18N and L10N761174 +Node: Explaining gettext761860 +Ref: Explaining gettext-Footnote-1766928 +Ref: Explaining gettext-Footnote-2767112 +Node: Programmer i18n767277 +Node: Translator i18n771479 +Node: String Extraction772272 +Ref: String Extraction-Footnote-1773233 +Node: Printf Ordering773319 +Ref: Printf Ordering-Footnote-1776103 +Node: I18N Portability776167 +Ref: I18N Portability-Footnote-1778616 +Node: I18N Example778679 +Ref: I18N Example-Footnote-1781317 +Node: Gawk I18N781389 +Node: Debugger782010 +Node: Debugging782981 +Node: Debugging Concepts783414 +Node: Debugging Terms785270 +Node: Awk Debugging787867 +Node: Sample Debugging Session788759 +Node: Debugger Invocation789279 +Node: Finding The Bug790611 +Node: List of Debugger Commands797099 +Node: Breakpoint Control798433 +Node: Debugger Execution Control802097 +Node: Viewing And Changing Data805457 +Node: Execution Stack808813 +Node: Debugger Info810280 +Node: Miscellaneous Debugger Commands814262 +Node: Readline Support819438 +Node: Limitations820269 +Node: Arbitrary Precision Arithmetic822521 +Ref: Arbitrary Precision Arithmetic-Footnote-1824170 +Node: General Arithmetic824318 +Node: Floating Point Issues826038 +Node: String Conversion Precision826919 +Ref: String Conversion Precision-Footnote-1828624 +Node: Unexpected Results828733 +Node: POSIX Floating Point Problems830886 +Ref: POSIX Floating Point Problems-Footnote-1834711 +Node: Integer Programming834749 +Node: Floating-point Programming836488 +Ref: Floating-point Programming-Footnote-1842819 +Ref: Floating-point Programming-Footnote-2843089 +Node: Floating-point Representation843353 +Node: Floating-point Context844518 +Ref: table-ieee-formats845357 +Node: Rounding Mode846741 +Ref: table-rounding-modes847220 +Ref: Rounding Mode-Footnote-1850235 +Node: Gawk and MPFR850414 +Node: Arbitrary Precision Floats851669 +Ref: Arbitrary Precision Floats-Footnote-1854112 +Node: Setting Precision854428 +Ref: table-predefined-precision-strings855114 +Node: Setting Rounding Mode857259 +Ref: table-gawk-rounding-modes857663 +Node: Floating-point Constants858850 +Node: Changing Precision860279 +Ref: Changing Precision-Footnote-1861676 +Node: Exact Arithmetic861850 +Node: Arbitrary Precision Integers864988 +Ref: Arbitrary Precision Integers-Footnote-1868006 +Node: Dynamic Extensions868153 +Node: Extension Intro869611 +Node: Plugin License870876 +Node: Extension Mechanism Outline871561 +Ref: load-extension871978 +Ref: load-new-function873456 +Ref: call-new-function874451 +Node: Extension API Description876466 +Node: Extension API Functions Introduction877679 +Node: General Data Types882545 +Ref: General Data Types-Footnote-1888150 +Node: Requesting Values888449 +Ref: table-value-types-returned889180 +Node: Constructor Functions890134 +Node: Registration Functions893154 +Node: Extension Functions893839 +Node: Exit Callback Functions896064 +Node: Extension Version String897313 +Node: Input Parsers897963 +Node: Output Wrappers907720 +Node: Two-way processors912230 +Node: Printing Messages914438 +Ref: Printing Messages-Footnote-1915515 +Node: Updating `ERRNO'915667 +Node: Accessing Parameters916406 +Node: Symbol Table Access917636 +Node: Symbol table by name918148 +Node: Symbol table by cookie919895 +Ref: Symbol table by cookie-Footnote-1924025 +Node: Cached values924088 +Ref: Cached values-Footnote-1927537 +Node: Array Manipulation927628 +Ref: Array Manipulation-Footnote-1928726 +Node: Array Data Types928765 +Ref: Array Data Types-Footnote-1931468 +Node: Array Functions931560 +Node: Flattening Arrays935326 +Node: Creating Arrays942178 +Node: Extension API Variables946903 +Node: Extension Versioning947539 +Node: Extension API Informational Variables949440 +Node: Extension API Boilerplate950526 +Node: Finding Extensions954330 +Node: Extension Example954890 +Node: Internal File Description955620 +Node: Internal File Ops959711 +Ref: Internal File Ops-Footnote-1971219 +Node: Using Internal File Ops971359 +Ref: Using Internal File Ops-Footnote-1973712 +Node: Extension Samples973978 +Node: Extension Sample File Functions975502 +Node: Extension Sample Fnmatch983987 +Node: Extension Sample Fork985713 +Node: Extension Sample Inplace986931 +Node: Extension Sample Ord988709 +Node: Extension Sample Readdir989545 +Node: Extension Sample Revout991077 +Node: Extension Sample Rev2way991670 +Node: Extension Sample Read write array992360 +Node: Extension Sample Readfile994243 +Node: Extension Sample API Tests995061 +Node: Extension Sample Time995586 +Node: gawkextlib996950 +Node: Language History999731 +Node: V7/SVR3.11001253 +Node: SVR41003573 +Node: POSIX1005015 +Node: BTL1006401 +Node: POSIX/GNU1007135 +Node: Common Extensions1012736 +Node: Ranges and Locales1014042 +Ref: Ranges and Locales-Footnote-11018660 +Ref: Ranges and Locales-Footnote-21018687 +Ref: Ranges and Locales-Footnote-31018947 +Node: Contributors1019168 +Node: Installation1024243 +Node: Gawk Distribution1025137 +Node: Getting1025621 +Node: Extracting1026447 +Node: Distribution contents1028139 +Node: Unix Installation1033844 +Node: Quick Installation1034461 +Node: Additional Configuration Options1036905 +Node: Configuration Philosophy1038641 +Node: Non-Unix Installation1040995 +Node: PC Installation1041453 +Node: PC Binary Installation1042752 +Node: PC Compiling1044600 +Node: PC Testing1047544 +Node: PC Using1048720 +Node: Cygwin1052905 +Node: MSYS1053905 +Node: VMS Installation1054419 +Node: VMS Compilation1055183 +Ref: VMS Compilation-Footnote-11056798 +Node: VMS Dynamic Extensions1056856 +Node: VMS Installation Details1058229 +Node: VMS Running1060063 +Node: VMS GNV1062897 +Node: VMS Old Gawk1063606 +Node: Bugs1064076 +Node: Other Versions1067996 +Node: Notes1074080 +Node: Compatibility Mode1074880 +Node: Additions1075663 +Node: Accessing The Source1076590 +Node: Adding Code1078030 +Node: New Ports1084075 +Node: Derived Files1088210 +Ref: Derived Files-Footnote-11093531 +Ref: Derived Files-Footnote-21093565 +Ref: Derived Files-Footnote-31094165 +Node: Future Extensions1094263 +Node: Implementation Limitations1094846 +Node: Extension Design1096098 +Node: Old Extension Problems1097252 +Ref: Old Extension Problems-Footnote-11098760 +Node: Extension New Mechanism Goals1098817 +Ref: Extension New Mechanism Goals-Footnote-11102182 +Node: Extension Other Design Decisions1102368 +Node: Extension Future Growth1104474 +Node: Old Extension Mechanism1105310 +Node: Basic Concepts1107050 +Node: Basic High Level1107731 +Ref: figure-general-flow1108002 +Ref: figure-process-flow1108601 +Ref: Basic High Level-Footnote-11111830 +Node: Basic Data Typing1112015 +Node: Glossary1115370 +Node: Copying1140832 +Node: GNU Free Documentation License1178389 +Node: Index1203526 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 47ea0acc..24879b78 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -822,9 +822,12 @@ particular records in a file and perform operations upon them. * VMS Installation:: Installing @command{gawk} on VMS. * VMS Compilation:: How to compile @command{gawk} under VMS. +* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic + extensions on VMS. * VMS Installation Details:: How to install @command{gawk} under VMS. * VMS Running:: How to run @command{gawk} under VMS. +* VMS GNV:: The VMS GNV Project. * VMS Old Gawk:: An old version comes with some VMS systems. * Bugs:: Reporting Problems and Bugs. @@ -15031,7 +15034,7 @@ on the command line (@pxref{Options}). @section Multidimensional Arrays @menu -* Multiscanning:: Scanning multidimensional arrays. +* Multiscanning:: Scanning multidimensional arrays. @end menu @cindex subscripts in arrays, multidimensional @@ -33569,6 +33572,9 @@ Tandem (non-POSIX) @item Prestandard VAX C compiler for VAX/VMS +@item +GCC for VAX and Alpha has not been tested for a while. + @end itemize @end itemize @@ -34853,8 +34859,11 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS. @menu * VMS Compilation:: How to compile @command{gawk} under VMS. +* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic extensions on + VMS. * VMS Installation Details:: How to install @command{gawk} under VMS. * VMS Running:: How to run @command{gawk} under VMS. +* VMS GNV:: The VMS GNV Project. * VMS Old Gawk:: An old version comes with some VMS systems. @end menu @@ -34862,41 +34871,117 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS. @appendixsubsubsec Compiling @command{gawk} on VMS @cindex compiling @command{gawk} for VMS -To compile @command{gawk} under VMS, there is a @code{DCL} command procedure that -issues all the necessary @code{CC} and @code{LINK} commands. There is -also a @file{Makefile} for use with the @code{MMS} utility. From the source -directory, use either: +To compile @command{gawk} under VMS, there is a @code{DCL} command procedure +that issues all the necessary @code{CC} and @code{LINK} commands. There is +also a @file{Makefile} for use with the @code{MMS} and @code{MMK} utilities. +From the source directory, use either: + +@example +$ @kbd{@@[.vms]vmsbuild.com} +@end example + +@noindent +or: @example -$ @kbd{@@[.VMS]VMSBUILD.COM} +$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms gawk} @end example @noindent or: @example -$ @kbd{MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK} +$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms gawk} @end example +@code{MMK} is an open source, free, near-clone of @code{MMS} and +can better handle @code{ODS-5} volumes with upper- and lowercase filenames. +@code{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}. + +With @code{ODS-5} volumes and extended parsing enabled, the case of the target +parameter may need to be exact. + Older versions of @command{gawk} could be built with VAX C or GNU C on VAX/VMS, as well as with DEC C, but that is no longer supported. DEC C (also briefly known as ``Compaq C'' and now known as ``HP C,'' but referred to here as ``DEC C'') is required. Both -@code{VMSBUILD.COM} and @code{DESCRIP.MMS} contain some obsolete support +@code{vmsbuild.com} and @code{descrip.mms} contain some obsolete support for the older compilers but are set up to use DEC C by default. -@command{gawk} has been tested under Alpha/VMS 7.3-1 using Compaq C V6.4, -and on Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.@footnote{The IA64 -architecture is also known as ``Itanium.''} +@command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 +using Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3. +The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both +Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture +is also known as ``Itanium.''} + +Work is currently being done for a procedure to build @command{gawk} and create +a PCSI kit for compatible with the GNV product. + +@node VMS Dynamic Extensions +@appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS + +The extensions that have been ported to VMS can be built using one of +the following commands. + +@example +$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms extensions} +@end example + +@noindent +or: + +@example +$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms extensions} +@end example + +@command{gawk} uses @code{AWKLIBPATH} as either an environment variable +or a logical name to find the dynamic extensions. + +Dynamic extensions need to be compiled with the same compiler options for +floating point, pointer size, and symbol name handling as were used +to compile @command{gawk} itself. +Alpha and Itanium should use IEEE floating point. The pointer size is 32 bits, +and the symbol name handling should be exact case with CRC shortening for +symbols longer than 32 bits. + +For Alpha and Itanium: + +@example +/name=(as_is,short) +/float=ieee/ieee_mode=denorm_results +@end example + +For VAX: + +@example +/name=(as_is,short) +@end example + +Compile time macros need to be defined before the first VMS-supplied +header file is included. + +@example +#if (__CRTL_VER >= 70200000) && !defined (__VAX) +#define _LARGEFILE 1 +#endif + +#ifndef __VAX +#ifdef __CRTL_VER +#if __CRTL_VER >= 80200000 +#define _USE_STD_STAT 1 +#endif +#endif +#endif +@end example @node VMS Installation Details @appendixsubsubsec Installing @command{gawk} on VMS -To install @command{gawk}, all you need is a ``foreign'' command, which is -a @code{DCL} symbol whose value begins with a dollar sign. For example: +To use @command{gawk}, all you need is a ``foreign'' command, which is a +@code{DCL} symbol whose value begins with a dollar sign. For example: @example -$ @kbd{GAWK :== $disk1:[gnubin]GAWK} +$ @kbd{GAWK :== $disk1:[gnubin]gawk} @end example @noindent @@ -34908,10 +34993,15 @@ Alternatively, the symbol may be placed in the system-wide @file{sylogin.com} procedure, which allows all users to run @command{gawk}. +If your @command{gawk} was installed by a PCSI kit into the +@file{GNV$GNU:} directory tree, the program will be known as +@file{GNV$GNU:[bin]gnv$gawk.exe} and the help file will be +@file{GNV$GNU:[vms_help]gawk.hlp}. + Optionally, the help entry can be loaded into a VMS help library: @example -$ @kbd{LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP} +$ @kbd{LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp} @end example @noindent @@ -34965,6 +35055,39 @@ flag is required to force Unix-style parsing rather than @code{DCL} parsing. If other dash-type options (or multiple parameters such as data files to process) are present, there is no ambiguity and @option{--} can be omitted. +@cindex exit status, of VMS +The @code{exit} value is a Unix-style value and is encoded to a VMS exit +status value when the program exits. + +The VMS severity bits will be set based on the @code{exit} value. +A failure is indicated by 1 and VMS sets the @code{ERROR} status. +A fatal error is indicated by 2 and VMS will set the @code{FATAL} status. +All other values will have the @code{SUCCESS} status. The exit value is +encoded to comply with VMS coding standards and will have the +@code{C_FACILITY_NO} of @code{0x350000} with the constant @code{0xA000} +added to the number shifted over by 3 bits to make room for the severity codes. + +To extract the actual @command{gawk} exit code from the VMS status use: + +@example +unix_status = (vms_status .and. &x7f8) / 8 +@end example + +@noindent +A C program that uses @code{exec()} to call @command{gawk} will get the original +Unix-style exit value. + +Older versions of @command{gawk} treated a Unix exit code 0 as 1, a failure +as 2, a fatal error as 4, and passed all the other numbers through. +This violated the VMS exit status coding requirements. + +@cindex floating-point, VAX/VMS +VAX/VMS floating point uses unbiased rounding. @xref{Round Function}. + +VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE} +or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS +7.3 do not set these logical names. + @c @cindex directory search @c @cindex path, search @cindex search paths @@ -34976,6 +35099,20 @@ of @env{AWKPATH} is a comma-separated list of directory specifications. When defining it, the value should be quoted so that it retains a single translation and not a multitranslation @code{RMS} searchlist. +@node VMS GNV +@appendixsubsubsec The VMS GNV Project + +The VMS GNV package provides a build environment similar to POSIX with ports +of a collection of open source tools. The @command{gawk} found in the GNV +base kit is an older port. Currently the GNV project is being reorganized +to supply individual PCSI packages for each component. +See @uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}. + +The normal build procedure for @command{gawk} produces a program that +is suitable for use with GNV. At this time work is being done to create +the procedures for building a PCSI kit to replace the older @command{gawk} +port. + @ignore @c The VMS POSIX product, also known as POSIX for OpenVMS, is long defunct @c and building gawk for it has not been tested in many years, but these @@ -35125,7 +35262,9 @@ as follows: @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. @cindex Rankin, Pat -@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com} +@cindex Malmberg, John +@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and +John Malmberg, @EMAIL{wb8tyw@@gmail.com,wb8tyw at gmail.com}. @cindex Pitts, Dave @item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}. diff --git a/doc/gawktexi.in b/doc/gawktexi.in index a82a1b37..9a853e17 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -817,9 +817,12 @@ particular records in a file and perform operations upon them. * VMS Installation:: Installing @command{gawk} on VMS. * VMS Compilation:: How to compile @command{gawk} under VMS. +* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic + extensions on VMS. * VMS Installation Details:: How to install @command{gawk} under VMS. * VMS Running:: How to run @command{gawk} under VMS. +* VMS GNV:: The VMS GNV Project. * VMS Old Gawk:: An old version comes with some VMS systems. * Bugs:: Reporting Problems and Bugs. @@ -14370,7 +14373,7 @@ on the command line (@pxref{Options}). @section Multidimensional Arrays @menu -* Multiscanning:: Scanning multidimensional arrays. +* Multiscanning:: Scanning multidimensional arrays. @end menu @cindex subscripts in arrays, multidimensional @@ -32718,6 +32721,9 @@ Tandem (non-POSIX) @item Prestandard VAX C compiler for VAX/VMS +@item +GCC for VAX and Alpha has not been tested for a while. + @end itemize @end itemize @@ -34002,8 +34008,11 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS. @menu * VMS Compilation:: How to compile @command{gawk} under VMS. +* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic extensions on + VMS. * VMS Installation Details:: How to install @command{gawk} under VMS. * VMS Running:: How to run @command{gawk} under VMS. +* VMS GNV:: The VMS GNV Project. * VMS Old Gawk:: An old version comes with some VMS systems. @end menu @@ -34011,41 +34020,117 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS. @appendixsubsubsec Compiling @command{gawk} on VMS @cindex compiling @command{gawk} for VMS -To compile @command{gawk} under VMS, there is a @code{DCL} command procedure that -issues all the necessary @code{CC} and @code{LINK} commands. There is -also a @file{Makefile} for use with the @code{MMS} utility. From the source -directory, use either: +To compile @command{gawk} under VMS, there is a @code{DCL} command procedure +that issues all the necessary @code{CC} and @code{LINK} commands. There is +also a @file{Makefile} for use with the @code{MMS} and @code{MMK} utilities. +From the source directory, use either: + +@example +$ @kbd{@@[.vms]vmsbuild.com} +@end example + +@noindent +or: @example -$ @kbd{@@[.VMS]VMSBUILD.COM} +$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms gawk} @end example @noindent or: @example -$ @kbd{MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK} +$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms gawk} @end example +@code{MMK} is an open source, free, near-clone of @code{MMS} and +can better handle @code{ODS-5} volumes with upper- and lowercase filenames. +@code{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}. + +With @code{ODS-5} volumes and extended parsing enabled, the case of the target +parameter may need to be exact. + Older versions of @command{gawk} could be built with VAX C or GNU C on VAX/VMS, as well as with DEC C, but that is no longer supported. DEC C (also briefly known as ``Compaq C'' and now known as ``HP C,'' but referred to here as ``DEC C'') is required. Both -@code{VMSBUILD.COM} and @code{DESCRIP.MMS} contain some obsolete support +@code{vmsbuild.com} and @code{descrip.mms} contain some obsolete support for the older compilers but are set up to use DEC C by default. -@command{gawk} has been tested under Alpha/VMS 7.3-1 using Compaq C V6.4, -and on Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.@footnote{The IA64 -architecture is also known as ``Itanium.''} +@command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 +using Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3. +The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both +Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture +is also known as ``Itanium.''} + +Work is currently being done for a procedure to build @command{gawk} and create +a PCSI kit for compatible with the GNV product. + +@node VMS Dynamic Extensions +@appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS + +The extensions that have been ported to VMS can be built using one of +the following commands. + +@example +$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms extensions} +@end example + +@noindent +or: + +@example +$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms extensions} +@end example + +@command{gawk} uses @code{AWKLIBPATH} as either an environment variable +or a logical name to find the dynamic extensions. + +Dynamic extensions need to be compiled with the same compiler options for +floating point, pointer size, and symbol name handling as were used +to compile @command{gawk} itself. +Alpha and Itanium should use IEEE floating point. The pointer size is 32 bits, +and the symbol name handling should be exact case with CRC shortening for +symbols longer than 32 bits. + +For Alpha and Itanium: + +@example +/name=(as_is,short) +/float=ieee/ieee_mode=denorm_results +@end example + +For VAX: + +@example +/name=(as_is,short) +@end example + +Compile time macros need to be defined before the first VMS-supplied +header file is included. + +@example +#if (__CRTL_VER >= 70200000) && !defined (__VAX) +#define _LARGEFILE 1 +#endif + +#ifndef __VAX +#ifdef __CRTL_VER +#if __CRTL_VER >= 80200000 +#define _USE_STD_STAT 1 +#endif +#endif +#endif +@end example @node VMS Installation Details @appendixsubsubsec Installing @command{gawk} on VMS -To install @command{gawk}, all you need is a ``foreign'' command, which is -a @code{DCL} symbol whose value begins with a dollar sign. For example: +To use @command{gawk}, all you need is a ``foreign'' command, which is a +@code{DCL} symbol whose value begins with a dollar sign. For example: @example -$ @kbd{GAWK :== $disk1:[gnubin]GAWK} +$ @kbd{GAWK :== $disk1:[gnubin]gawk} @end example @noindent @@ -34057,10 +34142,15 @@ Alternatively, the symbol may be placed in the system-wide @file{sylogin.com} procedure, which allows all users to run @command{gawk}. +If your @command{gawk} was installed by a PCSI kit into the +@file{GNV$GNU:} directory tree, the program will be known as +@file{GNV$GNU:[bin]gnv$gawk.exe} and the help file will be +@file{GNV$GNU:[vms_help]gawk.hlp}. + Optionally, the help entry can be loaded into a VMS help library: @example -$ @kbd{LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP} +$ @kbd{LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp} @end example @noindent @@ -34114,6 +34204,39 @@ flag is required to force Unix-style parsing rather than @code{DCL} parsing. If other dash-type options (or multiple parameters such as data files to process) are present, there is no ambiguity and @option{--} can be omitted. +@cindex exit status, of VMS +The @code{exit} value is a Unix-style value and is encoded to a VMS exit +status value when the program exits. + +The VMS severity bits will be set based on the @code{exit} value. +A failure is indicated by 1 and VMS sets the @code{ERROR} status. +A fatal error is indicated by 2 and VMS will set the @code{FATAL} status. +All other values will have the @code{SUCCESS} status. The exit value is +encoded to comply with VMS coding standards and will have the +@code{C_FACILITY_NO} of @code{0x350000} with the constant @code{0xA000} +added to the number shifted over by 3 bits to make room for the severity codes. + +To extract the actual @command{gawk} exit code from the VMS status use: + +@example +unix_status = (vms_status .and. &x7f8) / 8 +@end example + +@noindent +A C program that uses @code{exec()} to call @command{gawk} will get the original +Unix-style exit value. + +Older versions of @command{gawk} treated a Unix exit code 0 as 1, a failure +as 2, a fatal error as 4, and passed all the other numbers through. +This violated the VMS exit status coding requirements. + +@cindex floating-point, VAX/VMS +VAX/VMS floating point uses unbiased rounding. @xref{Round Function}. + +VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE} +or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS +7.3 do not set these logical names. + @c @cindex directory search @c @cindex path, search @cindex search paths @@ -34125,6 +34248,20 @@ of @env{AWKPATH} is a comma-separated list of directory specifications. When defining it, the value should be quoted so that it retains a single translation and not a multitranslation @code{RMS} searchlist. +@node VMS GNV +@appendixsubsubsec The VMS GNV Project + +The VMS GNV package provides a build environment similar to POSIX with ports +of a collection of open source tools. The @command{gawk} found in the GNV +base kit is an older port. Currently the GNV project is being reorganized +to supply individual PCSI packages for each component. +See @uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}. + +The normal build procedure for @command{gawk} produces a program that +is suitable for use with GNV. At this time work is being done to create +the procedures for building a PCSI kit to replace the older @command{gawk} +port. + @ignore @c The VMS POSIX product, also known as POSIX for OpenVMS, is long defunct @c and building gawk for it has not been tested in many years, but these @@ -34274,7 +34411,9 @@ as follows: @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. @cindex Rankin, Pat -@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com} +@cindex Malmberg, John +@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and +John Malmberg, @EMAIL{wb8tyw@@gmail.com,wb8tyw at gmail.com}. @cindex Pitts, Dave @item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}. |