|
Thanks Luis.
I just now tried this variation:
select length(temp) - length(replace(temp,'|','')) as NumberOfPipes,
temp from qtemp/temp where length(temp)-length(replace(temp,'|',''
)) = 5
And, the above showed all the records. Changing to this:
select length(temp) - length(replace(temp,'|','')) as NumberOfPipes,
temp from qtemp/temp where length(temp)-length(replace(temp,'|',''
)) > 5
Returned nothing.
At least that tells me that there are no odd pipes embedded in the data. Way easier than looking through several thousand lines of text.
John McKee
-----Original message-----
From: Luis Rodriguez luisro58@xxxxxxxxx
Date: Fri, 16 Oct 2009 14:08:24 -0500
To: Midrange Systems Technical Discussion midrange-l@xxxxxxxxxxxx
Subject: Re: CPYFRMIMPF error 98
John,--
A little convoluted, but I think this would work for you (assuming your info
is in a field called SRCDTA):
sel*ect length(srcdta) - length(replace(srcdta, '|', '')) AS
NumberOfPipes, *
* srcdta
from myFile
where length(srcdta) - length(replace(srcdta, '|', '')) >
ExpectedNumberOfPipes;*
HTH,
Luis Rodriguez
IBM Certified Systems Expert — eServer i5 iSeries
On Thu, Oct 15, 2009 at 9:45 PM, Luis Rodriguez <luisro58@xxxxxxxxx> wrote:
John,--
AFAIK, there is no SQL function that allows you to count the number of
occurrences of a particular character inside a string. Maybe an UDF or
a small RPG program.
You are right, that is the type of problem that reappear at the most
inconvenient times...
Regards,
Luis Rodriguez
IBM Certified Systems Expert — eServer i5 iSeries
On Thu, Oct 15, 2009 at 8:23 PM, jmmckee <jmmckee@xxxxxxxxxxxxxx> wrote:
Thanks for the elaboration on the format. I'll look at the bad filetomorrow, However, I copied the file as-is to a PF and set up a field on
the text portion. Checked for pipe in the text area and found none. Ahead
of the text portion, there are five other fields. They are easy to scan,
since the content does not change length. Still pipe delimited. Content
like date and time. I'm not sure I understand why the fields even need the
pipe, since the only variable length field is the last one. Makes me wonder
what would happen if I used tr to change the pipes to tabs. That is
essentially what Excel did.
that could be run over the PF to select the recordsthat don't have the right
Wild idea: Since I know the number of fields, is there a SQL statement
number of pipes?
this will happen again. at a most awkward time.
But, since nothing was identified as being in error, I am quite confident
a
John
-----Original message-----
From: "sjl" sjl_abc@xxxxxxxxxxx
Date: Thu, 15 Oct 2009 19:23:19 -0500
To: midrange-l@xxxxxxxxxxxx
Subject: Re: CPYFRMIMPF error 98
John -
For one thing, Microsoft doesn't subscribe to the standard definition of
valuesdelimited file.
For example, when Client Access is used to download data as a
comma-delimited file, it places double quotes around the alpha field
fields.with a comma separator between the fields.
For example:
If the IBM I file definition is:
Cusno signed 8/0
Name Alpha 40
then the comma-delimited file created by client access would look like:
12345678,"John McKee"
87654321,"Steve Landess"
On the other hand, Microsoft only puts a comma separator between the
you'llIf you export the same data from an Excel spreadsheet to a .CSV file,
likelyget:
12345678,John McKee
87654321,Steve Landess
I would speculate that if the file being produced by your outside agency
does not have double quotes around the alpha fields, CPYFRMIMPF will
onehave a problem if there happens to be a pipe character embedded /within/
fieldof the alpha data fields, since without the double quotes around the
informativevalue it will think it represents the end of a field value.
- sjl
"jmmckee" <jmmckee@xxxxxxxxxxxxxx> wrote in message
news:mailman.6833.1255643131.1811.midrange-l@xxxxxxxxxxxxxxx
According to an IBM link retrieved by Google, it is triggered for such
things as finding a delimiter where it shouldn't be, or not finding one
where it was expected.
Documented error code? What a concept!
John McKee
-----Original message-----
From: Jerry Adams Jerry@xxxxxxxxxxxxxxx
Date: Thu, 15 Oct 2009 15:31:35 -0500
To: Midrange Systems Technical Discussion midrange-l@xxxxxxxxxxxx
Subject: RE: CPYFRMIMPF error 98
What is "reason code 98"?
Jerry C. Adams
IBM System i Programmer/Analyst
--
B&W Wholesale
office: 615-995-7024
email: jerry@xxxxxxxxxxxxxxx
-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of jmmckee
Sent: Thursday, October 15, 2009 3:06 PM
To: Midrange Systems Technical Discussion
Subject: Re: CPYFRMIMPF error 98
My job is set for 4 0 *SECLVL
Even with that, there doesn't seem to be anything particularly
workedin the job log segment, below.
CPYFRMIMPF FROMSTMF('/QDLS/TRL/INBOUND/100909.CMT')
TOFILE(SSYSRCM/SPBTRCP
4) MBROPT(*REPLACE) RCDDLM(*CRLF) FLDDLM('|') ERRRCDFILE(QTEMP/ERRORS
TWO)
ERRRCDOPT(*REPLACE)
Ownership of object QCPIMTEMPS in QTEMP type *USRSPC changed.
Ownership of object QACPTEMP01 in QTEMP type *USRSPC changed.
Ownership of object QACPTEMP01 in QTEMP type *USRSPC changed.
Member TWO file ERRORS in QTEMP cleared.
Ownership of object QCFT509818 in QTEMP type *USRSPC changed.
Ownership of object Q2F628 in QTEMP type *FILE changed.
Member SPBTRCP4 file SPBTRCP4 in SSYSRCM cleared.
The copy did not complete for reason code 98.
Copy command ended because of error.
I can't see any reason why QDLS would be an issue, since this has
IFS.for almost two months. However, I copied the file, using QSH to the
MBROPT(*Same result:
CPYFRMIMPF FROMSTMF('/McKee/100909.CMT') TOFILE(SSYSRCM/SPBTRCP4)
ERRRCDOPT(REPLACE) RCDDLM(*CRLF) FLDDLM('|') ERRRCDFILE(QTEMP/ERRORS TWO)
wrote:*REPLACE)
Ownership of object QCPIMTEMPS in QTEMP type *USRSPC changed.
Ownership of object QACPTEMP01 in QTEMP type *USRSPC changed.
Ownership of object QACPTEMP01 in QTEMP type *USRSPC changed.
Member TWO file ERRORS in QTEMP cleared.
Ownership of object QCFT509818 in QTEMP type *USRSPC changed.
Ownership of object Q2F698 in QTEMP type *FILE changed.
Member SPBTRCP4 file SPBTRCP4 in SSYSRCM cleared.
The copy did not complete for reason code 98.
Copy command ended because of error.
John
-----Original message-----
From: Charles Wilt charles.wilt@xxxxxxxxx
Date: Thu, 15 Oct 2009 14:48:07 -0500
To: Midrange Systems Technical Discussion midrange-l@xxxxxxxxxxxx
Subject: Re: CPYFRMIMPF error 98
John,
You should see error messages in the job jog. What are they?
Charles
On Thu, Oct 15, 2009 at 3:20 PM, jmmckee <jmmckee@xxxxxxxxxxxxxx>
CPYFRMIMPF.I have received a file from an outside agency that chokes
linesThe fields are pipe delimited. I have looked at the raw file and
don't see anything REALLY obvious - the file is several hundred
portion,long. I can open this thing in Excel just fine, but there is no
option to save it with pipe delimiters. There is a free text
delimiter.which, I suspect, prompted the need to use the pipe as a
are
The agency has converted this file multiple times, and the results
tothe same. Other files are just fine. When I attempted to use an
error file, I got nothing in the created member.
Is this why some of you loathe CPYFRMIMPF? Any suggestions on how
sure Iisolate and fix the error(s) causing CPYFRMIMPF to choke? Not
SQLhave the time to write the program to split this thing apart. Can
mailingbe used in some way to identify or clean up the file?
John McKee
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailinglist--
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
listlist--
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
listTo post a message email: MIDRANGE-L@xxxxxxxxxxxx--
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.