Introduction to the new mainframe
Chapter 10: Using programming languages on z/OS
© Copyright IBM Corp., 2008. All rights reserved.
jkettner@us.ibm.com
Introduction to the new mainframe
Chapter 10 objectives
Be able to:
• List several common programming
languages for the mainframe
• Explain the differences between a
compiled language and an interpreted
language
• Create a simple CLIST or REXX program
• Choose an appropriate data file
organization for an online application
• Compare the advantages of a high level
language to those of Assembler language
• Explain the relationship between a data
set name, a DD name, and the file name
within a program
• Explain how the use of z/OS Language
Environment affects the decisions made
by the application designer
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Key terms in this chapter
•assembler • I/O (input/output)
•binder • interpreter
•compiler • load modules
•debugging • pre-processor
•dynamic link library • programming language
•generation • variable
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Overview of programming languages
A programming language is the way that a programmer
instructs a computer to perform functions
Computers only understand machine language
Machine language is in binary form and, thus, very difficult to
write
Humans write programs in a programming language, which is
converted into machine language for the computer to
process
There are many programming languages that have evolved from
machine language
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
The side effects of backwards compatibility
Significant business intelligence exists in legacy
•"200 Billion lines of COBOL* code in existence" eWeek
•"5 Billion lines of COBOL code added yearly“ Bill Ulrich, TSG Inc.
•"Between 850K and 1.3 Million COBOL developers" IDC
•"Majority of customer data still on mainframes“ Computerworld
•“Replacement costs $20 Trillion” eWeek
Rewriting - is it an option.....
•How long will it take? (lose strategic benefit)
•Who will do it? (who has the business
knowledge?)
•How much will it cost?
•Risk?
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Classification of programming languages
1st generation
• Machine language
• specific to hardware and software
2nd generation
• Assembler language
• Specific to hardware
• Must be assembled
• Symbolic machine instructions plus data structures
corresponding to machine storage and registers
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Classification of programming languages (continued)
3rd generation
• Procedural languages, known as high-level languages
(HLL)
• Example: COBOL
• Must be translated (compiled) before execution
• Usually portable (to an extent) across hardware and
software platforms with a recompile
4th generation – 4GL
• Non-procedural languages
• Report generators
• Query languages
• Examples:
• RPG, CSP, QMF, SQL
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Classification of programming languages (continued)
Visual programming languages (or event-driven
languages)
• Visual Basic, Visual C++
Object-Oriented language
• used in OO technology, e.g. Smalltalk, Java, C++
Other languages
• 3D applications
Scripting languages
• Perl
• REXX
• HTML
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Choosing a programming language for z/OS
Which language to use? Factors to consider include:
• Response time requirements for the application
• What type of application?
• Budget allotted for development and ongoing support
• Time constraints of the project
• Whether subroutines will be coded in different
languages
• Whether to use a compiled or an interpreted language
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Batch v.s. On-Line
Reasons for using batch
– Data is stored on tape.
– Transactions are submitted for overnight processing.
– User does not require online/immediate access to data.
Reasons for using online:
– User requires online/immediate access to data.
– High response time requirements.
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Using Assembler language on z/OS
Assembler language
• Not usually used for application development
• Machine-specific
Used when:
• Accessing bits or bytes
• Accessing system control blocks
• Execution efficiency is needed (performance)
• Require high performance subroutines that can be called from
HLL programs
1-6b
sym
Assm instr
Macro instr
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
From Assembler source to executable module
Assembler language
source statements
High Level Assembler
Machine language
Messages
and version of the
listings program
Binder
Executable
load module
Java – cobol – pl/1
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
ASSEMBLER “HelloWorld”
HELLOPRT START 0 IN THE BEGINNING...
PRINT NOGEN SPARE US THE MACRO EXPANSIONS
BEGIN SAVE (14,12) SAVE INPUT REGISTERS
LR 12,15 WHERE ARE WE?
USING HELLOPRT,12 RIGHT HERE
ST 13,SAVE+4 SAVE OLD SAVE AREA ADDRESS
LA 11,SAVE POINT TO NEW SAVE AREA
ST 11,8(13) IN OLD SAVE AREA
LR 13,11 MOVE SAVE AREA ADDRESS
*
* WRITE "HELLO, WORLD!" ON WHATEVER HAS BEEN SET UP AS SYSPRINT IN
* THE INVOKING JCL (NO, UNIX DOESN'T HAVE A MONOPOLY ON DEVICE-
* INDEPENDENT I/O!)
*
DOPUT EQU *
PUT SYSPRINT,HELLOMSG WRITE THE MESSAGE
B DOPUT FOREVER...
*
* THIS CODE WILL NEVER BE REACHED, BUT IS INCLUDED FOR COMPLETENESS
*
L 13,SAVE+4 GET OLD SAVE AREA BACK
RETURN (14,12),RC=0 TO THE OPERATING SYSTEM
*
* FILE AND WORK AREA DEFINITIONS
*
SAVE DS 18F LOCAL SAVE AREA
HELLOMSG DC C' HELLO, WORLD!'
SYSPRINT DCB DSORG=PS,MACRF=PM,DDNAME=SYSPRINT, X
RECFM=FA,LRECL=133,BLKSIZE=133
END BEGIN
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Using COBOL on z/OS
COBOL is an English-like programming language
Used for business-oriented applications
Capabilities of IBM Enterprise COBOL for z/OS and OS/390
• Integrate COBOL applications into Web-oriented business
processes
• Inter-operability with Java
• Parsing of data in XML and Unicode formats
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
From HLL source to executable module
HLL
Source statements
HLL compiler
Machine language
Messages
and version of the
listings program
Binder
Executable
Load module
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Designing for z/OS: Data sources and access methods
Here, the designer’s considerations typically include the following:
• What data must be stored?
• How will the data be accessed? This includes a choice of
access method.
• Are the requests ad hoc or predictable?
• Will we choose PDS, VSAM, or a database management
system (DBMS) such as DB2?
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
COMPILE AND LINKEDIT A COBOL PROGRAM
JCL is a
requirement
to execute
a program
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
HLL relationship between JCL and program (continued)
• COBOL SELECT statement makes the link between the
DDNAMEs INPUT1 and OUTPUT1 and the COBOL FDs INPUT1 and
OUTPUT1 respectively
• The COBOL FDs are associated with group items INPUT-
RECORD and OUTPUT-RECORD
• The program is completely independent of the location of the
data or the name of the data sets.
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Relationship between JCL, program, and data set
DDNAME DSNAME
program
JCL for JOB
OPEN FILE=INPUT1
READ FILE=INPUT1
//INPUT1 DD DSNAME=MY.INPUT MY.INPUT
...
CLOSE FILE=INPUT1
NOTE: You can change the JCL DD
statement to point to a different
dataset with the same attributes
without making changes to the program
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Using PL/I on z/OS
Full-function, general-purpose high-level programming
language
Suited for
• System programming
• Commercial
• Engineering/scientific, etc.
Less verbose than COBOL
Less English-like
PL/S
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
HLL relationship between JCL and program files
Referring to physical files by a symbolic file name is used by
all of the HLLs
- even Assembler language
Isolates your program from changes to data set name and
data set location
• data set name and location can change without
recompiling program
“Hard-coding” data set names or other such information in a
program is not usually considered a good programming
practice
• Externalize these values from programs
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Using C/C++ on z/OS
C is a multi-purpose programming language
Suited for:
• System-level code
• Text processing
• Graphics, etc.
C language contains concise set of statements, with functionality
added through its library
C is highly consistent across different platforms
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Using Java on z/OS
• Java is an object-oriented programming language
• Enterprise COBOL and Enterprise PL/I provide interfaces to
programs written in Java Language. Also, DB2 and IMS.
• Java is pervasive across the zSeries platform.
• Java Native Interface (JNI) allows your program to call programs
written in other languages. The JNI is part of the Java
Development Kit.
Try javac javacode
Javac – AAT – SMEUI – 390fy EAR – JAR - WAR
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Using CLISTs on z/OS
CLIST (pronounced "see list") is short for command list, because the
most basic CLISTs are lists of TSO/E commands
CLIST language is an interpreted language (that is, you don't have to
compile and link-edit it)
CLISTs are easy to write and test
CLIST and REXX languages:
• Two command languages available in TSO/E
CLIST programming language is used for:
• Performing routine tasks (entering TSO/E commands)
• Invoking other CLISTs
• Invoking applications written in other languages
• ISPF applications (displaying panels, controlling application flow)
• One-time quick solutions to problems
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Using REXX on z/OS
Restructured Extended Executor (REXX) language is a procedural
language
REXX is an interpreted and compiled language
REXX is a more full-function language than CLIST
REXX can be used for:
• Performing routine tasks (entering TSO/E commands)
• Invoking other REXX execs
• Invoking applications written in other languages
• ISPF applications (displaying panels, controlling application flow)
• One-time quick solutions to problems
• System programming
• Anywhere that we might use another HLL compiled language
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Compiled versus interpreted languages
Compiled versus interpreted:
• A design-stage decision
• Performance is slower with interpreted languages
Both compiled and interpreted languages have their strengths and
weaknesses
No simple answer as to which is better -- it depends on the application.
Within a single application, we might decide to use several
programming languages.
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Advantages of compiled languages
Assembler, COBOL, PL/I, C/C++ are translated by running the source
code through a compiler
This results in very efficient code that can be executed any number of
times
Often, the overhead for the translation is incurred just once, when the
source is compiled; thereafter, it need only be loaded and executed
Compiled programs will be more efficient and performing
Interpreted languages are often parsed, interpreted, and executed each
time that the program is run, increasing the cost of running the
program
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Advantages of interpreted languages
An interpretive language is relatively easy to code, test, and
change
Good for one-time solutions
Good for developing application prototypes
Ad hoc versus fixed requests
Time saver for command strings that are entered repeatedly
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Overview of Language Environment
Goals of application development today:
• Modularize and share code
• Develop applications on a Web-based front end
z/OS Language Environment product provides a common
environment for all conforming high-level language (HLL)
products:
• Establishes a common language development and
execution environment for application programmers on
z/OS
• Consolidates in a common runtime library, function
previously provided in individual library products
eliminating the need to maintain separate language
libraries
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Advantages of z/OS Language Environment
• Establishes a common run-time environment for all participating HLLs
• Combines essential run-time services, such as routines for run-time
message handling, condition handling, math services, date and time
services, and storage management
• All of these services are available through a set of interfaces that are
consistent across programming languages
• You can use one run-time environment for your applications, regardless
of the application's programming language or system resource needs
• Your program can seamlessly call one language from another, to exploit
the functions and features in each language
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Language Environment components
C/C++ COBOL FORTRAN PL/I
language language language language
specific specific specific specific
library library library library
Language Environment callable service interface, common
services, and support routines
BLC
POSIX
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
LE Program Management
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
LE Program Management
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
All Compilers on Z
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
LE Standards
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
LE Common Runtime
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Simple Main Assembler Routine
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Sample C/C++ Routine
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Sample Cobol Routine
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Sample PL/1 Routine
© Copyright IBM Corp., 2008. All rights reserved.
Introduction to the new mainframe
Summary
The mainframe supports most programming languages in use
today.
Your choice of a programming language depends on several
factors, including the requirements of the application and
the installation’s ability to maintain the application.
Depending on the application requirements, you might use
multiple languages or assembler subroutines for certain
parts.
Remember: When it is time to update the application, other
people must be able to program these languages as well.
Complexity in design must always be weighed against ease of
maintenance.
© Copyright IBM Corp., 2008. All rights reserved.