ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzahh_5.4.0.1/programcallbuttonexample.htm

238 lines
10 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="reference" />
<meta name="DC.Title" content="Example: Using a button to call a program on the server" />
<meta name="abstract" content="" />
<meta name="description" content="" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="programcallbuttonexample" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Example: Using a button to call a program on the server</title>
</head>
<body id="programcallbuttonexample"><a name="programcallbuttonexample"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Example: Using a button to call a program on the server</h1>
<div><p></p>
<div class="section"><div class="note"><span class="notetitle">Note:</span> Read the <a href="codedisclaimer.htm#codedisclaimer">Code
example disclaimer</a> for important legal information.</div>
<pre>/////////////////////////////////////////////////////////////////////////
//
// Program call button example. This program demonstrates how to
// use a button that calls a program on the server. It will exchange data
// with the server program via an input and output parameter.
//
// Command syntax:
// ProgramCallButtonExample system
//
// This source is an example of IBM Toolbox for Java "ProgramCallButton".
//
/////////////////////////////////////////////////////////////////////////
import com.ibm.as400.access.*;
import com.ibm.as400.vaccess.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ProgramCallButtonExample
{
private ProgramParameter parm1, parm2, parm3, parm4, parm5;
private JTextField cpuField;
private JTextField dasdField;
private JTextField jobsField;
// Create a ProgramCallButtonExample object, then call the
// non-static version of main(). If we don't to this then
// the class variables (parm1, parm2, ...) must be declared
// static. If they are static they cannot be used by the
// action completed listener in Java 1.1.7 or 1.1.8.
public static void main (String[] args)
{
ProgramCallButtonExample me = new ProgramCallButtonExample();
me.Main(args);
}
public void Main (String[] args)
{
// If a system was not specified, then display help text and
// exit.
if (args.length != 1)
{
System.out.println("Usage: ProgramCallButtonExample system");
return;
}
try
{
// Create a frame.
JFrame f = new JFrame ("Program call button example");
// Create an error dialog adapter. This will display
// any errors to the user.
ErrorDialogAdapter errorHandler = new ErrorDialogAdapter (f);
// Create an AS400 object. The system name was passed
// as the first command line argument.
AS400 system = new AS400 (args[0]);
// Create the program path name.
QSYSObjectPathName programName = new QSYSObjectPathName ("QSYS",
"QWCRSSTS", "PGM");
// Create a ProgramCallButton object. The button
// will have the text "Refresh" and no icon.
ProgramCallButton button = new ProgramCallButton ("Refresh", null);
button.setSystem (system);
button.setProgram (programName.getPath ());
button.addErrorListener (errorHandler);
// The first parameter is an 64 byte output parameter.
parm1 = new ProgramParameter (64);
button.addParameter (parm1);
// We use the second parameter to set the buffer size
// of the first parameter. We will always set this to
// 64. Remember that we need to convert the Java int
// value 64 to the format used on the server.
AS400Bin4 parm2Converter = new AS400Bin4 ();
byte[] parm2Bytes = parm2Converter.toBytes (64);
parm2 = new ProgramParameter (parm2Bytes);
button.addParameter (parm2);
// The third parameter is the status format. We will
// always use "SSTS0200". This is a String value, and
// again we need to convert it to the format used on the server.
AS400Text parm3Converter = new AS400Text (8, system);
byte[] parm3Bytes = parm3Converter.toBytes ("SSTS0200");
parm3 = new ProgramParameter (parm3Bytes);
button.addParameter (parm3);
// The fourth parameter is the reset statistics parameter.
// We will always pass "*NO" as a 10 character String.
AS400Text parm4Converter = new AS400Text (10, system);
byte[] parm4Bytes = parm4Converter.toBytes ("*NO ");
parm4 = new ProgramParameter (parm4Bytes);
button.addParameter (parm4);
// The fifth parameter is for error information. It
// is an input/output parameter. We will not use it
// for this example, but we need to set it to something,
// or else the number of parameters will not match
// what the server is expecting.
byte[] parm5Bytes = new byte[32];
parm5 = new ProgramParameter (parm5Bytes, 0);
button.addParameter (parm5);
// When the program runs, we will get a bunch of data.
// We need a way to display that data to the user.
// In this case, we will just use simple labels and text
// fields.
JLabel cpuLabel = new JLabel ("CPU Utilitization: ");
cpuField = new JTextField (10);
cpuField.setEditable (false);
JLabel dasdLabel = new JLabel ("DASD Utilitization: ");
dasdField = new JTextField (10);
dasdField.setEditable (false);
JLabel jobsLabel = new JLabel ("Number of active jobs: ");
jobsField = new JTextField (10);
jobsField.setEditable (false);
// When the frame closes, exit.
f.addWindowListener (new WindowAdapter ()
{
public void windowClosing (WindowEvent event)
{
System.exit (0);
}
});
// When the program is called, we need to process the
// information that comes back in the first parameter.
// The format of the data in this parameter was documented
// by the program we are calling.
button.addActionCompletedListener (new ActionCompletedListener ()
{
public void actionCompleted (ActionCompletedEvent event)
{
try
{
// Get the data from the first parameter.
// It is in the server format.
byte[] parm1Bytes = parm1.getOutputData ();
// Each of the pieces of data that we need
// is an int. We can create one converter
// to do all of our conversions.
AS400Bin4 parm1Converter = new AS400Bin4 ();
// Get the CPU utilitization starting at byte 32.
// Set this value in the corresponding text field.
int cpu = parm1Converter.toInt (parm1Bytes, 32);
cpuField.setText (Integer.toString (cpu / 10) + "%");
// Get the DASD utilitization starting at byte 52.
// Set this value in the corresponding text field.
int dasd = parm1Converter.toInt (parm1Bytes, 52);
dasdField.setText (Integer.toString (dasd / 10000) + "%");
// Get the number of active jobs starting at byte 36.
// Set this value in the corresponding text field.
int jobs = parm1Converter.toInt (parm1Bytes, 36);
jobsField.setText (Integer.toString (jobs));
}
catch (Exception e) { e.printStackTrace(); }
}
});
// Layout the frame.
JPanel outputPanel = new JPanel ();
outputPanel.setLayout (new GridLayout (3, 2, 5, 5));
outputPanel.add (cpuLabel);
outputPanel.add (cpuField);
outputPanel.add (dasdLabel);
outputPanel.add (dasdField);
outputPanel.add (jobsLabel);
outputPanel.add (jobsField);
Panel buttonPanel = new Panel ();
buttonPanel.add (button);
f.getContentPane ().setLayout (new BorderLayout ());
f.getContentPane ().add ("Center", outputPanel);
f.getContentPane ().add ("South", buttonPanel);
f.pack ();
f.show ();
}
catch (Exception e)
{
System.out.println ("Error: " + e.getMessage ());
System.exit (0);
}
}
}</pre>
</div>
</div>
</body>
</html>