|
> It's not just your emulator. . . In Client Access, the cursor position is
> also disturbed.
I think this statement is wrong. I think you're confusing a status
message with re-writing the display. When you send a new display format
(even if it's with FRCDTA & INVITE) the cursor position is reset.
However, with a status message, the cursor position isn't. At least,
it's not in the emulator that I helped write (the open source tn5250) and
it's not on a "real terminal" (IBM 3476) -- though I don't own Client
Access, so I can't try it with that.
Here's source code (DDS & ILE RPG -- I think it requires V5R1 or later,
but I'm too lazy to look it up) that displays a different status message
every second while the user is keying in data:
File QDDSSRC, member STSMSGDSP:
A DSPSIZ(24 80 *DS3)
A R STSMSGDSP1
A FRCDTA
A INVITE
A 11 3'Enter something here:'
A MYFIELD 50 B 11 25
File QRPGLESRC, member STSMSG:
FSTSMSGDSP CF E WORKSTN USROPN
D QCMDEXC PR ExtPgm('QCMDEXC')
D command 3000A const options(*varsize)
D length 15P 5 const
D QMHSNDPM PR ExtPgm('QMHSNDPM')
D MessageID 7A Const
D QualMsgF 20A Const
D MsgData 32767A const options(*varsize)
D MsgDtaLen 10I 0 Const
D MsgType 10A Const
D CallStkEnt 10A Const
D CallStkCnt 10I 0 Const
D MessageKey 4A
D ErrorCode 32767A options(*varsize)
D QRCVDTAQ PR ExtPgm('QRCVDTAQ')
D dataq 10A const
D dqlib 10A const
D maxlen 5P 0
D data 80A
D wait 5P 0 const
D dsEC DS
D dsEC_BytesP 10I 0 inz(0)
D dsEC_BytesA 10I 0 inz(0)
D cmd s 3000A varying
D len s 5P 0
D entry s 80A
D msg s 80A varying
D msgno s 10I 0
D msgkey s 4A
/free
monitor;
cmd = 'DLTDTAQ DTAQ(QTEMP/STSMSGQ)';
QCMDEXC(cmd: %len(cmd));
on-error;
endmon;
cmd = 'CRTDTAQ DTAQ(QTEMP/STSMSGQ) MAXLEN(80)';
QCMDEXC(cmd: %len(cmd));
cmd = 'OVRDSPF FILE(STSMSGDSP) DTAQ(QTEMP/STSMSGQ)';
QCMDEXC(cmd: %len(cmd));
open STSMSGDSP;
write STSMSGDSP1;
dou (len > 0);
len = %len(entry);
QRCVDTAQ('STSMSGQ': 'QTEMP': len: entry: 1);
msgno = msgno + 1;
if (msgno > 3);
msgno = 1;
endif;
select;
when msgno = 1;
msg = 'I like spam!';
when msgno = 2;
msg = 'Model railroading is fun!';
when msgno = 3;
msg = 'This is a sample of the work done on ' +
'this machine.';
endsl;
QMHSNDPM('CPF9897': 'QCPFMSG *LIBL': msg: %len(msg):
'*STATUS': '*EXT': 0: MsgKey: dsEC);
enddo;
read(e) STSMSGDSP1;
close STSMSGDSP;
cmd = 'DLTOVR FILE(STSMSGDSP)';
QCMDEXC(cmd: %len(cmd));
*inlr = *on;
/end-free
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.