|
Yeah... yours is cleaner than mine. Thanks man! 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: Tuesday, February 17, 2004 4:44 PM To: 'Java Programming on and around the iSeries / AS400' Subject: RE: IFS file to PF Member 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. > _______________________________________________ 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.