× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Re: Did the user press Enter or Field+
  • From: dhandy@xxxxxxxxxxx (Douglas Handy)
  • Date: Thu, 15 Jun 2000 23:02:56 -0400

Dan/Torbjörn,

>I see that the Enter key has a value of hex 'F1'.  I've never used Field+ to
>return control back to the program on the AS/400, but I see there's a
>reference to something called AutoEnterSLP, which has a value of hex '3F'.

This won't help.  A field with CHECK(ER) when exited (causing an Auto
Enter) will still have an AID byte value of x'F1', just like a normal
Enter key.  You can't tell the difference between the two.  The
AutoEnterSLP is for the Selector Light Pen on the old 5251-12's or
equivalent.

>> I sometimes use Auto Advance on several 
>> fields on the same display file record.  
>> This makes it possible to act on the data
>> in a more direct and modern style.

The basic problem here is that the design of 5250 data stream devices
is for a block-mode interface.  With the current WS controllers it is
basically impossible to act on screens at a field or keystroke level
in an efficient manner.  Using CHECK(ER) on every field may seem like
it gets closer, but won't keep users from doing things like partially
filling a field and pressing Tab or whatever.

>> To be able to decide if the user pressed
>> Enter or Field+, I read the cursor position
>> and check if fields are changed.
>> However, sometimes it it not possible
>> to se the difference.

You could consider using the CHANGE() keyword to set on indicator when
the Modified Data Tag (MDT) bit has been set by the controller.  This
will tell you the user did something in the field, even if the field
ended up with the exact same data contents.  Put a different indicator
on every field (yuck!) and if only one is on, that is the field they
changed (regardless of where the cursor is).  It is still very
possible for multiple fields to have the CHANGE() indicator set, even
when every field also has CHECK(ER).  For example, you can use Tab,
New Line, or the cursor keys to navigate to multiple fields prior to
the CHECK(ER) taking effect.

>> Does someone know of a more direct
>> way to get the information of which key
>> the user pressed?

The AID byte in the INFDS will tell you if a Fx or other function key
was pressed instead of Enter or Check(ER).  It will *not* distinguish
between an explicit Enter and an implicit Enter caused by Check(ER).

As mentioned above, using CHANGE() indicators can help determine what
field(s) a user typed in (if any), if that is what you are after.

Trying to force a block-mode interface to act as if a character-mode
interface is not advisable IMHO.

Just my .02,
Doug
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.