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