Thursday, December 22, 2011

COBOL : What is BLW and BLL ?

BLW stands for Base locator for working storage cell and BLL stands for base locator for Linkage cell. BLWs are used to address your Working Storage (WS). BLWs are assigned for every 4K of WS storage. In other words, if your WS was 19K in size, you would have/need 5 BLWs numbered BLW 000 to BLW 004 (one for every 4K of WS). Each BLW is used as a base register to locate the different parts of the WS.

BLWs are stored in the variable portion of your COBOL program's Task Global Table (TGT). You can see a layout of the TGT in your compilation listing, usually at the end. depending on the COBOL compiler, either general purpose register 9 (COBOL LE) of general purpose register 13 (COBOL2 non-LE and the old COBOL compiler) will point to the TGT. If you are using LE, you can also find the address of the TGT in the dump by using a displacement of X'5C' from the contents of register 13 which should point to the Dynamic (register) Save Area.

If you use the displacement from the COBOL compile listing for the program, you will find the displacement into the TGT where the first BLW starts. (You can also find the address of where the WS starts at TGT+X'114'and the start of the associated program at TGT+X'100'). Having a BLW in low-values can be an indication that the WS was acquired dynamically and the process did not complete. You need to review your setup.

Finally, BLLs are similar in concept except they address the Linkage Section (LS). You have a BLL cell for every 01 level in the LS except if the 01 is greater than 4K bytes, then you will have a BLL cell for that 01 for every 4K. The BLLs are also in the TGT right after the BLWs and begin with BLL 000.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.