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



When you give it a byte array, it doesn't do any conversion.  It assumes
that you've already done the conversion that you want and it writes it out
as is.  It has no way of knowing what encoding was used in the byte array
that you hand it.

Strings, on the other hand, are always encoded in Unicode in java so it can
make the conversion for you.

Gary

> -----Original Message-----
> From: java400-l-bounces@xxxxxxxxxxxx 
> [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Daniel Feather
> Sent: Tuesday, February 17, 2004 2:27 PM
> To: Java Programming on and around the iSeries / AS400
> Subject: RE: IFS file to PF Member
> 
> 
> Gart,
>       Nevermind... you had already told me how to do it, and 
> I just didn't catch it...
> 
> I replaced
> 
> outStreamFile.write(buffer);
> 
> with
> 
> outStreamFile.write(new String(buffer));
> 
> and it did the conversion. Sorry for the extra noise, but 
> maybe this will help someone else later. Thank you very much 
> for your help. I owe you a beer.
> 
> Isn't that kind of a bug though? Shouldn't it do the 
> conversion whether I give it a string or a byte array? The 
> inconsistency in behavior there concerns me. Interesting me thinks.
> 
> Thanks!
> 
> 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 Daniel Feather
> Sent: Tuesday, February 17, 2004 4: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


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.