|
Hi Patrick,
I finally got some time to test out RandomAccessFile and it does work.
I decided to combine it with Ivan's CCSID question, so I created a Unicode
capable file. Here's the DDS - you'll probably need to put it in a text
editor to get everything to line up properly:
:
* Test UCS-2
A R IT134882
*
A OVNAME 30G COLHDG('Name')
A CCSID(13488)
*
A K OVNAME
*
One interesting thing is that the record ( max ) length is 60 because of
the 30 two-byte characters.
Here's the code I used with the path dummied up:
import java.io.*;
public class TestWriteAS400File
{
public static void main(String[] args) throws Exception
{
RandomAccessFile raf =
new RandomAccessFile(
"/qsys.lib/alib.lib/aUniFile.file/aUniMbr.mbr", "rw" );
raf.seek( 0 );
raf.writeChars( "I want this to be record 1" );
raf.seek( 60 );
raf.writeChars( "I want this to be record 2" );
raf.seek( 120 );
raf.writeChars( "I want this to be record 3" );
raf.close();
} // end main
} // end class TestWriteAS400File
Here's the hex dump output - again, you'll probably need to put it in a
text
editor to get everything to line up properly:
*...+....1....+....2....+....3....+....4....+....5....+....6
ñ Ï / > È È Ç Ñ Ë È ? Â Á Ê Á Ä ? Ê À
040207060607020706060702070602060602070606060706020302020202
090007010E04000408090300040F000205000205030F0204000100000000
ñ Ï / > È È Ç Ñ Ë È ? Â Á Ê Á Ä ? Ê À
040207060607020706060702070602060602070606060706020302020202
090007010E04000408090300040F000205000205030F0204000200000000
ñ Ï / > È È Ç Ñ Ë È ? Â Á Ê Á Ä ? Ê À
040207060607020706060702070602060602070606060706020302020202
090007010E04000408090300040F000205000205030F0204000300000000
And here's an ISO 8859-1 table to confirm the values:
http://www.bbsinc.com/iso8859.html
Since it's Unicode, which encompasses ISO 8859-1, the values are 2 bytes,
so for 'w', the value in the AS/400 file is 0077 ( \a0077 ) rather than just
0x77 as in the table.
Also, the Java program clearly respected the file CCSID when running on
the AS/400 so I didn't have to specify the encoding. I'm not sure ( and
probably won't take the time to find out until/unless I need it ) if that
would hold true if I were running a version on a client to write to the 400.
Normally I would expect system default encoding.
Joe Sam
Joe Sam Shirah - http://www.conceptgo.com
conceptGO - Consulting/Development/Outsourcing
Java Filter Forum: http://www.ibm.com/developerworks/java/
Just the JDBC FAQs: http://www.jguru.com/faq/JDBC
Going International? http://www.jguru.com/faq/I18N
Que Java400? http://www.jguru.com/faq/Java400
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.