home *** CD-ROM | disk | FTP | other *** search
/ Windoware / WINDOWARE_1_6.iso / miscprog / wzall / wz007.txt < prev    next >
Text File  |  1991-01-24  |  5KB  |  108 lines

  1.                                   INFORMIX SOFTWARE, INC., LENEXA, KS
  2.                             Wingz Technical Support Bulletin Number 007
  3.         
  4.         
  5.        Title:    Parsing a space delimited text file
  6.        Date:     January 15, 1991
  7.         
  8.         
  9.        The following example script allows you to parse a space delimited 
  10.        text file.  The script steps through the worksheet row by row, parsing 
  11.        each row into columns.  A new column begins each time a space is 
  12.        found.  To use this script, open the text file to a Wingz worksheet. 
  13.        With that worksheet as the current window, execute this script from 
  14.        the script menu.  
  15.         
  16.        Sample Text:
  17.         
  18.        Text       Text2           Numeric  Text3           Numeric2 Date     
  19.        Time                          
  20.        Text       Text2           12345.00 Text3              67890 01/01/91 
  21.        12:12:12  
  22.        Text       Text2           12345.00 Text3              67890 01/01/91 
  23.        12:12:12  
  24.         
  25.        Example Script:
  26.         
  27.        { ***this is only an example with no implied warrantees***
  28.          ***use at your own risk, make a backup, etc.*** }
  29.         
  30.        define len,matched,left_side,right_side,
  31.           s,row,first_char,last_row
  32.         
  33.        repaint off
  34.        repaint selections off
  35.         
  36.        select last cell                        { find the last cell on sheet 
  37.        }            
  38.        last_row=row()                     { set last_row to row of the last 
  39.        cell }
  40.        select range a1                              { select cell a1 }
  41.        put trim(indirect(makecell(1,row()))) into makecell(1,row())
  42.                       { trim all leading,trailing and  extra spaces between 
  43.        columns }
  44.        len=length(indirect (makecell(col(),row()))) { length of string in 
  45.        current cell }
  46.        matched=match(indirect (makecell(col(),row()))," ",1) { finds where to 
  47.        }
  48.                                      { separate first and second columns }
  49.        for row=1 to last_row              { loop thru all rows }
  50.         while matched<>0             { a space was found }
  51.             left_side=left(indirect(makecell(col(),row())),matched-1)   { 
  52.        left of space }
  53.             right_side=right(indirect(makecell(col(),row())),len-matched) 
  54.                                           { right of space }
  55.             first_char=left(left_side,1)       { first character of left_side 
  56.        }
  57.             left_side=is_num(first_char)       { check to see if it is a 
  58.        number }
  59.             put left_side into makecell(col(),row())          { put into 
  60.        current cell }
  61.             put right_side into makecell(col()+1,row())  
  62.                                           { put into next column, current row 
  63.        }
  64.             select range makecell(col()+1,row())              { select next 
  65.        column }
  66.             len=length(indirect(makecell(col(),row())))       { get length of 
  67.        string }
  68.             matched=match(indirect(makecell(col(),row()))," ",1)   
  69.                                      { find where to separate columns }
  70.         end while                         { exit the while loop once it has 
  71.        reached }
  72.         
  73.         
  74.         select range makecell(1,row()+1)            { select next row, first 
  75.        column }
  76.         put trim(indirect(makecell(1,row()))) into makecell(1,row())
  77.                  { trim all leading,trailing and  extra spaces between 
  78.        columns }
  79.         len=length(indirect (makecell(col(),row())))     { length of string 
  80.        in that cell }
  81.         matched=match(indirect (makecell(col(),row()))," ",1) 
  82.                                      { find where to separate columns }
  83.        end for                       { repeat until no more rows of data }
  84.         
  85.        repaint selections on
  86.        repaint on
  87.        repaint window
  88.         
  89.        function is_num(num)
  90.         if (num>=char(48) and num<=char(57))  { checks the ASCII value for 
  91.        num } 
  92.          and exact(upper(left_side),lower(left_side))
  93.                                 { compare upper and lower case of left_side }
  94.          and (contains(left_side,"-") = 0)               { does not have '-' 
  95.        in it }
  96.          and (contains(left_side,"/") = 0)               { does not have '/' 
  97.        in it }   
  98.          and (contains(left_side,":") = 0)               { does not have ':' 
  99.        in it }             { ASCII value indicates it is a number }
  100.             return value(left_side)       { so return the value of the 
  101.        left_side }
  102.          else return left_side                 { not a number, return the 
  103.        string }
  104.          end if                           { end of check }
  105.        end function                       { end of function is_num }
  106.        
  107.        
  108.