This article is part of SHARE’s intro to the mainframe series. If you would like to contribute to this series, please reach out to editor@share.org.
High Level Assembler (HLASM) has been a foundational component of the IBM mainframe ecosystem for decades. It's an upgrade to the assembler language that first appeared in 1964 with IBM's System/360 computers, but with a lot more polish and helpful features added over time.
When IBM launched HLASM in 1992, it was a pretty big deal for assembler programmers. Created by Dr. John R. Ehrman, the "father of high-level assembler," the language got a serious upgrade with features that made coding less of a headache:
- Enhanced macro capabilities for more powerful code reuse
- Better error messages that actually helped you figure out what went wrong (instead of cryptic codes that left you scratching your head)
- Smoother integration with development tools like ISPF
- An optional toolkit, that includes features such as structured programming macros (SPMs) that make programs easier to follow
The really clever part: HLASM was designed to run on IBM's then-new ESA/390 hardware while still supporting programs written decades earlier for System/370 and System/360 machines. Today, HLASM is supported across modern IBM Z operating systems including z/OS, z/VM, z/Linux, and z/VSE, and the syntax is supported in z/TPF. This is the key reason that HLASM has persisted over decades.
Where Does HLASM Fit Into the IT and Mainframe Landscape?
HLASM operates at the foundation of IBM Z systems, closest to the metal. While most enterprise workloads run on COBOL and Java, HLASM remains critical for operating systems, transaction processing subsystems like CICS and IMS, and high-performance routines where every microsecond counts.
When you use your credit card, HLASM code often helps process your transaction in milliseconds. While newer languages handle business applications, HLASM powers the critical infrastructure that keeps banking, health care, and government services running 24/7, processing high volumes of transactions daily with the speed and reliability these systems demand.
Major Uses of HLASM
HLASM serves several crucial roles in the mainframe world. It's used for building system exits and utilities that customize how the operating system works, and for creating the lightning-fast routines in transaction processing systems where milliseconds matter, like the code that validates credit card transactions.
HLASM is also the go-to language when you need to work directly with hardware instructions or tap into new processor features right away, before higher-level languages catch up. And it's essential for middleware and vendor products that need precise, fine-tuned execution.
Bottom line: HLASM is what you reach for when you need absolute control, maximum performance, or direct access to hardware capabilities, which are situations where higher-level languages just can't deliver the same precision and speed.
Benefits of HLASM
HLASM paves the way for higher performance by providing control over instructions and memory while leveraging the full capabilities of IBM Z hardware. It also offers the promise of longevity. Code written decades ago continues to run unmodified today, a rarity among enterprise programming languages.
Drawbacks of HLASM
As I learned studying computer science at Texas A&M in the 1980s, IBM Enterprise Assembler has a steep learning curve. Many of my fellow students decided that software was not to be their chosen career path after attempting this mandatory course. To compound the challenge, some developers often leave behind opaque, cryptic routines that are almost impossible to decipher. And few new assembler programmers are entering the field to help.
While these points are certainly valid criticisms, HLASM continues to play an important role in operating system interactions, vendor solutions, and high-volume transactional systems, particularly in industries like banking. The difficulties learning HLASM can be partially overcome by the use of modern editors like VSCode in conjunction with static AI-assisted analysis tools.
Who Uses HLASM?
HLASM underpins systems most people use daily without seeing it. Most people interact with HLASM code running in z/OS systems multiple times a day without ever knowing it. These systems handle billions of transactions daily because they're incredibly fast, reliable, and secure, which is exactly why they're still running after all these years, and why modernizing them (rather than replacing them) makes so much sense.
Developers who use HLASM as systems programmers focus on exits, control blocks and core utilities that interface directly with z/OS services. A common example is the SMF record exit IEFU83, where return codes are used to suppress or filter SMF records before they are written.
Business application developers use HLASM to implement narrowly scoped, performance-critical routines that are inefficient in higher-level languages. A typical example is an assembler subroutine called from COBOL that uses the CKSM instruction to compute checksums over large data buffers.
Engineers use HLASM when building commercial z/OS infrastructure products that require low-level system visibility and minimal overhead. A concrete example is an assembler component within a performance-monitoring or capacity-planning tool that samples CPU, storage and dispatching activity through internal system interfaces.
A Mainframer’s Experience & Advice
In the 1980s, during an earlier chapter of my career, I worked on a project for a packaged food company targeting date manipulation routines in a COBOL-based order entry system. By rewriting the frequently used date logic in assembler, we achieved a significant reduction in CPU usage, streamlining the overnight batch processing window and associated operating costs.
Fast forward to today, and I sometimes find myself working in the opposite direction, using AI and static analysis tools to migrate business logic out of assembler and back into COBOL or Metal C. Modern HLL compilers have improved so much that their performance now rivals assembler in some cases. This approach reduces dependence on hard-to-find HLASM engineering talent while maintaining the performance mainframe systems require.
HLASM can be a lucrative skill if you are able to break into it. For roles that use HLASM frequently, system programming, performance engineering, and vendor product development are the most common paths. You really need to know other HLLs like COBOL and Java, as most HLASM code integrates with high-level languages.
My experience is that most developers learn HLASM on the job, guided by senior colleagues. Self-study is also necessary, especially when working through existing source code alongside manuals. IBM documentation and Redbooks provide comprehensive references. SHARE, of course, is also an invaluable resource — find links at the end of this article.
AI-assisted static code analysis tools are also very helpful in understanding existing routines you are being asked to modify.
Further Reading on HLASM
For official reference, see the HLASM Language Reference (Release 6), which details assembler instructions, syntax, and the macro language, including conditional assembly and symbol usage. The companion HLASM Programmer’s Guide (Release 6) explains how to assemble, link, and run programs, with sections on macro facilities and assembler options.
For practical learning, SHARE has published accessible tutorials and technical sessions, including Using the HLASM Macro Facility to Improve Assembler Programming (2012) and Conditional Assembly and Macro Techniques (2010).
For background and context, the HLASM entry on Wikipedia offers an overview, history, and external links.
John Rhodes is the chief technology officer for CM First Group, where he leads research and development of automated AI-assisted analysis and transformation software for the IBM i and IBM z platforms. He has extensive hands-on experience with IBM i/z software, including legacy application analysis, performance optimization, and system integration. Rhodes works closely with software development teams to integrate modern tooling and practices on IBM enterprise platforms.
Read the other articles in SHARE’s Mainframe Intro Series:
Learn more at SHARE Pittsburgh (Aug. 16-20) and register today. To learn more about Post-Quantum Cryptography and Its Impact on Mainframe Security, register for SHARE Blueprint (Aug. 20-21).