× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



What is happening is exactly what I would expect since you're not doing
anything to convert from ASCII to EBCDIC.  Make the following changes:

  String strData = inStreamFile.read(buffer.length);
  while (strData.length() > 0)
  {
    outStreamFile.write(strData);
    strData = inStreamFile.read(buffer.length);
  }

You can replace buffer.length with the length of the longest string you want
to read and do away with buffer altogether if you'd like.

HTH,
Gary

> -----Original Message-----
> From: java400-l-bounces@xxxxxxxxxxxx 
> [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Daniel Feather
> Sent: Tuesday, February 17, 2004 2:12 PM
> To: Java Programming on and around the iSeries / AS400
> Subject: RE: IFS file to PF Member
> 
> 
> Gary,
>       Alright man, I am getting frustrated. I must be 
> over-looking something. I am reading an ASCII(819) file from 
> the ifs, and writing it to a member in a PF that is of course 
> EBCDIC(37), and the following code doesn't convert the data:
> 
> ....
> AS400 as400 = new AS400();
> QSYSObjectPathName destinationFilePath = new 
> QSYSObjectPathName("DANF", "DANFILE", "A301600024", "MBR"); 
> System.out.println(destFilePath.getPath());
> 
> IFSTextFileInputStream inStreamFile = new 
> IFSTextFileInputStream(as400,"/home/dan/A301600024.IMP");
> 
> IFSTextFileOutputStream outStreamFile = new 
> IFSTextFileOutputStream(as400,destFilePath.getPath(),37);
> 
> int bytesRead = inStreamFile.read(buffer);
> while (bytesRead > 0) {
>       outStreamFile.write(buffer);
>       bytesRead = inStreamFile.read(buffer);
> }
> inStreamFile.close();
> outStreamFile.close();
> ....
> 
> Am I off my rocker, or shouldn't that work?  I greatly 
> appreciate your help!
> 
> Dan Feather
> Silhouette/PinPoint R&D Programmer
> Jack Henry & Associates, Inc.
> dfeather@xxxxxxxxxxxxx
> -----Original Message-----
> From: java400-l-bounces@xxxxxxxxxxxx 
> [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Gary L Peskin
> Sent: Monday, February 16, 2004 2:12 PM
> To: 'Java Programming on and around the iSeries / AS400'
> Subject: RE: IFS file to PF Member
> 
> I would imagine that the IFSTextFileOutputStream would be a 
> lot more efficient that the FTP solution which involves 
> navigating the TCP/IP communication stack and all that it 
> entails.  You can try the IFSTextFileOutputStream approach 
> and see if the performance there is acceptable.  The only 
> reservation that I would have is that you are taking the 
> ASCII inbound byte array and creating a String object and 
> then taking that (IFSTextFileOutputStream does this 
> internally) and converting it back to a byte array using 
> EBCDIC encoding.
> 
> There are more efficient ways to this directly converting the 
> ASCII byte array to the EBCDIC byte array and perhaps even 
> doing it in place but they involve more gymnastics than the 
> simpler solution.  I'd try that and see how the performance 
> goes in your application.
> 
> Gary
> 
> > -----Original Message-----
> > From: java400-l-bounces@xxxxxxxxxxxx
> > [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Daniel Feather
> > Sent: Monday, February 16, 2004 10:43 AM
> > To: Java Programming on and around the iSeries / AS400
> > Subject: RE: IFS file to PF Member
> > 
> > 
> > Gary,
> >     That makes sense. Performance is actually the main
> > issue. The code I inherited is ftp'ing the IFS ASCII text 
> > file to the member. Apparently, there is a conversion that 
> > takes place during the ftp process automagically when using 
> > the FTPClient in jt400. Do you have any idea whether or not 
> > the performance would be different (better OR worse) if I 
> > used IFSTexFileOutputStream instead of ftp'ing the file from 
> > the 400 to itself? The ftp thing seems like a hack to me, and 
> > leaves a potential hole open on the system and I'd like to 
> > get away from it if it makes sense from a performance stand 
> > point. I am going to go ahead and do my own comparisons, but 
> > since you see, to be more experienced with this than I, maybe 
> > you have some more insight. Thanks for all your help!
> > 
> > Dan Feather
> > Silhouette/PinPoint R&D Programmer
> > Jack Henry & Associates, Inc.
> > dfeather@xxxxxxxxxxxxx
> > 
> > -----Original Message-----
> > From: java400-l-bounces@xxxxxxxxxxxx
> > [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Gary L Peskin
> > Sent: Monday, February 16, 2004 11:05 AM
> > To: 'Java Programming on and around the iSeries / AS400'
> > Subject: RE: IFS file to PF Member
> > 
> > Dan --
> > 
> > If your byte array is in ASCII (from an ASCII IFS file), then
> > your output will also be encoded in ASCII, as you are seeing.
> > 
> > You need to convert that byte array to EBCDIC in order to
> > write EBCDIC using IFSFileOutputStream.write(byte[]).  If 
> > it's just a string of text, you might want to use 
> > IFSTextFileOutputStream.write(new String(byte[])), especially 
> > if performance is not a big issue.  If the record structure 
> > is more complicated, you probably want to use SequentialFile 
> > and record level access.
> > 
> > Gary
> > 
> > > -----Original Message-----
> > > From: java400-l-bounces@xxxxxxxxxxxx 
> > > [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of 
> Daniel Feather
> > > Sent: Monday, February 16, 2004 7:48 AM
> > > To: Java Programming on and around the iSeries / AS400
> > > Subject: RE: IFS file to PF Member
> > > 
> > > 
> > > Thanks for your response and sorry for my slow response. 
> I got sick 
> > > last week. Anyway, I am filling the byte array directly from an 
> > > IFSFileInputStream.
> > > 
> > > I am using the IFSFileOutputStream to write to a PF 
> member because 
> > > it worked. I was not aware of the other classes you spoke 
> of. I will 
> > > see if those will do the conversion I need them to do. Thanks for 
> > > the info.
> > > 
> > > Dan Feather
> > > Silhouette/PinPoint R&D Programmer
> > > Jack Henry & Associates, Inc.
> > > dfeather@xxxxxxxxxxxxx
> > > 
> > > -----Original Message-----
> > > From: java400-l-bounces@xxxxxxxxxxxx 
> > > [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Gary L Peskin
> > > Sent: Wednesday, February 11, 2004 9:42 PM
> > > To: 'Java Programming on and around the iSeries / AS400'
> > > Subject: RE: IFS file to PF Member
> > > 
> > > The CCSID argument in the constructor only controls how the 
> > > resulting IFS file is tagged in its attributes.  The actual byte 
> > > array is written to the file.  How are you creating that 
> byte array?  
> > > Remember that the iSeries JVM is an ASCII JVM so if you're doing 
> > > something like "astring".getBytes(), you'll get a byte array with 
> > > ASCII encoding.
> > > 
> > > Also, why are you using an IFSFileOutputStream to write to a PF 
> > > member?
> > > 
> > > Consider using an IFSTextFileOutputStream or SequentialFile.
> > > 
> > > HTH,
> > > Gary
> > > 
> > > > -----Original Message-----
> > > > From: java400-l-bounces@xxxxxxxxxxxx
> > > > [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of 
> > Daniel Feather
> > > > Sent: Wednesday, February 11, 2004 2:25 PM
> > > > To: java400-l@xxxxxxxxxxxx
> > > > Subject: IFS file to PF Member
> > > > 
> > > > 
> > > > Hello,
> > > >         I need to copy the contents of an ASCII file 
> from the IFS to a PF 
> > > > member. I am using the IFSFileInput and Output streams, 
> and I set 
> > > > the CCSID on the output stream to 37, which after 
> reading some of 
> > > > the entries in the archive is EBCDIC. However, no matter what I 
> > > > set the CCSID on the output stream to, it always writes 
> the data 
> > > > as ASCII. When I do a wrklnk on the pf member, and take 
> an 8, it 
> > > > shows the member having ccsid 37, but when I view it 
> using DSPPFM 
> > > > it is all garbage, so I view it via wrklnk and it gives me a 
> > > > little message at the bottom saying "File CCSID not valid" and
> > > > displays it correctly, which I guess means it is still ASCII.
> > > >         
> > > >         What am I missing here? Is it possible to get 
> this to work the 
> > > > way I want? We are currently using FTP to do this, but 
> we want to 
> > > > be able to shut-down the ftp service on our box for security 
> > > > reasons. I searched the archives and came across some similar 
> > > > questions, but everything I have tried so far based on 
> what I have 
> > > > read, hasn't worked. I appreciate
> > > your help!
> > > > 
> > > > Dan Feather
> > > > Silhouette/PinPoint R&D Programmer
> > > > Jack Henry & Associates, Inc.
> > > > dfeather@xxxxxxxxxxxxx
> > 
> > 
> > _______________________________________________
> > This is the Java Programming on and around the iSeries / AS400
> > (JAVA400-L) mailing list
> > To post a message email: JAVA400-L@xxxxxxxxxxxx
> > To subscribe, unsubscribe, or change list options,
> > visit: http://lists.midrange.com/mailman/listinfo/java400-l
> > or email: JAVA400-L-request@xxxxxxxxxxxx
> > Before posting, please take a moment to review the archives at 
> > http://archive.midrange.com/java400-l.
> > 
> > 
> > 
> > 
> > _______________________________________________
> > This is the Java Programming on and around the iSeries /
> > AS400 (JAVA400-L) mailing list To post a message email: 
> > JAVA400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change 
> > list options,
> > visit: http://lists.midrange.com/mailman/listinfo/java400-l
> > or email: JAVA400-L-request@xxxxxxxxxxxx
> > Before posting, please take a moment to review the archives
> > at http://archive.midrange.com/java400-l.
> > 
> 
> 
> _______________________________________________
> This is the Java Programming on and around the iSeries / AS400
> (JAVA400-L) mailing list
> To post a message email: JAVA400-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/java400-l
> or email: JAVA400-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/java400-l.
> 
> 
> 
> 
> _______________________________________________
> This is the Java Programming on and around the iSeries / 
> AS400 (JAVA400-L) mailing list
> To post a message email: JAVA400-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/java400-l
> or email: JAVA400-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/java400-l.
> 



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

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

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.