|
Another customer asked for S/36 file support in the toolbox Record-Level
Database Access classes. That support was added to JTOpen 2.05. Give that
level of the Toolbox a try and see if it helps.
David Wall
AS/400 Toolbox for Java
AAnuszewski@hammer
.net To: java400-l@midrange.com
Sent by: cc:
java400-l-admin@mi Subject: Record Level Access
drange.com
12/03/2001 10:07
AM
Please respond to
java400-l
I am stuck once again, and am in desperate need of help. Quick overview:
I
need to access data stored on our AS400 in older System 36 type files.
Thus,
the physical file has a structure that basically only declares a delete
code, a
key, and then a long stream of data.
Thus, I have been forced to define my own record format within java. I am
able
to read the file sequentially, but when I try to read it as a keyed file,
it
doesn't seem to find the key.
This is a snippet of the code:
// Set up the PO File
CharacterFieldDescription deleteCode = new
CharacterFieldDescription(new
AS400Text(1), "POCODE"); //1
CharacterFieldDescription PONumber = new CharacterFieldDescription(new
AS400Text(8), "PONO"); //2-9
BinaryFieldDescription subRecord = new BinaryFieldDescription(new
AS400Bin2(), "POSUB"); //10-11
CharacterFieldDescription accountNumber = new
CharacterFieldDescription(new
AS400Text(29), "POACCT"); //12-40
CharacterFieldDescription vendorNumber = new
CharacterFieldDescription(new
AS400Text(7), "POVND#"); //41-47
CharacterFieldDescription filler1 = new CharacterFieldDescription(new
AS400Text(29), "FILLER"); //48-53
PackedDecimalFieldDescription poAmount = new
PackedDecimalFieldDescription(new AS400PackedDecimal(6,2),"POAMT"); //54-59
QSYSObjectPathName POfilePathName = new QSYSObjectPathName("QS36F",
"AB.PO","FILE");
POFile = new KeyedFile(system, POfilePathName.getPath());
AS400FileRecordDescription recDesc = new
AS400FileRecordDescription(system,
POfilePathName.getPath());
try {
RecordFormat recFormat = new RecordFormat("YB.PO@");
recFormat.addFieldDescription(deleteCode);
recFormat.addFieldDescription(PONumber);
recFormat.addFieldDescription(subRecord);
recFormat.addFieldDescription(accountNumber);
recFormat.addFieldDescription(vendorNumber);
recFormat.addFieldDescription(filler1);
recFormat.addFieldDescription(poAmount);
// set up keys
recFormat.addKeyFieldDescription("PONO");
recFormat.addKeyFieldDescription("POSUB");
POFile.setRecordFormat(recFormat);
and :
try {
POFile.open(AS400File.READ_ONLY, 0,
AS400File.COMMIT_LOCK_LEVEL_NONE);
Object[] key = new Object[] {tranPONumber};
Record record = POFile.read(key);
if (record != null) {
System.out.println((String)record.getField("PONO"));
}
POFile.close();
It never seems to find the key, even when I am sure that the tranPONumber
that I
am seeking does exist in the file.
I am getting desperate. Can anybody see a glaring error in the code, or
maybe
somebody has an example of accessing a keyed data file when you have to
describe
your own record format?
Thank you,
Amy
_______________________________________________
This is the Java Programming on and around the iSeries / AS400 (JAVA400-L)
mailing list
To post a message email: JAVA400-L@midrange.com
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/cgi-bin/listinfo/java400-l
or email: JAVA400-L-request@midrange.com
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-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.