238 lines
10 KiB
HTML
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> |