.TEXT PARSE LINE

This subroutine parses a string into separate fields.


Usage:

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

Description:

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.

Changes 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

- A file called --- PARSED is returned containing one record for each column. There are no size or number of columns limitations when results are returned in this file. If the current process references the --- .TEXT PARSE RESULT field, it will also be populated (subject to the restrictions above).

Comments:

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


This topic: Main > WebHome > APPX510Features > APPXRuntimeSubroutineAPI > 0LASubrTextParseLine
Topic revision: r9 - 2018-08-17 - JeanNeron
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback