On Fri, 13 Oct 2023 22:57:18 -0500, Bruce Hewson <[email protected]>
wrote:
>A replacement STORAGE function for use in IPCS:-
For IPCS beginners, I strongly encourage learning a few basics IPCS subcommands
before taking code from others or writing IPCS REXX / IPCS exits. The large
number of IPCS subcommands and many args is confusing / overwhelming. It's all
extremely useful but you can live without them in the beginning.
There are many solutions to every problem and if the solution solves your
problem, then it's a good solution. Thiw STORAGE function works but it has some
limitations that should be corrected before providing for public use. For
instance, an additional solution or extra coding is needed to STORAGE("X", 100).
.
For IPCS beginners, here are my essentials suggestion for starting.
* ISPF IPCS option 6 (IPCS commands) has a more flexible "IP xxxx" that is used
from command lines which also stacks displays. For instance, IP CBFORMAT 0
STR(PSA) formats the PSA. Find CVT and issue IP CBFORMAT ### STR(CVT) without
exiting the first screen.
* Practice using offsets and pointers. E.g. IP LIST 0+32?+40?+80?-16?+20+16*30?
LEN(300)
? is 4 byte pointer versus % is 3 byte pointer
* Caution when using PF8 "M". IPCS pauses at each full screen. Scroll to the
end can take minutes formatting data you never look at.
* Learn to notice hex / decimal number problems: IP L 10 IP L X'10' IP L
10. IP L 10+10 IP L 10+x'10'
* Practice snooping around control blocks using CBFORMAT. For instance, start
with IP CBF 0 STR(PSA). From there PSAAOLD =>ASCBASXB =>ASXBFTCB => TCBTCB.
.
*Practice the same using offsets. Notice for instance the left of each line
from IP CBF 0 STR(PSA) has the offset for the first field. Recall the command
and insert +##? and change the STR(). Repeat for additional control blocks.
* Practice using IP LIST 0 len(500) to look at some storage. I think it
displays the subpool too.
* Practice using EQUATE. E.g. IP EQUATE PSA 0 STR(PSA) and use IP CBF PSA and
IP LIST PSA. Save a symbol for example IP EQUATE SAVE_PSA PSA.
* Practice understanding period. IP L F0. IP L F0 IP L 0. IP L 0
At this point, you should have enough to write some REXX and IPCS assembler
exits.
* REXX ADDRESS IPCS commands sent to IPCS instead of TSO
* REXX EVALUATE "EVAL 20. LEN(512) REXX(STORAGE(varname))" fills
variable varname with 512 bytes starting at x'20'. 512 is the limit.
* REXX attention routine should be written ensuring you don't get stuck in a
loop.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN