MFS Conversion Issues

Some issues you might encounter with regard to MFS include but are not limited to:

MFS null character

Issue

On the mainframe, the MFS null character, which is used to truncate fields, is defined as x'3F'. In an IMS-enabled enterprise server, the MFS null character defaults to x'1A', which is the ASCII equivalent of x'3F'.

Resolution

You can change the MFS null character to another character or hex value by editing the enterprise server instance in Enterprise Server Administration and specifying the value in the MFS null character field on the Server, Properties, MSS, IMS, TM tab.

Important: If you change the null character, and your programs downloaded from the mainframe check for x'3F', update the program code to check for the new null value instead.
MFS attributes

Issue

If you have used character literals to specify the values of MFS attributes, the resulting values will be different when you compile using ASCII from those that you obtain when compiling using EBCDIC. For example, the two code fragments below give the same results when compiling with the EBCDIC character set. When using ASCII, however, the first example will give different behavior: '{A' now translates as hexadecimal 7B41 rather than C0C1.

Attributes specified using character literals:

05 ATTRIBUTE-VARIABLES.
   10 CURSOR-ATTR          PIC X(2) VALUE '{A'. 
   10 ERROR-ATTR           PIC X(2) VALUE '{I'.
   10 OK-ATTR              PIC X(2) VALUE ' A'.
   10 PROT-ATTR            PIC X(2) VALUE ' 1'.

Attributes specified using hexadecimal/binary notation:

05 ATTRIBUTE-VARIABLES.
   10 CURSOR-ATTR          PIC X(2) VALUE X'C0C1'.
   10 ERROR-ATTR           PIC X(2) VALUE X'C0C9'.
   10 OK-ATTR              PIC X(2) VALUE X'00C1'.
   10 PROT-ATTR            PIC X(2) VALUE X'00F1'.

Resolution

To facilitate the migration of programs, you can specify at the level of the transaction or the system whether MFS attribute values have been coded using character or binary notation. (The value specified for the transaction definition overrides that for the system.)

Where you specify that the attribute values have been coded as character literals, Enterprise Server automatically translates the values of MFS attributes to those that would be used if the program were compiled as EBCDIC. For example, the hexadecimal 7B41 value produced by assigning '{A' to an attribute and compiling with ASCII, is converted to the correct C0C1 value. Where you specify attribute values as binary data, Enterprise Server takes no action.

As an alternative solution, edit your programs to use x'nn' notation (as used in the second example above) instead of characters.

MFS fill characters

Issue

In MFS source, input fill characters are specified in hex notation. For example:
MFLD  HEX102,LTH=030,FILL=X'DF'
Enterprise Server automatically converts those values to EBCDIC at run time, but your COBOL programs examine the field for X'DF'.

Resolution

To maintain the hexadecimal value of the fill character, i.e., do not convert it, you must generate the MFS using the HEXFILL directive. See HEXFILL for more information.