Example: Using record-level access (part 1 of 2)

[ Next part ]

Use the following as an example for your program.

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 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 1 
      try
      {
        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);
    }
  }
  1. This line of code creates an AS400 object and connects to the record-level access service.
  2. This line creates a QSYSObjectPathName object that obtains the integrated file system path name form of the object to be displayed.
  3. 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.
  4. These lines retrieve the record format of the file.
  5. This line sets the record format for the file.
  6. This line opens the selected file for reading. It will read 100 records at a time, when it is possible.
  7. This line of code reads each record in sequence.
  8. This line closes the file.
  9. This line disconnects from the record-level access service.

[ Next part ]