Programming languages for z/OS
In this post I will discuss the programming languages you find on z/OS, and what they are generally used for. COBOL The COBOL programming language was invented 60 years ago to make programs portable across different computers. The language is best usable for business programs (as opposed to scientific programs). COBOL is a language that must be compiled into executables, load modules. IDENTIFICATION DIVISION. PROGRAM-ID. COBPROG. ENVIRONMENT DIVISION. DATA DIVISION. PROCEDURE DIVISION. DISPLAY "HELLO WORLD". STOP RUN. PL/I PL/I was developed in the mid-1960s with the aim to create a programming language that could be used for business as well as scientific applications. Like COBOL, PL/I programs must be compiled into load modules. World: Procedure options(main); Put List( 'Hello world' ); End World; Assembler Assembler is still around. In the past business applications were developed using Assembler. Nowadays you should not do that anymore. But there are still a lot of legacy assembler programs around on the mainframe. In the old days, assembler was often used to implement tricks to achieve things that were not possible with the standard operating system, or other programming languages. This practice has created a problematic legacy of very technical programs in many mainframe application portfolios. The modern stance is that Assembler program should be regarded as severe legacy, because it is no longer maintainable and Assembler program are a risk for operating system and middleware updates. Furthermore, we find Assembler programs in modifications to the z/OS operating system and middleware. z/OS offers a number of points where you can customize the behavior of the operating system. These so-called exit-points oftentimes only have interfaces in Assembler. Like application programs in Assembler, z/OS exits in Assembler are a continuity risk. Not only because nobody knows how to program Assembler anymore, but even more so because these exit points make use of interfaces that IBM may (and wishes to) change at any point in the future. IBM is actively removing Assembler-based exit points and replacing these where needed with configuration parameters. The bottom line is that you should remove all home-grown Assembler programs from your z/OS installation. TEST0001 CSECT STM 14,12,12(13) BALR 12,0 USING *,12 ST 13,SAVE+4 LA 13,SAVE WTO 'HELLO WORLD!' L 13,SAVE+4 LM 14,12,12(13) BR 14 SAVE DS 18F END Java The language invented by a team from Sun in the 1990s with the goal to develop a language that could run on any device. Support for Java on the mainframe was introduced somewhere in the beginning of the 21st century. Java programs do not need to be compiled. They are interpreted by a special layer that must be installed in the runtime environment, called the Java Virtual Machine. The execution is (therefore) far more inefficient than COBOL and PL/I. So inefficient that running it on the mainframe would be very expensive (see section Understanding the cost of software on z/OS, MLC and OTC). To address this IBM invented the concept of zIIP specialty engines (see section Specialty engines), which makes running Java on the…