NAME:
   quote
 PURPOSE:   (one line only)
   Convert a string into one safe for including in a mySQL query
 DESCRIPTION:
   Similar to the mysql function quote.  Leading and trailing blanks
   are removed.  Leading and trailing quotes are preserved but are considered
   to be delimiters for the string provided there is a leading and a trailing
   quote.  If there is just one it is considered to be interior to the string.
   An interior single quote is converted to \' and a backslash is converted
   to \\.  Embedded newlines (string(10B)) are quoted with '\n' where n is
   the letter n.
   On output, the string will have leading and trailing quotes added
   if they weren't already there. However, if the string is a scalar
   and it is 'NULL' (4 characters) after stripping blanks 
   it is returned as is without quotes.
   The input can either be a single string or a string array. If an array,
   the strings are joined with a quoted newline separator. For example,
    s = quote(['this text output','more of the output']) produces
    " 'this text output\nmore of the output' " as a scalar string. This 
    feature exists to support comment fields of type TEXT or BLOB.
   In multiline cases (input is a string array or contains 10B newline 
   characters) empty or all whitespace lines at the begining or end
   of the total string will be trimmed. A single such line comes back as
   a ''.

   This is also useful for strings passing to shell scripts.
 CATEGORY:
   Database
 CALLING SEQUENCE:
   result = quote(string)
 INPUTS:
   string - String to be processed- if a string array, the strings are
            joined with a newline quoted after each string including the
            last. Embedded newline characters (10B) are also quoted in
            this way.
 OPTIONAL INPUT PARAMETERS:
 KEYWORD INPUT PARAMETERS:
  DELIMITER - Character (string, really) to wrap around start and end of
               the output string.  The default is a single quote (').  Set
               this to something else if needed.  Note that anything other
               than the default will break the use of dequote to undo this
               function's operation.
  LITERAL- Flag, if set, some of the processing of quote is not done,
              specifically removal of trailing/leading blanks, special
              treatment for the string 'NULL', and removal of leading and
              null/whitepace lines in the multiline cases. The processing 
              of single quotes and backslashes in the input string is the same.
 OUTPUTS:
   return value is a string that is ready for mySQL
 KEYWORD OUTPUT PARAMETERS:
 COMMON BLOCKS:
 SIDE EFFECTS:
 RESTRICTIONS:
 Newlines are currently quoted with two characters: '\n' where the
 n is a literal lower case n. It is inadvisable to try to use an
 actual '\n' within the string to be quoted, although it will work
 currently if the string is a scalar and contains no embedded 10B characters.
 PROCEDURE:
 MODIFICATION HISTORY:
  Written by Marc W. Buie, Lowell Observatory, 2003/08/12
  2006/10/27, Peter L. Collins, Lowell Observatory
              add support for string array input (with newlines)
  2006/11/28, PLC, allow literal (string(10B)) newlines in str.
  2006/12/11, PLC, disconnect LITERAL flag from rank of str and
                   (except if LITERAL) trim leading and trailing 
                    null or all whitespace lines in the multiline cases.
  2016/10/24, MWB, added support for quoting a semi-colon
  2022/11/26, MWB, added DELIMITER keyword, added ( and ) to protect