I always use (B)oth for all fields onscreen and protect them as needed.
Learned this years ago...the hard way for the very reasons you mention.
I also set DSPATR(MDT CS) on everything, this ensures data is always
returned to my programs.
For "O" fields I use DSPATR(PR) and CHGINPDFT keywords...
Terry
-----Original Message-----
From: COBOL400-L [mailto:cobol400-l-bounces@xxxxxxxxxxxx] On Behalf Of Stone, Joel
Sent: Monday, August 08, 2016 5:21 PM
To: 'COBOL Programming on the IBM i (AS/400 and iSeries)'
Subject: [COBOL400-L] COBOL pgm to display DDS screen and update a record
How are screens generally handled when writing COBOL to update a record via a DDS screen.
Specifically regarding I, O, or B fields (Input, Output, or Both)
It seems that only "B" works satisfactorily. I thought that I had some "O" fields interspersed with "B" fields working pretty well. I was moving SCREEN-I fields to SCREEN-o fields after every READ from the screen, and reverse after a WRITE.
However it still seems to mess up occasionally, as the screen buffer is mapped very differently for "I" and "O" fields.
The only way I have gotten screen updates to work reliably is to strictly use "B" fields only, and never use "O" fields for updates anyways.
Designating all fields as "B" means that fields in the buffer will stay put - instead of hopping around to different locations before and after the screen I-O.
Do others follow this method? Or is there a way to designate a field as "O" when other fields are "B"?
(A downside of designating "O" fields as "B" is that they are not protected and also show underlines, so each one must be conditioned to unprotect & remove underlines, which is more junk code to get around this issue.)
Thanks!
--
This is the COBOL Programming on the IBM i (AS/400 and iSeries) (COBOL400-L) mailing list To post a message email: COBOL400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/cobol400-l
or email: COBOL400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at
http://archive.midrange.com/cobol400-l.
Confidentiality Notice: The preceding e-mail message (including any attachments) contains information that may be confidential, protected by applicable legal privileges, or constitute non-public information. It is intended to be conveyed only to the designated recipient(s). If you are not an intended recipient of this message, please notify the sender by replying to this message and then delete it from your system. Use, dissemination, distribution or reproduction of this message by unintended recipients is not authorized and may be unlawful.
As an Amazon Associate we earn from qualifying purchases.