home *** CD-ROM | disk | FTP | other *** search
/ ftp.robelle3000.ai 2014 / 2014.06.ftp.robelle3000.ai.tar / ftp.robelle3000.ai / faq / sx40feat.txt < prev    next >
Text File  |  1997-05-11  |  42KB  |  1,085 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                              SUPRTOOL Version 4.0
  7.  
  8.  
  9.                           Database Handyman for HP-UX
  10.  
  11.  
  12.  
  13.  
  14.  
  15.    Enhancements
  16.  
  17.  
  18.    Allbase Databases
  19.  
  20.           Suprtool now supports Allbase databases.  You can open an  Allbase
  21.           database  with  the  Open command and choose input tables with the
  22.           Select command.  See the "Allbase" section later in this  document
  23.           for  a  complete  description  of  the  Allbase  features that are
  24.           available in Suprtool.
  25.  
  26.           We have tested the new Allbase access with Allbase version  G.1.09
  27.           for  HP-UX.   We  believe  that  it will be compatible with future
  28.           versions of Allbase.  We have not tested Suprtool with any of  the
  29.           F versions of Allbase.
  30.  
  31.  
  32.    Add Command [Add]
  33.  
  34.           Use the Add command to "insert" records into an Oracle table.  You
  35.           must specify the Oracle tablename and you  must  have  opened  the
  36.           Oracle database to which you wish to add records.
  37.  
  38.           The tablename specified must be a valid table and not a view.  The
  39.           fields from the input source, or the extracted names must  be  the
  40.           same  as  the  column  names in the table to which you wish to add
  41.           records.
  42.  
  43.           You do not have to specify all columns in the table;  unreferenced
  44.           columns will be given default values depending on their data-type.
  45.  
  46.           You cannot currently add records from another SQL table,  but  you
  47.           can  extract  the  records  you want into a file and then add from
  48.           that file.
  49.  
  50.  
  51.    Examples
  52.  
  53.           The first example shows a typical  Add  task.   A  self-describing
  54.           file's  records  are  added  to  the  table called customer.  This
  55.           assumes that the self-describing file has the same  structure  and
  56.           that the fieldnames are the same as the column names.
  57.  
  58.                >open oracle scott tiger {open SQL database}
  59.                >in custrecs             {input file you wish to add}
  60.                >add customer            {specify the Oracle table}
  61.                >exit                    {execute the task}
  62.  
  63.           Our  next example shows how to add by redefining the fields from a
  64.           self-describing file into a table.  The  names  are  redefined  so
  65.           that  the fieldnames being extracted will match those in the table
  66.           of the SQL database.
  67.  
  68.                >open oracle scott tiger {open SQL database}
  69.                >in custrecs             {input file you wish to add}
  70.                >def cust_name,custname  {redefine the items to match}
  71.                >def cust_addr,address   {the names in the table}
  72.                >extract cust_name       {extract data under the column name}
  73.                >extract cust_addr
  74.                >add customer            {specify the Oracle table}
  75.                >exit                    {execute the task}
  76.  
  77.  
  78.           Our final example shows input from a flat file.
  79.  
  80.                >open oracle scott tiger  {open SQL database}
  81.                >in salehist              {input file you wish to add}
  82.                >def cust_number,1,6,byte {redefine the items to match}
  83.                >def item_no,7,10,byte    {the names in the table}
  84.                >def sales,18,4,double
  85.                >extract  cust_number       {extract  data  under  the column
  86.           name}
  87.                >extract item_no
  88.                >extract sales
  89.                >add customer            {specify the Oracle table}
  90.                >exit                    {execute the task}
  91.  
  92.  
  93.    Allbase Access
  94.  
  95.           Suprtool now supports Native Char and Native  VarChar  data-types.
  96.           The  Form  command  reports  these  fields  as  being  Char(N) and
  97.           VarChar(N) respectively.
  98.  
  99.  
  100.    Extract Command
  101.  
  102.           Previous  versions  of  Suprtool  would   not   allow   arithmetic
  103.           expressions  that  started  with  a  constant.   If  you  have  an
  104.           arithmetic  expression  that  starts  with  a  constant,  Suprtool
  105.           assumes that you are attempting to extract a single constant value
  106.           and not  an  arithmetic  expression.   To  specify  an  arithmetic
  107.           expression  that  starts  with a constant, surround the expression
  108.           with parentheses.  For example,
  109.  
  110.                Incorrect
  111.                >extract c = 6000 - cost
  112.  
  113.                Error:  Missing comma or invalid arithmetic expression
  114.  
  115.                Correct
  116.                >extract c = (6000 - cost)
  117.  
  118.  
  119.    Form Command
  120.  
  121.           The Form command, which displays all of the accessible tables, now
  122.           shows  the  ownername  for  both  Allbase  and  Oracle  databases.
  123.           Previously the Form command on an Allbase database  would  display
  124.           only  those  tables  for  the  ownername specified during the Open
  125.           command.  Suprtool now displays all of the accessible tables.
  126.  
  127.           The tables  are  displayed  in  descending  order  by  owner-  and
  128.           tablename.
  129.  
  130.  
  131.    If $Invalid(date-field)
  132.  
  133.           The  If  command  now  has a $invalid function to find all invalid
  134.           dates for a particular field.  An invalid date is any number of  a
  135.           particular  date  format  whose date equivalent cannot be found on
  136.           the calendar.  For example, a date with a  month  of  99  will  be
  137.           considered invalid.
  138.  
  139.             >in kb.calls
  140.             >item date-created,date,yymmdd
  141.             >item date-modified,date,yymmdd
  142.             >if $invalid(date-created) or $invalid(date-modified)
  143.             >out baddates,link
  144.             >xeq
  145.  
  146.  
  147.    Item Command
  148.  
  149.           The  Item  command  now  allows  the  following  new date formats:
  150.           ccyymmdd, ccyy, ccyymm, aammdd.  See the section "Suprtool and the
  151.           Year 2000" for a complete description.
  152.  
  153.  
  154.    Set Date Command
  155.  
  156.           Suprtool now has two new Set Date commands:
  157.  
  158.              Set Date ForceCentury On | Off
  159.              Set Date Cutoff nn
  160.  
  161.           See  the  "Suprtool  and  the  Year  2000"  section for a complete
  162.           description of each of these settings.
  163.  
  164.  
  165.    Form Command
  166.  
  167.           The Form command has been enhanced to identify columns that  allow
  168.           null  values  in SQL tables.  Before the Form command can show the
  169.           columns in a selected table, it has to be preceded by  valid  Open
  170.           and Select commands.
  171.  
  172.            >form
  173.              Column Name:      Allbase Type:      Nulls:    Suprtool Type:
  174.  
  175.              CUSTOMERNUM          Decimal  (8)         N       Packed
  176.              DELIVERYDATE         Decimal  (8)         Y       Packed
  177.              PRODUCTNUM           Decimal  (8)         N       Packed
  178.              PRICE                Decimal  (8)         Y       Packed
  179.              PURCHASEDATE         Decimal  (8)         N       Packed
  180.              SALESQTY             Decimal  (4)         Y       Packed
  181.              SALESTAX             Decimal  (8)         Y       Packed
  182.              SALESTOTAL           Decimal  (8)         Y       Packed
  183.  
  184.  
  185.    If $Null(fieldname)
  186.  
  187.           The  If  $null(fieldname)  command  has been added so that you can
  188.           select rows that have  null  values  in  them.   This  feature  is
  189.           available  only  for  SQL  databases, and you can use this command
  190.           only on columns that allow null values.
  191.  
  192.                >if $null(SALESTOTAL)
  193.  
  194.           If you want to find only values that are not null, you can add the
  195.           NOT keyword in front of $null.
  196.  
  197.                >if not $null(SALESTOTAL)
  198.  
  199.  
  200.    Item Command
  201.  
  202.           You  can  specify  Oracle  dates  on the Item command by using the
  203.           keyword Oracle.  For example,
  204.  
  205.                >item transdate,date,oracle
  206.  
  207.           The Oracle date attribute is  only  allowed  on  fields  that  are
  208.           exactly seven characters long.
  209.  
  210.  
  211.    Oracle Dates
  212.  
  213.           Use  the  Item  command to specify that a field contains an Oracle
  214.           date.  Once you have identified an Oracle date, you  can  use  the
  215.           $date  and  $today features in both the Extract and If commands to
  216.           extract or select on Oracle dates.  Oracle dates have both a  date
  217.           and  a  time  component,  but  Suprtool  only  processes  the date
  218.           component.
  219.  
  220.  
  221.    Output,Link Option
  222.  
  223.           If you use the Item command to identify the fields that are Oracle
  224.           dates, the self-describing files created by the Link option of the
  225.           Output command will automatically include  this  information.   If
  226.           you  specify  a  self-describing  input  file  with  Oracle dates,
  227.           Suprtool will automatically recognize the Oracle date attribute.
  228.  
  229.  
  230.    Set Oracle Rows
  231.  
  232.           The minimum value for Set Oracle Rows has been changed from 10  to
  233.           1.
  234.  
  235.  
  236.    Allbase
  237.  
  238.  
  239.           Suprtool  can  now  read  Allbase  tables and views.  The Open and
  240.           Select commands are used with Allbase.  The Form command has  been
  241.           enhanced to show information about Allbase databases.
  242.  
  243.  
  244.    Form Command [F]
  245.  
  246.           The  Form  command  now displays information about an open Allbase
  247.           database.  After an Open command, the Form  command  displays  the
  248.           tables  available  to  the  user,  together  with the owner names.
  249.           After a Select command, the Form command displays the  columns  in
  250.           the specified table.
  251.  
  252.            >open Allbase Partsdbe.allbase scott
  253.            >form
  254.            Allbase Owner             Table:
  255.               MANUFDB                SUPPLYBATCHES
  256.               MANUFDB                TESTDATA
  257.               PURCHDB                INVENTORY
  258.               PURCHDB                ORDERITEMS
  259.               PURCHDB                ORDERS
  260.               PURCHDB                PARTINFO
  261.               PURCHDB                PARTS
  262.               PURCHDB                REPORTS
  263.               PURCHDB                SUPPLYPRICE
  264.               PURCHDB                VENDORS
  265.               PURCHDB                VENDORSTATISTICS
  266.               RECDB                  CLUBS
  267.               RECDB                  EVENTS
  268.               RECDB                  MEMBERS
  269.               SCOTT                  EMP
  270.            >select * from scott.emp
  271.            >form
  272.               Column  Name:          Allbase  Type:       Nulls:    Suprtool
  273.           Type:
  274.  
  275.                EMPNO                Decimal  (4)         N       Packed
  276.                ENAME                VarChar  (10)        Y       Byte
  277.                JOB                  VarChar  (9)         Y       Byte
  278.                MGR                  Decimal  (4)         Y       Packed
  279.                HIREDATE             Char     (10)        Y       Byte
  280.                SAL                  Decimal  (7,2)       Y       Packed
  281.                COMM                 Decimal  (7,2)       Y       Packed
  282.                DEPTNO               Decimal  (2)         Y       Packed
  283.  
  284.  
  285.    Open Command [OP]
  286.  
  287.           This command opens an SQL database.   Only  one  database  can  be
  288.           opened at a time.
  289.  
  290.           For example,
  291.  
  292.                >OPEN ALLBASE DBEname Owner
  293.  
  294.           The  Suprtool  syntax  for Allbase is slightly different from that
  295.           for Oracle.  Instead of a password, Suprtool expects  the  "owner"
  296.           name that is associated with a specific Allbase database.
  297.  
  298.  
  299.    Select Command [SEL]
  300.  
  301.           Specify  a  select-statement for an open SQL database.  The Select
  302.           command in Suprtool supports all of the select-statement  features
  303.           of  the  open  SQL  database.   Only  one  Select  command  can be
  304.           specified at a time.
  305.  
  306.                Allbase sorts data:
  307.  
  308.                     >select * from user.account@emp order by ename
  309.  
  310.                Suprtool sorts data:
  311.  
  312.                     >select * from user.account@emp
  313.                     >sort ename
  314.  
  315.           The Select command can contain any expression or  clause  that  is
  316.           supported  by  the SQL database.  However, there are some Suprtool
  317.           commands that may perform  faster  than  select-statements  (e.g.,
  318.           Suprtool Sort command versus Order By).
  319.  
  320.  
  321.    Set Allbase Rows
  322.  
  323.           When  the input source is an Allbase database, Suprtool reads more
  324.           than one row at a time.  By default, Suprtool fetches 100 rows  at
  325.           a  time.   With  the  Set Allbase Rows command, you can change the
  326.           number of rows; the minimum number of rows is one and the  maximum
  327.           number is 990.  You must specify Set Allbase Rows before you enter
  328.           the Select command.
  329.  
  330.  
  331.    Data-Types
  332.  
  333.           When you specify a Select command, Suprtool  figures  out  how  to
  334.           translate the Allbase internal data-types into formats that it can
  335.           process.  Not all Allbase data-types can be processed by Suprtool.
  336.           The  following table lists the Suprtool data-type that corresponds
  337.           to each Allbase data-type:
  338.  
  339.               Allbase Data-Type      Suprtool Data-Type
  340.  
  341.               integer                  double
  342.               smallint                 integer
  343.               binary                   Not Supported
  344.               char                     byte
  345.               varchar                  byte
  346.               real                     ieee-32
  347.               float                    ieee-64
  348.               decimal                  packed
  349.               numeric                  packed
  350.               TID                      Not Supported
  351.               date                     byte
  352.               time                     byte
  353.               datetime                 byte
  354.               interval                 byte
  355.               varbinary                Not Supported
  356.               long binary              Not Supported
  357.               long varbinary           Not Supported
  358.  
  359.  
  360.    Date and Time Types
  361.  
  362.           Allbase has four types of fields that are  associated  with  dates
  363.           and  times.   These fields are converted to byte-type data and are
  364.           returned with specific lengths.
  365.  
  366.           The date and time fields are  returned  with  the  following  byte
  367.           lengths:
  368.  
  369.              Data-Type       Length
  370.  
  371.               DATE             10
  372.               TIME             8
  373.               DATETIME         23
  374.               INTERVAL         8
  375.  
  376.  
  377.    Allbase Performance
  378.  
  379.           Suprtool  provides  you  with  easy  ways to let either Allbase or
  380.           Suprtool do most of the work.  Whether it is best to  use  Allbase
  381.           or Suprtool really depends on your specific machine, database, and
  382.           application.  You can use the Select command to force  Allbase  to
  383.           do  most of the processing or you can use Suprtool to do the work.
  384.           In our testing, Suprtool consistently sorts 1.5 times faster  than
  385.           Allbase.   Your  performance  improvements  may  be different than
  386.           ours, so we recommend that you take some common tasks and try them
  387.           with  both  tools.  Here is an example of sorting with Allbase and
  388.           then with Suprtool:
  389.  
  390.                Allbase sorts data:
  391.  
  392.                     >select * from user.account@emp order by ename
  393.  
  394.                Suprtool sorts data:
  395.  
  396.                     >select * from user.account@emp
  397.                     >sort ename
  398.  
  399.  
  400.    Restrictions
  401.  
  402.           Suprtool still has the following restrictions in Allbase:
  403.  
  404.           1. Suprtool needs the ownername to select a specific  table.   For
  405.              example,
  406.  
  407.                   >select * from purchdb.orders
  408.  
  409.              In  this  example,  the  owner  is purchdb and the tablename is
  410.              orders.
  411.  
  412.  
  413.           2. Suprtool cannot handle the Allbase date format.   However,  the
  414.              To_Char  function  in  the  select-statement  can  convert  the
  415.              Allbase date format into something that  Suprtool  can  handle.
  416.              For example,
  417.  
  418.               >select qty,TO_CHAR(date,'YYYYMMDD') from manufdb.testdata
  419.               >def mydate,date[1],8         {redefine testdate}
  420.               >item mydate,date,yyyymmdd    {define the date format}
  421.               >if mydate<=$today(-900)
  422.  
  423.  
  424.    STExport
  425.  
  426.  
  427.           There  are  four  enhancements  to STExport.  The new HTML command
  428.           lets you specify output for web pages.  The Delimiter Space option
  429.           is  now  the  default  if  you specify HTML Preformatted.  The new
  430.           Heading Column option makes it much easier to  specify  individual
  431.           headings  for  each  field  in the input source.  The Date Invalid
  432.           option lets you decide how STExport should handle invalid dates in
  433.           the input source.
  434.  
  435.  
  436.    Invalid Dates
  437.  
  438.           By   default,  all  invalid  dates  are  formatted  as  asterisks.
  439.           STExport treats any date that does not have a valid century, year,
  440.           month,  or  combination (e.g., February 29, 1999) as invalid.  You
  441.           can specify how you want STExport to format invalid dates by using
  442.           the Invalid option of the Date command.
  443.  
  444.           If you specify
  445.  
  446.                $date invalid null
  447.  
  448.           STExport  produces  a  zero-length  field  if  you  specify Column
  449.           Variable, and spaces if you specify Column Fixed.  If you want  to
  450.           specify  an explicit string for all invalid dates, do so after the
  451.           Invalid option.  For example,
  452.  
  453.                $date invalid "%%%%%"
  454.  
  455.           causes STExport to produce a string of five percent-signs for  any
  456.           invalid date.
  457.  
  458.  
  459.    Delimiter Command
  460.  
  461.           You  can  now  specify  a  space between fields by doing Delimiter
  462.           Space.  If you specify HTML Preformatted, then Delimiter Space  is
  463.           enabled.
  464.  
  465.  
  466.    Heading Command
  467.  
  468.           It is difficult to get headings right when you have to specify all
  469.           of the quotes and delimiters with the  Heading  Add  option.   Use
  470.           Heading  Column  to  specify  individual  column  headings without
  471.           formatting information.  When you  use  Heading  Column,  STExport
  472.           treats   each   individual  column  as  a  byte-type  field.   All
  473.           formatting commands  that  apply  to  byte-type  fields  are  then
  474.           applied to each of the column headings.
  475.  
  476.           For example, if you specify
  477.  
  478.                Heading Column 'Account'
  479.                Heading Column 'First Name'
  480.                Heading Column 'Last Name'
  481.                Heading Column 'City'
  482.                Heading Column 'State'
  483.  
  484.           and  Quote Double and Delimiter Comma are in effect, then STExport
  485.           produces this heading:
  486.  
  487.                 "Account","First Name","Last Name","City","State"
  488.  
  489.  
  490.    Notes
  491.  
  492.           You cannot combine the Add and Column options.  You  must  specify
  493.           one  or  the  other.  If you start with Heading Add and then later
  494.           specify Heading Column, STExport erases the  heading  you  created
  495.           with  Heading  Add  and starts over with the first column that you
  496.           specify with Heading Column.  Similarly, if you start with Heading
  497.           Column, a Heading string or Heading Add will start over with a new
  498.           heading.
  499.  
  500.  
  501.    HTML Command  [HT]
  502.  
  503.           Use HTML to format web  pages  for  either  Internet  or  Intranet
  504.           applications.
  505.  
  506.                HTML      None | Preformatted | Table |
  507.                          Title string |
  508.                          Heading string
  509.  
  510.                                                              (Default: None)
  511.  
  512.           Web applications expect  data  in  a  special  format  called  the
  513.           Hypertext  Markup Language (HTML).  Use the HTML option to request
  514.           that STExport format the input file into HTML format.
  515.  
  516.  
  517.    Maximum Size of HTML Files
  518.  
  519.           Web browsers often cannot process large  documents.   The  maximum
  520.           size  depends  on  what  browser  is  in  use,  the version of the
  521.           browser, the operating system in use, and how much physical memory
  522.           is present on the client machine where the browser is running.  We
  523.           suggest that you limit your web pages to less than 1,000 lines and
  524.           restrict  the  number of columns, unless you are certain that your
  525.           users can handle larger  files.   This  is  not  a  limitation  of
  526.           STExport, but is rather a limitation of how web browsers work.
  527.  
  528.  
  529.    Preformatted Format
  530.  
  531.           To  preserve  columns  and  spacing for each output line, use HTML
  532.           Preformatted.  This command puts the <pre> tag around all  of  the
  533.           data  from the input file.  Most web browsers display preformatted
  534.           text in a fixed-width font such as  Courier.   Therefore,  if  you
  535.           specify HTML Preformatted, you should also select Columns Fixed.
  536.  
  537.  
  538.    Table Format
  539.  
  540.           Use  HTML  Table  to create output in HTML table format.  STExport
  541.           creates tables with a border between each column and row.   Tables
  542.           make  it  easier to read tabular information, but not all browsers
  543.           support tables.
  544.  
  545.  
  546.    Title
  547.  
  548.           All HTML documents must have a title.  By default,  STExport  uses
  549.           the  title "This is the Title".  You should specify your own title
  550.           using the Title option.
  551.  
  552.  
  553.    Heading
  554.  
  555.           The heading appears before the column headings and the  data  from
  556.           your  input  file.   By  default,  there  is  no heading.  Use the
  557.           Heading option to specify your own heading.
  558.  
  559.  
  560.    Column Headings
  561.  
  562.           If you specify HTML Table, use  the  Heading  command  to  specify
  563.           column  headings  for  HTML output.  The Heading Fieldnames option
  564.           produces acceptable column headings,  but  it  is  better  to  use
  565.           Heading  Column to specify a string for each of the fields in your
  566.           input file.
  567.  
  568.  
  569.    Roman-8 Characters
  570.  
  571.           HP 3000 and HP 9000 computers use the Roman-8 character set.   The
  572.           characters  in  the  Roman-8 set are similar to, but not identical
  573.           with, the ISO-8859-1  character  set.   Web  pages  must  use  the
  574.           ISO-8859-1 character set.
  575.  
  576.           When formatting byte-type fields, STExport attempts to convert any
  577.           Roman-8  input  character  into   the   corresponding   ISO-8859-1
  578.           character.   Those characters that cannot be converted are dropped
  579.           from the output.  The following characters cannot be converted:
  580.  
  581.  
  582.                ⌐  169    grave mark
  583.  
  584.                ¬  170    circumflex
  585.  
  586.                ¼  172    tilde
  587.  
  588.                ╛  190    function symbol
  589.  
  590.                ▐  222    beta symbol
  591.  
  592.                δ  235    capital-S, Icelandic
  593.  
  594.                ∞  236    small-S, Icelandic
  595.  
  596.                ε  238    capital-Y, umlaut
  597.  
  598.  
  599.    Notes
  600.  
  601.           If you specify HTML Table, STExport sets
  602.  
  603.                Quotes None
  604.  
  605.                Delimiters None
  606.  
  607.           If you specify HTML Preformatted, STExport sets
  608.  
  609.                Quotes None
  610.  
  611.                Delimiters Space
  612.  
  613.                Columns None
  614.  
  615.           In either case, any changes cause STExport to print a  warning  to
  616.           let  you  know  that  these  options have changed.  If you do want
  617.           quotes around  byte-type  fields  or  delimiters  between  fields,
  618.           specify these options after selecting the HTML option.
  619.  
  620.  
  621.  
  622.    Suprtool and the Year 2000
  623.  
  624.  
  625.           We  are  in  the  midst of addressing many of the issues that face
  626.           data-processing  departments  with  the  impending  turn  of   the
  627.           century.
  628.  
  629.  
  630.    Two-Digit Years
  631.  
  632.           Currently, the date format of yymmdd collates (sorts) correctly if
  633.           the date is not beyond December 31, 1999.  For example,  say  that
  634.           the  current  date  is  961210; this is numerically less than next
  635.           year, the date value of which is  971210.   At  the  turn  of  the
  636.           century,  dates in the yymmdd format (or yymm) will no longer sort
  637.           correctly because the value of December 10, 2000 (001210) is  less
  638.           than the value of dates before January 1, 2000 (e.g.  961210).
  639.  
  640.           Consequently,  if  you  have  a  date beyond 1999 stored in yymmdd
  641.           format, a relative operation such as
  642.  
  643.               >if date-field >= $date(96/12/10)
  644.  
  645.           will not find the date of December 10, 2000.
  646.  
  647.  
  648.    If Command and Year 2000
  649.  
  650.           Because dates beyond 1999 will not collate properly for the yymmdd
  651.           format, the If command now produces an error if the year specified
  652.           in a $date or $today function  is  greater  than  1999,  the  date
  653.           format  is  yymmdd  or  yymm,  and  we  are  performing a relative
  654.           operation, such as greater than.
  655.  
  656.  
  657.    Set Date Cutoff
  658.  
  659.           Suprtool used to assume 19 for the century for any  user-specified
  660.           $date with a two-digit year.
  661.  
  662.           For example:
  663.  
  664.               >item date-field,date,ccyymmdd
  665.               >if date-field <= $date(09/12/26)
  666.  
  667.           Previously,  the $date function converted the user-specified $date
  668.           to
  669.  
  670.               1909/12/26
  671.  
  672.           in order for it  to  be  compared  to  the  date-field  format  of
  673.           ccyymmdd.   Now  with  Set  Date  Cutoff xx, you assume 20 for the
  674.           century if the year specified in the $date function is  less  than
  675.           the value of Set Date Cutoff.
  676.  
  677.           For example:
  678.  
  679.               >set date cutoff 10
  680.               >item date-field,date,ccyymmdd
  681.               >if date-field <= $date(09/12/26)
  682.  
  683.           Suprtool in this case assumes the full $Date to be:
  684.  
  685.               2009/12/26
  686.  
  687.           Conversely,  if  the  value  of  Set  Date  Cutoff was 5, then the
  688.           assumed century would be 19.
  689.  
  690.           The default value of Set Date Cutoff is 10.
  691.  
  692.  
  693.    Set Date ForceCentury
  694.  
  695.           Set Date ForceCentury On does not allow a yy date to be entered in
  696.           the $Date function.  It forces the user to enter a full ccyy date.
  697.  
  698.              >set date forcecentury on
  699.              >item date-field,date,ccyymmdd
  700.              >if date-field >= $date(96/12/10)
  701.  
  702.           Error:You must specify the century or Set Date ForceCentury off
  703.  
  704.           The default value for Set Date ForceCentury  is  off.   The  $Date
  705.           function is available in both the If and Extract commands.
  706.  
  707.  
  708.    New Date Formats
  709.  
  710.           The Item command now supports four new date formats:
  711.  
  712.               Format                Date-Types
  713.               ccyymmdd              X8 Z8 J2 K2 P10
  714.               ccyymm                X6 Z6 J2 K2 P8
  715.               ccyy                  X4 Z4 J1 K1
  716.               aammdd                X6
  717.  
  718.  
  719.    AAMMDD Date Format
  720.  
  721.           The  aammdd  date  format was developed by James Overman of HP for
  722.           use in their MM3000 product.  This format is  available  only  for
  723.           the X6 data-type.
  724.  
  725.           AAMMDD is similar to yymmdd, but the year portion of the date uses
  726.           a combination of numbers and letters of the alphabet to  represent
  727.           years beyond 1999.
  728.  
  729.           By  substituting a letter of the alphabet in the first position of
  730.           the year, we can extend a six-digit date and also ensure that  the
  731.           dates collate correctly.  For example:
  732.  
  733.               YY of AAMMDD        CCYY
  734.               A0 - A9             2000 - 2009
  735.               B0 - B9             2010 - 2019
  736.               C0 - C9             2020 - 2029
  737.  
  738.           Because letters are greater than numbers in the collating sequence
  739.           we can ensure that aammdd dates beyond 1999 will order correctly.
  740.  
  741.  
  742.    Invalid Dates
  743.  
  744.           The If command now has a $invalid function  to  find  all  invalid
  745.           dates  for a particular field.  An invalid date is any number of a
  746.           particular date format whose date equivalent cannot  be  found  on
  747.           the  calendar.   For  example,  a  date with a month of 99 will be
  748.           considered invalid.
  749.  
  750.              >input dsales
  751.              >item deliv-date,date,ccyymmdd
  752.              >if $invalid(deliv-date)
  753.              >out baddates,link
  754.              >xeq
  755.  
  756.  
  757.    Converting Dates
  758.  
  759.           Suprtool is capable of converting dates from one format to another
  760.           using  a  variety of Suprtool features.  You will see how Suprtool
  761.           can convert common dates without the century to  those  that  have
  762.           the century included.
  763.  
  764.  
  765.    Case 1:  Converting a J2 Date from YYMMDD to CCYYMMDD
  766.  
  767.           Because  Suprtool  can  do arithmetic expressions, you can alter a
  768.           date to put 19 in front of it.  But what if all the dates are  not
  769.           actually  dates  but  instead  are filled with 9's as some sort of
  770.           flag to your application?
  771.  
  772.           You have a dataset with two date fields, which are J2 items in the
  773.           date format yymmdd.
  774.  
  775.               File: kb.calls     (SD Version B.00.00)  Has linefeeds
  776.                  Entry:                     Offset
  777.                     CALL-NBR             I2      1
  778.                     CALL-TAKER           X20     5
  779.                     CALL-CATEGORY        X2     25
  780.                     STATUS-FLAG          X2     27
  781.                     COMPANY-NAME         X60    29
  782.                     SERIAL-NBR           X4     89
  783.                     DATE-CREATED         J2     93
  784.                     DATE-MODIFIED        J2     97
  785.               Entry Length: 100  Blocking: 1
  786.  
  787.           First,  you  need  to  know  and  understand your data.  Are there
  788.           invalid dates?  If so, does the  value  have  some  other  logical
  789.           meaning?  Are they, for example, flags for your application?
  790.  
  791.               >in kb.calls
  792.               >item date-created,date,yymmdd
  793.               >item date-modified,date,yymmdd
  794.               >if $invalid(date-created) or $invalid(date-modified)
  795.               >list
  796.               >xeq
  797.  
  798.           After fixing up the dates that are incorrect you can now get ready
  799.           to start converting the dates.
  800.  
  801.           You can put 19 in front of all the appropriate dates by using  the
  802.           following extract statement.
  803.  
  804.                >in kb.calls
  805.                >item date-created,date,yymmdd
  806.                >if not $invalid(date-created)
  807.                >ext call-nbr / serial-nbr
  808.                >ext date-created = date-created + 19000000
  809.                >ext date-modified
  810.                >out kb.calls.new
  811.                >xeq
  812.  
  813.           If  you  have records containing years between 00 and 10, and they
  814.           actually represent 2000 and 2010, you should change the If command
  815.           to  update  them  in  a separate pass.  The first pass updates all
  816.           twentieth-century dates:
  817.  
  818.                >in kb.calls
  819.                >item date-created,date,yymmdd
  820.                >if not $invalid(date-created) and date-created / 10000 > 10
  821.                >ext call-nbr / serial-nbr
  822.                >ext date-created = date-created + 19000000
  823.                >ext date-modified
  824.                >out kb.calls.new
  825.                >xeq
  826.  
  827.           The second pass updates those dates in the twenty-first century:
  828.  
  829.                >in kb.calls
  830.                >item date-created,date,yymmdd
  831.                >if not $invalid(date-created) and date-created / 10000 <= 10
  832.                >ext call-nbr / serial-nbr
  833.                >ext date-created = date-created + 20000000
  834.                >ext date-modified
  835.                >out kb.calls.new,append
  836.                >xeq
  837.  
  838.           You can now repeat these steps for the date-modified field.
  839.  
  840.  
  841.    Case 2:  X6 YYMMDD Data to X8 CCYYMMDD
  842.  
  843.           The following Suprtool task shows how you can generate a new file.
  844.  
  845.           Consider the following self-describing file and  its  date-created
  846.           and date-modified fields:
  847.  
  848.               File: kb.calls     (SD Version B.00.00)  Has linefeeds
  849.                  Entry:                     Offset
  850.                     CALL-NBR             I2      1
  851.                     CALL-TAKER           X20     5
  852.                     CALL-CATEGORY        X2     25
  853.                     STATUS-FLAG          X2     27
  854.                     COMPANY-NAME         X60    29
  855.                     SERIAL-NBR           X4     89
  856.                     DATE-CREATED         X6     93
  857.                     DATE-MODIFIED        X6     99
  858.               Entry Length: 104  Blocking: 1
  859.  
  860.           You  want  to  convert  to a date format with room for a cc at the
  861.           beginning of the date.  In order to convert these dates  you  need
  862.           to  be  able to put either a 19 or 20 in front of the yymmdd date,
  863.           depending on the value of the year.  Before you can do  either  of
  864.           these  you  must  confirm,  once  again,  that you have no invalid
  865.           dates.
  866.  
  867.               >in kb.calls
  868.               >item date-created,date,yymmdd
  869.               >item date-modified,date,yymmdd
  870.               >if $invalid(date-created) or $invalid(date-modified)
  871.               >list
  872.               >xeq
  873.  
  874.           Once you have confirmed that there are no invalid  dates  you  can
  875.           start  converting  the dates that you have.  Because there are two
  876.           date-fields  in  this  file  you  must  be  careful  to  add   the
  877.           appropriate  century  for  the proper field.  For this example you
  878.           assume that if a year is less that 1950 then the century should be
  879.           20.
  880.  
  881.               >in kb.calls
  882.               >item date-created,date,yymmdd
  883.               >if date-created >= $date(1950/01/01)
  884.               >out kb.calls.new
  885.               >ext call-nbr / serial-nbr
  886.               >ext "19"
  887.               >ext date-created
  888.               >ext date-modified
  889.               >xeq
  890.  
  891.           Now insert 20 in the century for the appropriate records:
  892.  
  893.               >in kb.calls
  894.               >if deliv-date < $date(1950/01/01)
  895.               >ext call-nbr / serial-nbr
  896.               >ext "20"
  897.               >ext date-created
  898.               >ext date-modified
  899.               >out kb.calls.new,append
  900.               >xeq
  901.  
  902.           Now  you can convert the other field from the flat file, and add a
  903.           century to the date-modified field:
  904.  
  905.               >reset
  906.               >in kb.calls.new
  907.               >item date-modified,date,yymmdd
  908.               >if date-modified >= $date(1950/01/01)
  909.               >out kb.calls.new2,link
  910.               >ext call-nbr / date-created
  911.               >ext "19"
  912.               >ext date-modified
  913.               >xeq
  914.               IN=19716, OUT=19716.  CPU-Sec=5.  Wall-Sec=9.
  915.  
  916.           Because you extracted all 19716 records you know you do  not  have
  917.           any records with the purch-date field that need to be updated with
  918.           a 20.
  919.  
  920.  
  921.    Case 3:  X6 MMDDYY Data to X6 YYMMDD
  922.  
  923.           The following Suprtool task shows you how to convert a date  in  a
  924.           self-describing file from mmddyy to yymmdd format.
  925.  
  926.           Consider  the  following self-describing file and its date-created
  927.           and date-modified fields:
  928.  
  929.                File: calls     (SD Version B.00.00)  Has linefeeds
  930.                  Entry:                     Offset
  931.                     CALL-NBR             I2      1
  932.                     CALL-TAKER           X20     5
  933.                     CALL-CATEGORY        X2     25
  934.                     STATUS-FLAG          X2     27
  935.                     COMPANY-NAME         X60    29
  936.                     SERIAL-NBR           X4     89
  937.                     DATE-CREATED         X6     93        <<MMDDYY>>
  938.                     DATE-MODIFIED        X6     99        <<MMDDYY>>
  939.               Entry Length: 104  Blocking: 1
  940.  
  941.           You want to convert these two dates to a data  format  of  yymmdd,
  942.           before you add a century in front of the year.  This can be easily
  943.           accomplished by defining each sub part of the date and  extracting
  944.           those parts in the new order.
  945.  
  946.               >in calls
  947.               >def date-created-mm,date-created[1],2
  948.               >def date-created-dd,date-created[3],2
  949.               >def date-created-yy,date-created[5],2
  950.               >def date-modified-mm,date-modified[1],2
  951.               >def date-modified-dd,date-modified[3],2
  952.               >def date-modified-yy,date-modified[5],2
  953.               >ext call-nbr / serial-nbr
  954.               >ext date-created-yy
  955.               >ext date-created-mm
  956.               >ext date-created-dd
  957.               >ext date-modified-yy
  958.               >ext date-modified-mm
  959.               >ext date-modified-dd
  960.               >out calls2,link
  961.               >xeq
  962.  
  963.           You  now  have  a  file  with  the  dates in yymmdd order, but the
  964.           self-describing information shows three separate fields.
  965.  
  966.               File: calls2     (SD Version B.00.00)  Has linefeeds
  967.                  Entry:                     Offset
  968.                     CALL-NBR             I2      1
  969.                     CALL-TAKER           X20     5
  970.                     CALL-CATEGORY        X2     25
  971.                     STATUS-FLAG          X2     27
  972.                     COMPANY-NAME         X60    29
  973.                     SERIAL-NBR           X4     89
  974.                     DATE-CREATED-YY      X2     93
  975.                     DATE-CREATED-MM      X2     95
  976.                     DATE-CREATED-DD      X2     97
  977.                     DATE-MODIFIED-YY     X2     99
  978.                     DATE-MODIFIED-MM     X2    101
  979.                     DATE-MODIFIED-DD     X2    103
  980.               Entry Length: 104  Blocking: 1
  981.  
  982.           You can convert these several fields to  one  field  with  another
  983.           extract task:
  984.  
  985.               >in calls2
  986.               >def date-created,93,6,byte
  987.               >def date-modified,99,6,byte
  988.               >item date-created,date,yymmdd
  989.               >item date-modified,date,yymmdd
  990.               >ext call-nbr / serial-nbr
  991.               >ext date-created
  992.               >ext date-modified
  993.               >out calls3,link
  994.               >xeq
  995.               IN=19716, OUT=19716.  CPU-Sec=5.  Wall-Sec=9.
  996.  
  997.           You now end up with a file that looks like this:
  998.  
  999.               File: calls3     (SD Version B.00.00)  Has linefeeds
  1000.                  Entry:                     Offset
  1001.                     CALL-NBR             I2      1
  1002.                     CALL-TAKER           X20     5
  1003.                     CALL-CATEGORY        X2     25
  1004.                     STATUS-FLAG          X2     27
  1005.                     COMPANY-NAME         X60    29
  1006.                     SERIAL-NBR           X4     89
  1007.                     DATE-CREATED         X6     93      <<YYMMDD>>
  1008.                     DATE-MODIFIED        X6     99      <<YYMMDD>>
  1009.               Entry Length: 104  Blocking: 1
  1010.  
  1011.           You then add the century to these fields as described above.
  1012.  
  1013.  
  1014.    Bugs Fixed
  1015.  
  1016.  
  1017.           Allbase.  The  following  problems  in  Allbase  access  have been
  1018.           fixed:
  1019.  
  1020.           1. Suprtool now properly sets Char fields to spaces if  the  value
  1021.              in the Allbase column is null.
  1022.  
  1023.           2. Suprtool now correctly reports the length of VarChar columns.
  1024.  
  1025.           Bus Error.  Suprtool no longer fails with a bus error when IEEE-64
  1026.           fields in an Oracle table are not 64-bit aligned.
  1027.  
  1028.           Extract Command.  An obscure error  message  was  printed  when  a
  1029.           conversion  or  arithmetic expression overflowed the target field.
  1030.           For example, assume that sales-qty has values  greater  than  100:
  1031.           the following commands will result in overflow:
  1032.  
  1033.                 >get    d-sales
  1034.                 >define small-field,1,2,display
  1035.                 >extract  small-field = sales-qty
  1036.                 >output   somefile
  1037.                 >xeq
  1038.  
  1039.                Error:  Overflow of arithmetic expression
  1040.  
  1041.                Input record number: 0
  1042.  
  1043.           Extract  Command.  Suprtool  no longer stops with a fatal internal
  1044.           error when an arithmetic expression is specified with the  Extract
  1045.           command.
  1046.  
  1047.           Export  Command.  STExport  no longer puts a trailing comma on the
  1048.           Heading line.
  1049.  
  1050.           STExport no longer truncates large numbers when they are formatted
  1051.           with decimal places and signs.
  1052.  
  1053.           If  Command.  The  If  command  produced  an  error  if  you  were
  1054.           comparing two packed-decimal fields with  a  different  number  of
  1055.           decimal places.
  1056.  
  1057.           List  Record.  The List command would lock up your keyboard.  This
  1058.           no longer happens,  but  a  subsequent  press  of  Return  at  the
  1059.           Suprtool  prompt  may  not  be  recognized  if  you  are  using  a
  1060.           Reflection terminal emulator.  You can get control back by doing a
  1061.           Soft  Reset, (Alt-S), and you can prevent this problem by changing
  1062.           the Reflection setting of DISABLE-COMP-CODES to yes.
  1063.  
  1064.           STExport.  The Default option of the Floating command was  spelled
  1065.           incorrectly.
  1066.  
  1067.           When  converting  Double Integer fields to ASCII, spaces were left
  1068.           at the end of the record.
  1069.  
  1070.           If the input source had compound  date  fields,  the  Xeq  command
  1071.           would  produce  an error message about an invalid date type rather
  1072.           than just processing the date field correctly.
  1073.  
  1074.           SQL Access.  Suprtool would fail with strange errors if the  input
  1075.           source  was  a large SQL table.  This would occur with both Oracle
  1076.           and Allbase tables.
  1077.           Table Command.  The Table command now prints a  warning  when  the
  1078.           fieldname specified does not exist in the file.
  1079.  
  1080.           Verify  Command.  The  Verify All command no longer prints the SQL
  1081.           information twice.
  1082.  
  1083.           Verify Command.  The Verify command without parameters now  prints
  1084.           out Select command information.
  1085.