Your example clarified it for me.
The reason why the input buffer has the subfile (or any display file
output-only) field is that there is a "context switch" in the meaning of output
and output-only. When defining a field in DDS as output-only, you
are saying that it will not accept any input from the keyboard
(output-only). When the program has to display this "output-only" field,
it has to input it from somewhere. That somewhere is the input
buffer, that may or may not share memory space with another variable. You
load the input buffer with the information you want to be displayed, but remain
unchanged.
In a similar manner, the output buffer takes input from the keyboard and
makes it available for manipulation. I would be very surprised it the
output-only-defined fields have a place in the output buffer of the display
file. That's because the program would not be expecting new information
from the program in those fields.
That's my story... I'll stick to this one!
The PUTOVR and OVRDTA comments I made earlier are way off the mark.
Please ignore my momentary lapse... :-)
----- Original Message -----
Sent: Wednesday, July 25, 2001 9:21
PM
Subject: RE: Interesting subfile
"feature"
I'm
not sure I understand your conjecture. Even if PUTOVR and OVRDTA were
specified, there's no reason for these fields to be in the input buffer.
Why would not sending them out have anything to do with reading them back in?
Regardless, that's not the case. Here's the subfile
definition:
A
R
SCR001S1
A
SFL
A
65
SFLNXTCHG
A
FL0001 1 0B
8
2
A
DSPATR(CS)
A
02
DSPATR(UL)
A
COLOR(TRQ)
A
EDTCDE(Z)
A
01
DSPATR(PC)
A
01
DSPATR(RI)
A
XRMDES R O
8 5REFFLD(PRMDES IVPRML01)
A
DLTEDT
A
XRMCPD R O 8
32REFFLD(PRMCPD IVPRML01)
A
DLTEDT
A
XRMNUM R O 8
73REFFLD(PRMNUM IVPRML01)
A
DLTEDT
A
DSPATR(ND)
A
HRC01 9
0H
A
HRMDES R
H REFFLD(PRMDES IVPRML01)
A
ALIAS(ALIAS00001)
A INSAV1 99
H
As
you can see, the record has no PUTOVR, the fields have no OVRDTA or
OVRATR. Yet, here is the buffer from the compiled
program:
INPUT FIELDS FOR RECORD SCR001S1 FILE IV0400D
FORMAT
SCR001S1.
1
10FL0001
2 26 XRMDES
27 51 XRMCPD
52 570XRMNUM
58
660HRC01
67 91 HRMDES
92 190 INSAV1
But
don't take my word for it. Try a sample yourself. Interestingly,
take a look at the excerpted DSPFFD output below:
Data Field Buffer
Input Output Field
Field
Type Length Length
Buffer Buffer Usage
FL0001
ZONED 1
0 1
1 1 Both
XRMDES
CHAR
25
25
2 Output
XRMCPD
CHAR
25
25
27 Output
XRMNUM
ZONED 6
0
6
52 Output
HRC01
ZONED 9
0 9
58 58 Both
HRMDES
CHAR
25 25
67 67 Both
As
you can see, the DSPFFD shows no input buffer position for
the output-only fields, but the first hidden field (HRC01) shows up as input
buffer position 58. The previous field with an input buffer position in
FL0001, so there are 56 buffer positions unaccounted for.
IBM
got sloppy, that's all.
However, I'm not prone to disregarding speculation,
even when I don't understand it. Since you mentioned PUTOVR, just for
the fun of it I went back into the display file. The subfile control
record and one other record did indeed have PUTOVR. I removed them, and
all the OVRATR and OVRDTA for their fields. It didn't change
anything. The fields were still in the input buffer.
Thanks for the thought, though.
Joe
I haven't taken a look at the buffer to verify this (I trust your
observation, Joe), but my first take on this would be that your display file
is set up as OVERLAY PUTOVR and the output only fields have the OVRATR
OVRDTA keywords associated with the fields. This saves the system the
trouble of resending information that is already displayed on the
screen.
I would hypothesize that if these keywords were removed, the output
fields will disappear from the input buffer.