IBM Support

JES2 $BUFFER macro no longer contains IOB macro

Question & Answer


Question

Why does $BUFFER macro no longer contain the IOB mapping macro within it?

Cause

For decades, JES2 defined the IOB mapping macro fields within the JES2 $BUFFER (as duplicate label names). However, this duplicate labeling lead to coding complications relating to the mapping and usage of IOB fields. For example, it implied that whenever JES2 code had a need to reference the IOB, we would need to include the $BUFFER macro into the respective part. This requirement is because the $MODULE macro does not allow duplicate labels within any macro used by $MODULE.

At V2R2, the explicit IOB definitions were removed from the JES2 $BUFFER macro. These fields were always defined in the MVS IOB control block (mapping).

Answer

  1. It was always recommended that users use the $MODULE macro to include JES2 macros within their exits and/or modules. Doing it in this way allows $MODULE to manage all macro dependencies.  Use $MODULE to define the $BUFFER macro to ensure it assembles properly such as the following example:
    $MODULE ($BUFFER, GEN)
  2. After using $MODULE, if you need to address IOB fields in the $BUFFER, then you need to add a USING statement to address the desired IOB fields; such as the following example:
    USING IOBDSECT, BUFIOBST
  3. If you only need to access IOB fields, then use the IOB macro instead of $BUFFER

[{"Product":{"code":"SWG90","label":"z\/OS"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"5752SC1BH - JOB ENTRY SUBSYSTEM 2 (JES2)","Platform":[{"code":"PF035","label":"z\/OS"}],"Version":"2.2;2.3","Edition":"","Line of Business":{"code":"LOB56","label":"Z HW"}}]

Document Information

Modified date:
03 September 2021

UID

isg3T1027555