







               History of DELIMIT
                          _______

               DELIMIT  was created  when  a  friend needed  to  do some  budget
               _______
               analysis.   The accounting  reports were 100  pages long,  and we
               needed  to get  the department  totals  into a  spread sheet  for
               analysis.  There were 3 choices:  
                 1) Ask the computer  operators to create an ad hoc  report in a
                    difficult to use report  writing system, and import it  into
                    the  spread sheet.  They were  back logged, so it would have
                    taken a couple of weeks, (and the next time the requirements
                    would have been  different, and we would have  to wait weeks
                    again.)
                 2) Import  the entire report into  the spread sheet, and delete
                    the detail records.  (the  spread sheet couldn't handle that
                    many lines).  
                 3) Use  a text  editor to  delete  the detail  lines, and  then
                    import it into  the spread sheet.  This would have been very
                    tedious!

               We tested  parsing 1 page  of the accounting  report in  a spread
               sheet program.   Reading the text file was  quick, but parsing it
               took a long time  - it would have literally taken  HOURS to parse
               the  hundred pages  of data we  needed.   We didn't need  all the
               columns that were included on the report anyway.  

               DELIMIT  v1.00 was  created.   We  could INCLUDE  the records  we
               _______
               wanted and ignore the  rest (Detail parm).  We  could also select
               the columns we wanted and ignore the others.  The data was either
               text  - surrounded by double quotes,  (Character parm) or numbers
               (Number parm).  What would have taken hours to parse took  just a
               few minutes using  DELIMIT.  The spread sheet  program could read
                                  _______
               the  text file  quickly, and  the  time consuming  parse was  not
               needed.

               Several weeks later,  we needed to do the same  thing, but wanted
               all the  detail records for a 20 page  section of the report, not
               just the totals.  There was no  unique way to identify the detail
               records,  but we could identify the records we didn't want.  This
               is when the Header parm was  added, to select records to  EXCLUDE
               from the processing, and process the rest.

               Somewhere along the line, someone  else needed to DELIMIT a file,
                                                                 _______
               but  their destination  program didn't  want  text surrounded  by
               double quotes.  This is  when the Move parameter was  created, to
               select the text, but not surround it with double quotes.

               Another person saw this and said,  "this is great!, but why do  I
               have to print  the report first, why  can't I just copy  the data
               file from  the mini computer?"   This represented a  two changes.
               The first change was that the source file was no longer a report.
               The data  file from  the mini  was fixed  format, with  NO record
               separators.  This is when the Length parm was created, to be able
               to read files with no record separators.  The  second problem was














               that  the records  were longer  than 255  characters.   The input
               buffers can now work with records up to 4000 bytes.

               During  another project, we  needed to bring  a data  file from a
               main  frame  tape,  to  a  Macintosh  (Mac).    The  Mac  doesn't
               understand comma delimited  files, it doesn't like  double quotes
               or Carriage Return  - Line Feed (CR-LF) for  the record separator
               either.  This produced the Separator parm,  to be able to use any
               other  character (or  string) as  a field  separator.   This also
               produced  the Record  separator parm,  in able  to use  any other
               character (or string) as the record separator.

               After explaining the program to  someone, they said, "how can you
               understand what all those parm files mean?".   This lead to the *
               comment parm, so parm files can be documented.

               The latest  project has  been to acquire  data from  many diverse
               sources, and import  it into a data  base.  One  mainframe source
               could only  supply data on large  reel tape.  The  numeric fields
               were signed (the  last position  not a  number it  is a  letter).
               This produced the Signed Numeric field.

               It is  faster to create one import program, and many DELIMIT parm
                                                                    _______
               files to create the format we need, than to continue to write new
               import programs  for the data  base.  Also the  research analysts
               don't want to program, but they love to DELIMIT.
                                                       _______


               FUTURE ENHANCEMENTS

                 -  A constant  parm, to  add 'constant' data  to every  record.
                    During one project,  data is reformatted from a fixed format
                    file to  be imported  into a spread  sheet.   For formatting
                    purposes, the user wants to create blank columns.  Currently
                    we just select  an area we  know will be  blank to give  the
                    empty field.

                 -  A record count parm.  Some data  by its nature does not have
                    unique  keys.  A record  count parm could  be used to create
                    unique  keys.   Some data  bases  require a  unique key  for
                    storage reasons.  

                 -  A prettier user interface.


















