Discussion:
Problem with $BUFFER control block
(too old to reply)
Jesse 1 Robinson
2018-05-12 16:54:25 UTC
Permalink
Raw Message
I'm embarrassed to ask this question, but I've been over the same ground many times to no avail. We have carried several SMF exits from release to release without complications. In moving from z/OS 2.1 to 2.3, we suddenly get an assembly error in $BUFFER that makes no sense:

9476 $BUFFER
000018 9935+BUFIOBST DS XL(IOBLENG) Defin
ASMA068S Length error - L(IOBLENG)
ASMA435I Record 484 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9941+TPBMXREC EQU IOBINCAM,1,C'C' Max R
ASMA044E Undefined symbol - IOBINCAM
ASMA435I Record 490 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9942+IOBECBSV EQU IOBINCAM+1,1 I/O C
ASMA044E Undefined symbol - IOBINCAM
ASMA435I Record 491 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9943+TPBLCCC EQU IOBXTENT,1,C'C' Last
ASMA044E Undefined symbol - IOBXTENT
ASMA435I Record 492 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9944+TPBLCCAD EQU IOBXTENT,4,C'A' Addr
ASMA044E Undefined symbol - IOBXTENT
ASMA435I Record 493 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9945+IOBXTENT EQU IOBM,1,C'C' DEB e
ASMA044E Undefined symbol - IOBM
ASMA435I Record 494 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9952+ ORG BUFIOBST+(IOBSEEK-IOBDSEC
ASMA080E Statement is unresolvable
ASMA435I Record 501 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
10013+ ORG BUFIOBST+(IOBSEEK-IOBDSEC
ASMA080E Statement is unresolvable
ASMA435I Record 563 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
000050 10085+HDBID DS CL4'HDB' Eyecatche
0000D8 10257+ DC 0S((BUFSTART-BFPDSECT)-(B
ASMA028E Invalid displacement
ASMA435I Record 809 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
Assembler Done 9 Statements Flagged / 12 was Highest Severity Code

I can't understand the undefined symbols. I'm able to recreate the 2.1 exit code using the 2.1 release libraries. Symbol IOBLENG for example simply is not defined in the 2.3 release even though the symbol is used. Am I missing something transparently obvious?

.
.
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
***@sce.com<mailto:***@sce.com>


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Jim Mulder
2018-05-12 17:11:34 UTC
Permalink
Raw Message
The $BUFFER macro contains this line:

* $Z22LCKP=64BCKPT HJE77A0 140821 TJW: Use MVS IOB DSECT *

So I would guess that, starting with z.OS 2.2, you need to include
the SYS1.MACLIB(IEZIOB) DSECT in your program.


Jim Mulder z/OS Diagnosis, Design, Development, Test IBM Corp.
Poughkeepsie NY
Post by Jesse 1 Robinson
I'm embarrassed to ask this question, but I've been over the same
ground many times to no avail. We have carried several SMF exits
from release to release without complications. In moving from z/OS
2.1 to 2.3, we suddenly get an assembly error in $BUFFER that makes no
9476 $BUFFER
000018 9935+BUFIOBST DS XL(IOBLENG) Defin
ASMA068S Length error - L(IOBLENG)
ASMA435I Record 484 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9941+TPBMXREC EQU IOBINCAM,
1,C'C' Max R
ASMA044E Undefined symbol - IOBINCAM
ASMA435I Record 490 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9942+IOBECBSV EQU IOBINCAM+1,1 I/O
C
Post by Jesse 1 Robinson
ASMA044E Undefined symbol - IOBINCAM
ASMA435I Record 491 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9943+TPBLCCC EQU IOBXTENT,
1,C'C' Last
ASMA044E Undefined symbol - IOBXTENT
ASMA435I Record 492 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9944+TPBLCCAD EQU IOBXTENT,
4,C'A' Addr
ASMA044E Undefined symbol - IOBXTENT
ASMA435I Record 493 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9945+IOBXTENT EQU IOBM,1,C'C' DEB e
ASMA044E Undefined symbol - IOBM
ASMA435I Record 494 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9952+ ORG BUFIOBST+
(IOBSEEK-IOBDSEC
ASMA080E Statement is unresolvable
ASMA435I Record 501 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
10013+ ORG BUFIOBST+
(IOBSEEK-IOBDSEC
ASMA080E Statement is unresolvable
ASMA435I Record 563 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
000050 10085+HDBID DS CL4'HDB'
Eyecatche
Post by Jesse 1 Robinson
0000D8 10257+ DC 0S((BUFSTART-
BFPDSECT)-(B
ASMA028E Invalid displacement
ASMA435I Record 809 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
Assembler Done 9 Statements Flagged / 12 was Highest Severity Code
I can't understand the undefined symbols. I'm able to recreate the
2.1 exit code using the 2.1 release libraries. Symbol IOBLENG for
example simply is not defined in the 2.3 release even though the
symbol is used. Am I missing something transparently obvious?
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Jesse 1 Robinson
2018-05-14 00:11:36 UTC
Permalink
Raw Message
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
***@sce.com

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Jim Mulder
Sent: Saturday, May 12, 2018 10:13 AM
To: IBM-***@LISTSERV.UA.EDU
Subject: (External):Re: Problem with $BUFFER control block

The $BUFFER macro contains this line:

* $Z22LCKP=64BCKPT HJE77A0 140821 TJW: Use MVS IOB DSECT *

So I would guess that, starting with z.OS 2.2, you need to include
the SYS1.MACLIB(IEZIOB) DSECT in your program.


Jim Mulder z/OS Diagnosis, Design, Development, Test IBM Corp.
Poughkeepsie NY
Post by Jesse 1 Robinson
I'm embarrassed to ask this question, but I've been over the same
ground many times to no avail. We have carried several SMF exits from
release to release without complications. In moving from z/OS
2.1 to 2.3, we suddenly get an assembly error in $BUFFER that makes no
9476 $BUFFER
000018 9935+BUFIOBST DS XL(IOBLENG) Defin
ASMA068S Length error - L(IOBLENG)
ASMA435I Record 484 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9941+TPBMXREC EQU IOBINCAM,
1,C'C' Max R
ASMA044E Undefined symbol - IOBINCAM
ASMA435I Record 490 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9942+IOBECBSV EQU IOBINCAM+1,1 I/O
C
Post by Jesse 1 Robinson
ASMA044E Undefined symbol - IOBINCAM
ASMA435I Record 491 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9943+TPBLCCC EQU IOBXTENT,
1,C'C' Last
ASMA044E Undefined symbol - IOBXTENT
ASMA435I Record 492 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9944+TPBLCCAD EQU IOBXTENT,
4,C'A' Addr
ASMA044E Undefined symbol - IOBXTENT
ASMA435I Record 493 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9945+IOBXTENT EQU IOBM,1,C'C' DEB e
ASMA044E Undefined symbol - IOBM
ASMA435I Record 494 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
9952+ ORG BUFIOBST+
(IOBSEEK-IOBDSEC
ASMA080E Statement is unresolvable
ASMA435I Record 501 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
10013+ ORG BUFIOBST+
(IOBSEEK-IOBDSEC
ASMA080E Statement is unresolvable
ASMA435I Record 563 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
000050 10085+HDBID DS CL4'HDB'
Eyecatche
Post by Jesse 1 Robinson
0000D8 10257+ DC 0S((BUFSTART-
BFPDSECT)-(B
ASMA028E Invalid displacement
ASMA435I Record 809 in SYS1.SHASMAC($BUFFER) on volume: R23DLB
Assembler Done 9 Statements Flagged / 12 was Highest Severity Code
I can't understand the undefined symbols. I'm able to recreate the
2.1 exit code using the 2.1 release libraries. Symbol IOBLENG for
example simply is not defined in the 2.3 release even though the
symbol is used. Am I missing something transparently obvious?
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dale R. Smith
2018-05-14 01:53:02 UTC
Permalink
Raw Message
Post by Jesse 1 Robinson
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
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 ***@listserv.ua.edu with the message: INFO IBM-MAIN
Jesse 1 Robinson
2018-05-16 18:37:14 UTC
Permalink
Raw Message
Thanks to replies from friends on this list, I have the exit cleanly assembled, but too early to actually test it. I always hear that there are various ways to skin a cat--ouch--but I took what seemed to be the path of least astonishment. Incorporated $BUFFER in $MODULE thus:



COPY $HASPGBL

$MODULE , REQUIRED AS OF Z/OS 2.2 *

$TQE, *

$BUFFER, *

$SJB, *

$JCT



.

.

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

***@sce.com





-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of John McKown
Sent: Monday, May 14, 2018 11:52 AM
To: IBM-***@LISTSERV.UA.EDU
Subject: (External):Re: IBM-MAIN Digest - 12 May 2018 to 13 May 2018 (#2018-133)
Date: Mon, 14 May 2018 00:12:54 +0000
Subject: Re: Problem with $BUFFER control block
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
(!).
You would have to add the IEXIOB macro to your test case, but on our
2.2 system the dsect generated by IEZIOB DSECT=YES has a label of
"IOB" and the code in $BUFFER gets offsets using the label IOBDSECT.... code like "
IOBDSECT isn't defined in either IEZIOB or $BUFFER.
​But it is defined in $MODULE.​
Tom Russell
“Stay calm. Be brave. Wait for the signs” — Jasper FriendlyBear “… and
remember to leave good news alone.” — Gracie HeavyHand
--

We all have skeletons in our closet.

Mine are so old, they have osteoporosis.



Maranatha! <><

John McKown



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Loading...