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