This subroutine parses a string into separate fields.


      PASS         <text_to_parse>            FIELD            SHARE? N
      PASS         <delimiter>                FIELD            SHARE? N
      PASS         <no_of_fields>             FIELD            SHARE? Y
      *        Check for errors
      IF       --- .TEXT PARSE LINE           NE


This subroutine parses a string into separate fields. The first parameter is required, if it is not received the subroutine will CANCEL.

<text_to_parse> contains the text you want parsed (Required).

<delimiter> is the single character to use as a field delimiter (Optional). If not PASSed, it will default to a Tab character. If you need to use a space as a delimiter, pass an underscore character ("_"). In this case the routine will see any trailing blanks as additional fields so the <no_of_fields> count will be wrong and --- .TEXT PARSE RESULT will contain 'Max Occur Exceeded'.

<no_of_fields> returns the number of fields that were found in <text_to_parse> (Optional). This must be PASSed with Share "Y" to return a value.

The parsed data will be available in the --- .TEXT PARSE RESULT work field. You do not have to PASS this field. This is a multi occurence work field, each occurence is 512 bytes and there are a maximum of 100 occurrences. If one of the parsed fields is larger than 512 bytes, then --- .TEXT PARSE RESULT will contain 'Data Truncation'. If there are more than 100 fields parsed, then --- .TEXT PARSE RESULT will contain 'Max Occur Exceeded' and only the first 100 fields will be returned.

Updates starting in 6.0.1

Starting in Release 6.0.1, this routine has been enhanced:

- All processing has been moved to the APPX engine for faster performance

- The --- PARSED file is returned containing one record for each column. If your application references the --- .TEXT PARSE RESULT field, it will also be populated subject to the restrictions above. The --- PARSED file does not have the same limitations.

- Fields surrounded by quotes will have the quotes removed (unless they are embedded in the the field).

- A backslash acts as an escape character to negate the following special character. For example:

  • C:\\Test will return C:\test
  • "embdded \" quote" will return 'embedded " quote'


Read what other users have said about this page or add your own comments.

Note that this excellent and powerful subroutine does not differentiate between delimiter characters within quotation marks and those that are actual delimiters. So if you have a CSV file with text fields that include commas, the results will not be what you expect.

One work-around would be to read through the string beforehand, keep track of when you're within quotes and when you're not, and change the actual delimiters from commas to tabs, since tabs are rarely found within field content. Of course, you could use some other character as well, but I found that tabs did the trick.

-- AlKalter - 2012-06-12

i have an input file where date fields are displayed as for example 4-3-2013 To my astonishment the field --- .TEXT PARSE RESULT is now filled as 2013-03-04. I have looked a few times but it seems the subr. .TEXT PARSE LINE does that too. Am I right?

-- WimJongejan - 2013-10-14

no I am not right. Excel changed the field

-- WimJongejan - 2013-10-15

-- JeanNeron - 2012-02-10

Edit | Attach | Watch | Print version | History: r10 | r8 < r7 < r6 < r5 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r6 - 2018-05-07 - JeanNeron
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback