home *** CD-ROM | disk | FTP | other *** search
- INFORMIX SOFTWARE, INC., LENEXA, KS
- Wingz Technical Support Bulletin Number 007
-
-
- Title: Parsing a space delimited text file
- Date: January 15, 1991
-
-
- The following example script allows you to parse a space delimited
- text file. The script steps through the worksheet row by row, parsing
- each row into columns. A new column begins each time a space is
- found. To use this script, open the text file to a Wingz worksheet.
- With that worksheet as the current window, execute this script from
- the script menu.
-
- Sample Text:
-
- Text Text2 Numeric Text3 Numeric2 Date
- Time
- Text Text2 12345.00 Text3 67890 01/01/91
- 12:12:12
- Text Text2 12345.00 Text3 67890 01/01/91
- 12:12:12
-
- Example Script:
-
- { ***this is only an example with no implied warrantees***
- ***use at your own risk, make a backup, etc.*** }
-
- define len,matched,left_side,right_side,
- s,row,first_char,last_row
-
- repaint off
- repaint selections off
-
- select last cell { find the last cell on sheet
- }
- last_row=row() { set last_row to row of the last
- cell }
- select range a1 { select cell a1 }
- put trim(indirect(makecell(1,row()))) into makecell(1,row())
- { trim all leading,trailing and extra spaces between
- columns }
- len=length(indirect (makecell(col(),row()))) { length of string in
- current cell }
- matched=match(indirect (makecell(col(),row()))," ",1) { finds where to
- }
- { separate first and second columns }
- for row=1 to last_row { loop thru all rows }
- while matched<>0 { a space was found }
- left_side=left(indirect(makecell(col(),row())),matched-1) {
- left of space }
- right_side=right(indirect(makecell(col(),row())),len-matched)
- { right of space }
- first_char=left(left_side,1) { first character of left_side
- }
- left_side=is_num(first_char) { check to see if it is a
- number }
- put left_side into makecell(col(),row()) { put into
- current cell }
- put right_side into makecell(col()+1,row())
- { put into next column, current row
- }
- select range makecell(col()+1,row()) { select next
- column }
- len=length(indirect(makecell(col(),row()))) { get length of
- string }
- matched=match(indirect(makecell(col(),row()))," ",1)
- { find where to separate columns }
- end while { exit the while loop once it has
- reached }
-
-
- select range makecell(1,row()+1) { select next row, first
- column }
- put trim(indirect(makecell(1,row()))) into makecell(1,row())
- { trim all leading,trailing and extra spaces between
- columns }
- len=length(indirect (makecell(col(),row()))) { length of string
- in that cell }
- matched=match(indirect (makecell(col(),row()))," ",1)
- { find where to separate columns }
- end for { repeat until no more rows of data }
-
- repaint selections on
- repaint on
- repaint window
-
- function is_num(num)
- if (num>=char(48) and num<=char(57)) { checks the ASCII value for
- num }
- and exact(upper(left_side),lower(left_side))
- { compare upper and lower case of left_side }
- and (contains(left_side,"-") = 0) { does not have '-'
- in it }
- and (contains(left_side,"/") = 0) { does not have '/'
- in it }
- and (contains(left_side,":") = 0) { does not have ':'
- in it } { ASCII value indicates it is a number }
- return value(left_side) { so return the value of the
- left_side }
- else return left_side { not a number, return the
- string }
- end if { end of check }
- end function { end of function is_num }
-
-