Format of the IMS MFS message input descriptor (MID)

The IMS™ MFS message input descriptor (MID) and message output descriptor (MOD) that are used to read and write forms to terminals for a deferred program-to-program message switch share the same basic format. The table below shows the record layout for a MID. For an MFS MOD, the IMS transaction name and the value of the COND parameter (form name) are reversed. In addition, some fields in the MOD are ignored.

Table 1. Format of the MFS message input descriptor (MID)
Field Length in bytes Type of data Description
Segment length 2 Binary The length of the segment.
Reserved 2 Binary Reserved for IMS.
IMS transaction name 8 Character The IMS transaction name for the EGL program.
Reserved 1 Character Reserved for Rational® COBOL Runtime for zSeries.
Form name 8 Character Value for MFS COND parameter from the MID of a deferred program-to-program message switch.
Additional Rational COBOL Runtime for zSeries fields 51 Variable A group of fields that Rational COBOL Runtime for zSeries uses to validate the form. The total length of all fields prior to the start of the program form fields is 72 bytes.
Program form fields Variable Variable This area contains the fields defined for the EGL form.
The following example shows the COBOL definition for a form message input descriptor (MID) for a deferred program-to-program message switch. Keep in mind that PL/I requires a 4-byte length field rather than the 2-byte length field used for COBOL. Refer to the IMS/VS documentation for your system for additional information. The specific field names are used for illustrative purposes only; the actual field names might vary in the generated code.
* CopyMember ELAAHMMI
 01 EZEMAP-IO-AREA.
   05 EZEMAP-HEADER.
     10 EZEMAP-LL                   PIC S9(4) COMP.
     10 EZEMAP-ZZ
       15 EZEMAP-Z1                 PIC X(1).
       15 EZEMAP-Z2                 PIC X(1).
     10 EZEMAP-ZZ-BIN               REDEFINES EZEMAP-ZZ
                                    PIC S9(4) COMP.
     10 EZEMAP-MID-TRANCODE.                            Note 1
       15 EZEMAP-MOD-MAP            PIC X(8).
     10 FILLER                      PIC X(1).
     10 EZEMAP-MOD-TRANCODE.
       15 EZEMAP-MID-MAP            PIC X(8).
     10 EZEMAP-STRUCTURE-TYPE       PIC X(4).
       88 EZEMAP-IS-A-MAP           VALUE "MAP ".
     10 EZEMAP-SCA                  PIC X(2).           Note 2
     10 EZEMAP-SCA-BIN              REDEFINES EZEMAP-SCA
                                    PIC S9(4) COMP.
     10 EZEMAP-EZEAID               PIC X(2).           Note 3
     10 EZEMAP-HELP-PF-KEY          PIC X(2).
     10 EZEMAP-BYPASS-PF-KEYS.
       15 EZEMAP-BYPASS-PF-KEY      PIC X(2)
                                    OCCURS 5 TIMES.
     10 EZEMAP-HELP-MAP-NAME        PIC X(8).
     10 EZEMAP-CURSOR.
       15 EZEMAP-ROW                PIC S9(4) COMP.
       15 EZEMAP-COL                PIC S9(4) COMP.
     10 EZEMAP-GEN-DATE-TIME.
       15 EZEMAP-DATE               PIC X(8).
       15 EZEMAP-TIME               PIC X(8).
     10 EZEMAP-SSM-STATUS-ATTR      PIC X(2).           Note 4
       88 EZEMAP-SSM-PREMODIFIED    VALUE X"0081".
     10 EZEMAP-SSM-STATUS           PIC X(1).           Note 5
       88 EZEMAP-SSM-INVALID        VALUE X"40" X"FF" X"00".
       88 EZEMAP-SSM-WSR-SAVED      VALUE "C".
       88 EZEMAP-SSM-WSR-MAP-SAVED  VALUE "D".
       88 EZEMAP-SSM-FILL-CHAR      VALUE X"FF".
* Copymember for form group formGroup
 01 EZEMFS-form                     REDEFINES EZEMAP-IO-AREA.
   05 EZEMFS-form-HEADER            PIC X(72).          Note 6
   05 EZEMAP-DATA.
     10 formField.                                      Note 7
       15 EZEATTR                   PIC X(08).
       15 EZEDATA                   PIC ....            Note 8
       .
       .
       .
The following notes apply to this example:
  1. For a MOD, the transaction name and the map name are reversed. If a conversational transaction is started by using an IMS /FORMAT command, IMS removes the transaction name from the data stream.
  2. In a MID, SCA is set to blanks. In a MOD, SCA must be initialized to binary zeros by the program that inserts the MOD.
  3. In a MOD, the EZEAID fields through the EZEMAP-GEN-DATETIME fields can be left blank. Any value placed in these fields is not returned on input.
  4. The transferring program must set EZEMAP-SSM-PREMODIFIED to TRUE to ensure that the value of EZEMAP-SSM-STATUS is transmitted to the target program.
  5. If the transferring program puts data in the work database for the target nonconversational program to use in initializing its input record, it should use the level 88 EZEMAP-SSM-WSR-SAVED to set this field. Otherwise, this field should be initialized using the level 88 EZEMAP-SSM-INVALID.

    The target program should test the value of EZEMAP-SSM-STATUS to determine if there is data in the work database to restore. If either EZEMAP-SSM-WSR-SAVED or EZEMAP-SSM-WSR-MAP-SAVED is true, there is a record in the work database to restore.

  6. Form is the actual name of the form defined in EGL, the name specified by the alias property for the form, or the alias name if one had to be assigned at generation time.
  7. formField is the actual name of a field defined in the form or the alias name if one had to be assigned at generation time. If the formField is an array, an OCCURS clause is used.
  8. The PIC representation varies based on the type and length of the form field.
EGL generates a COBOL copybook of the MID/MOD associated with a FormGroup. The name of the copybook part is the FormGroup name, or the alias for the FormGroup if one was specified. The non-EGL program can use this copybook to correctly define the message format that the EGL program needs in the input form and the message format received when an EGL program transfers control to a non-EGL program.

Feedback