[Topic changed as this is more related to that new thread] There is of course a significant influence from what one is familiar with, but I also have plenty of experience of z/OS and ISPF. I started using TSO as a pre-university student at IBM in 1974 in the PL/I Optimiser team. The only conditional command provided with the CLIST language at the time was WHEN to test the return code, with no way of testing parameter values, so the first thing I did once I had learned how to write reentrant assembler was implement TSO commands to handle IF/THEN/ELSE logic in CLISTs, including nesting, which the Hursley TSO support team then put into production for the PL/I department a month after I joined IBM (although those commands disappeared later, probably when PL/I transferred away from Hursley). And I've used ISPF from when it was SPF, and I wrote software primarily for z/OS and its predecessors (including MFT, MVT, VS1, VS2 and MVS) for my entire career, even though for the last 37 I used VM/CMS as my primary working environment.
Of course you can invoke commands and macros in ISPF, and for code which is self-contained and written in REXX there is very little difference from CMS, but for a complex process like building a product I found it far easier to handle in CMS. You don't have to be aware of data set space allocations on CMS, nor whether a data set is already allocated. In CMS you can create a file in any format just by writing to it (as in Unix), and you can read records efficiently by record number, which for example makes it very simple to use a binary chop to locate a record in a sorted control file. CMS is also much more systematic about the way in which command output and messages are trapped, with fewer special cases. I also like the way that in CMS you have your own clean environment, so you aren't having to filter your own stuff out of all those other data sets, users and jobs running on the same system. CMS Pipelines is immensely powerful. Unix cannot compare. You can write a basic Pipelines HTTPS web server in about 30 lines. I helped to develop the VM Charlotte web browser, for which I rewrote the HTML formatting in systems programming C, which all runs as a CMS Pipeline. Within IBM, we also had TSO Pipelines, based on an earlier internal level of the same code, and I made heavy use of it in our MVS jobs, as it greatly simplified many tasks. IBM included a variant of that as BatchPipeWorks in BatchPipes but then sold that off to a vendor. If z/OS had TSO Pipelines at the same level as current CMS Pipelines, it would be a far more programmer-friendly environment. Our XEDIT environment had a COMPARE macro which skipped to the next difference, but for review purposes we used a diff-like tool "HIGHLITE" based on SUPERC (a Toolkit program owned and maintained by my HLASM team, and used by ISPF to implement SUPERCE and SRCHFOR) which browsed a listing in which blocks of deleted or replaced lines had a red background and added or replacement lines had a green background. The browse process was written in REXX using the FSX tool (I think that is another of Mike Cowlishaw's contributions) for full screen 3270 output, and to make it easy for users, the user interface emulated the IBM internal enhanced BROWSE command. I have some familiarity with the SUPERC code myself as I added the ASCII support in 2012, as well as other minor fixes. I very rarely needed to use CP TRACE but it requires minimal preparation and ensures that the debugging process was cleanly isolated from the program being debugged, and it is not limited to programs for which we had the source code. On a couple of occasions the "store into" trace helped me solve an overwrite very quickly. For source-level debugging we used ASMIDF, another Toolkit program owned and maintained by the HLASM team. Our build process created the ASMLANGX files, so we didn't need any special preparation to run HLASM under ASMIDF. Our process for trying a change to HLASM was basically to CREATE a private SFS directory for the fix, access it as file mode B (ahead of any previous uncommitted changes optionally accessed as C and the production level accessed as E), edit the relevant modules, save them in the fix directory, then build them. By default our build command built anything in the fix directory for all four platforms, but one could just build selected parts and could optionally specify the target platform CMS to skip building for the other three platforms. It's then one command to link for a given platform, then it's ready to run some assembly to test it. As the build process itself runs the assembler, there was some logic in there to make sure that the production level is used for the build, temporarily renaming any executable assembler module in the fix directory. The longest step of the build was dynamically creating the product internal MACLIB from the latest level (earliest visible level in the file mode sequence) of each macro, which was a few seconds if it hadn't been done recently (so the files were not in cache), then the actual assemblies ran at two or three per second. Of course with enough programming you can do most things on most platforms. But for example HLASM like its predecessors provides a documented command to invoke the assembler on CMS, but the equivalent TSO assembler prompter was dropped long ago and you have to use a script which works out naming conventions, allocates the appropriate files (creating new data sets if necessary, requiring guesses at appropriate space allocations) and then calls the assembler with the relevant options. Jonathan Scott -----Original Message----- From: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU> On Behalf Of Jon Perryman Sent: 05 September 2025 02:02 To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Using (0) to suppress alignment checks in HLASM On Thu, 4 Sep 2025 10:18:13 +0100, Jonathan Scott <jonathan.scott...@gmail.com> wrote: > I think any access would fall disappointingly far short of what I was used to. ... You need to look at ISPF because it's all there. SuperCE, SearchFOR, various languages (e.g. HLASM), copy, dataset list, member list and much more. IBM provides scripts to HLASM interactively or batch. For beginners, they can be accessed through menus.