Physical files on the server are created by specifying a record length, an existing server data description specifications (DDS) source file, or a RecordFormat object.
When you create a file and specify a record length, a data file or a source file can be created. The method sets the record format for the object. Do not call the setRecordFormat() method for the object.
A data file has one field. The field name is the name of the file, the field type is of type character, and the field length is the length that is specified on the create method.
The following examples show how to create files and members.
Example 1: To create a data file with a 128-byte record:
// Create an AS400 object, the file
// will be created on this server.
AS400 sys = new AS400("mySystem.myCompany.com");
// Create a file object that represents the file
SequentialFile newFile =
new SequentialFile(sys, "/QSYS.LIB/MYLIB.LIB/MYFILE.FILE/%FILE%.MBR");
// Create the file
newFile.create(128, "*DATA", "Data file with a 128 byte record");
// Open the file for writing only.
// Note: The record format for the file
// has already been set by create()
newFile.open(AS400File.WRITE_ONLY, 0, AS400File.COMMIT_LOCK_LEVEL_NONE);
// Write a record to the file. Because the record
// format was set on the create(), getRecordFormat()
// can be called to get a record properly formatted
// for this file.
Record writeRec = newFile.getRecordFormat().getNewRecord();
writeRec.setField(0, "Record one");
newFile.write(writeRec);
// ....
// Close the file since I am done using it
newFile.close();
// Disconnect since I am done using record-level access
sys.disconnectService(AS400.RECORDACCESS);
// Create an AS400 object, the
// file will be created on this server.
AS400 sys = new AS400("mySystem.myCompany.com");
// Create QSYSObjectPathName objects for
// both the new file and the DDS file.
QSYSObjectPathName file = new QSYSObjectPathName("MYLIB", "MYFILE", "FILE", "MBR");
QSYSObjectPathName ddsFile = new QSYSObjectPathName("MYLIB", "DDSFILE", "FILE", "MBR");
// Create a file object that represents the file
SequentialFile newFile = new SequentialFile(sys, file);
// Create the file
newFile.create(ddsFile, "File created using DDSFile description");
// Set the record format for the file
// by retrieving it from the server.
newFile.setRecordFormat(new AS400FileRecordDescription(sys,
newFile.getPath()).retrieveRecordFormat()[0]);
// Open the file for writing
newFile.open(AS400File.WRITE_ONLY, 0, AS400File.COMMIT_LOCK_LEVEL_NONE);
// Write a record to the file. The getRecordFormat()
// method followed by the getNewRecord() method is used to get
// a default record for the file.
Record writeRec = newFile.getRecordFormat().getNewRecord();
newFile.write(writeRec);
// ....
// Close the file since I am done using it
newFile.close();
// Disconnect since I am done using
// record-level access
sys.disconnectService(AS400.RECORDACCESS);
// Create an AS400 object, the file will be created
// on this server.
AS400 sys = new AS400("mySystem.myCompany.com");
// Create a file object that represents the file
SequentialFile newFile =
new SequentialFile(sys, "/QSYS.LIB/MYLIB.LIB/MYFILE.FILE/%FILE%.MBR");
// Retrieve the record format from an existing file
RecordFormat recordFormat = new AS400FileRecordDescription(sys,
"/QSYS.LIB/MYLIB.LIB/EXISTING.FILE/MBR1.MBR").retrieveRecordFormat()[0];
// Create the file
newFile.create(recordFormat, "File created using record format object");
// Open the file for writing only.
// Note: The record format for the file
// has already been set by create()
newFile.open(AS400File.WRITE_ONLY, 0, AS400File.COMMIT_LOCK_LEVEL_NONE);
// Write a record to the file. The recordFormat
// object is used to get a default record
// properly formatted for the file.
Record writeRec = recordFormat.getNewRecord();
newFile.write(writeRec);
// ....
// Close the file since I am done using it
newFile.close();
// Disconnect since I am done using
// record-level access
sys.disconnectService(AS400.RECORDACCESS);
Use the addPhysicalFileMember() method to add members to a file.