View previous topic :: View next topic
|
Author |
Message |
rohanthengal
Active User
Joined: 19 Mar 2009 Posts: 206 Location: Globe, India
|
|
|
|
I am in a challenging requirement where i have to populate '-' i.e. dash in between 2 editable fields in CICS MAP without any space.
This is due to SDF/BMS skipping problem.
e.g.
Code: |
____-____
____-____
____-____
|
Existing screen has space limitations and showing as below i.e with a space in between 2 fields :
Code: |
____ ____
____ ____
____ ____
|
I dont see any solution here except a very big code change but writing here with some hopes to get any easy option if any.
Actual screen has some 100 fields like this with array/occurs of editable fields .... so solution needs to be tricky !!! |
|
Back to top |
|
|
prino
Senior Member
Joined: 07 Feb 2009 Posts: 1306 Location: Vilnius, Lithuania
|
|
|
|
Three words: Impossible! |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
As Prino said, this cannot be done. Each BMS field is preceded by an attribute-byte. In this case, it's probably ASKIP,NORM, which is a X'F0'. So, each hyphen will look like 'b-b' with a 'b' visually representing a blank, but it's really the attribute-byte. |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
To add to prino's comment, from the CICS Application Programming Reference manual appendix on the BMS macros, with emphasis added by me:
Quote: |
POS
specifies the location of a field. This operand specifies the individually addressable character location in a map at which the attribute byte that precedes the field is positioned.
number
specifies the displacement (relative to zero) from the beginning of the map being defined.
(line,column)
specify lines and columns (relative to one) within the map being defined.
The location of data on the output medium is also dependent on DFHMDI operands.
The first position of a field is reserved for an attribute byte. When supplying data for input mapping from non-3270 devices, the input data must allow space for this attribute byte. Input data must not start in column 1 but may start in column 2.
The POS operand always contains the location of the first position in a field, which is normally the attribute byte when communicating with the 3270. For the second and subsequent fields of a group, the POS operand points to an assumed attribute-byte position, ahead of the start of the data, even though no actual attribute byte is necessary. If the fields follow on immediately from one another, the POS operand should point to the last character position in the previous field in the group.
When a position number is specified that represents the last character position in the 3270, two special rules apply:
ATTRIB=IC should not be coded. The cursor can be set to location zero by using the CURSOR option of a SEND MAP, SEND CONTROL, or SEND TEXT command.
If the field is to be used in an output mapping operation with MAP=DATAONLY on the SEND MAP command, an attribute byte for that field must be supplied in the symbolic map data structure by the application program. |
In other words, there is no space around the dash -- those are attribute bytes for the dash and then the second field; getting rid of the bytes is NOT an option. You could combine the two fields into one and use editing masks, but for 100 fields that could get quite tedious, and if the application users are already used to having two fields instead of 1 that could be a significant change for them. |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Perhaps you can describe your "skipping problem" rather than how to implement the "solution" you have so far? |
|
Back to top |
|
|
|