@D. Klein:

I could use lots of delimiters, my fav being pipe. But in this case I
dont control the format the file comes in or the delimiter to be used.
I DONT read it directly from Excel; the data is converted to the flat
file format I have described before it comes to jbase for loading.

Different applications have a way of interpreting the enclosed
delimiters - for instance in Oracle I just have to declare the
"enclosed by" character when defining an external table.

That said, here is a portion of the code minus the inserts.

     DIRPATH='\path\to\dir'     ;* Path to extracts directory
     FILENAME ='cust.file'          ;* Flat File name
     OPENSEQ DIRPATH,FILENAME TO MYINPUTFILE ELSE
        CRT 'CANT open file'
     END

     LOOP
        READSEQ  D.LINE FROM MYINPUTFILE ELSE
           BREAK
        END
        CONVERT ',' TO @FM IN D.LINE ;* Here is my field delimiter

**Then I go on to process the data

        while D.LINE

        FIELD.COUNT = DCOUNT(D.LINE,@FM) ;* This value should be the same for
all records
                                         ;* However, if there is an
enclosed comma, the number of fields will be more

        RECORD.ID = d.li...@fm,1,1] ;* Get ID from first field in the
flat file

        R.RECORD<0>= RECORD.ID

        R.CUST<FIELD1> =d.li...@fm,1,1] ;* first field, etc
        R.CUST<FIELD2>=d.li...@fm,2,1]
        R.CUST<FIELD3>=d.li...@fm,3,1]

        WRITE R.CUST ON FN.CUST,RECORD.ID ON ERROR ;*Write to jbase
file
        *DO STUF
        END
        REPEAT

Sample Data:

The sample data I sent should be enough

Name: Name1
Address: 458, MyCity
Country: MyCountry

In Excel it will appear like this:

Name    Address        Country
Name1 458, MyCity    MyCountry

When converted to CSV it will be:

Name1, "458, MyCity", MyCountry

The routine should read 3 fields:
Field 1: "Name 1"
Field 2: "458, MyCity"  - including the comma
Field 3: MyCountry.

Right now this is what is happening:

Field 1: "Name 1"
Field 2: "458
Field 3: MyCity"
Field 4: MyCountry.


On May 28, 4:40 pm, Daniel Klein <[email protected]> wrote:
> READSEQ cannot be doing this.
>
> How is the CSV file being generated. A better method would be to use a
> tab-delimited file.
>
> Post your code, a 'jdiag.out' file (as requested in the Posting Guidelines.
> For Zarquon's sake, doesn't ANYONE read it?) and an actual sample of the
> file so that a correct solution can be provided.
>
> Dan
>
> On Thu, May 27, 2010 at 7:16 PM, master <[email protected]> wrote:
> > How do i read a record whose delimiter is part of the field values?
>
> > Many programs (Excel, etc) will enclose a field in which a delimiter
> > is part of the text with double quotes:
> > Sample This:
>
> > Name: Name1
> > Address: 458, MyCity
> > Country: MyCountry
>
> > In Excel it will appear like this:
>
> > Name    Address        Country
> > Name1 458, MyCity    MyCountry
>
> > When converted to CSV it will be:
>
> > Name, "458, MyCity", MyCountry
>
> > Now, using READSEQ, the routine breaks the Address field at the first
> > comma , (i.e after 458) instead of treating everything enclosed in ""
> > as a single entity.
>
> > --
> > Please read the posting guidelines at:
> >http://groups.google.com/group/jBASE/web/Posting%20Guidelines
>
> > IMPORTANT: Type T24: at the start of the subject line for questions
> > specific to Globus/T24
>
> > To post, send email to [email protected]
> > To unsubscribe, send email to [email protected]
> > For more options, visit this group at
> >http://groups.google.com/group/jBASE?hl=en
>
>

-- 
Please read the posting guidelines at: 
http://groups.google.com/group/jBASE/web/Posting%20Guidelines

IMPORTANT: Type T24: at the start of the subject line for questions specific to 
Globus/T24

To post, send email to [email protected]
To unsubscribe, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/jBASE?hl=en

Reply via email to