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

Follow-Ups:
Replies:

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

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