Another tip: If, like me, you are really bad at memorizing the IPCS command 
syntax, you can write a small REXX which uses "address IPCS" to run all those 
commands which you found useful. If you redirect the output into a PO dataset 
(one member per command) you can then look through these reports to analyze 
what's going on.

-----Ursprüngliche Nachricht-----
Von: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> Im Auftrag von 
Jon Perryman
Gesendet: Dienstag, 17. Oktober 2023 04:30
An: IBM-MAIN@LISTSERV.UA.EDU
Betreff: [IBM-MAIN] IPCS beginners primer WAS: IPCS and Rexx

On Fri, 13 Oct 2023 22:57:18 -0500, Bruce Hewson <bruce_hew...@hotmail.com> 
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 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

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

Reply via email to