On Mon, 14 May 2018 00:12:54 +0000, Jesse 1 Robinson <[email protected]> 
wrote:

>I was hopeful that the IEZIOB would include the missing fields. Unfortunately 
>it does not. Before opening an SR with IBM, I thought I'd give the List one 
>more shot. The $BUFFER macro changed in z/OS 2.2; we're jumping from 2.1 to 
>2.3 using code carried unmodified for decades (!).
>
>The following code demonstrates the difference. The same job will assemble 
>successfully under 2.1 but fail under 2.3--and presumably 2.2 as well. There 
>is no executable code. The segment just illustrates the assembly errors from 
>$BUFFER symbols missing at 2.2+.
>
>//ASM    EXEC PGM=ASMA90,REGION=32M               
>//SYSTERM  DD  SYSOUT=* 
>//SYSPRINT DD  SYSOUT=* 
>//SYPUNCH  DD  SYSOUT=* 
>//SYSLIN   DD  DUMMY                              
>//SYSLIB   DD  DISP=SHR,DSN=OSRxx.SHASMAC <=== Use SYSLIB for appropriate z/OS 
>level    
>//SYSIN  DD  *                                    
>TEST$BUF AMODE 31                                 
>TEST$BUF RMODE ANY                                
>TEST$BUF CSECT                                    
>         B     STEPSTRT-TEST$BUF(,15) SKIP HEADER 
>         DC    AL1(STEPSTRT-*)                    
>         DC    C'TEST$BUF_&SYSDATE._&SYSTIME'     
>STEPSTRT DS    0H                                 
>         $BUFFER                                  
>         END                                      
>
>.
>.
>J.O.Skip Robinson
>Southern California Edison Company
>Electric Dragon Team Paddler 
>SHARE MVS Program Co-Manager
>323-715-0595 Mobile
>626-543-6132 Office ⇐=== NEW
>[email protected]

In addition to the IEZIOB MACRO mentioned by Jim Mulder, you also need to add 
two additional equates to get programs that use $BUFFER to Assemble correctly:
         IEZIOB ,                      MVS Input/Output Block   
IOBDSECT EQU   IOBSTDRD,0,C'J'         Start of I/O Block DSECT 
IOBLENG  EQU   IOBEXTEN-IOBSTDRD+L'IOBSEEK  Length of IOB       

I know this works because I had to code this in some programs that I support 
when we went to z/OS 2.2.

Or you can use the JES2 $MODULE MACRO and specify $BUFFER with it, like this:
         $MODULE TITLE='JES2 Macros',                                  +
               $BUFFER                                                  

The $MODULE MACRO contains code that will include IEZIOB and generate the above 
equates automatically.

Some comments in $MODULE:
FUNCTION (when used for the 'mapping-only' case):        
                                                         
      When coding an assembly module that is not part of 
      the JES2 product or a JES2 installation exit, the  
      module-defining functions of $MODULE are not       
      required.  However, the JES2 control block mappings
      may be required, such as in SDSF or SMF exit code. 
                                                         
      In those modules, often the individual JES2 mapping
      macros can be used, as for MVS blocks.  However,   
      sometimes the $MODULE macro has added equates or   
      other definitions to the JES2 mappings or, more    
      likely, to the MVS mappings that the JES2 mappings 
      depend on.  For this reason, the $MODULE macro can 
      be used to expand any JES2 control blocks, and/or  
      any of the MVS control blocks that the JES2 product
      uses, into a module that is otherwise 'non-JES2'.  
                                                         
      Only the MVS control blocks that are required in   
      the JES2 product are supported by $MODULE.  And    
      only the operands on those mapping macros that JES2
      requires are supported.                            

-- 
Dale R. Smith 

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to