Scott,
Thank you for the great information.
I read your article, and within a short time had adapted your demo program to my needs.
Once again you have saved me from much unnecessary work and from having to reinvent the wheel.
Jeff Young
Sr. Programmer Analyst
IBM -e(logo) server Certified Systems Exper - iSeries Technical Solutions V5R2
IBM Certified Specialist- e(logo) server i5Series Technical Solutions Designer V5R3
IBM Certified Specialist- e(logo)server i5Series Technical Solutions Implementer V5R3
----- Original Message ----
From: Scott Klement <rpg400-l@xxxxxxxxxxxxxxxx>
To: RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx>
Sent: Tuesday, October 14, 2008 3:36:27 PM
Subject: Re: Read CSV file from IFS
If you like, I wrote an article that demonstrates reading a
pipe-delimited IFS file. You can read it here (requires a ProVIP
membership to System iNetwork)
http://systeminetwork.com/article/easy-and-efficient-way-read-text-files-ifs
However, even if you don't have a ProVIP membership, you should (I
think?) be able to grab the sample code from the following link:
http://www.pentontech.com/IBMContent/Documents/article/53867_157_PipeDelim.zip
Pipe-delimited files are very similar to CSV, except that they use a
pipe instead of a comma to delimit the fields. So changing it to use a
comma instead of a pipe should be pretty trivial.
However, sometimes folks use quotes in a CSV file in order to make it
possible to insert commas in the middle of data. For example:
98730,"IT","Klement, Scott C"
in this example, the 3rd field contains my name, and is one field
containing last, first and initial. If you just scanned for a comma,
it'd try to read "Klement as a separate field from Scott C" which would
be wrong...
one of the reasons people use pipe or tab delimiters instead of commas
is to prevent issues like that -- with pipe or tab, you can usually just
search for the straight delimiters. With comma, you usually have to
take quotes into account, because commas are too commonly used as part
of field values.
So you might have to add extra code to deal properly with quotes.
Personally, I'm more inclined to change the app to stop using using CSV
-- which is a horrible format -- and use pipe or tab instead. But if
you really need CSV, you can write code to handle it properly if you
have to :)
Jeff Young wrote:
I have a text file in CSV format that I would need to load to a System i file.
Although I can use iSeries Access file transfer, I would prefer to do this in a program as I do not want all fields.
Some of the fields in the CSV file are NULL, so unless I change my file, I can not use theCPYFRMIMPF command.
I am comfortable using the System API's to create files on the IFS, but have not had to read them.
What things do I need to be aware of when reading a CSV file?
How do I tell when a field ends?
How do I tell when a record ends?
How do I test the data in the PC field for NULL?
As an Amazon Associate we earn from qualifying purchases.