gawk: Functions Summary

 
 9.4 Summary
 ===========
 
    * 'awk' provides built-in functions and lets you define your own
      functions.
 
    * POSIX 'awk' provides three kinds of built-in functions: numeric,
      string, and I/O. 'gawk' provides functions that sort arrays, work
      with values representing time, do bit manipulation, determine
      variable type (array versus scalar), and internationalize and
      localize programs.  'gawk' also provides several extensions to some
      of standard functions, typically in the form of additional
      arguments.
 
    * Functions accept zero or more arguments and return a value.  The
      expressions that provide the argument values are completely
      evaluated before the function is called.  Order of evaluation is
      not defined.  The return value can be ignored.
 
    * The handling of backslash in 'sub()' and 'gsub()' is not simple.
      It is more straightforward in 'gawk''s 'gensub()' function, but
      that function still requires care in its use.
 
    * User-defined functions provide important capabilities but come with
      some syntactic inelegancies.  In a function call, there cannot be
      any space between the function name and the opening left
      parenthesis of the argument list.  Also, there is no provision for
      local variables, so the convention is to add extra parameters, and
      to separate them visually from the real parameters by extra
      whitespace.
 
    * User-defined functions may call other user-defined (and built-in)
      functions and may call themselves recursively.  Function parameters
      "hide" any global variables of the same names.  You cannot use the
      name of a reserved variable (such as 'ARGC') as the name of a
      parameter in user-defined functions.
 
    * Scalar values are passed to user-defined functions by value.  Array
      parameters are passed by reference; any changes made by the
      function to array parameters are thus visible after the function
      has returned.
 
    * Use the 'return' statement to return from a user-defined function.
      An optional expression becomes the function's return value.  Only
      scalar values may be returned by a function.
 
    * If a variable that has never been used is passed to a user-defined
      function, how that function treats the variable can set its nature:
      either scalar or array.
 
    * 'gawk' provides indirect function calls using a special syntax.  By
      setting a variable to the name of a function, you can determine at
      runtime what function will be called at that point in the program.
      This is equivalent to function pointers in C and C++.