Hi,
Below is the html/javascript that I was hoping would turn the "Abort" button
into a hot abort key. As it wasn't necessary for this example I've just
removed the button altogether but I will come back to the issue of
stop/cancel/abort processing in the next example. I think this "Frames"
idea's got legs so please let me know if you have any knowledge in this area
that may help.
Cheers Richard Maher.
PS. If you've got a chance to look, I couldn't make the Courier Font in the
..green_screen style smaller. Can anyone show me how with this example?
PPS. What controls if a button is Up or Down? I couldn't find the property
or method but sometimes the "send" button stayed down. (I think if disabled
when an alert fired?) Any Ideas how to control that?
<html>
<head>
<title>
Example Client for Tier3 demo queue-lookup server
Author: Richard Maher
</title>
<style>
h2
{
color: Turquoise;
}
p.credits
{
color: Turquoise;
}
.green_screen
{
color: Lime;
background-color: Black;
font-family: courier;
}
</style>
<script type="text/javascript">
function enter(nextfield)
{
if (window.event && window.event.keyCode == 13)
{
nextfield.focus();
return false;
}
else
return true;
}
function num_only(numObj)
{
if (isNaN(numObj.value))
{
numObj.value = "";
alert("Numeric value required");
numObj.focus();
return false;
}
else
return true;
}
function job_lookup()
{
if (!num_only(document.getjobs.entry_number))
return true;
document.getjobs.abort.disabled = false;
document.getjobs.send.disabled = true;
document.getjobs.abort.disabled = false;
var recTypeLen = 2;
var recType = "";
var msgGetInfo = "10";
var jobInfo = "11";
var errorInfo = "00";
var zeroFill = "0000";
var maxRows = "9999";
var outPad = "";
var ok = true;
var selectRef = document.getjobs.job_list;
var msgEntry = "";
selectRef.options[0].selected=true;
var holdHdr = selectRef.options[0];
while (selectRef.options.length 0)
{
selectRef.remove(selectRef.options[0]);
}
selectRef.options[0] = holdHdr
document.getjobs.job_list.size = 1;
msgEntry = document.getjobs.entry_number.value;
outPad = zeroFill.substring(0, (zeroFill.length - msgEntry.length));
var chan = document.getElementById("CornuCopiae");
chan.sendMessage(msgGetInfo.concat(outPad,msgEntry ,maxRows));
if (chan.readMessage(recTypeLen) != recTypeLen)
{
alert ("Error receiving reply from server");
return false;
}
recType = chan.getString(0,recTypeLen);
if (recType == jobInfo)
{
ok = process_jobs(chan);
}
else
{
if (recType == errorInfo)
{
ok = process_error(chan);
}
else
{
alert ("Unknown message type " + recType);
return false;
}
}
if (!ok) return false;
document.getjobs.abort.disabled = true;
document.getjobs.send.disabled = false;
document.getjobs.entry_number.focus();
return true;
}
function process_error(chan)
{
document.getjobs.rec_count.value = 0;
var errMsgLen = 0;
var errLenLen = 3;
var alertMsg = "Error retrieving job entry information\n";
if (chan.readMessage() < errLenLen)
{
alert ("Error receiving Error Length from server");
return false;
}
errMsgLen = parseInt(chan.getString(0,errLenLen),10);
alertMsg = alertMsg + chan.getString(errLenLen,errMsgLen);
document.getjobs.send.disabled = false;
alert(alertMsg);
return true;
}
function process_jobs(chan)
{
var recTypeLen = 2;
var recType = "";
var jobInfo = "11";
var eofInfo = "99";
var eofLen = 3;
var jobMsgLen = 109;
var jobMsg = "";
var rc = 1;
var eofInfo = "99";
var selectRef = document.getjobs.job_list;
for (;;)
{
rc = rc + 1;
if (rc < 6)
document.getjobs.job_list.size = rc;
if (chan.readMessage(jobMsgLen) != jobMsgLen)
{
alert ("Error receiving Job Information from server");
return false;
}
jobMsg = chan.getString(0,4) + "|" +
chan.getString(4,39) + "|" +
chan.getString(43,15) + "|" +
chan.getString(58,31) + "|" +
chan.getString(89,10) + "|" +
chan.getString(99,10);
selectRef.options[selectRef.options.length] = new Option (jobMsg);
if (chan.readMessage(recTypeLen) != recTypeLen)
{
alert ("Error receiving reply from server");
return false;
}
recType = chan.getString(0,recTypeLen);
if (recType != jobInfo)
break;
}
if (recType != eofInfo)
return false;
if (chan.readMessage(eofLen) != eofLen)
{
alert ("Error receiving reply from server");
return false;
}
document.getjobs.rec_count.value = (rc - 1);
return true;
}
function send_oob(oob_char)
{
var chan = document.getElementById("CornuCopiae");
chan.sendUrgentData(oob_char);
return;
}
</script>
</head>
<body>
<h2>Example Client for Tier3 DEMO application server on VMS</h2><hr>
<form name="getjobs">
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width= "0" height= "0" name="CornuCopiae"
id="CornuCopiae">
<param name="archive" value="tier3.jar">
<param name="codebase"
value="http://1.2.3.6/">
<param name="code"
value="CornuCopiae">
<param name="mayscript" value="yes">
<param name="scriptable" value="true">
<param name="name"
value="CornuCopiae">
<param name="PORT" value="1024">
<param name="HOSTCHARSET"
value="ISO-8859-1">
<param name="MAXBUF" value="512">
<param name="APPLICATION" value="DEMO">
</object>
<br />Enter Job Entry Number [Default is All jobs]:
<input
type="text"
onkeypress="return enter(document.getjobs.send)"
name="entry_number"
maxlength=4
size=4
dir="rtl"
/>
<input
type="button"
onmouseup="job_lookup()"
name="send"
value="Get Job Info."
/>
<input
type="button"
onmousedown="send_oob(1)"
name="abort"
value="Abort"
/>
Jobs Found:
<input
type="text"
name="rec_count"
readonly
value="0"
size=5
/>
<br /><br />
<select
name="job_list"
id="Job_list"
class="green_screen"
size=1>
<option
value="lovhdr"
selected=true
disable=true
>
Nbr--Job-Name--------------------------------Job Status------Queue
Name----------------------Queue Type-Status----</option>
</select>
<br />
</form>
<p>
This is an example of a browser-based, html and JavaScript,
client interacting with a VMS hosted Tier3 Application Server
in a connection-oriented and context-rich environment.<br /><br />
You would have noticed that, when this page was initially displayed,
you were immediately prompted for your VMS Username and Password.
Once authorization is successful your credentials, and an accompanying
Persona, are automatically made available to your 3GL User Action
Routines each time their Server Process is chosen to perform work on
behalf of the client. In this example, the user only gets to see those
Print and Batch jobs that they have privileges to view. You can find
the corresponding server code for this example (demo_uars.cob) in your
t3$examples directory.<br /><br />
The session and server connection are terminated when you change
web pages or refresh this page.
</p>
<hr>
<p class="credits">
"Tier3" is a registered trademark of Tier3 Software Ltd<br />
"CornuCopiae" is a trademark of Richard Maher
</p>
</body>
</html>