home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / qtawk / diffdoc.fmt < prev    next >
Text File  |  1990-11-04  |  13KB  |  274 lines

  1.                      QTAwk
  2.  
  3.  
  4.     A new shareware program, QTAwk.  The program is a "derivative" of  "The
  5.     Awk Programming Language."  Four versions of the program exist for  the
  6.     IBM PC and    clones depending on  the h/w configuration:   8086/8088, or
  7.     80286+ and with or without 80x87 numeric co-processor.
  8.  
  9.     The QTAwk package contains many complete and sample utilities which run
  10.     under QTAwk.
  11.  
  12.   ----------------------------------------------------------------------------
  13.  
  14.     The major differences between QTAwk and Awk are summarized below:
  15.  
  16.  
  17.         Major differences between QTAwk (version 4.20) and Awk.
  18.  
  19.   1.  Expanded Regular Expressions
  20.       All of the Awk  regular  expression  operators  are  allowed  plus  the
  21.       following:
  22.       a)  complemented    character  class using the Awk notation, '[^...]', as
  23.       well as the Awk/QTAwk and C logical  negation  operator,  '[!...]'.
  24.  
  25.       b)  Matched  character  classes,    '[#...]'.  These  classes are used in
  26.       pairs. The position of the character matched in the first class  of
  27.       the pair, determines the character which must match in the position
  28.       occupied by the second class of the pair.
  29.  
  30.       c)  Look-ahead Operator. r@t regular expression r is matched only  when
  31.       followed by regular expression t.
  32.  
  33.       d)  Repetition  Operator. r{n1,n2} at least n1 and up to n2 repetitions
  34.       of regular expression r. 1 <= n1 <= n2
  35.  
  36.       e)  Named Expressions.
  37.       {named_expr} is replaced by the string value    of  the  corrsponding
  38.       variable.
  39.  
  40.   2.  Consistent  statement  termination  syntax.  The QTAwk Utility Creation
  41.       Tool utilizes the semi-colon, ';', to  terminate  all  statements.  The
  42.       practice    in  Awk of using newlines to "sometimes" terminate statements
  43.       is no longer allowed.
  44.  
  45.   3.  Expanded Operator Set
  46.       The Awk set of operators has been changed to more closely  match    those
  47.       of C. The Awk match operator, '~', has been changed to '~~' so that the
  48.       similarity between the match operators, '~~' and '!~', to the  equality
  49.       operators,  '=='  and  '!=", is complete. The single tilde symbol, '~',
  50.       reverts to the C one's complement operator, an addition to the operator
  51.       set  over  Awk.  The  introduction of the explicit string concatenation
  52.       operator. The remaining "new" operators to QTAwk are:
  53.  
  54.  
  55.       Operation         Operator
  56.       ---------         --------
  57.       tag            $$
  58.       one's complement      ~
  59.       concatenation        ∩ ( ASCII 239, 0xef character)
  60.       shift left/right        << >>
  61.       matching            ~~ !~
  62.       bit-wise AND        &
  63.       bit-wise XOR        @
  64.       bit-wise OR        |
  65.       sequence            ,
  66.  
  67.        The carot, '^', remains as the expoentiation operator. The symbol  '@'
  68.       is used for the exclusive OR operator.
  69.  
  70.   4.  Expanded set of recognized constants in QTAwk utilities:
  71.       a)  decimal integers,
  72.       b)  octal integers,
  73.       c)  hexadecimal integers,
  74.       d)  character constants, and
  75.       e)  floating point constants.
  76.  
  77.   5.  Expanded Pre-defined patterns giving more control:
  78.       a)  INIITAL  -  similar  to  BEGIN. Actions executed after opening each
  79.       input file and before reading first record.
  80.       b)  FINAL - similar to END. Actions executed after reading last  record
  81.       of each input file and before closing file.
  82.       c)  NOMATCH  -  actions  executed  for  each  input record for which no
  83.       pattern was matched.
  84.       d)  GROUP - used to  group  multiple  regular  expressions  for  search
  85.       optimization. Can speed search by a factor of six.
  86.  
  87.   6.  True multi-dimensional arrays
  88.       The  use    of  the comma in index expressions to simulate multiple array
  89.       indices is no longer supported. True multiple  indices  are  supported.
  90.       Indexing    is in the C manner, 'a[i1][i2]'. The SUBSEP built-in variable
  91.       of AWK has been dropped since it is no longer necessary.
  92.  
  93.   7.  Integer array indices as well as string indices
  94.       Array indices have been expanded to include integers  as    well  as  the
  95.       string  indices  of  Awk.  Indices  are  not automatically converted to
  96.       strings as in Awk. Thus, for true integer indices, the  index  ordering
  97.       follows  the  numeric  sequence  with  an  integer  index value of '10'
  98.       following a value of '2' instead of preceeding it.
  99.  
  100.   8.  Arrays integrated into QTAwk
  101.       QTAwk  integrates   arrays  with    arithmetic  operators  so  that   the
  102.       operations  are  carried out on the entire array. QTAwk also integrates
  103.       arrays into user-defined functions so that they can be  passed  to  and
  104.       returned    from  such  functions  in a natural and intuitive manner. Awk
  105.       does not allow returning arrays from user-defined  functions  or    allow
  106.       arithmetic operators to operate on whole arrays.
  107.  
  108.   9.  NEW keywords:
  109.  
  110.       a)  cycle
  111.       similar  to 'next' except that may use current record in restarting
  112.       outer pattern matching loop.
  113.       b)  deletea
  114.       similiar to 'delete' except that ALL array values deleted.
  115.       c)  switch, case, default
  116.       similiar to C syntax with the allowed 'switch'  and  'case'  values
  117.       expanded  to    include  any  legal  QTAwk  expression,  evaluated at
  118.       run-time. The expressions may evaluate to any value  including  any
  119.       numeric value, string or regular expression.
  120.       d)  local
  121.       new  keyword    to  allow  the declaration and use of local variables
  122.       within compound statements, including user-defined  functions.  Its
  123.       use  in  user  defined  functions  instead  of  the Awk practice of
  124.       defining excess formal parameters, leads  to    easier    to  read  and
  125.       maintain  functions. The C 'practice' of allowing initialization in
  126.       the 'local' statement is followed.
  127.       e)  endfile
  128.       similar to 'exit'. Simulates end of current input  file  only,  any
  129.       remaining input files are still processed.
  130.  
  131.   10. Expanded arithmetic functions
  132.       QTAwk  includes  18 built-in arithmetic functions. All of the functions
  133.       supported by Awk plus the following:
  134.       a)  acos(x)
  135.       b)  asin(x)
  136.       c)  cosh(x)
  137.       d)  fract(x)
  138.       e)  log10(x)
  139.       f)  pi() or pi
  140.       g)  sinh(x)
  141.  
  142.   11. Expanded string functions
  143.       QTAwk includes 33 built-in  string  functions.  All  of  the  functions
  144.       supported by Awk plus the following:
  145.       a)  center(s,w) or center(s,w,c)
  146.       b)  copies(s,n)
  147.       c)  deletec(s,p,n)
  148.       d)  insert(s1,s2,p)
  149.       e)  justify(a,n,w) or justify(a,n,w,c)
  150.       f)  overlay(s1,s2,p)
  151.       g)  remove(s,c)
  152.       h)  replace(s)
  153.       i)  sdate(fmt)
  154.       j)  srange(c1,c2)
  155.       k)  srev(s)
  156.       l)  stime(fmt)
  157.       m)  stran(s) or stran(s,st) or stran(s,st,sf)
  158.       n)  strim(s) or strim(s,c) or strim(s,c,d)
  159.       o)  strlwr(s)
  160.       p)  strupr(s)
  161.  
  162.   12. New Miscellaneous functions
  163.       a)  The  function 'rotate(a)' is provided to rotate the elements of the
  164.       array a.
  165.       b)  execute(s) or execute(s,se) or execute(s,se,rf) - execute string  s
  166.       c)  execute(a)  or  execute(a,se) or execute(a,se,rf) - execute array a
  167.       d)  pd_sym - access pre-defined symbols
  168.       e)  ud_sym - access user defined symbols
  169.  
  170.   13. New I/O  Functions
  171.       I/O  function  syntax  has  been    made  consistent with syntax of other
  172.       functions.  The redirection operators, '<', '>' and '>>', and  pipeline
  173.       operator,  '|',  have  been  deleted  as  excessively  error  prone  in
  174.       expressions.  The functional syntax of the 'getline' function has  been
  175.       made  identical  to  that  of  the  other  built-in functions.  The new
  176.       functions 'fgetline', 'fprint' and  'fprintf' have been introduced  for
  177.       reading and writing to files other than the current input file.  Single
  178.       Character input functions, 'getc' and  'fgetc' have been added to  read
  179.       files (and the keyboard) a single character at a time.
  180.  
  181.   14. Expanded capability of  formatted I/O.
  182.       The limited output formatting available with the Awk 'printf'  function
  183.       has been expanded by adopting the complete output format    specification
  184.       of the draft ANSI C standard.
  185.  
  186.   15. Use of 'local' keyword
  187.       The 'local' keyword has been introduced to allow for variables local to
  188.       user-defined  functions  (and  any  compound statement). This expansion
  189.       makes the Awk practice of defining 'extra' formal parameters no  longer
  190.       necessary.
  191.  
  192.   16. Expanded user-defined functions
  193.       With  the  'local'  keyword,  QTAwk allows the user to define functions
  194.       that may accept a variable number  of  arguments.  Functions,  such  as
  195.       finding  the  minimum/maximum  of  a  variable number of variables, are
  196.       possible with one function rather than defining separate functions  for
  197.       each possible combination of arguments.
  198.  
  199.   17. User controlled trace capability
  200.       A user controlled statement trace capability has been added. This gives
  201.       the user a simple to use mechanism to trace utility  execution.  Rather
  202.       than  adding  'print'  statements,  merely  re-defining  the value of a
  203.       built-in    variable  will    give  utility  execution  trace  information,
  204.       including utility line number.
  205.  
  206.   18. Expanded built-in variable list
  207.       With  30    built-in variables, QTAwk includes all (with the exception of
  208.       SUBSEP) of the built-in variables of Awk plus the following:
  209.       a)  _arg_chk - used to determine whether to check number    of  arguments
  210.       passed to user-defined functions.
  211.       b)  ARGI    -  index  value  in ARGV of next command line argument. Gives
  212.       more control of command line argument processing.
  213.       c)  CYCLE_COUNT - count number of outer loop cycles with current    input
  214.       record.
  215.       d)  DEGREES  -  if  TRUE, trigonometric functions assume degree values,
  216.       radians if FALSE.
  217.       e)  ENVIRON - array of environment strings passed to QTAwk
  218.       f)  FALSE - pre-defined with constant value, 0.
  219.       g)  TRUE - predefined with constant value, 1
  220.       h)  LONGEST_EXP - used to control whether  the  longest  or  the    first
  221.       string matching a regular expression is found.
  222.       j)  MAX_CYCLE  -    maximum  number  of  outer loop cycles permitted with
  223.       current input record.
  224.       k)  NG - equal to the number of  the  regular  expression  in  a    group
  225.       matching a string in the current input record.
  226.       k)  RETAIN_FS  -    if TRUE the original characters separating the fields
  227.       of the current input    record    are  retained  whenever  a  field  is
  228.       changed,  causing  the  input record to be re-constructed. If FALSE
  229.       the output field separator, OFS, is used to separate fields in  the
  230.       current  input record during reconstruction. The latter practice is
  231.       the only method available in Awk.
  232.       l)  TRACE - value used to determine utility tracing.
  233.       m)  TRANS_FROM/TRANS_TO - strings used by 'stran'  function  if  second
  234.       and/or third arguments not specified.
  235.       n)  CLENGTH - similiar to 'RLENGTH' of Awk. Set whenever a 'case' value
  236.       evaluates to a regular expression.
  237.       o)  CSTART - similiar to 'RSTART' of Awk. Set whenever a  'case'  value
  238.       evaluates to a regular expression.
  239.       p)  MLENGTH  - similiar to 'RLENGTH' of Awk. Set whenever a stand-alone
  240.       regular expression is encountered in evaluting a pattern.
  241.       q)  MSTART - similiar to 'RSTART' of Awk. Set  whenever  a  stand-alone
  242.       regular expression is encountered in evaluting a pattern.
  243.       r)  vargc - used only in used-defined functions defined with a variable
  244.       number of arguments. At runtime, set equal to the actual number  of
  245.       variable arguments passed.
  246.       s)  vargv - used only in used-defined functions defined with a variable
  247.       number of arguments. At runtime, an single dimensioned  array  with
  248.       each element set to the argument actually passed.
  249.  
  250.   19. Definition of built-in variable, RS, expanded to mimic the FS built-in
  251.       variable.  For A single character string, the single character  becomes
  252.       the input  record separator.   If  the string  is longer    than a single
  253.       character,  it  is  treated  as  a  regular  expression, and any string
  254.       matching the regular expression becomes  a record separator.  Awk  will
  255.       recognize first character only of RS string as record delimitor.
  256.  
  257.   20. In QTAwk, setting built-in variable, "FILENAME", to another value will
  258.       change the current  input file.    Setting the variable  in Awk, has  no
  259.       effect on current input file.
  260.  
  261.   21. New character input functions, 'getc' and 'fgetc', can accept keyboard
  262.       input also.
  263.  
  264.   22. Corrected admitted problems with Awk. The problems mentioned  on    page
  265.       182   of     "The   Awk   Programming   Language"  have  been  corrected.
  266.       Specifically: 1) true multi-dimensional arrays have  been  implemented,
  267.       2) the 'getline' syntax has been made to match that of other functions,
  268.       3)  declaring  local  variables  in  user-defined  functions  has  been
  269.       corrected,  4) intervening blanks are allowed between the function call
  270.       name and the opening parenthsis (in fact, under QTAwk it is permissable
  271.       to  have    no  opening  parenthesis  or  argument    list for user-defined
  272.       functions that have been defined with no formal arguments).
  273.  
  274.