When you run COBOL programs, the programs and the data that they use reside in virtual storage. Storage that you use with COBOL can be either below the 16-MB line or above the 16-MB line but below the 2-GB bar. Two modes of addressing are available to address this storage: 24-bit and 31-bit.
Addressing mode (AMODE) is the attribute that tells which hardware addressing mode is supported by your program: 24-bit addressing, 31-bit addressing, or either 24-bit or 31-bit addressing. This attribute is AMODE 24, AMODE 31, or AMODE ANY, respectively. The object program, the load module, and the executing program each has an AMODE attribute. All Enterprise COBOL object programs are AMODE ANY.
Residency mode (RMODE) is the attribute of a program load module that identifies where in virtual storage the program will reside: below the 16-MB line, or either below or above. This attribute is RMODE 24 or RMODE ANY.
Significance of 16MB:
Nothing but 24 ‘1’ in binary format. That is the maximum value that can be stored in a 24-bit (3 byte) area.
With AMODE = 31, the maximum address value will be 2 GB (31 ‘1’ in binary format).
COBOL programs when compiled get translated into assembler first and then the assembler program is compiled to generate the load. Assembler uses something called registers to access memory locations. Each register is 4 bytes long (32-bits). In AMODE=24, only the first 3 bytes of the register are used for addressing. In AMODE=31, all 4 bytes except the leftmost is used for addressing. The extreme left byte is the sign bit.
Now this is conventional 32-bit machines. In 64-bit machines, the size of the register is 8 bytes. But so far, 64-bit OS still allows the programs to be loaded with AMODE=31.
You may also like to look at: