John,

Glad to be of help. I have just thought that *maybe* instead of the =
or > symbol you should use <> (not equal to).

Regards,

Luis Rodriguez
IBM Certified Systems Expert — eServer i5 iSeries



On Mon, Oct 19, 2009 at 12:08 PM, jmmckee <jmmckee@xxxxxxxxxxxxxx> wrote:
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 file
tomorrow,  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.

Wild idea: Since I know the number of fields, is there a SQL statement
that could be run over the PF to select the recordsthat don't have the right
number of pipes?

But, since nothing was identified as being in error, I am quite confident
this will happen again.  at a most awkward time.

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
a
delimited file.

For example, when Client Access is used to download data as a
comma-delimited file, it places double quotes around the alpha field
values
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
fields.
If you export the same data from an Excel spreadsheet to a .CSV file,
you'll
get:

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
likely
have a problem if there happens to be a pipe character embedded /within/
one
of the alpha data fields, since without the double quotes around the
field
value 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
informative
in 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
worked
for almost two months.  However, I copied the file, using QSH to the
IFS.
Same result:
CPYFRMIMPF FROMSTMF('/McKee/100909.CMT') TOFILE(SSYSRCM/SPBTRCP4)
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 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>
wrote:
I have received a file from an outside agency that chokes
CPYFRMIMPF.
The fields are pipe delimited.  I have looked at the raw file and
don't see anything REALLY obvious - the file is several hundred
lines
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
portion,
which, I suspect, prompted the need to use the pipe as a
delimiter.

The agency has converted this file multiple times, and the results
are
the 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
to
isolate and fix the error(s) causing CPYFRMIMPF to choke?  Not
sure I
have the time to write the program to split this thing apart.  Can
SQL
be used in some way to identify or clean up the file?

John McKee
--
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
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
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 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 thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 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].