Defining the map set: DFHMSD

You create a map using the DFHMSD macro which defines a map set

About this task

Maps are assembled in groups called map sets. Typically you group all the maps used by a single transaction or several related transactions. (We discuss reasons for grouping maps further in Grouping maps into map sets.) A map set need not contain more than one map, incidentally, and in our simple example, the map set consists of just the “quick check” map.

One DFHMSD macro is placed in front of all the map definitions in the map set. It gives:
  • The name of the map set
  • Whether you are using the maps for output, input, or both
  • Defaults for map characteristics that you did not specify on the DFHMDI macros for the individual maps
  • Defaults for extended attributes that you did not specify in either the field or map definitions
  • Whether you are creating physical or symbolic maps in the current assembly (see Physical and symbolic map sets)
  • The programming language of programs that use the maps
  • Information about the storage that is used to build the maps
Here's the DFHMSD macro we need at the beginning of our example:
QCKSET   DFHMSD TYPE=MAP,STORAGE=AUTO,MODE=OUT,LANG=COBOL,TIOAPFX=YES
This map set definition tells BMS that the maps in it are used only for output, and that the programs using them are written in COBOL. It assigns the name QCKSET to the map set. TIOAPFX=YES causes inclusion of a 12-byte “prefix” field at the beginning of each symbolic map (you can see the effect in the second line in Figure 3). You always need this filler in command language programs and you should specify it explicitly, as the default is sometimes omission. MAP and STORAGE are explained in Sending BMS mapped output.
You need another DFHMSD macro at the end of your map definitions, to tell the assembler that it has reached the end of last map in the map set:
         DFHMSD TYPE=FINAL