tn5250j/src/org/tn5250j/framework/tn5250 tnvt.java, 1.18, 1.19
Christian Geisert <[email protected]> Fri, 29 Feb 2008 08:43:38 +0000
| Newsgroups | gmane.comp.java.tn5250j.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/tn5250j/tn5250j/src/org/tn5250j/framework/tn5250
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv18195/src/org/tn5250j/framework/tn5250
Modified Files:
tnvt.java
Log Message:
Finally support for STRPCO/STRPCCMD
This is based on work by Wim Van Leuven with adaption from Mahmoud
GANGAT - I just did change the check for the "PCO" string which didn't
work for me (problem with codepages..)
Index: tnvt.java
===================================================================
RCS file: /cvsroot/tn5250j/tn5250j/src/org/tn5250j/framework/tn5250/tnvt.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** tnvt.java 13 Dec 2005 11:53:00 -0000 1.18
--- tnvt.java 29 Feb 2008 08:43:36 -0000 1.19
***************
*** 37,40 ****
--- 37,41 ----
import java.net.Socket;
import java.util.Properties;
+ import java.util.Arrays;
import javax.swing.JDialog;
***************
*** 91,94 ****
--- 92,97 ----
private boolean scan; // = false;
private static int STRSCAN = 1;
+ // WVL - LDC : 05/08/2005 : TFX.006253 - support STRPCCMD
+ private boolean strpccmd; // = false;
private String user;
private String password;
***************
*** 919,923 ****
invited = true;
}
!
// WVL - LDC : TR.000300 : Callback scenario from 5250
/**
--- 922,980 ----
invited = true;
}
!
! // WVL - LDC : 05/08/2005 : TFX.006253 - Support STRPCCMD
! private void strpccmd()
! {
! try
! {
! int str = 11;
! char c;
! ScreenPlanes planes = screen52.getPlanes();
! c = planes.getChar(str);
! boolean waitFor = !(c == 'a');
!
! StringBuffer command = new StringBuffer();
! for (int i = str+1; i < 132; i++)
! {
! c = planes.getChar(i);
! if (Character.isISOControl(c))
! c = ' ';
! command.append(c);
! }
!
! String cmd = command.toString().trim();
!
! run(cmd, waitFor);
! }
! finally
! {
! strpccmd = false;
! screen52.sendKeys(screen52.MNEMONIC_ENTER);
! }
! }
!
! // WVL - LDC : 05/08/2005 : TFX.006253 - Support STRPCCMD
! private void run(String cmd, boolean waitFor)
! {
! try
! {
! log.debug("RUN cmd = " + cmd);
! log.debug("RUN wait = " + waitFor);
!
! Runtime r = Runtime.getRuntime();
! Process p = r.exec(cmd);
! if (waitFor)
! {
! int result = p.waitFor();
! log.debug("RUN result = " + result);
! }
! }
! catch (Throwable t)
! {
! log.error(t);
! }
! }
!
!
// WVL - LDC : TR.000300 : Callback scenario from 5250
/**
***************
*** 1138,1141 ****
--- 1195,1199 ----
try {
+ if (!strpccmd) {
// SwingUtilities.invokeAndWait(
// new Runnable () {
***************
*** 1148,1151 ****
--- 1206,1212 ----
// controller.validate();
// log.debug("update dirty");
+ } else {
+ strpccmd();
+ }
} catch (Exception exd) {
log.warn(" tnvt.run: " + exd.getMessage());
***************
*** 1857,1861 ****
// int colc = screen52.getCurrentCol();
! switch (bk.getNextByte()) {
case 1: // SOH - Start of Header Order
--- 1918,1924 ----
// int colc = screen52.getCurrentCol();
! byte bytebk = bk.getNextByte();
!
! switch (bytebk) {
case 1: // SOH - Start of Header Order
***************
*** 2062,2066 ****
--- 2125,2159 ----
break;
+ // WVL - LDC : 05/08/2005 : TFX.006253 - Support STRPCCMD
+ case -128: //STRPCCMD
+ // if (screen52.getCurrentPos() == 82) {
+ log.debug("STRPCCMD got a -128 command at " + screen52.getCurrentPos());
+ StringBuffer value = new StringBuffer();
+ int b;
+ char c;
+ int[] pco = new int[9];
+ int[] pcoOk = {0xfc, 0xd7, 0xc3, 0xd6, 0x40, 0x83, 0x80, 0xa1, 0x80};
+
+ for (int i = 0; i < 9; i++)
+ {
+ b = bk.getNextByte();
+ pco[i] = ((b & 0xff));
+ c = ebcdic2uni(b);
+ value.append(c);
+ }
+ // Check "PCO-String"
+ if (Arrays.equals(pco, pcoOk)) {
+ strpccmd = true;
+ }
+ // we return in the stream to have all chars
+ // arrive at the screen for later processing
+ for (int i = 0; i < 9; i++)
+ bk.setPrevByte();
+ //}
+ // no break: so every chars arrives
+ // on the screen for later parsing
+ //break;
+
default: // all others must be output to screen
log.debug("all others must be output to screen");
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/