Map placement rules
The primary placement of maps on the screen is from top to bottom. You can place maps side-by-side where space permits, provided you maintain the overall flow from top to bottom.
- The highest line on which the map might start is
determined as follows:
- If the map definition contains JUSTIFY=FIRST, BMS goes immediately to a new page (at Step 5), unless the only maps already on the page are headers placed there during overflow processing. In this case, BMS continues at Step 1.c.
- If the map specifies JUSTIFY=LAST, BMS starts the map on the lowest
line that allows it to fit on the page. If the map is a trailer map
or you are not intercepting overflows or you are already in overflow
processing, BMS uses all the space on the page. Otherwise, BMS places
the map as low on the page as it can while still retaining room for
the largest trailer map. If the map fits vertically using this starting
line, processing continues at Step 3 (the LINE option is ignored if JUSTIFY=LAST); if not, overflow occurs
(Step 5). Note: JUSTIFY=BOTTOM is the same as JUSTIFY=LAST for output operations with ACCUM. (There are differences without ACCUM and for input mapping; see SEND MAP ).
- If there is no vertical JUSTIFY value (or after any
overflow processing caused by JUSTIFY=FIRST has been completed), the
LINE operand is checked. If an absolute value for LINE is given, that
line is used, provided it is at or below the starting line of the
map most recently placed on the page. If the value is above that point,
BMS goes to a new page at Step 5.
If LINE=NEXT, the first completely unused line (below all maps currently on the page) is used. If LINE=SAME, the starting line of the map sent most recently is used.
- BMS now checks that the map fits vertically on the screen, given its tentative starting line. Here again, BMS uses all of the space remaining if the map is a trailer map, if you are not intercepting overflows or if you are already in overflow processing. Otherwise, BMS requires that the map fit and still leave space for the largest trailer map. If the map does not fit vertically, BMS starts a new page (Step 5).
- Next, BMS checks whether the map fits horizontally,
assuming the proposed starting line. In horizontal positioning, the
JUSTIFY option values of LEFT and RIGHT come into play. LEFT is the
default, and means that the COLUMN value refers to the left-hand side
of the map. A numeric value for COLUMN tells where the left edge of
the map should start, counting from the left side of the page. COLUMN=NEXT
starts the map in the first unused column from the left on the starting
line. COLUMN=SAME means the left-hand column of the map most recently
placed on the screen which also specified JUSTIFY=LEFT and which was
not a header or trailer map.
JUSTIFY=RIGHT means that the COLUMN value refers to the right-hand edge of the map. A numeric value tells where the right edge of the map should start, counting from the right. COLUMN=NEXT means the first available column from the right, and COLUMN=SAME is the right-hand column of the map most recently placed which had JUSTIFY=RIGHT and was not a header or trailer.
If the map does not fit horizontally, BMS adjusts the starting line downward, one line at a time, until it reaches a line where the map does fit or overflow occurs. Processing resumes with the vertical check (Step 2) after each adjustment of the starting line.
- If the map fits, BMS adds it to the current page
and updates the available space, using the following rules:
- Lines above the first line of the map are completely unavailable.
- If the map specifies JUSTIFY=LEFT, the columns from the left edge of the page through the right-most column of the map are unavailable on the lines from the top of the map through the last line on the page that has anything on it (whether from this map or an earlier one).
- If the map specifies JUSTIFY=RIGHT, the columns between the right-hand edge of the page and the left-hand edge of the map are unavailable on the lines from the top of the map through the last line of the page that has anything on it.
Figure 1. Successive placement of maps on a page, showing space made unavailable by each 
- When the current map does not fit on a page, BMS determines whether it should return control to your program. If you have asked for control at overflow and you are not already in overflow processing, BMS returns control as described in Page breaks: BMS overflow processing. Otherwise, BMS disposes of the current page according to the disposition option you have established, starts a new page, and resumes processing for the map that would not fit at Step 1.