[go: up one dir, main page]

0% found this document useful (0 votes)
12 views42 pages

AChap10-Programming Languages Aeh

Chapter 10 of the document discusses programming languages used on z/OS, covering their classifications, advantages, and considerations for application design. It highlights the importance of choosing the right language based on factors like application type, performance requirements, and development costs. Additionally, it explains the role of the z/OS Language Environment in providing a common runtime for various high-level languages.

Uploaded by

js1085695
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views42 pages

AChap10-Programming Languages Aeh

Chapter 10 of the document discusses programming languages used on z/OS, covering their classifications, advantages, and considerations for application design. It highlights the importance of choosing the right language based on factors like application type, performance requirements, and development costs. Additionally, it explains the role of the z/OS Language Environment in providing a common runtime for various high-level languages.

Uploaded by

js1085695
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 42

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.

You might also like