Record-Level Access Example
//////////////////////////////////////////////////////////////////////////////////
//
// Record level access example. This program will prompt the user
// for the name of the AS/400 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 AS/400 Toolbox for Java "RecordLevelAccess"
// IBM grants you a nonexclusive license to use this as an example
// from which you can generate similar function tailored to
// your own specific needs.
//
// This sample code is provided by IBM for illustrative purposes
// only. These examples have not been thoroughly tested under all
// conditions. IBM, therefore, cannot guarantee or imply
// reliability, serviceability, or function of these programs.
//
// All programs contained herein are provided to you "AS IS"
// without any warranties of any kind. The implied warranties of
// merchantablility and fitness for a particular purpose are
// expressly disclaimed.
//
// AS/400 Toolbox for Java
// (C) Copyright IBM Corp. 1997
// All rights reserved.
// US Government Users Restricted Rights -
// Use, duplication, or disclosure restricted
// by GSA ADP Schedule Contract with IBM Corp.
//
//////////////////////////////////////////////////////////////////////////////////
import java.io.*;
import java.util.*;
import com.ibm.as400.access.*;
public class RLSequentialAccessExample
{
public static void main(String[] parmeters)
{
// Created a reader to get input from the user
BufferedReader inputStream = new BufferedReader(new InputStreamReader(System.in),1);
// Declare variables to hold the system name, library, file and member names
String systemName = "";
String library = "";
String file = "";
String member = "";
// Get the system name and and file to display from the user
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);
}
// Create AS400 object and connect for the record level access service.
AS400 system = new AS400(systemName);
try
{
system.connectService(AS400.RECORDACCESS);
}
catch(Exception e)
{
System.out.println("Unable to connect for record level access.");
System.out.println("Check the readme file for special instructions regarding record level access");
e.printStackTrace();
System.exit(0);
}
// Create a QSYSObjectPathName object to obtain the integrated file system path name form
// of the file to be displayed.
QSYSObjectPathName filePathName = new QSYSObjectPathName(library, file, member, "MBR");
// Create a SequentialFile object representing the file to be displayed
SequentialFile theFile = new SequentialFile(system, filePathName.getPath());
// Retrieve the record format for the file
AS400FileRecordDescription recordDescription = new AS400FileRecordDescription(system, filePathName.getPath());
try
{
RecordFormat[] format = recordDescription.retrieveRecordFormat();
// Set the record format for the file
theFile.setRecordFormat(format[0]);
// Open the file for reading. Read 100 records at a time if possible.
theFile.open(AS400File.READ_ONLY, 100, AS400File.COMMIT_LOCK_LEVEL_NONE);
// Display each record in the file
System.out.println("Displaying file " + library.toUpperCase() + "/" + file.toUpperCase() + "(" + theFile.getMemberName().trim() + "):");
Record record = theFile.readNext();
while (record != null)
{
System.out.println(record);
record = theFile.readNext();
}
System.out.println();
// Close the file
theFile.close();
// Disconnect from the record level access service
system.disconnectService(AS400.RECORDACCESS);
}
catch (Exception e)
{
System.out.println("Error occurred attempting to display the file.");
e.printStackTrace();
try
{
// Close the file
theFile.close();
}
catch(Exception x)
{
}
// Disconnect from the record level access service
system.disconnectService(AS400.RECORDACCESS);
System.exit(0);
}
// Make sure that the application ends; see readme for details
System.exit(0);
}
}