[ Next part | Simple programming examples ]
Use the following as an example for your program. The example includes detailed explanations about key lines in the code. You can view the detailed explanations in the following ways:
Note: Read the Code example disclaimer for important legal information.
////////////////////////////////////////////////////////////////////////////////// // // Record level access example. This program will prompt the user // for the name of the server and the file to display. The file must exist // and should contain records. Each record in the file will be displayed // to System.out. // // Calling syntax: java RLSequentialAccessExample // // This source is an example of IBM Toolbox for Java "RecordLevelAccess" // ////////////////////////////////////////////////////////////////////////////////// import java.io.*; import java.util.*; import com.ibm.as400.access.*; public class RLSequentialAccessExample { public static void main(String[] parameters) { BufferedReader inputStream = new BufferedReader(new InputStreamReader(System.in),1); String systemName = ""; String library = ""; String file = ""; String member = ""; System.out.println(); try { System.out.print("System name: "); systemName = inputStream.readLine(); System.out.print("Library in which the file exists: "); library = inputStream.readLine(); System.out.print("File name: "); file = inputStream.readLine(); System.out.print("Member name (press enter for first member): "); member = inputStream.readLine(); if (member.equals("")) { member = "*FIRST"; } System.out.println(); } catch (Exception e) { System.out.println("Error obtaining user input."); e.printStackTrace(); System.exit(0); } AS400 system = new AS400(systemName); Note 1try { system.connectService(AS400.RECORDACCESS); } catch(Exception e) { System.out.println("Unable to connect for record level access."); System.out.println("Check the programmer's guide setup file for special instructions regarding record level access"); e.printStackTrace(); System.exit(0); } QSYSObjectPathName filePathName = new QSYSObjectPathName(library, file, member, "MBR"); Note 2
SequentialFile theFile = new SequentialFile(system, filePathName.getPath()); Note 3
AS400FileRecordDescription recordDescription = new AS400FileRecordDescription(system, filePathName.getPath()); try { RecordFormat[] format = recordDescription.retrieveRecordFormat(); Note 4
theFile.setRecordFormat(format[0]); Note 5
theFile.open(AS400File.READ_ONLY, 100, AS400File.COMMIT_LOCK_LEVEL_NONE); Note 6
System.out.println("Displaying file " + library.toUpperCase() + "/" + file.toUpperCase() + "(" + theFile.getMemberName().trim() + "):"); Record record = theFile.readNext(); Note 7
while (record != null) { System.out.println(record); record = theFile.readNext(); } System.out.println(); theFile.close(); Note 8
system.disconnectService(AS400.RECORDACCESS); Note 9
} catch (Exception e) { System.out.println("Error occurred attempting to display the file."); e.printStackTrace(); try { // Close the file theFile.close(); } catch(Exception x) { } system.disconnectService(AS400.RECORDACCESS); System.exit(0); } // Make sure that the application ends; see readme for details System.exit(0); } }
This line of code creates an AS400 object and connects to the record-level access service.
This line creates a QSYSObjectPathName object that obtains the integrated file system path name form of the object to be displayed.
This statement creates an object that represents an existing sequential file on the server you are connected to. This sequential file is the file that will be displayed.
This line opens the selected file for reading. It will read 100 records at a time, when it is possible.