home *** CD-ROM | disk | FTP | other *** search
/ ftp.robelle3000.ai 2014 / 2014.06.ftp.robelle3000.ai.tar / ftp.robelle3000.ai / changes / supr4p5ux.txt < prev    next >
Text File  |  2002-03-12  |  32KB  |  859 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                              SUPRTOOL Version 4.5
  7.  
  8.  
  9.                           Database Handyman for HP-UX
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.                                  Change Notice
  17.                            Installation Instructions
  18.                           Addendum to 4.3 User Manual
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.                             Suprtool         4.5
  26.                             Suprlink         4.5
  27.                             STExport         4.5
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.                          Robelle Solutions Technology
  39.                           Suite 201, 15399-102A Ave.
  40.                          Surrey, B.C.  Canada V3R 7K1
  41.  
  42.  
  43.  
  44.                              Phone:  604.582.1700
  45.                               Fax:  604.582.1799
  46.  
  47.                          E-mail:  support@robelle.com
  48.                              Web:  www.robelle.com
  49.  
  50.                                  December 2001
  51.           Program  and  Manual  Copyright  Robelle Solutions Technology Inc.
  52.           1981-2001
  53.  
  54.  
  55.           Permission is granted  to  reprint  this  document  (but  not  for
  56.           profit), provided that copyright notice is given.
  57.  
  58.  
  59.  
  60.  
  61.           QEDIT  and SUPRTOOL are trademarks of Robelle Solutions Technology
  62.           Inc.  Other product and company names mentioned herein may be  the
  63.           trademarks of their respective owners.
  64.  
  65.  
  66.  
  67.    Introducing Suprtool/UX Version 4.5
  68.  
  69.  
  70.                *  Highlights
  71.                *  Known Problems
  72.                *  Compatibility
  73.                *  CPU Serial Number (uname)
  74.                *  Documentation
  75.                *  Documentation Format
  76.  
  77.           Use  Suprtool/UX  to  read,  select, and sort data from Oracle and
  78.           Allbase databases and from data files with  fixed-length  records.
  79.           Suprtool/UX  is  designed  to be similar to Suprtool for MPE while
  80.           providing  necessary   HP-UX   features.    Suprlink/UX   provides
  81.           high-speed data-file linking based on a sort key.  Use STExport to
  82.           convert fields in a self-describing input file into an output file
  83.           that can be imported into different applications.
  84.  
  85.           We appreciate you trying Suprtool/UX.  Let us know how Suprtool/UX
  86.           meets your HP-UX data needs.
  87.  
  88.  
  89.  
  90.    Highlights in Version 4.5
  91.  
  92.  
  93.           *  Support for "well-formed" XML in STExport.
  94.  
  95.           *  Suprtool, STExport and Suprlink can now  have  warnings  turned
  96.              off when run from batch with the set warnings off command.
  97.  
  98.           *  Some division operations would not work properly if the decimal
  99.              portion was large and the target type was packed or zoned.
  100.  
  101.  
  102.    Highlights in Version 4.4
  103.  
  104.  
  105.           *  Suprtool now supports string expressions in  both  the  Extract
  106.              and  If commands.  String expressions allow users to select and
  107.              format  their  byte-type  data  in  numerous  new  ways.   This
  108.              includes  combining  byte-type  fields together, upshifting and
  109.              downshifting data, and trimming  blanks.   These  new  features
  110.              combine  to  reduce  the  number  of tasks needed to select and
  111.              format the data the way you need it.
  112.  
  113.           *  Suprtool now supports 5,100 bytes of constants to be extracted.
  114.              (only NM and HP-UX)
  115.  
  116.           *  Suprtool,  Suprlink and STExport now have the ability to create
  117.              their own persistent redo stacks.  The contents of these stacks
  118.              can  be recalled not only in the current session, but also in a
  119.              future session.
  120.  
  121.  
  122.    Known Problems
  123.  
  124.           There are no known problems at this time.
  125.  
  126.  
  127.    Compatibility
  128.  
  129.           Suprtool/UX is compatible with HP-UX 9.0, all  versions  of  HP-UX
  130.           10.x, as well as Oracle version 7.1.3.2.0.
  131.  
  132.           On  HP-UX  10.x,  Suprtool/UX  creates  all  of  its temporary and
  133.           scratch  files  in  /var/tmp,  unless  you  have  overridden   the
  134.           temporary directory with the TMPDIR environment variable.
  135.  
  136.           Suprtool  for  HP-UX  typically  comes  with  two  versions in two
  137.           different directories on your tape.  The version  of  Suprtool  in
  138.           /opt/robelle  is  compatible  with  HP-UX  10.20  and  later.  The
  139.           version of Suprtool in /usr/robelle is  compatible  with  versions
  140.           earlier than HP-UX 10.20.
  141.  
  142.  
  143.  
  144.    CPU Serial Number (uname)
  145.  
  146.           This  program  runs  only  on  CPUs whose serial numbers have been
  147.           encoded (the "uname" on HP-UX).  If it fails to run and you get an
  148.           "invalid HPSUSAN" error message, call Robelle for assistance.
  149.  
  150.  
  151.    Documentation
  152.  
  153.           The  user  manuals  for  Suprtool and its components are available
  154.           on-line.  You can access  these  files  from  within  Suprtool  by
  155.           simply typing the Help command.  We also distribute all three user
  156.           manuals as a Windows Help file.
  157.  
  158.           If you are already familiar with Suprtool, you can access only the
  159.           Suprtool/UX  topics that are different from those of Suprtool/MPE.
  160.           The "Running" section of  the  Help  file  has  been  updated  for
  161.           Suprtool/UX.  You can access it with the following Help command:
  162.  
  163.                >help running
  164.  
  165.  
  166.    Documentation Formats
  167.  
  168.           The user manuals for Suprtool and its components are all available
  169.           in the several popular formats such as PDF and HTMLHelp at:
  170.  
  171.              http://www.robelle.com/library/manuals/
  172.  
  173.  
  174.    Installation of 4.5
  175.  
  176.  
  177.           The following instructions describe the installation process of  a
  178.           new  Suprtool  release.   The  new  version overwrites an existing
  179.           version of Suprtool on your HP-UX system.
  180.  
  181.  
  182.    Who Should Use These Instructions?
  183.  
  184.           The system  manager  should  use  the  following  instructions  to
  185.           install  Suprtool/UX.   During the installation, which should take
  186.           only a few minutes, no one can use Suprtool/UX.
  187.  
  188.  
  189.  
  190.    Summary of Installation Steps
  191.  
  192.           To install Suprtool, follow these steps:
  193.  
  194.           1. Log in as root.
  195.  
  196.           2. Create the correct directory structure.
  197.  
  198.           3. Restore  Suprtool/UX  and  its  associated   files   from   the
  199.              distribution tape.
  200.  
  201.           4. Set  up  variables  to  let  Suprtool know where its supporting
  202.              files are located.
  203.  
  204.  
  205.    Installation Assistance
  206.  
  207.           If you have any questions or run into any  problems,  please  call
  208.           us.   Technical  support is available on weekdays from 7 a.m. to 4
  209.           p.m. Pacific time at 1.604.582.1700.  Technical support  can  also
  210.           be obtained via e-mail at:  support@robelle.com
  211.  
  212.  
  213.    Step 1:  Log In as Root
  214.  
  215.           There are two ways you can log in as root:
  216.  
  217.           a. Exit from HP-UX and log in with root as the user name.
  218.  
  219.           b. If you are already logged in, you can execute this command:
  220.  
  221.                   su -
  222.  
  223.           In  either case, you have to know and supply the user password for
  224.           root.
  225.  
  226.  
  227.    Step 2:  Create Robelle Directory
  228.  
  229.           Before restoring files, you must first create the directory  where
  230.           Suprtool/UX will reside:
  231.  
  232.                mkdir /opt/robelle
  233.  
  234.  
  235.    Step 3:  Restore Files
  236.  
  237.           Use  the  following  command to restore the Suprtool/UX files from
  238.           the distribution tape:
  239.  
  240.                tar xv /opt/robelle
  241.  
  242.           This command assumes your tape device is /dev/rmt/0m.   If  it  is
  243.           not,  you need to specify your tape device using the "f" option in
  244.           the tar command.  For example, if your tape device is /dev/rmt/1m,
  245.           you need to use the following command to restore the files:
  246.  
  247.                tar xvf /dev/rmt/1m /opt/robelle
  248.  
  249.  
  250.    Step 4:  Set the ROBELLE Variable
  251.  
  252.           You must set the ROBELLE environment variable so that Suprtool can
  253.           find its Help and Suprmgr files.
  254.  
  255.  
  256.    Bourne and Korn Shells
  257.  
  258.                export ROBELLE=/opt/robelle
  259.  
  260.  
  261.    C Shell
  262.  
  263.                setenv ROBELLE /opt/robelle
  264.  
  265.  
  266.  
  267.    Enhancements in Version 4.5
  268.  
  269.           Every year we provide Suprtool/UX users with  new  features.   The
  270.           following section describes the new enhancements to Suprtool since
  271.           the last major release.
  272.  
  273.  
  274.    Set Warnings Off
  275.  
  276.           Suprtool, STExport and Suprlink have  a  new  command  called  Set
  277.           Warnings  which  when  turned  off  will  no  longer print warning
  278.           messages if you are running in batch.
  279.  
  280.           In Suprtool, you can simulate batch  mode  with  the  command  Set
  281.           Interactive off.  If Set Warnings is off, Suprtool will honour the
  282.           value of the Interactive setting, provided Set Warnings off is set
  283.           after the Set Interactive command.
  284.  
  285.  
  286.    XML Command
  287.  
  288.           STExport  will  now  generate "well-formed" XML output with just a
  289.           few commands.
  290.  
  291.            /opt/robelle/bin/stexport
  292.            $input file1sd
  293.            $xml
  294.            $output myxml
  295.            $xeq
  296.  
  297.           These four simple commands will generate the following  file  that
  298.           packages  such  as  XMLSpy  will consider to be "well-formed" XML.
  299.           The result of such an STExport task will look as follows:
  300.  
  301.            <?xml version='1.0'?>
  302.            <file>
  303.            <record>
  304.            <CITY>Los Altos</CITY>
  305.            <CREDIT-RATING>100000</CREDIT-RATING>
  306.            <CUST-ACCOUNT>4003302</CUST-ACCOUNT>
  307.            <CUST-STATUS>20</CUST-STATUS>
  308.            <NAME-FIRST>Ralph</NAME-FIRST>
  309.            <NAME-LAST>Perkins</NAME-LAST>
  310.            <STATE-CODE>CA</STATE-CODE>
  311.            <STREET-ADDRESS>Room 655</STREET-ADDRESS>
  312.            <STREET-ADDRESS>Los Altos     040033022</STREET-ADDRESS>
  313.            <ZIP-CODE>93002</ZIP-CODE>
  314.            </record>
  315.  
  316.            </file>
  317.  
  318.  
  319.           By default STExport will add  the  simplest  version  tag  at  the
  320.           beginning  of  the  file,  then  it  inserts a <file> and matching
  321.           </file> at the beginning and the end of the file.   Then  STExport
  322.           encloses  each  record  from  the  input  file  in  a <record> and
  323.           </record> tag.  Finally, the Self-Describing tags are added around
  324.           each field's data values and edited appropriately.
  325.  
  326.           Naturally  users  would  want options to customize and specify the
  327.           various options and tags themselves, in order to generate  a  file
  328.           that is acceptable to their tools.
  329.  
  330.           You can specify the "version" tag at the beginning of the XML file
  331.           with the following command:
  332.  
  333.            xml version "?xml version='1.0' encoding='ISO-8859-1'?"
  334.  
  335.           STExport will put the "<" and ">" around what is specified in  the
  336.           version  string.   In  addition,  you can customize the "file" and
  337.           "record" tags with the following simple commands:
  338.  
  339.            xml file "orders" record "orderdetail"
  340.  
  341.           You can enter multiple XML  commands  per  task  to  set  the  XML
  342.           options you require.
  343.  
  344.            $in file1sd
  345.            $xml version "?xml version='1.0' encoding='ISO-8859-1'?"
  346.            $xml file "Orders" record "Details"
  347.            $out myfile
  348.  
  349.           An  example  of  the  output generated by the above commands is as
  350.           follows:
  351.  
  352.             <?xml version='1.0' encoding='ISO-8859-1'?>
  353.             <Orders>
  354.             <Details>
  355.             <CITY>Los Altos</CITY>
  356.             <CREDIT-RATING>100000</CREDIT-RATING>
  357.             <CUST-ACCOUNT>4003302</CUST-ACCOUNT>
  358.             <CUST-STATUS>20</CUST-STATUS>
  359.             <NAME-FIRST>Ralph</NAME-FIRST>
  360.             <NAME-LAST>Perkins</NAME-LAST>
  361.             <STATE-CODE>CA</STATE-CODE>
  362.             <STREET-ADDRESS>Room 655</STREET-ADDRESS>
  363.             <STREET-ADDRESS>Los Altos    040033022</STREET-ADDRESS>
  364.             <ZIP-CODE>93002</ZIP-CODE>
  365.             </Details>
  366.             </Orders>
  367.  
  368.           In XML the tags that surrounded the data can not have any  special
  369.           characters  other  than  hyphen,  underscore  and period ("-","_",
  370.           ".").  So STExport replaces any of the invalid special  characters
  371.           with a "." by default.  You can change the default character to be
  372.           something else with the following set command:
  373.  
  374.             $Set xmltagchar "_"
  375.  
  376.           STExport will only allow the hyphen, underscore and period  to  be
  377.           set with this command.
  378.  
  379.           A  Document  Type  Declaration can be made at the beginning of the
  380.           file  via  the  !DOCTYPE  specification.   This  typically   tells
  381.           whatever  tool  that is parsing the xml file where the DTD for the
  382.           file resides.
  383.  
  384.           In STExport you can specify simple one-line doctype specs with the
  385.           following command:
  386.  
  387.            xml doctype '!DOCTYPE address-book SYSTEM "address-book.dtd"'
  388.  
  389.           This will write the doctype specification at the top of the output
  390.           file, directly after the XML version specification.
  391.  
  392.  
  393.           All of STExport's XML command options (version, doctype, file  and
  394.           record)  allow  for  a string to be passed via surrounding quotes.
  395.           The quotes may be either single or double, but keep in  mind  that
  396.           if  the  string  is  to  contain  double  quotes,  then you should
  397.           surround the entire string with single quotes.
  398.  
  399.  
  400.           So to summarize this new feature the following commands have  been
  401.           added for XML support.  The XML command has the following options:
  402.  
  403.                XML
  404.                          VERSION "string"
  405.                          DOCTYPE "string"
  406.                          FILE    "string"
  407.                          RECORD  "string"
  408.  
  409.           The following set command has been added to aid in the  conversion
  410.           of special characters in the tag:
  411.  
  412.             set xmltagchar "."
  413.  
  414.  
  415.  
  416.  
  417.    Bugs Fixed in Version 4.5
  418.  
  419.  
  420.    Dividing Zero by Zero.   Some division operations would result in a large
  421.           number when dividing zero by zero if the target  type  was  zoned,
  422.           packed or quad integer.  [4.1.11]
  423.  
  424.  
  425.    Divide Operations.    Suprtool could not properly convert the result of a
  426.           division operation if the target  was  zoned  or  packed,  in  one
  427.           specific case.  [4.1.11]
  428.  
  429.  
  430.    Extract Character  Constant.    If  you  had  a  extract  of  a character
  431.           constant, and if the constant specified was not completely  filled
  432.           in  for  all of the positions in the length of the field, Suprtool
  433.           would would produce strange results.  [4.1.11]
  434.  
  435.  
  436.  
  437.    Define Command.   A warning message has been  added  in  the  case  where
  438.           fields  defined  as  non-standard  integers,  will  be  treated as
  439.           strings.  [4.4.11]
  440.  
  441.  
  442.    Extract Command.   The error message  that  prints  when  the  expression
  443.           specified  cannot  be  coerced/converted  into the target has been
  444.           improved.  [4.4.11]
  445.  
  446.  
  447.    If $Read Operations.   Suprtool would incorrectly  put  commands  entered
  448.           thru  the $read facility into the redo file or stack when executed
  449.           thru a Use file.  [4.4.13]
  450.  
  451.  
  452.    Table Command.   Suprtool would not hold on to a table in some cases when
  453.           the  hold  option  was specified in the table command.  The CM and
  454.           HP-UX versions of Surptool would not hold on to the correct  table
  455.           in some cases.  [4.4.13]
  456.  
  457.  
  458.    Verify Command.    Verify  Define  will  now show the correct information
  459.           when defining non-standard integers.  [4.4.11]
  460.  
  461.  
  462.    Enhancements in Version 4.4
  463.  
  464.           Every year we provide Suprtool/UX users with  new  features.   The
  465.           following section describes the new enhancements to Suprtool since
  466.           the last major release.
  467.  
  468.  
  469.  
  470.    Extracting Constants
  471.  
  472.           Previously Suprtool was limited to 1,530 bytes  of  constants  for
  473.           MPE/iX  and  HP-UX  versions of Suprtool.  This limit has now been
  474.           increased to 5,100 bytes.  The MPE/V version of Suprtool is  still
  475.           limited to 1,275 bytes.
  476.  
  477.  
  478.    Persistent Redo
  479.  
  480.           Commands  entered  at  the  Suprtool prompt are saved in something
  481.           called the redo stack.  You can recall commands from this stack by
  482.           using other commands such as Before, Do and Redo.  By default, the
  483.           redo stack is stored in a temporary file and discarded as soon  as
  484.           you  exit  Suprtool.  This temporary stack is not preserved across
  485.           Suprtool invocations.
  486.  
  487.           The new Set Redo command assigns a  permanent  file  as  the  redo
  488.           stack,  allowing the stack to become available for future Suprtool
  489.           invocations.   For  example,  to  assign  the  myredo  file  to  a
  490.           persistent redo stack, enter
  491.  
  492.                >set redo myredo
  493.  
  494.           If  the  file  does  not  exist,  Suprtool creates it.  Otherwise,
  495.           Suprtool uses the existing  file.   All  subsequent  commands  are
  496.           written  to  the persistent redo stack.  This setting is valid for
  497.           the duration of  the  Suprtool  session.   As  soon  as  you  exit
  498.           Suprtool,  the  setting is discarded.  Next time you run Suprtool,
  499.           you will get the temporary stack.
  500.  
  501.           If the file name is not qualified, the redo stack  is  created  in
  502.           the  current working directory.  This may be desirable if you want
  503.           to have separate stacks.  If you  want  to  always  use  the  same
  504.           persistent stacks, you should qualify the name.
  505.  
  506.           The  Verify  command shows which stack is currently in use.  If it
  507.           shows <temporary>, it means Suprtool is using the  default  stack.
  508.           Anything  else  is  the  name  of  the  file  used on the Set Redo
  509.           command.
  510.  
  511.  
  512.    Concurrency
  513.  
  514.           When Suprtool uses the default temporary stack, it  is  accessible
  515.           only to that particular instance of Suprtool.  You can run as many
  516.           Suprtool instances as you need and each  one  gets  its  own  redo
  517.           stack.   With  temporary  stacks,  you will never have concurrency
  518.           problems.
  519.  
  520.           If you start using a persistent redo  stack,  however,  you  might
  521.           start  running into concurrency problems.  A persistent redo stack
  522.           can be used by only one Suprtool instance at a time.  If  you  try
  523.           to  use  a  persistent redo stack that is already in use, you will
  524.           get the following message:
  525.  
  526.                >set redo myredo
  527.                The redo file is already in use.
  528.                Unable to open file for REDO stack
  529.  
  530.           In this situation, Suprtool continues to use the redo stack active
  531.           at the time and lets you continue working as normal.
  532.  
  533.           Qedit  can  also  have permanent redo stacks.  To prevent products
  534.           from writing to each other's redo stack, it is  advisable  to  use
  535.           separate  stacks  for  each  product by giving them different file
  536.           names.  For example if you use
  537.  
  538.                >set redo myredo
  539.  
  540.           you will have  a  redo  stack  called  myredo  for  your  Suprtool
  541.           commands.   If  you  exit  Suprtool, then run Qedit and supply the
  542.           same Set Redo command, your Qedit commands will be written to  the
  543.           same file that was used for your Suprtool commands.
  544.  
  545.  
  546.    String Expressions
  547.  
  548.           Both  the  Extract  and  If  commands  have been enhanced to allow
  549.           string expressions, which can be used to:
  550.  
  551.  
  552.           1. Combine two fields together (using the + operator).
  553.  
  554.           2. Remove spaces (using the built-in trim functions).
  555.  
  556.           3. Upshift or downshift characters.
  557.  
  558.           String expressions reduce the number of tasks  required  for  many
  559.           common  operations  involving byte-type fields.  Fewer tasks means
  560.           that Suprtool delivers data to your applications faster than  ever
  561.           before.
  562.  
  563.           These  changes  are  so  extensive  that  string  expressions  are
  564.           described separately for the Extract and  If  Commands.   See  the
  565.           sections  below  for  specific  details  and  examples  of  string
  566.           expressions.
  567.  
  568.  
  569.    Extract Command
  570.  
  571.           You can now use string expressions in the Extract command.  String
  572.           expressions  allow you to combine byte-type fields together (using
  573.           the + operator)  or  operate  on  byte-type  fields  with  special
  574.           functions.   In many cases, you can now reduce the number of tasks
  575.           required to format the data the way you want.  Fewer  tasks  means
  576.           that Suprtool delivers the data where you need it faster than ever
  577.           before.  To extract a string expression, use this syntax:
  578.  
  579.                     EXTRACT target-field = expression
  580.  
  581.  
  582.    Target-Field
  583.  
  584.           The target-field determines the byte-length  for  the  expression.
  585.           The  data-type  must be Byte or Char.  The expression is extracted
  586.           during the output phase and  cannot  be  used  by  other  Suprtool
  587.           commands that accept fields (e.g., Sort).
  588.  
  589.  
  590.    Examples
  591.  
  592.                >extract id-no = warehouse-no + bin-no
  593.  
  594.                >extract full-name = first-name + last-name
  595.  
  596.  
  597.    Constants vs. Expressions
  598.  
  599.           If  you  have  an  string  expression  that  starts with a string,
  600.           Suprtool assumes that you  are  attempting  to  extract  a  single
  601.           string  value  and  not  a string expression.  To specify a string
  602.           expression that starts with a constant,  surround  the  expression
  603.           with parentheses.  For example,
  604.  
  605.                Incorrect
  606.                >extract name = " " + product-desc
  607.  
  608.                Error:  Missing comma or invalid arithmetic expression
  609.  
  610.                Correct
  611.                >extract name = (" " + product-desc)
  612.  
  613.  
  614.    Variable Length Strings
  615.  
  616.           String  expressions  use  variable-length strings.  Suprtool keeps
  617.           track of the length of every string, and all operations  are  done
  618.           using  the  actual  string  length.  For fields, the length of the
  619.           string is the length of the field.  If you do not want  to  retain
  620.           all  of  the  spaces  in a field, use one of the built-in trimming
  621.           functions.
  622.  
  623.           String  constants  are  created  with  the  exact  length  of  the
  624.           constant.   For example, the string "abc" is three characters long
  625.           and the string "a" is one.
  626.  
  627.           When assigning the string expression to the target field, Suprtool
  628.           pads  the  final  string  value with spaces to fill out the target
  629.           field.  String expressions longer than the target  field  generate
  630.           an error.
  631.  
  632.                >in testfile
  633.                >def a,1,10,byte
  634.                >ext a="I'm too long for this container"
  635.  
  636.                Error:  String is too long for the specified item
  637.  
  638.  
  639.    String Truncation
  640.  
  641.           Suprtool produces an error if the string expression is longer than
  642.           the target field.  You cannot override this error with Set  Ignore
  643.           On.  To help avoid the error, you may want to trim trailing spaces
  644.           from the expression before assigning it to the target field.   For
  645.           example,
  646.  
  647.                >extract new-field = $trim(a + b + c)
  648.  
  649.  
  650.    Upshifting Strings ($Upper)
  651.  
  652.           Use  the built-in function $upper to upshift all of the characters
  653.           of a string expression into uppercase characters.   This  function
  654.           can  be  used  to  upshift  a  single  field, a complicated string
  655.           expression, or any subpart  of  an  expression.   Both  ASCII  and
  656.           Roman-8 characters are upshifted by $upper.  For example,
  657.  
  658.                >extract city-up = $upper(city)
  659.  
  660.                >extract full-name = $upper(first + last)
  661.  
  662.                >extract desc = desc-1 + $upper(desc-2)
  663.  
  664.  
  665.    Downshifting Strings ($Lower)
  666.  
  667.           If  you want to downshift all characters of a string expression to
  668.           lowercase, use the built-in function $lower.  This function can be
  669.           used to downshift a single field, a complicated string expression,
  670.           or  any  subpart  of  an  expression.   Both  ASCII  and   Roman-8
  671.           characters are downshifted by $lower.  For example,
  672.  
  673.                >extract city-lower-case = $lower(city)
  674.  
  675.                >extract city-state = $lower(city + state)
  676.  
  677.                >extract desc = desc-1 + $lower(desc-2)
  678.  
  679.  
  680.    Trimming Spaces ($Trim, $Ltrim, $Rtrim)
  681.  
  682.           Use  one  of  three built-in string functions to remove leading or
  683.           trailing spaces from a string  expression.   The  three  functions
  684.           are:
  685.  
  686.  
  687.           $Trim:      Remove  leading  and  trailing  spaces from the string
  688.                       expression.
  689.  
  690.           $Ltrim:     Remove leading spaces.
  691.  
  692.           $Rtrim:     Remove trailing spaces.
  693.  
  694.  
  695.    If Command
  696.  
  697.           You can do comparisons with  byte-type  fields  in  numerous  ways
  698.           using  Suprtool.   These  powerful features minimize the number of
  699.           tasks you must execute in order to select the data you need.   The
  700.           fewer  the  number  of tasks, the faster your data is delivered to
  701.           the users and applications that need it.
  702.  
  703.           You can combine byte-type fields together  and  use  the  built-in
  704.           string functions to create string expressions.  String expressions
  705.           involve the + operator and any of the built-in  string  functions,
  706.           which are $lower, $upper, $trim, $ltrim and $rtrim.
  707.  
  708.  
  709.    Fixed vs.  Variable Length Strings
  710.  
  711.           String  comparisons  are  done  using  fixed-  and variable-length
  712.           strings.  For most users, there should be  no  difference  between
  713.           the two types of strings.  When doing string comparisons, Suprtool
  714.           always pads shorter strings with spaces, with the one exception of
  715.           comparing two fixed-length fields (see "Byte Fields" below).
  716.  
  717.           String expressions involving the + operator or the $lower, $upper,
  718.           $trim,  $ltrim  and  $rtrim  built-in  functions  are  done  using
  719.           variable-length  strings.   Suprtool  keeps track of the length of
  720.           every string, and all operations are done using the actual  string
  721.           length.  For fields, the length of the string is the length of the
  722.           field.  If you do not want to retain all the spaces  in  a  field,
  723.           use one of the built-in trimming functions.
  724.  
  725.           When  creating  string  expressions,  string constants are created
  726.           with the exact length of the constant.  For  example,  the  string
  727.           "abc" is three characters long and the string "a" is one.
  728.  
  729.  
  730.    Byte Fields
  731.  
  732.           For  historical  reasons,  comparing  two byte-type fields to each
  733.           other is a special case.  If the two fields are exactly  the  same
  734.           length,  Suprtool  compares  them  completely.   If  one  field is
  735.           shorter, the comparison is done for the  length  of  the  shortest
  736.           field.   Suprtool  does  not  check  for  spaces  in  the trailing
  737.           characters of the longer field.  For example,
  738.  
  739.                >define  short, 1,10   {10-character field}
  740.                >define  long ,11,15   {15-character field}
  741.                >if      short = long
  742.  
  743.           In this example, Suprtool compares the 10 bytes in the short field
  744.           with  the  first  10 bytes of the long field, but ignores the last
  745.           five bytes of the long field.  If the expression on either side of
  746.           the  equal  sign  consisted  of  more  than one field (using the +
  747.           operator) or involved any of the built-in string  functions,  such
  748.           as  $lower,  $upper, $trim, $ltrim and $rtrim, Suprtool would have
  749.           compared both sides of the equal sign by padding the shorter field
  750.           with spaces.  It is only the case where you are directly comparing
  751.           one byte-type field to another that Suprtool uses  the  length  of
  752.           the shortest field for the comparison.
  753.  
  754.  
  755.    Trimming Spaces ($Trim, $Ltrim, $Rtrim)
  756.  
  757.           Use  one  of  three built-in string functions to remove leading or
  758.           trailing spaces from a string  expression.   The  three  functions
  759.           are:
  760.  
  761.  
  762.           $Trim:      Remove  leading  and  trailing  spaces from the string
  763.                       expression.
  764.  
  765.           $Ltrim:     Remove leading spaces.
  766.  
  767.           $Rtrim:     Remove trailing spaces.
  768.  
  769.           Because Suprtool pads  shorter  strings  with  spaces  when  doing
  770.           comparisons,  trimming  spaces  is  most  useful  when  creating a
  771.           combined string with several fields.  For example, you might  want
  772.           to  combine  a  person's  first  and  last name (including a space
  773.           between the two):
  774.  
  775.                >if $trim(first) + " " + $trim(last) = "Joe Smith"
  776.  
  777.  
  778.    Mixed Case ($Upper and $Lower)
  779.  
  780.           By default, Suprtool does an exact match when comparing two string
  781.           expressions.   If  the  expressions  vary in the capitalization of
  782.           characters, Suprtool will  find  them  unequal.   To  do  caseless
  783.           string  comparisons  or  pattern matches, use the $upper or $lower
  784.           functions.  Both ASCII  and  Roman-8  characters  are  shifted  by
  785.           $upper and $lower.  For example,
  786.  
  787.                >if $upper(city) = "VANCOUVER"
  788.  
  789.                >if $lower(city) = "edmonton"
  790.  
  791.           Note that if you use the $upper or $lower functions, Suprtool does
  792.           not shift any constants in the comparison.   You  must  explicitly
  793.           specify the constants in the correct case or you can use $upper or
  794.           $lower with the constant:
  795.  
  796.                >if $upper(city) = $upper("vancouver")
  797.  
  798.           Use the $upper or $lower functions for caseless pattern  matching.
  799.           As  with other comparison operators, you must specify constants in
  800.           the correct case when doing pattern matching:
  801.  
  802.                >if $upper(city) == "VAN "
  803.  
  804.                >if $lower(city) == "ed "
  805.  
  806.           You can use $upper and $lower with string expressions that combine
  807.           many  fields  and  string functions.  In the following example, we
  808.           create
  809.  
  810.                >if $read
  811.                -   $upper($trim(first) +
  812.                -             " "             +
  813.                -             $trim(last))
  814.                -   = "JOE SMITH"
  815.                -
  816.  
  817.  
  818.    Bugs Fixed in Version 4.4
  819.  
  820.  
  821.    Add Command.   The Add command no longer fails in the following cases:
  822.  
  823.           1. Extracting byte-type fields  with  constants  and  the  literal
  824.              string values are shorter than the length of the field.
  825.  
  826.           2. A  self-describing  file  with  more  than one field is used as
  827.              input.
  828.  
  829.  
  830.    Arithmetic Operations.   Suprtool now has a better error message when  an
  831.           arithmetic operation has an invalid decimal operand length.
  832.  
  833.  
  834.    Extract Command.     When   extracting   constants,  Suprtool  no  longer
  835.           incorrectly reports that the constant limit has been reached.
  836.  
  837.  
  838.    Extract Command.   When extracting one field into another,  invalid  data
  839.           is  no  longer  produced  if  the  two fields are exactly the same
  840.           length and type, but have a different number  of  implied  decimal
  841.           places.
  842.  
  843.  
  844.    Extract Command.    When  the  maximum  limit  of  extracted constants is
  845.           reached, Suprtool no  longer  incorrectly  reports  the  following
  846.           message:
  847.  
  848.            Error:  Number of constants in >EXTRACT exceeds maximum
  849.  
  850.           This error message has now been changed to:
  851.  
  852.            Error:  Total size of constants in >EXTRACT exceeds maximum
  853.  
  854.  
  855.  
  856.    Set Ignore  On.    Suprtool  now  honors  the  Set  Ignore  On  flag when
  857.           encountering an illegal packed  decimal  number  in  the  $stddate
  858.           function.
  859.