IMS: Interview Questions for IMS-DC
By Abhishek
Q: What is an I/O PCB.
A: It is a PCB used by a program to retrieve or send message segments
from the IMS message queues.
It must be the first PCB MASK that appears in the linkage section
of a program that intends to use IMS DC services.
Q: How does a MPP retrieve message from IMS message queue.
A: The MPP issues a DC GU call (A call that use I/O PCB) to retrieve
the input message from the IMS message queue. When the program
gets a QC status code as a result of its DC GU call, it knows that
there are no more messages for it on the queue and it ends.
Q: How des a MPP retrieve multiple-segment input messages.
A: The MPP issues a DC GU call to retrieve the first segment of
the message and then issues DC GN calls repeatedly until it
encounters a QD status code, which means that there are no more
message segments left for the current messgae. To retrieve
the next message, the process is repeated. A QC status code
from DC GU will mean that there are no more messages left.
Q: What will happen if you issue another DC GU call before you issue
all DC GN calls necessary to retrieve all the segments of a single
message.
A: All the remaing segments will be lost and the first segment from the
next message will be retrieved.
Q: How do you define the I/O area for an input message segment.
A: It is defined as follows:
01 WS-INPUT-MESG-AREA.
10 WS-LL PIC S9(3) COMP.
10 WS-ZZ PIC S9(3) COMP.
10 WS-TEXT PIC X(999).
Note that the first 9 bytes in WS-TEXT contain the transaction code.
In a multiple-segment input messages, the transaction code is only
present in the first segment, not subsequent ones.
Q: How do you send an output message.
A: You send output message segments by issuing DC ISRT calls. Before
you issue a DC ISRT call, you build the output message segment in
the I/O area you name on the call.
Q: How do you send a multiple-segment output message.
A: By issuing a separate DC ISRT call for each message segment. IMS
considers a unbroken series of DC ISRT calls to make up a single
message. The series is broken when your program issues a DC GU call,
which signals to IMS that your program is ready to process a new
input message. IMS hold all of the segments your program inserts in
the destination's terminal output queue until the program has finished
processing the input message.
Q: How do you define the I/O area for an output message segment.
A: It is defined as follows:
01 WS-OUT-MESG-AREA.
10 WS-LL PIC S9(3) COMP VALUE +706.
10 WS-ZZ PIC S9(3) COMP VALUE ZERO.
10 WS-TEXT PIC X(702).
Note that it is your responsiblity to populate WS-LL correctly.
Q: What is a format set.
A: A group of related DIF, DOF, MID, MOD is called a format set.
Q: What is device format.
A: The group of statements that define the screen layout for a terminal
are called a device format. In other words, a group of related DIF
and DOF is device format.
Q: How do you dynamically change field attributes.
A: On the MFLD in MOD, code ATTR=YES. MFS will now assume that the first two
bytes of the message field will contain the attribue control
information. Make sure that the LTH parameter in MFLD is now 2 bytes
more than the corressponding DFLD LTH. Now the program can change
the first two bytes to change the field attributes. eg if you move
left brace { to the first byte, it would mean that cursor is
positioned on this field. Similarly hexadecimal value 80 means that
default attribues should be used.
Q: How can you send program output to a MOD belonging to different Format set.
A: The application program processes the input message and formats and
sends a return output message. By default, MFS uses the MOD from the
current format set to map the output message fields back to the device.
However if the out message needs to fo to a MOD belonging to a different
format set, the DC ISRT call for the output message is coded with an
additional argument that specifies the name of the new mod. Eg
CALL 'CBLTDLI' USING WS-ISRT, LS-IO-PCB-MASK, WS-OUT-MESG, WS-MOD-NAME
Q: How do you assign PF keys so that they can initiate a new MOD.
A: By setting PFK parameter of the DEV statement, which assigns literal
values to the enabled PF keys:
PKF=(PFKFIELD,'/FORMAT MOD1','/FORMAT MOD2','/FORMAT MOD2')
That way if user presses PF1, screen associted with MOD1 will be displayed.
Q: What is modified data tag. How is it set.
A: MDT is a field attribute, which indicates whether or not the data in
the field has been changed by the terminal user since the screen was
last sent to the device. It is set by ATTR=(MOD/NOMOD). If the attribute
is set to MOD, it means that the field MDT is set on even if the user
has not modified the field. Otherwise the MDT is set on only when the
user modifies the data in some way.
Send me an email