home *** CD-ROM | disk | FTP | other *** search
/ ftp.robelle3000.ai 2014 / 2014.06.ftp.robelle3000.ai.tar / ftp.robelle3000.ai / changes / supr4p8ix.txt < prev    next >
Text File  |  2005-07-18  |  44KB  |  1,227 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                             SUPRTOOL Version 4.8.02
  7.  
  8.  
  9.                       Database Handyman for the HP e3000
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                                  Change Notice
  16.                            Installation Instructions
  17.                           Addendum to 4.6 User Manual
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.                             Suprtool         4.8.02
  25.                             Dbedit           4.8.02
  26.                             Suprlink         4.8.02
  27.                             STExport         4.8.02
  28.                             Speed Demon      4.8.02
  29.                             Suprtool2        4.8.02
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.                          Robelle Solutions Technology
  37.                           Suite 372, 7360 137 Street
  38.                            Surrey, BC Canada V3W 1A3
  39.  
  40.  
  41.  
  42.                             Phone:  (604) 501.2001
  43.                              Fax:  (604) 501.2003
  44.  
  45.                          E-mail:  support@robelle.com
  46.                              Web:  www.robelle.com
  47.  
  48.                                   April 2004
  49.           Program  and  Manual  Copyright  Robelle Solutions Technology Inc.
  50.           1981-2004
  51.  
  52.  
  53.           Permission is granted  to  reprint  this  document  (but  not  for
  54.           profit), provided that copyright notice is given.
  55.  
  56.  
  57.  
  58.  
  59.           QEDIT  and SUPRTOOL are trademarks of Robelle Solutions Technology
  60.           Inc.  Other product and company names mentioned herein may be  the
  61.           trademarks of their respective owners.
  62.  
  63.  
  64.  
  65.    Introducing Suprtool Version 4.8.02
  66.  
  67.  
  68.                *  Highlights
  69.                *  Compatibility
  70.                *  CPU Serial Number and CPU Name
  71.                *  Documentation
  72.  
  73.  
  74.           Suprtool  provides fast access to your data on the HP e3000.  With
  75.           Suprtool, you can perform many necessary DP functions easily, with
  76.           just  a few simple commands.  At Robelle we are constantly working
  77.           on your enhancement requests so that we can include them  when  we
  78.           release  an  updated  version  of  Suprtool.   This  change notice
  79.           provides you with links  to  detailed  installation  steps  and  a
  80.           description of Suprtool's new features.
  81.  
  82.  
  83.    Highlights in Version 4.8.02
  84.  
  85.  
  86.           *   The information about the data loaded in a Table would be lost
  87.              if the tabl being referenced was the second held table and  the
  88.              previous task involved a chai command.
  89.  
  90.  
  91.    Highlights in Version 4.8
  92.  
  93.  
  94.           *  The  Clean  command in Suprtool would incorrectly upshift lower
  95.              case alpha characters.
  96.  
  97.           *  The $edit function will  now  work  when  nested  within  other
  98.              string functions
  99.  
  100.  
  101.  
  102.    Highlights in Version 4.7.12
  103.  
  104.  
  105.           *  The $subtotal function has been re-written in order to use less
  106.              resources and fix some bugs.
  107.  
  108.  
  109.    Highlights in Version 4.7.11
  110.  
  111.  
  112.           *  Suprtool now has a $findclean function to identify records with
  113.              specific characters in it.
  114.  
  115.           *  The $subtotal function would not work if the previous task used
  116.              the Dup None Keys feature.
  117.  
  118.           *  The $total function would appear to total data incorrectly when
  119.              sorting on the field that was being totalled.
  120.  
  121.           *  Variables  that  resolved  to all spaces for the entire command
  122.              line would not work.
  123.  
  124.  
  125.    Highlights in Version 4.7.10
  126.  
  127.  
  128.           *  Suprtool now allows up to 255 $split functions per task.
  129.  
  130.           *  Numrecs 100% would come up with the wrong output file size when
  131.              reading very large files.
  132.  
  133.           *  Suprtool now has a $edit function for formatting data.
  134.  
  135.           *  The  new  $split  function  would  put random characters at the
  136.              point where the split would occur in some cases.
  137.  
  138.           *  The new $split function would incorrectly report an error in  a
  139.              second task with multiple $split operations.
  140.  
  141.           *  The  new $number function did not handle numbers that consisted
  142.              of only a decimal place followed by any number of zeroes and  a
  143.              number, as in .01 thru .09.
  144.  
  145.           *  Suprlink would abort if the Join file was empty.
  146.  
  147.           *  Suprlink  would  hold  the  Join  file  open after the task was
  148.              completed.
  149.  
  150.           *  Suprtool  would  total  incorrectly  when  using  a   $subtotal
  151.              function.
  152.  
  153.           *  Suprtool would write corrupt data at the end of each block
  154.               if the record size of the input file and output file was
  155.               greater than 10,000 bytes.
  156.  
  157.  
  158.    Highlights in Version 4.7.02
  159.  
  160.  
  161.           *  Suprtool  would  incorrectly  report  an  error  when using the
  162.              $number function.
  163.  
  164.           *  Suprlink and STExport would  build  the  output  file  with  an
  165.              incorrect flimit.
  166.  
  167.  
  168.  
  169.  
  170.    Compatibility
  171.  
  172.           Suprtool,   Speed  Demon,  STExport,  Suprcall  and  Suprlink  are
  173.           compatible with MPE/V, MPE XL, and MPE/iX, including  MPE/iX  6.5,
  174.           7.0 and MPE/iX 7.5.
  175.  
  176.           Previously   Suprtool  would  truncate  a  Table  filename  at  36
  177.           characters if the filename was  greater  than  36  characters  and
  178.           therefore  would  open a file if a file existed at the previous 36
  179.           character limit.  The Table filename  has  been  increased  to  80
  180.           characters.   If the Table filename exceeds 80 characters Suprtool
  181.           will print an error.
  182.  
  183.  
  184.    CPU Serial Number and CPU Name (HPSUSAN & HPCPUNAME)
  185.  
  186.           This program runs only on CPUs  whose  serial  numbers  have  been
  187.           encoded  ("showvar  hpsusan" on MPE/iX).  This program may also be
  188.           encoded with your HPCPUNAME values.  If it fails to  run  and  you
  189.           get  an  "invalid  HPCPUNAME"  or "invalid HPSUSAN" error message,
  190.           contact Robelle for assistance.
  191.  
  192.  
  193.  
  194.    Documentation
  195.  
  196.           The user manuals for Suprtool and its components are all available
  197.           in  the several popular formats such as PDF and HTMLHelp.  You can
  198.           also order  hardcopy  manuals  from  our  printing  service.   All
  199.           downloads and information is available in our library at:
  200.  
  201.  
  202.              http://www.robelle.com/library/manuals/
  203.  
  204.           The  manuals  are  also included as help files within the Suprtool
  205.           program and can be accessed by typing the help command:
  206.  
  207.             >help
  208.  
  209.  
  210.    Installation of Suprtool Pre-Release
  211.  
  212.  
  213.  
  214.           If you received a production release tape from Robelle,  then  you
  215.           can install using the instructions on this web page:
  216.  
  217.            http://www.robelle.com/support/install/tape/stprod.html
  218.  
  219.           If  you  downloaded  the  Suprtool production release from our web
  220.           site then the instructions can be found here for the ftp  download
  221.           method:
  222.  
  223.           http://www.robelle.com/downloads/install-stprod-ftp.html
  224.  
  225.           and here for the WRQ download method:
  226.  
  227.           http://www.robelle.com/downloads/install-stprod-wrq.html
  228.  
  229.  
  230.  
  231.    Installation Assistance
  232.  
  233.           If  you  have  any questions or run into any problems, please call
  234.           us.  Technical support is available on weekdays from 7  a.m. to  4
  235.           p.m. Pacific  time.   Technical  support  can also be obtained via
  236.           e-mail at:  support@robelle.com
  237.  
  238.  
  239.  
  240.    Enhancements in Version 4.7.12
  241.  
  242.  
  243.           We constantly provide  Suprtool  users  with  new  features.   The
  244.           following section describes the new enhancements to Suprtool since
  245.           the last major release.
  246.  
  247.  
  248.    $Subtotal Function
  249.  
  250.           The $subtotal function has been re-written in order  to  use  less
  251.           resources.
  252.  
  253.  
  254.    Enhancements in 4.7.11
  255.  
  256.           This version of Suprtool has some significant enhancements and are
  257.           listed below.
  258.  
  259.  
  260.    $Findclean Function
  261.  
  262.           We recently added the $Clean function  to  primarily  clean  "bad"
  263.           characters  in  text  fields.   This  has  been  extremely popular
  264.           enhancement but many wanted to do investigative work  and  try  to
  265.           figure  out  what  records  had these bad characters, to hopefully
  266.           where the "bad" data was coming from.
  267.  
  268.           For  this  reason  we  have  created  the   $FindClean   function.
  269.           $FindClean  will return true if it finds a character defined using
  270.           the Clean command.
  271.  
  272.             >in cleansd
  273.             >clean "^9","^10"
  274.             >if $findclean(nonprint)
  275.             >list
  276.  
  277.           The above task will list the record if the field  nonprint  has  a
  278.           Tab (Decimal 9) or a Line Feed (Decimal 10) anywhere in the field.
  279.  
  280.           You can Find and clean the "bad" characters from a  field  at  the
  281.           same time:
  282.  
  283.             >in cleansd
  284.             >clean "^9","^10"
  285.             >if $findclean(nonprint)
  286.             >extract nonprint=$clean(nonprint)
  287.             >list
  288.  
  289.  
  290.  
  291.    Enhancements in Version 4.7.10
  292.  
  293.  
  294.  
  295.    $Split Function
  296.  
  297.           Suprtool  now  allows  up  to  255 $split functions per task.  The
  298.           previous limit was 16, and the limit has been changed to assist in
  299.           reading data from "PRN" files.
  300.  
  301.  
  302.    $Edit Function
  303.  
  304.           Suprtool  can  format  fields  using edit-mask features similar to
  305.           edit-mask features of Cobol.  Suprtool employs two distinct  types
  306.           of  edit-masks: one for byte type fields and the other for numeric
  307.           fields.
  308.  
  309.           The type of mask utilized depends on the source type of the field.
  310.           If  the  source field is numeric, then the numeric edit-mask logic
  311.           is applied, if the source  field  is  byte  type,  then  the  byte
  312.           edit-mask logic and characters apply.
  313.  
  314.           The target field must always be a byte type field.
  315.  
  316.           Placeholders and Format Characters
  317.  
  318.           An edit-mask consists of "placeholder" characters, such as "9" for
  319.           a numeric column, and "format" characters, such  as  "."  for  the
  320.           decimal  place.   Sometimes  an edit-mask character acts as both a
  321.           placeholder and a format character, such as the  "$"  in  floating
  322.           dollar signs.
  323.  
  324.           Byte-Type Formatting
  325.  
  326.           For  Byte type fields there are two placeholder characters.  These
  327.           are:
  328.  
  329.             X  place the data in the  matching  column  for  the  X  in  the
  330.           edit-mask
  331.             Z   place  the  data in the matching column unless the data is a
  332.           zero; if the
  333.                data is a zero, then replace with a space
  334.  
  335.           The format characters are as follows:
  336.  
  337.             B (space) / (slash) , (comma) .  (period) + (plus) -  (minus)  *
  338.           (asterisk)  and  a Space.  Please note that you can denote a space
  339.           using two methods, either by putting a "B" in the mask or a  space
  340.           itself.
  341.  
  342.  
  343.           For  example,  suppose you have data that is in ccyymmdd format in
  344.           an X8 field.  Here is how you would use  a  "xxxx/xx/xx"  mask  to
  345.           format the data:
  346.  
  347.             >in mydate
  348.             >form
  349.                File: MYDATE.TEST.NEIL (SD Version B.00.00)
  350.                   Entry:             Offset
  351.                      A       X8      1  <CCYYMMDD>
  352.                Limit: 10000  EOF: 2  Entry Length: 8
  353.             >def formatdate,1,10
  354.             >ext formatdate=$edit(a,"xxxx/xx/xx")
  355.             >list
  356.             >xeq
  357.             >IN MYDATE.NEIL.GREEN (0) gt;OUT $NULL (0)
  358.             FORMATDATE   = 2003/09/24
  359.  
  360.             >IN MYDATE.NEIL.GREEN (1) gt;OUT $NULL (1)
  361.             FORMATDATE   = 2003/09/24
  362.  
  363.           As  you see in the example above, the placeholder character is the
  364.           "x" and the "/" is the format character.
  365.  
  366.           You insert a space either by specifying a "B"  or  by  putting  an
  367.           actual  Space character in the edit-mask.  An example of inserting
  368.           a space might be the formatting of Canadian  postal  codes  (e.g.,
  369.           V3R 7K1):
  370.  
  371.             >in postal
  372.             >form
  373.                File: POSTAL.NEIL.GREEN
  374.                   Entry:                     Offset
  375.                      POSTAL-CODE          X6      1
  376.                Limit: 10000  EOF: 2  Entry Length: 6
  377.             >def post1,1,7,byte
  378.             >def post2,1,7,byte
  379.             >ext post1=$edit(postal-code,"xxx xxx")
  380.             >ext post2=$edit(postal-code,"xxxbxxx")
  381.             >list
  382.             >xeq
  383.  
  384.             >IN POSTAL.NEIL.GREEN (0) >OUT $NULL (0)
  385.             POST1     = L2H 1L2     POST2     = L2H 1L2
  386.  
  387.             >IN POSTAL.NEIL.GREEN (1) >OUT $NULL (1)
  388.             POST1     = L2H 1L2     POST2     = L2H 1L2
  389.  
  390.           Z-placeholder for byte-fields
  391.  
  392.           The Z-placeholder character works differently for byte-fields than
  393.           for numeric fields.  For byte type fields, if  the  Z  placeholder
  394.           and  the  corresponding  data is "0", then the zero is suppressed,
  395.           regardless of the position.  This is primarily for suppression  of
  396.           zeroes in byte type date fields:
  397.  
  398.             ext a=$edit(date-field,"xxxx/zx/zx")
  399.  
  400.           The  above edit mask would then edit a byte type date of 20031005,
  401.           to be:
  402.  
  403.             2003/10/ 5
  404.  
  405.           Overflow and limits
  406.  
  407.           An edit mask is limited to 32 characters in total for both numeric
  408.           and byte type fields.  If data overflows the edit-mask, by default
  409.           Suprtool will fill that field with asterisks.  There is an  option
  410.           to have Suprtool stop when it encounters a formatting overflow:
  411.  
  412.             >set editstoperror on
  413.  
  414.           will  force  Suprtool  to  stop  if  there is data left over after
  415.           applying the edit-mask.  With byte-type fields, leading spaces  do
  416.           not cause overflow.
  417.  
  418.           Therefore if your data consists of:
  419.  
  420.             "    L2H1L2"
  421.  
  422.           and your edit mask is:
  423.  
  424.             "xxxBxxx"
  425.  
  426.           It  is  not an overflow since there are only spaces to the left of
  427.           the "L".  If the data was:
  428.  
  429.             "   JL2H1L2"
  430.  
  431.           an overflow exception would occur.
  432.  
  433.           Numeric field edit-masks
  434.  
  435.           Our edit-masks for numeric fields are  patterned  after  those  in
  436.           COBOL.   We  provide  four  placeholder  characters,  each  with a
  437.           slightly different effect:
  438.  
  439.  
  440.              "9" - insert a digit from 0 to 9 in this position
  441.  
  442.              "$" - if you specify more than  one  dollar  sign,  you  get  a
  443.           floating dollar sig
  444.              This means that there can be as many numeric positions as there
  445.           are dollar
  446.              signs, but if some positions are not needed because  the  value
  447.           is small, the $
  448.              floats  to  the right next to the first digit and the preceding
  449.           positions are
  450.              blank.
  451.  
  452.  
  453.              "*" - if there are enough digits in the value, the  *  position
  454.           is replaced
  455.              by  a  numeric  digit; if not, an asterisk is printed.  Leading
  456.           asterisks are
  457.              often used for check writing, so  that  no  one  can  insert  a
  458.           different
  459.              value.
  460.  
  461.              "z"  -  insert a numeric digit at this position; if the rest of
  462.           the data to
  463.              the left is a  zero  then  a  space  will  be  placed  at  this
  464.           position.  For example:
  465.  
  466.             >ext a=$edit(int-field,"$$,$$$.99-")
  467.             >ext b=$edit(int-field,"99,999.99-")
  468.             >ext c=$edit(int-field,"cr99999.99")
  469.             >ext d=$edit(int-field,"-$9999.99")
  470.             >ext e=$edit(int-field,"**,***.99+")
  471.             >ext f=$edit(int-field,"zz,zzz.99+")
  472.             >list
  473.             >xeq
  474.             >IN FILE1SD.NEIL.GREEN (0) >OUT $NULL (0)
  475.             A      =    $11.11-     B   = 00,011.11-
  476.             C      = CR00011.11     D   =  -$0011.11
  477.             E      = ****11.11-     F   =     11.11-
  478.  
  479.             >IN FILE1SD.NEIL.GREEN (1) >OUT $NULL (1)
  480.             A      =    $22.22-     B   = 00,022.22-
  481.             C      = CR00022.22     D   =  -$0022.22
  482.             E      = ****22.22-     F   =     22.22-
  483.  
  484.           Signs
  485.  
  486.           As  shown  in  the  example  above, there are also numerous format
  487.           characters for numeric edits, including four ways to  specify  the
  488.           sign.
  489.  
  490.           You  can  specify  a  sign,  with  +, -, or the typical accounting
  491.           specification of "CR" and "DB".  You  will  note  in  the  example
  492.           above  that  the "cr" in the mask was up-shifted to be "CR".  This
  493.           is because the entire mask is up-shifted  as  the  mask  is  being
  494.           parsed.
  495.  
  496.           You  can  specify  more  than  one  sign  in a numeric field edit,
  497.           although Suprtool will give you a warning  that  having  two  sign
  498.           edit-mask  characters  does  not  reall make sense.  Cobol gives a
  499.           Questionable warning when compiling an edit-mask with  characters.
  500.           Suprtool, will apply the sign in both places.
  501.  
  502.           Keep in mind that most data has three states:
  503.  
  504.            1) Postive
  505.            2) Negative
  506.            3) Neutral
  507.  
  508.           Any  neutral data will not display the sign.  If you specify a "+"
  509.           sign in the edit-mask and the data is negative, it will of  course
  510.           display a "-" sign.
  511.  
  512.           Decimal Places
  513.  
  514.           For  numeric-type  edits,  Suprtool  attempts  to  adjust the data
  515.           according to the number of decimal places in the  edit-mask,  when
  516.           compared to the number of decimal places defined in the field.
  517.  
  518.           For  example if the data field has one decimal place, and the edit
  519.           mask has two decimal places, then the data is adjusted:
  520.  
  521.           Data and Edit mask:
  522.  
  523.             102.3   ZZZZ.99
  524.  
  525.           will result in the final data being:
  526.  
  527.             102.30
  528.  
  529.           Similarly, if the data has three decimal places and the  edit-mask
  530.           only has two, then the data will be rounded appropriately with the
  531.           same rules as outlined in the $number function.
  532.  
  533.           You can specify more than  one  decimal  place  in  an  edit-mask.
  534.           However,  Suprtool  will  print  a warning and it will utilize the
  535.           right-most decimal place for data alignment.
  536.  
  537.           The decimal place character is defined by a set command:
  538.  
  539.              >set decimalsymbol "."
  540.  
  541.           If you define another character as the  decimal  symbol,  Suprtool
  542.           will  use  that  character as the point to align the decimals.  If
  543.           you define a decimal symbol  that  is  not  an  allowed  edit-mask
  544.           character  with  Set  Decimalsymbol, Suprtool will assume that the
  545.           field has zero decimal places and adjust the data accordingly.
  546.  
  547.           Currency and Dollar signs
  548.  
  549.           Suprtool edit-masks support both fixed and floating dollar  signs.
  550.           Logic  for  floating dollar-signs will be invoked if more than two
  551.           dollar signs are defined in the edit-mask.
  552.  
  553.           A floating-dollar edit mask attempts to put the dollar sign at the
  554.           left  most  position  of the significant data.  For example if you
  555.           have the following data and edit mask:
  556.  
  557.           0001234.54 $$$$$$.$$
  558.  
  559.           the data would end up as:
  560.  
  561.              $1234.54
  562.  
  563.           Suprtool will not however, put the dollar sign to the right of the
  564.           decimal  place.   If  you had the same edit mask and the data was,
  565.           .09, the data would end up being formatted as:
  566.  
  567.                  $.09
  568.  
  569.           Similarily, the $edit function will attempt to  place  the  dollar
  570.           sign  correctly  in  most  cases.   For  example Suprtool will not
  571.           format data in the form of:
  572.  
  573.              $,123.50
  574.  
  575.           Suprtool, does attempt to fixup these cases and would  format  the
  576.           data in the following manner:
  577.  
  578.               $123.50
  579.  
  580.           Overflow and floating dollars
  581.  
  582.           If  the  number  of  digits  in the data is equal to the number of
  583.           placeholder dollar signs, then the dollar sign is dropped and  not
  584.           added to the edited field.
  585.  
  586.           12345.50 $$$$$.99
  587.  
  588.           would result in:
  589.  
  590.           12345.50
  591.  
  592.           Set CurrencySymbol
  593.  
  594.           If  Set  CurrencySymbol  is  not  equal  to  "$",  then  after the
  595.           formatting has been applied, whatever symbol(s) are defined within
  596.           the set command, are used to replace the "$" symbol in the data.
  597.  
  598.           For example, if you have the Currency symbol set as "CDN".
  599.  
  600.             >set currencysymbol "CDN"
  601.  
  602.           Suprtool will replace the "$" after the edit-mask has been applied
  603.           with CDN, provided there is room to the left of the dollar-sign.
  604.  
  605.           It is recommended that if you are using  multiple  characters  for
  606.           the  dollar symbol that you leave enough characters to the left of
  607.           the symbol.
  608.  
  609.           For example if the CurrencySymbol is  defined  as  CDN,  then  you
  610.           should  leave  two  spaces  to  the  left  of  a fixed dollar sign
  611.           definition.  If there is not enough room, to put in  the  currency
  612.           symbol, then the dollar symbol is blank.
  613.  
  614.           Overflow and limits
  615.  
  616.           An edit mask is limited to 32 characters in total for both numeric
  617.           and byte type fields.  If data overflows the edit-mask, by default
  618.           Suprtool  will fill that field with asterisks.  There is an option
  619.           to have Suprtool stop when it encounters a formatting overflow:
  620.  
  621.             >set editstoperror on
  622.  
  623.           will force Suprtool to stop if there is data left  over  to  place
  624.           when  applying  the  edit-mask.  With numeric-type fields, leading
  625.           zeroes do not cause overflow.
  626.  
  627.  
  628.  
  629.  
  630.  
  631.    Bugs Fixed in Version 4.8.02
  632.  
  633.              Chain Command.  The information about  the  data  loaded  in  a
  634.              Table  would  be  lost  if  the  table being referenced was the
  635.              second held table and the  previous  task  involved  the  Chain
  636.              command.
  637.  
  638.  
  639.    Bugs Fixed in Version 4.8
  640.  
  641.           $Edit  Function.    The $edit function now returns a proper result
  642.           when nested within another string function such as $ltrim.
  643.  
  644.           Clean Command.   The clean command was improperly upshifting lower
  645.           case alpha characters.
  646.  
  647.  
  648.    Bugs Fixed in Version 4.7.12
  649.  
  650.  
  651.           $SubTotal  Function.   The $subtotal function would cause Suprtool
  652.           to fail if the size of the  Output  buffer  was  larger  than  the
  653.           record input.
  654.  
  655.  
  656.  
  657.    Bugs Fixed in Version 4.7.11
  658.  
  659.           Variable Substitution.   Suprtool would report the error:
  660.  
  661.              Error:  >KEY has 2-4 parms: pos,len[,type][,DESC].
  662.  
  663.           when  resolving a variable that resolved to a blank line.  This is
  664.           now fixed in Suprtool 4.7.11.
  665.  
  666.           $Total Function.   The $total function would appear to  accumulate
  667.           incorrectly when sorting in the same task.
  668.  
  669.           $SubTotal Function.   The $subtotal function would not work if run
  670.           in the same copy  of  Suprtool  if  the  previous  task  used  the
  671.           Duplicate command.
  672.  
  673.  
  674.    Bugs Fixed in Version 4.7.10
  675.  
  676.           Incorrect  Flimit.    Suprtool  would  incorrectly  calculate  the
  677.           flimit on an output file when using Numrecs 100%, and if the input
  678.           file was very large.
  679.  
  680.           $Split  generating  random  characters.    The new $split function
  681.           would put random characters at the point  where  the  split  would
  682.           occur in some cases.
  683.  
  684.           $Split  reported  bogus  error  on repeated task.   The new $split
  685.           function would incorrectly report an error in a second  task  with
  686.           multiple $split operations.
  687.  
  688.           $Number decimal only numbers incorrect.   The new $number function
  689.           did not handle numbers that consisted  of  only  a  decimal  place
  690.           followed by any number of zeroes and a number, as in .01 thru .0
  691.  
  692.           Empty  Join  File caused abort.   Suprlink would abort if the Join
  693.           file was empty.
  694.  
  695.           Join File held open.   Suprlink would hold the  Output  file  open
  696.           after the task was completed.
  697.  
  698.           $Subtotal incorrect.   Suprtool would give incorrect numbers for a
  699.           $subtotal function in certain cases.
  700.  
  701.           Data Corruption.   Suprtool would write corrupt data at the end of
  702.           each  block  if  the record size of the input file and output file
  703.           was greater than 10,000 bytes.
  704.  
  705.  
  706.  
  707.    Bugs Fixed in Version 4.7.02
  708.  
  709.  
  710.    Bogus Error with $number.   Suprtool would incorrectly  report  an  error
  711.           when using the $number function in some cases.
  712.  
  713.  
  714.    Incorrect  Flimit on Output file.   Suprlink and STExport would build the
  715.           output file with an incorrect flimit.
  716.  
  717.  
  718.    Bugs Fixed in Version 4.7.01
  719.  
  720.  
  721.    HPUX only.   Suprtool 4.7.01 was only released on HP-UX.
  722.  
  723.  
  724.  
  725.    Enhancements in Version 4.7
  726.  
  727.  
  728.  
  729.    $Number Function If and Extract
  730.  
  731.           Suprtool now has the ability  to  accept  free-form  "numbers"  as
  732.           display data types.  This means number in the form:
  733.  
  734.            1234.45-
  735.            -12345
  736.            -123.2134
  737.             12343
  738.  
  739.           can now be accepted and converted to any other numeric data type.
  740.  
  741.           Consider the following data:
  742.  
  743.             Item-number    New-Price
  744.              12345          +123.45
  745.              34563          + 27.5
  746.              21312          +  1.545
  747.  
  748.           Suprtool  can now read and convert the data in New-Price using the
  749.           number function.  Let's say we  want  New-Price  to  be  a  double
  750.           integer  and  currently  occupies eight bytes starting in position
  751.           six.
  752.  
  753.           Here  is  the  task  you  would  use  to  convert  the   New-Price
  754.           free-format number into a double integer.
  755.  
  756.             >in mynums
  757.             >def item-number,1,5,byte
  758.             >def new-price-ascii,6,8,display
  759.             >def new-price,1,4,double
  760.             >item new-price-ascii,dec,2
  761.             >item new-price,dec,2
  762.             >ext item-number
  763.             >ext new-price=$number(new-price-ascii)
  764.             >out somefile,link
  765.             >xeq
  766.  
  767.           The  $number  function  take  the free-format number and make it a
  768.           valid display number.  It will determine the decimal, sign and add
  769.           leading zeroes.  It will round the number to the defined number of
  770.           decimal places.
  771.  
  772.           In the case of 1.545 number, Suprtool will round the value  to  be
  773.           1.55,  since  the  given  number  of decimal places is two and the
  774.           preceding value is five or greater.  If you have  a  whole  number
  775.           such as 54, with no decimal point the value becomes 54.00.
  776.  
  777.           Suprtool will not accept data that has:
  778.  
  779.              More than one sign.
  780.              More than one decimal place.
  781.              Spaces in between numbers.
  782.              Signs that are in between numbers.
  783.              Characters that are not over punch characters.
  784.              Fields that when edited do not fit in the defined space for the
  785.           display field
  786.  
  787.           You can control the character that defines the currency,  thousand
  788.           and  decimal  symbol  for  other  currencies and formats using the
  789.           following commands:
  790.  
  791.              >set decimalsymbol "."
  792.              >set thousandsymbol ","
  793.              >set currencysymbol "$"
  794.  
  795.           Suprtool in the above case will strip the  currency  and  thousand
  796.           symbols  and  use  the  decimal  symbol to determine the number of
  797.           decimal places.  You can set these characters to  any  values  you
  798.           want but the defaults for each are used in the above set commands.
  799.  
  800.           The Decimal and thousand symbols are only single characters.   The
  801.           currency symbol allows for four characters.
  802.  
  803.  
  804.  
  805.    Suprlink Many-to-Many Link
  806.  
  807.           Suprlink  can  now  join  files  together  that  have multiple key
  808.           records in each  file,  what  has  been  come  to  be  know  as  a
  809.           many-to-many  link.   Suprlink has traditionally been able to link
  810.           an Input file with many records with the same key to a  Link  file
  811.           that has a single record with the same key value.
  812.  
  813.           The Join command, will now link two files with many key records in
  814.           both the inpu and the "Linking" file.
  815.  
  816.           The syntax of the Join command is exactly the  same  as  the  Link
  817.           command so a sample task would look as follows:
  818.  
  819.              +input ordhist
  820.              +join  orders
  821.              +output custord
  822.              +xeq
  823.  
  824.           The  above task will link multiple records of the file ordhist, to
  825.           the multiple records of the file in orders.  This assumes that the
  826.           files  are  sorted by a common key.  In SQL terms this is known as
  827.           an Inner Join.
  828.  
  829.           An Outer Join, one where the keys do not necessarily have a  match
  830.           can  be  achieved  by  adding  the  optional  keyword  to the Join
  831.           command:
  832.  
  833.              +input ordhist
  834.              +join  orders optional
  835.              +output joined
  836.              +xeq
  837.  
  838.           In SQL parlance, once again you can achieve both a Left Outer Join
  839.           and  Right Outer Join by reversing the order of the files, between
  840.           the input and the join commands.
  841.  
  842.           To give you an example  of  how  the  Join  operation  would  work
  843.           consider the following data.  First we have an inventory file with
  844.           multiple records for the same product-no.  This data is stored  in
  845.           the file dinv:
  846.  
  847.              50512001  {Rest of data}
  848.              50512001  {Rest of data}
  849.              50512003  {Rest of data}
  850.  
  851.           The  next  file  will have sales records, once again with multiple
  852.           key values, this data is stored in the file dsales:
  853.  
  854.              50512001  {Rest of data}
  855.              50512001  {Rest of data}
  856.  
  857.           If you did the following task assuming both files  are  sorted  by
  858.           the product-no:
  859.  
  860.             +in dinv
  861.             +join dsales
  862.             +out invsales
  863.             +xeq
  864.  
  865.           The  resulting  file  would  have  four records, with the multiple
  866.           matching dinv and dsales records.  The record  layout  would  have
  867.           the dinv information first followed by the dsales information.
  868.  
  869.           If  you add the optional keyword on the join command the resulting
  870.           file would have 5 records.  The matching 4 records from  dinv  and
  871.           dsales  as  well  as  the  dinv record that did not match with the
  872.           numeric fields set to zero and the byte fields set to spaces.
  873.  
  874.           Only one Join operation is allowed per task.
  875.  
  876.           By default, Suprlink will join files base on  the  primary  sorted
  877.           key  in the self-describing file.  You can specify a secondary key
  878.           for the files to be joined on in a similar manner to how the  Link
  879.           command did:
  880.  
  881.             +in orders
  882.             +join dsales by order-no product-no
  883.             +out ordsales
  884.             +xeq
  885.  
  886.  
  887.    Splitting Byte Fields
  888.  
  889.           Suprtool  can  extract  portions  of  a  byte  field  based on the
  890.           occurrence of certain characters.
  891.  
  892.           Consider the following Data:
  893.  
  894.            Armstrong/ Neil/ Patrick
  895.            Green/ Bob/ Miller
  896.            Fritshaw/ Elizabeth/
  897.            Edwards/ Janine/
  898.            Armstrong/Arthur/Derek
  899.  
  900.           The $split function can extract each token into  separate  fields.
  901.           The syntax for the $split function is:
  902.  
  903.             $split(Field,StartCharacter,Occurrence,EndCharacter,Occurrence)
  904.  
  905.           The  following  task  will  $split the data in the wholefield into
  906.           three separate fields.
  907.  
  908.             >in namefile
  909.             >define lastname,1,30
  910.             >define firstname,1,20
  911.             >define middlename,1,20
  912.             >extract lastname = $split(wholename,first,"/")
  913.             >extract firstname=$trim($split(wholename,"/","/"))
  914.             >extract middlename=$trim($split(wholename,"/",2," ",2))
  915.             >out names,link
  916.             >xeq
  917.  
  918.           The first extract statement tells Suprtool extract the bytes  from
  919.           the  field  wholename,  starting at the beginning (first keyword),
  920.           and stopping at the "/" character.
  921.  
  922.           The second extract statement, tells Suprtool to extract the  bytes
  923.           between  the  first  occurrence  of  the "/" character to the next
  924.           occurrence of the "/" character, and then that string  is  trimmed
  925.           of spaces as it is nested within the $trim function.
  926.  
  927.           The  third  and  final extract statement tells Suprtool to extract
  928.           the  bytes  beginning  with  the  second  occurrence  of  the  "/"
  929.           character to the second occurren of the space character.
  930.  
  931.           If  the  target field is not long enough to hold the data Suprtool
  932.           will abort with an  error.   You  can  easily  prevent  this  from
  933.           happening on blank fields by nesting the $split statement within a
  934.           $trim or $rtrim function.
  935.  
  936.           The $split function also has a Last keyword, whereby you can split
  937.           the field from a given occurrence of a character to the end of the
  938.           field.
  939.  
  940.           So in the given example from  above  the  extracting  out  of  the
  941.           middlename could be coded as such:
  942.  
  943.             >extract middlename=$trim($split(wholename,"/",2,last))
  944.  
  945.           The  above  means  to  extract  out  all  the data from the second
  946.           occurrence of the "/", to the  end  of  the  field  and  trim  all
  947.           spaces.
  948.  
  949.  
  950.    Control Break Totals
  951.  
  952.           Suprtool  now  has  the ability to keep a running subtotal for any
  953.           numeric field based on a given sort key.
  954.  
  955.           The target data must be a packed field with 28 digits, in order to
  956.           help avoid overflow issues.
  957.  
  958.           A sample use of the $subtotal function could be:
  959.  
  960.             >def mytotal,1,14,packed
  961.             >get orders
  962.             >sort order-number
  963.             >ext order-number
  964.             >ext part-number
  965.             >ext description
  966.             >ext sales-amount
  967.             >ext mytotal = $subtotal(sales-amount,order-number)
  968.             >out sales,link
  969.             >xeq
  970.  
  971.           This  would  result in a file containing a running subtotal in the
  972.           field mytotal f order-number.  You could then  generate  a  simple
  973.           report with the simple Suprtool c
  974.  
  975.             >in sales
  976.             >list standard
  977.             >xeq
  978.  
  979.           The basic syntax for the $subtotal function in the extract command
  980.           is:
  981.  
  982.             extract targetfield = $subtotal(field,sort-field)
  983.  
  984.           You  must  specify  the  sort  command  before   referencing   the
  985.           sort-field in the $subtotal function.
  986.  
  987.           You  can  subtotal  up  to  ten  fields per pass and the $subtotal
  988.           function is also available in  the  if  command,  however,  is  of
  989.           limited use.
  990.  
  991.  
  992.    Clean Command Syntax
  993.  
  994.           The  Clean command has improved syntax to specify which characters
  995.           to look to replace.  You can specify special characters Decimal  0
  996.           thru Decimal 31 via the command:
  997.  
  998.             Clean special
  999.  
  1000.           You  can also specify a range or characters by using the following
  1001.           syntax:
  1002.  
  1003.             Clean "^0:^31","^240:^255"
  1004.  
  1005.           This enhancement makes it much  easier  to  define  characters  to
  1006.           search for and Clean in both Suprtool and STExport.
  1007.  
  1008.  
  1009.    Outcount and Fullcount
  1010.  
  1011.           For years Suprtool has had a jcw and a variable to communicate how
  1012.           many records have been selected.   The  SuprtoolOutCount  JCW  and
  1013.           SuprtoolFullCount  Variable,  are set at the end of each task with
  1014.           how many records have been selected.  Suprlink  and  STExport  now
  1015.           have their own variables and jcw's.
  1016.  
  1017.           They are:
  1018.  
  1019.              SUPRLINKOUTCOUNT
  1020.              SUPRLINKFULLCOUNT
  1021.              STEXPORTOUTCOUNT
  1022.              STEXPORTFULLCOUNT
  1023.  
  1024.           On  MPE/ix, it is recommended that you use the Fullcount variables
  1025.           when checking the number or records.
  1026.  
  1027.  
  1028.  
  1029.    Cleaning your Data
  1030.  
  1031.           In this day and age of migrations we were looking at  issues  that
  1032.           customers  have  run  into when importing data into new databases.
  1033.           What came from this investigation where ways to Clean up your data
  1034.           in any given byte type field.
  1035.  
  1036.           We have added two methods to clean your data, you can use Suprtool
  1037.           to clean an individual byte type field, or STExport to  clean  all
  1038.           of the byte-type fields for a given file that you are exporting.
  1039.  
  1040.  
  1041.    Suprtool
  1042.  
  1043.           Sometimes  un-printable  or  extraneous  characters  get stored in
  1044.           files or databases that have no business being there.  This may be
  1045.           some  tab  characters  in an address field or perhaps and embedded
  1046.           carriage return or line-feed.
  1047.  
  1048.           Suprtool now  supports  the  clean  function  which  will  replace
  1049.           individual characters for a given byte field.
  1050.  
  1051.           There  are  three  things  that Suprtool needs to know in order to
  1052.           "clean" a field.  Suprtool needs to know which characters it needs
  1053.           to  clean,  what character it needs to change the "bad" characters
  1054.           to, and also what field does it need to clean.
  1055.  
  1056.  
  1057.    Defining a Clean Character
  1058.  
  1059.           The Clean command is used to  tell  Suprtool  what  characters  it
  1060.           needs to look for in a given byte type field.  For example:
  1061.  
  1062.               clean "^9","^10","."
  1063.  
  1064.           will  tell Suprtool to replace the tab character (Decimal 9), Line
  1065.           Feed (Decimal 10), and a period to whatever the Clean character is
  1066.           set to.
  1067.  
  1068.           The  CLean  command takes both, decimal notation and the character
  1069.           itself, however, it is probably most convenient to use the Decimal
  1070.           notation  for  the characters that you wish to clean.  The Decimal
  1071.           notation is indicated by the "^" character.
  1072.  
  1073.  
  1074.    Setting the Clean Character
  1075.  
  1076.           By default, Suprtool will replace any of the characters  specified
  1077.           in the clean command with a space.  You can specify what character
  1078.           to use to replace any of the  characters  that  qualify  with  the
  1079.           following set command:
  1080.  
  1081.              >set CleanChar "."
  1082.  
  1083.           This  will  set the character to replace any of the qualifying "to
  1084.           be cleaned" characters to be a period.
  1085.  
  1086.  
  1087.    Cleaning a Field
  1088.  
  1089.           You call the clean function, the same way you normally  use  other
  1090.           functions available to if and extract.  For example:
  1091.  
  1092.              ext address1=$clean(address1)
  1093.  
  1094.           shows  how  to  clean  the field address1.  You do not necessarily
  1095.           need to have the target field be the same as the source field.
  1096.  
  1097.             def new-address,1,30
  1098.             ext new-address=$clean(address1)
  1099.  
  1100.  
  1101.    Cleaning your data
  1102.  
  1103.           An example of how easy it would  be  to  clean  your  database  of
  1104.           certain "bad" characters in byte-type fields would be as follows:
  1105.  
  1106.                >base mydb,1,;
  1107.                >get customer
  1108.                >clean "^9","^10","^0","^7"
  1109.                >set cleanchar " "
  1110.                >update
  1111.                >ext address(1) = $clean(address(1))
  1112.                >ext address(2) = $clean(address(2))
  1113.                >ext address(3) = $clean(address(3))
  1114.                >xeq
  1115.  
  1116.           The  above  task  will  look at the three instances of address and
  1117.           replace the tab, linefeed, null and bell characters with a space.
  1118.  
  1119.  
  1120.    STExport
  1121.  
  1122.           This same feature has been added to STExport, except that STExport
  1123.           will  automati clean all the byte type fields for a given SD file.
  1124.           The commands are very simila STExport just needs to know what  the
  1125.           replace character should be and what charac needs to look for.
  1126.  
  1127.              $ in mysdfile
  1128.              $clean "^9","^10","^0","^7"
  1129.              $set cleanchar " "
  1130.              $out myexport
  1131.              $xeq
  1132.  
  1133.           Since  the  Cleanchar  is  by default set to space, the above task
  1134.           could simply be:
  1135.  
  1136.              $in mysdfile
  1137.              $clean "^9","^10","^0","^7"
  1138.              $out myexport
  1139.              $xeq
  1140.  
  1141.  
  1142.    Escape Command
  1143.  
  1144.           Many SQL importers allow you to add an escape character  in  front
  1145.           of characters that may mean something else to the import program.
  1146.  
  1147.           For  example  if  the  import  program  thinks  that the delimiter
  1148.           character is a comma, the importer may treat a comma in an address
  1149.           field as an indication to move to the next field, which will throw
  1150.           of the import.
  1151.  
  1152.           Some import programs, will treat the next  character  as  data  as
  1153.           opposed  to  a delimeter if the character is preceded by an escape
  1154.           character, such as a slash.
  1155.  
  1156.           Thus when  the  field  is  analyzed  by  STExport  the  data  that
  1157.           originally started as:
  1158.  
  1159.              "Niagara Falls,Ontario, Canada"
  1160.  
  1161.           would be transformed to be:
  1162.  
  1163.             "Niagara Falls/,Ontario/, Canada"
  1164.  
  1165.           This  function  will  not work on fixed columns and can be invoked
  1166.           with the escape command:
  1167.  
  1168.              escape delimeter quote eol "/"
  1169.  
  1170.           The above command will take the defined delimeter, quote  and  Eol
  1171.           and escape with a "/", if found  in any byte type field.
  1172.  
  1173.  
  1174.    Table Command Filename
  1175.  
  1176.  
  1177.           Previously  the  permitted  length  for the filename for the Table
  1178.           command  was  36  characters.   This  has  been  increased  to  80
  1179.           characters.
  1180.  
  1181.  
  1182.  
  1183.    Running Totals
  1184.  
  1185.           Suprtool  now  has  the  ability  to  keep a running total for any
  1186.           numeric field.  The target data must be a  packed  field  with  28
  1187.           digits, in order to help avoid overflow issues.
  1188.  
  1189.           A sample use of the total function could be:
  1190.  
  1191.             >def mytotal,1,14,packed
  1192.             >get orders
  1193.             >ext mytotal = $total(sales-amount)
  1194.             >xeq
  1195.  
  1196.           You can total up to ten fields per pass and the $total function is
  1197.           also available in the if command, however, is of limited use.
  1198.  
  1199.  
  1200.    $Counter Function
  1201.  
  1202.           For years Suprtool has had the ability to output a  record  number
  1203.           to an output file with the num option of the output command:
  1204.  
  1205.             >in mysdfile
  1206.             >out myfile,num,data
  1207.  
  1208.           The  above  could  would  generate  an  output file called myfile,
  1209.           however, you would the SD information and you  can  only  put  the
  1210.           number  at  the  beginning  or the end o data.  Suprtool now has a
  1211.           counter function that allows you to place a $counter  at  spot  as
  1212.           well as preserve the SD information.
  1213.  
  1214.             >in mysdfile
  1215.             >def mycount,1,4,double
  1216.             >ext field1
  1217.             >ext field2
  1218.             >ext mycount=$counter
  1219.             >out myfile,link
  1220.             >xeq
  1221.  
  1222.           The  file  myfile  will  be self-describing and contain the fields
  1223.           field1, field2 an mycount.  The field  mycount  is  defined  as  a
  1224.           double integer, since this is the onl field type that the $counter
  1225.           function can use.  Each record will have a unique ascending number
  1226.           starting with one.
  1227.