<<

MASARYK UNIVERSITY FACULTY OF INFORMATICS

DIPLOMA THESIS

System Information Gathering across Several Sysplexes under z/OS

Vlastimil Jeřábek 2014

Statement

I declare that this thesis is my original authorial work, which I developed on my own. All sources and literature that I have used in the development are properly quoted in the text and their fully qualified references to the relevant source are mentioned at the end of thesis. In addition I declare that all quoted literature and materials are publicly available which ensures preservation of all IBM policies about confidential material and customer information.

Supervisor: doc. RNDr. Tomáš Pitner, Ph..

I

Thanks

Primarily I would like to thank doc. RNDr. Tomáš Pitner, Ph.D. for academic guidance, reviews and mainly auspices over my thesis which mainframe theme not regularly taught and the faculty. Next thanks belongs to my colleagues, especially Tomáš Hláč and former colleague Paul Voyner, for all good technical advices and explanation of problems I encountered during programming. I would like to thank also to my employer for possibility of developing my program on test systems and improve my related skills by working on diploma thesis.

II

Summary

My diploma thesis introduces program developed mostly in under z/OS operation system running on mainframe . It consists of theoretical and practical part.

Theoretical part is comprehensive due to fact there is only little common awareness about mainframe , z/OS environment and tools used for creation of program. First it contains few words about IBM company as dominating distributor of mainframe computers and its management. Then follows part explaining what mainframe is, summarizing mainframe history, its capabilities, possibilities and finally whole concept of mainframe called z/OS.

Practical part contains little close up of programming languages used because they do not belong to commonly used languages. It is Restructured Extended Executor (REXX) and Language (JCL). Last section of practical part describes program itself. Motivation, usability and particular parts of code are depicted here along with problems encountered during development. End of thesis demonstrates program functionality and conclusion.

III

Keywords programming, programming language, Restructured Extended Executor (REXX), Job (JCL), (TSO), Interactive System Productivity Facility (ISPF), International Business Machines (IBM), Central Processing Complex (CPC), , IBM System z (zSeries), z/OS operating system, sysplex, gathering, system settings, remote job executing

IV

Contents

Contents

1 Introduction...... 2 2 About IBM Corporation...... 3 2.1 Pre-mainframe history of IBM...... 3 2.2 Era of mainframes...... 6 2.3 Personal computers, IBM near disaster ...... 8 2.4 IBM resurrection, present...... 9 3 Mainframe computing...... 10 3.1 Mainframe generations and history ...... 11 3.2 Hardware configuration...... 15 3.2.1 Processor Book concept...... 17 3.2.2 Multiple Chip Module...... 18 3.2.3 zEnterprise EC12 models ...... 20 3.2.4 System robustness ...... 20 3.3 Mainframe ...... 21 3.3.1 Direct Access Storage Device...... 21 3.3.2 Other peripherals...... 23 3.4 Typical mainframe installation...... 27 3.5 Basic operating system principles...... 29 3.5.1 Mainframe memory and addressing...... 30 3.5.2 Data storing...... 32 3.5.3 Important system components and started tasks...... 34 3.5.4 Common applications...... 36 3.6 ...... 37 3.7 ...... 37 3.8 Mainframe vs. distributed computing ...... 38 4 Programming under z/OS...... 42 4.1 Restructured Extended Executor...... 44 4.2 and job processing...... 45 5 System information gathering utility...... 48 5.1 Motivation ...... 48 5.2 How it works ...... 49 5.2.1 System information gathering part...... 50 5.2.2 Main program...... 53 5.3 Problems encountered in the implementation ...... 54 5.4 Utility portability and modifiability...... 55 6 Conclusion ...... 56 List of references ...... 57 List of used abbreviations ...... 59

Introduction

1 Introduction

Main motivation of this diploma thesis is to provide an overview of mainframe computing, currently widely used but invisible to many people. As most of us become daily users of this computer platform by making credit card transactions or means of transport reservations, still most people don’ know what mainframe is and many even don’t know that such platform exists. With each day growing online business and cashless payments is mainframe applied increasingly.

The diploma thesis consists from theoretical and practical part. First chapter in theoretical part summarizes history of IBM Corporation as main producer of mainframe hardware, , platform support and services. It covers history of IBM from its predecessors to the present. Then the most comprehensive chapter follows. Its purpose is to bring closer look at mainframe computing as a whole. At first general view of mainframes, difference between and mainframe, mainframe common areas of activity and features is given. Further history of mainframes is described including mainframe generations. Next part speaks about mainframe hardware, most used peripherals and typical installation. Description of operating principles and important system components follows. Last part of theoretical chapter forms comparison between mainframes to distributed computing

Practical part of the thesis speaks about programming languages under mainframe operating system. It focuses closer on two languages – Restructured Extended Executor and Job Control Language. These two languages were used to implementation of utility used for system information gathering which is described in last chapter. The utility is introduced, its capabilities are described, principles are shown and eventually further usages are discussed.

2

About IBM Corporation

2 About IBM Corporation

IBM is an American corporation residing in Armonk, New York, United States. Abbreviation IBM stands for International Business Machines. With its almost 435 000 employees [1] it numbers among biggest information technology companies and most valuable brands in the world.[2] IBM Corporation operates in area of hardware manufacturing, software development and in last decades mainly in computer services, hosting and infrastructure. By end of year 2013 IBM is holding total precedence ahead of other companies in number of patents including both technical and business innovations. [3]

2.1 Pre-mainframe history of IBM

There are many dates in history related to IBM beginnings. Four separate patents of four different people during late 80s in 19 th century are considered very first impulse in forming IBM later: [1] • Julius E. Pitrat - Computing scale device (1885) • William L. Bundy - (1888) for recording workers' arrival and departure time • Alexander Dey - Dial recorder (1888) • - Electric (1890) used in 1890 U.S. Census

Especially Hollerith's invention using punch cards not only for controlling automatons but also for storing data was very innovative. Herman Hollerith is known to be founder of automatic data processing. Very soon after presentation of these patents, companies formed around mentioned inventors. It was Computing Scale Company (Pitrat), Tabulating Machine Company (Hollerith) and International Time Recording Company created in 1900 by merging Bundy Manufacturing Company (Bundy) and Dey Time Register Company (Dey) along with other companies. In 1911 Herman Hollerith sold Tabulating Machine Company to businessman Charles Ranlett Flint which formed. Afterward Flint formed Computing-Tabulating-Recording Company (-T-) by joining mentioned three companies into single unit having 1300 employees and offices on northeast of USA. This merging is considered true start of IBM Corporation. Few years after, in 1914 Thomas J. , Sr. became general manager of C-T-R.

3

Pre -mainframe history of IBM

Meanwhile company expanded to South America, Europe, Australia and Asia, claimed further patents and manufactured wide range of products including weighing scales, coffee grinders, time-keeping systems and electromechanical tabulators. Soon Thomas J. Watson achieved to double company's year revenue to $2 million. C-T-R customers included national companies, statistical offices, utilities and life insurance companies, chemical companies and railroads. Company ruled field of innovative engineering with its patents - electronic synchronized time clock system, printing tabulator, rotary press (able to produce punch cards with unprecedented speed) and much others. In 1924 Watson renamed Computing-Tabulating-Recording Company to International Business Machines abbreviated as IBM. These days IBM had over 3000 employees with gross income around $11 million. Watson continued with his customer oriented effort demonstrating importance of tailoring solutions to fit customer needs. Watson's strategy was also focused on employees providing group life insurances, paid vacations, abandoning piecework compensations with granting salary and setting 40-hour work week for both manufacturing and office employees. Thanks to such innovative way of thinking IBM was not only able to hold all its employees during in 1930s, in addition it doubled number of its employees and gross income. Before World War II IBM introduced few more important patents: [1] • IBM-Filene-Finlay simultaneous (1927) - installed later in 1931 in League of Nations in Geneva • 80-column punch cards (1928) - became punch card standard and still were used nearly 50 years after its introduction • IBM Type IV tabulator (1928) - first subtracting tabulator • IBM 400 series Alphabetical Accounting Machine (1931) • IBM 600 series Multiplying Punch (1931) - able to multiply and divide • IBM 801Bank Proof Machine (1934) - improving efficiency of check clearing • IBM Electric (1935) - first commercially successful electric typewriter

During World War II, even before United States officially engaged in conflict, general manager of IBM (still Thomas Watson Sr.) put all IBM facilities at disposal of U.S. government. IBM shifted from production of time recording and accounting machines to production of war assets as bombsights, engine and rifle parts.1) Watson set nominal one percent profit for all warfare products which was devoted to establish fund for widows, orphans and other IBM war casualties. Besides production of components IBM facilities were also applied for computations used in logistics, ballistics, navigation and radio communication. In 1944 IBM presented very first general purpose electro-mechanical computer Automatic Sequence Controlled Calculator (ASCC) which is often referred as forerunner of modern digital computer or zero generation computer. ASCC was firstly presented to IBM in 1937

1) IBM participated on production of well known guns as Browning Automatic Rifle (known as BAR) and M1 rifle

4

Pre -mainframe history of IBM by Howard Aiken based on concept of Charles Babbage.2) Automatic Sequence Controlled Calculator was developed in cooperation Aiken and Harvard University (where ASCC was placed). ASCC is also known under name MARK I which was designation by Harvard staff. MARK I was working in decimal system (which was unusual even in 40s) constructed as analytical engine primarily but it was used for logistics and navigation computations for U.S. Navy. It also played his role in .3) One of first programs running on MARK I was designed by John von Neumann 4) which needed to determine possibilities and simulations regarding development of atomic bomb. Some of IBM subsidiary facilities were claimed and used by Axis. Besides supporting war machinery, IBM equipment in Nazi occupied countries was also used for census, rounding-up Jews and statistics during holocaust. Despites all horrors of war, by contributing war efforts and working for government, IBM was able to multiple its gross income four times and increased number of employees by one half during World War II. Having enough resources IBM also helped in postwar recovery and economic recuperation. [1]

After 38 years of being general manager and treated as main impetus of IBM growth Thomas J. Watson, Sr. handed over leadership of IBM to his eldest son Thomas J. Watson, Jr. There was lot of opportunities in the age of rapid technological development and company expanded very quickly which signified big challenge for its leading management. So Thomas J. Watson, Jr. decided into restructuring company organization to be able to oversee its running more effectively. In addition he codified unwritten philosophies and approaches of IBM formulating some of company policies which are used until now. Let’s mention at least equal opportunity policy (statement which guarantees same work opportunity regardless sex, sex orientation, race and nationality), SPEAK UP! (a program to encourage communication between employees and management) and three IBM basic beliefs – respect for the individual, customer service, excellence. Along with business reorganization Watson Jr. focused also on development of newborn computer technologies founding new laboratories devoted to research in the field of electronic computers, magnetic tape storage and disk drives. Ongoing Cold War helped in tremendous amount to technological advancement in which IBM played very significant role. Espionage, arms race and space race were main parts in rivalry between United States and Eastern Bloc which led to need of more technologies and more computations. Thanks to this IBM got lot of contracts from U.S. government, especially for Department of Defense (including navy,

2) Charles Babbage was 19 th century mathematician, inventor, mechanical engineer and philosopher which originated concept of mechanical programmable computer [4] 3) Manhattan project was secret development of atomic bomb during WWII 4) John von Neumann was genial mathematician and physicist born in Budapest which is known as co-author of game theory, for his contribution in field of nuclear physics and forming architecture of digital computer [4]

5

Pre -mainframe history of IBM air forces, intelligence) and National Aeronautics and Space Administration (NASA). Of course, within the general technological development IBM also worked on non-military research. It’s worth mentioning magnetic-core computer memory , analog-to-digital and vice versa conversion , video display with light pen 5) , multiprocessing , data transmission over telephone line . Early in 1960s there were about 6000 computers in operation in United States, more than 4000 of them were IBM machines. [4] After ten years of Thomas J. Watson, Jr. in head of IBM, company tripled number of its employees and gross income increased more than six times. [1]

List of most significant products of IBM from end of WWII till 1962:[1] • IBM 701 (1952) – first commercial scientific computer, magnetic tape storage 6) • IBM 650 Magnetic Drum Data-Processing Machine (1953) – first multipurpose mass produced computer to handle both business and scientific data • IBM 305 RAMAC (1956) – first , RAMAC stands for Random Access Method of Accounting and Control • (1956) – believed first “self -learning” program playing checkers • (1957) – FORmula TRANslation System, scientific programming language • SAGE (1958) – Semi-Automatic Ground Environment, networking equipment that coordinated data from radar sites giving airspace overview, largest computer built [4] • (1962) – Semi-Automatic Business Research Environment, computer driven reservation system developed for American Airlines improving business efficiency

2.2 Era of mainframes

In 1960s IBM continued its cooperation with government of United States. IBM computers counted votes for J.F. Kennedy in president election in 1960, scored Winter Olympic Games in California, played their part in space research, Moon landing of Neil Armstrong later and it could be said their ruled the world computing in thousands of both government and non-government facilities. But Thomas J. Watson, Jr. decided to make one very bold move. All computers then were strongly customized to customer suits, tuned up as economical solution for limited class requirements. There was no compatibility between different computers but everything was about to change. IBM spent much effort to developing new computer family using interchangeable software and equipment. It was quite a risk because success of this, then non-conventional, machines was not guaranteed and when not undertaken, IBM could be outpaced by its competitors. [1]

5) before computer mouse commercialization, light pens were used as input device likewise computer mouse, difference was that unlike mouse, light pen was used directly to pointing on video screen 6) IBM 701 was first computer using magnetic tape as storage medium introduced same year and quickly adopted throughout computer industry

6

Era of mainframes

On 7.4.1964 new revolutionary IBM System/360 was revealed. Essentials of this concept were in scalability (360 was for 360 degrees suggesting multipurpose machine). Design set clear distinction between architecture and implementation using IBM Solid Logic Technology 7) . This allowed computers to be built from small to large (both commercial and scientific) according to required performance and customer suits. Very important change System/360 brought was that computer could be customized later again – for example memory could be expanded, storage enlarged or processor replaced. This meant that customer wasn’t forced to replace the whole machine in case of any needs of upgrade and adding computational power. Within two years System/360 was totally dominating on field of computer technology making this approach industry standard used till present days. System/360 concept is stated by many sources as most important announcement in to date. Many of IBM competitors have to reconsider their position in computer industry. This immense success and domination later led to antitrust investigation of U.S. Department of Justice which finally spread over 13 years until dropped and impacted lot of IBM’s business decision till early 1980s. [1]

Meanwhile in 1971 Thomas J. Watson, Jr. suffered heart attack and decided to retire. Still under his leadership IBM introduced free more important patents: [1] • Fractal geometry (1967) – presented by IBM researcher having great impact on metallurgy, health science and computer graphics • Customer Information Control System (1968) – called CICS, middleware 8) transaction system used to the present, especially for bank environments on mainframe • Magnetic Stripe Cards (1969) – started credit card era and declared as international standard by ISO association two years after official announcement • (1971) – used in various form as portable storage medium almost 30 years • (1971)

During 70s IBM further worked on its mainframe concept revealing new mainframe System/370 , enhancing S/360 capabilities while maintaining backward compatibility. IBM also tried to expand into photocopy industry which led to litigation with company which IBM won. Despite the victory IBM wasn’t so successful in office copiers production and left this idea. Nevertheless IBM copying technology using organic photoconductors became dominant. Next significant products were 3340 disk unit “Winchester” (increased information density, new construction of read/write head) and Systems Network Architecture (SNA) protocol unifying communication between computers and still used presently in mainframe environment. [5]

7) IBM Solid Logic Technology or abbreviated SLT, was using hybrid customized circuits made from chip-mounted, glass encapsulated , diodes and resistors on ceramic substrate covered with metal of plastic lid. Several of these hybrid circuits were mounted on printed circuit creating an SLT module. 8) Middleware is software point between software applications and operating system providing OS services to applications and facilitating programming of these end applications

7

Personal computers, IBM near disaster

2.3 Personal computers, IBM near disaster

At 1980 IBM Corporation had over 340 thousands of employees, gross income $26 billion thereof $3.4 net earnings. Company showed its importance in variety of computer branches as networking, storage, data processing, development. IBM continued with developing further technologies and improving existing ones. Although there were also personal computers produced by other manufacturers (Olivetti’s Programma 101 in 1964, Hewlett-Packard 9100A in 1968, Apple I in 1976, Commodore PET in 1977) there were referred to mainly as programmable calculators. First in the present sense was released in 1981 by IBM. IBM PC recorded huge success and sonly became computer standard forcing another companies to produce IBM compatible PCs. In addition RISC 9) processors were developed but unfortunately IBM didn’t recognize its importance and let competitors lead in RISC technology. Also token-ring 10) local area network was introduced and subsequently IBM cooperated with MCI Communications and University of forming National Science Foundation Network (NSFNet) thereby laying the foundation for future Internet. After five years participating in project NSFNet IBM withdrew which caused it missed Internet boom in nineties. [1]

In conclusion of massive PC production and network client-server usage revolution relationship between customer and computer companies has been drastically changed. Suddenly every little company could have several personal computers, IBM’s bespoken computing solutions weren’t needed and became scrap-iron. Company, with its wide range of products, wasn’t able to keep up with its competitors as (processors), (desktop software), HP (printers), (networking), Oracle ( software) and Seagate (drives). This, combined with few bad managerial decisions brought really rough times to IBM. Although IBM searched solutions in selling their typewriter and printer business, sourcing components from Intel and Microsoft to speed up PC production, releasing new mainframe System/390 and midrange systems 11) AS/400 , developing TinkPad portable computers. Despite all these steps it just became old fashioned giant with high structure cost unable to compete with its rivals in computer industry. Between years 1992 and 1993 earnings dropped to negative $8.1 billion which was the greatest single-year revenue loss in U.S. history till that day. Nearly hundred thousand employees lost their job including present CEO. [1]

9) Reduced Instruction Set Computing – processors with simplified instructions making them cheaper in production with smaller consumption, presently widely used in mobile devices, and mainframes 10) Network topology based on passing token signalizing transmitting rights 11) Not as powerful as mainframe, cheaper solution for high-end computing, less cost for purchase and maintain

8

IBM resurrection, present

2.4 IBM resurrection, present

In 1993, first time after 1914, IBM hired new leader outside of company. Louis V. Gerstner, Jr. became new CEO with very hard task – get IBM back on its feet. First steps in revitalizing were to lower internal costs and number of employees to 220000, selling Federal Systems Division to refund company’s cash and offering something IBM still precede – mainframes. These initial steps worked and 1994 was first profitable year since 1990. But Gerstner’s target was higher than stabilizing the company, he wanted to return to its former fame. In following decade IBM dropped low margin business (drives, RAM, printers) and focused on high margin opportunities starting global services business. Customer integrated solutions, midrange services and mainframe computation significantly helped IBM do get back among leading positions in computer industry. Essential for this comeback was to integrate whatever technologies client demands in solution, even from competitors. This strategy worked. IBM invested in software needed for global service by acquisition Lotus Development Corp. (office applications), expanded in network management ( Tivoli ) and midrange solutions ( WebSphere ) adding these products to IBM already possessed database system DB2 .[1]

Today IBM still continues in software (office applications, cloud infrastructure, midrange solutions and security software) and hardware (disk and tape storage systems, automated libraries, mainframe) development but main division forms IBM Global Services having nearly half of the total 435 thousands of employees. [4] Global Services involves for example application management, business analytics and strategy, cloud services, data center building and maintaining, hosting, IT outsourcing, network and infrastructure services, security, technical support and much more others.

Year Gross income Net earnings Employees Notable event (millions $) (millions $) 1914 4 n/a 1346 chairman Thomas J. Watson, Sr. 1924 11 2 2248 renaming to IBM 1939 38 9 11315 before WWII 1945 138 11 18257 after WWII 1952 412 34 41458 chairman Thomas J. Watson, Jr. 1964 3230 431 149834 mainframe introduced 1971 8270 1070 265493 Watson, Jr. retires 1985 50050 6550 405535 recession 1993 62710 -8100 256207 great losses 1994 64050 3020 219839 resurrection 2012 104500 16600 434246 present 2.1 History of IBM revenue and employees [1]

9

Mainframe computing

3 Mainframe computing

So what is a mainframe? In past (first half of 20 th century), all computers were called mainframe referring to big electro-mechanic machines whose main components were usually housed in room-sized metal frames (which is how probably term mainframe originated). Since introducing System/360 by IBM in 1964 mainframe, also often called “Big Iron”, is understood as complex approach to computing – style of operation, applications and operating system facilities. Today core mainframe systems are still physically largest computers used and with the peripherals are comparable to the supercomputers, which are usually composed from grid of individual computers. Most people often confuse term mainframe and supercomputer but there is considerable difference between them. Supercomputers are using decentralized computing mostly exploiting all resources for single one sophisticated task. They are single purposed or highly specialized, used for tasks like human genome research, weather forecasting, physical modeling, cryptanalysis or research. [4] One of well known single-purposed supercomputer was chess playing Deep Blue (released in 1996 by IBM), being first computer in history which beat under standard chess tournament time rules in 1997. [1] Mainframes are quite opposite to the supercomputers. They are using centralized approach allowing perform very large amount of simple operations per second. Present common performance is around 145000 transactions every second [2] (e.g. complete credit card actions including encryption and backup). Mainframes are capable to emulate few thousands of virtual servers and handle thousands of users logged on. This, along with other mainframe capabilities, contributes to fact that mainframes are highly used in business by banks, insurance companies, government, reservation systems and so on. In fact, most of us are using mainframe services on daily basis without knowing. Used by 92% of biggest banks, almost 100% of credit transactions are made through mainframe and 80% of world corporate data are mainframe processed. [1] Essential mainframe features are following: • Backward compatibility – very strictly keeping of product standardization • Ultra-high scalability – sophisticated virtualization and customization • High availability - designed for hot swap modifications (no restart needed) • High security – offers reliable encryption without loosing performance speed • Highly maintainable – maintaining one big server instead of hundreds of small ones • Reliability – regular backups and system redundancy in case of failure

10

Mainframe generations and history

3.1 Mainframe generations and history

As mainframe predecessors could be considered all multipurpose computers produced by IBM since 1944 assembled mainly from electric relays and vacuum tubes. Noteworthy are following models: • ASCC “MARK I” (1944) – first multipurpose digital computer • IBM 700 series (1952) – called as zero mainframe generation, using vacuum tubes • IBM 650 (1953) – most popular massively produced computer during 1950s • IBM 305 RAMAC (1956) – first computer with disk storage • IBM 7000 series (1958) – tranzistorized version of 700 series

But due to computing advances in late 50’s and early 60’s these machines weren’t enough capable for maximum use in electronic data processing. So IBM redesigned their entire product line combining new electronic techniques with advanced computer concepts and new mainframes began their era. As mentioned before, on 7.4.1964 IBM System/360 was introduced starting to fulfill all essential mainframe features. S/360 enabled companies to integrate all their data processing applications into a single management information system. It offers almost unlimited storage capacity with instant data retrieval, built-in communication enabling remote control regardless of distance and more then 40 types of peripherals (as punch card readers, storage devices or printers, tape drives or consoles).[1] All this for an affordable price for contractors (from $2700 to $115000 monthly rent or $133-$5500 thousands when buying, depending on model). There was no more need to match particular equipment to specific computational problem but even so S/360 was still customizable in terms of computing strength, storage size, count of I/O channels 12) and peripherals. For mainframes is typical setting one CPU box with lot of peripherals for the storage and input/output purposes. Built-in communication allowed up to 248 data terminals to interact with the computer simultaneously. System/360 was using SLT modules with performance from 33 to 750 thousands of additive operations per second, having scalable main memory from 8 kB to 8 MB. [1] Each of the processing units was able to process work through binary, decimal or floating point arithmetic center. In present measures S/360 speed was between 0.0018 and 0.034 MIPS 13) according to a specific configuration. [4] Whole computer was running on OS/360 operating system using 32- length instructions and 24-bit addressing (maximum addressable memory was 2 16 which is 16 MB, only model “67”

12) I/O channel – processor with customized instructions interfacing mainframe memory and peripheral devices, channel handle input/output operations which frees processors to execute other instructions 13) MIPS – Million , measure of computer speed

11

Mainframe generations and history had enlarged 32-bit addressing). [1] Standard coding was EBCDIC with Big-Endian 14) word order. Weaker models were running on OS/360 derivates. With some restrictions application level of compatibility is maintained to present z/Enterprise systems.

3.1 IBM System/360 console at NASA [1]

Following years were about enhancing of already working mainframe concept. Miniaturization and invention of the integrated circuits affected new mainframe generation introduced in 1970 – System/370 . Except an enhanced processor speed, storage space and operational memory using integrated circuits instead of magnetic cores (up to maximum 16MB) other significant improvement was in addressing. Bus was enlarged to 31-bit (able to cover up to 2 GB of space, last 32 nd bit was used as control bit) and new feature – virtual memory – has been added, uplifting performance and whole main memory management. Due to this and other changes new operation systems have been developed. S/370 power was about 1MIPS. During 70’s and 80’s some more powerful models were produced. [1] Next version of mainframe was released twenty years later in 1990, called System/390 , marked by the new hardware technologies. Processors were made with use of new CMOS technology 15) and I/O channels exploited speed of IBM patented ESCON (Enterprise Systems Connection) optical fiber wiring which enabled communication at rate 10 MB/s (later improved to 17 MB/s) up to distance 43 kilometers. [4] Thanks to CMOS circuits mainframes became smaller with less electricity consumption and lower maintenance cost. System/390 was also first

14) EBCDIC – Extended Binary Coded Decimal Interchange Code, type of coding, Bin-Endian means that most significant byte is stored in memory location with lowest address (besides Little-Endian vice versa order) 15) CMOS – Complementary Metal-Oxide-Semiconductor, today standard in integrated circuits production

12

Mainframe generations and history multiprocessor computer with maximum of 10 processors (last model had 12). Main memory size started at 128 MB, late 1990s models had up to 32 GB of memory. [1] Connectivity was provided by 3 to 256 ESCON channels [7] , addressing stayed on 31-bit concept. System/390 also introduced brand new software feature called partitioning which enabled to run several LPARs (Logical Partitions) concurrently within one machine. This means that one physical computer can handle few independent operating systems with its own memory and configuration (for example serving to different customers or purposes). Up to eight LPARs could be connected together to form a sysplex. Sysplex allows communication, data and resource sharing and cooperation between logical partitions in one sysplex. Partitioning and sysplex currently belongs to key mainframe abilities. Computing power of S/390 was in the range from 15 to 1644 MIPS. [7]

At the beginning of new millennium, in the era of internet, large connectivity and starting remote business, IBM had to change mainframe capabilities to be able to handle unpredictable demands of e-business. This led to introducing of new mainframes concept focused on e-business. Its main features should be: • High connectivity • Running of thousands of servers operating within one box • Unexpected peak handling

So in year 2000 new concept was introduced as IBM zSeries (later renamed to IBM System z). In order to fulfill desired requirements IBM came up with z/Architecture usually controlled by operating system z/OS (which is with increasing additions standardly used on mainframes till present). Besides previous mainframe operating systems, z/OS have 64-bit addressing (covering up to 16EB 16) of addressable memory) while instruction length remains on 32 . [1] z/Architecture exploits CISC processor design with complete instruction set. Except z/OS, z/Architecture supports also operating systems on System z, z/VM (first introduced as Facility/370 on System/370, used on virtualized systems), z/VSE (Virtual Storage Extended) which derived from one of prime operation systems on S/360, presently less common and z/TPF (Transaction Processing Facility) which is highly specialized in reliable and uninterruptable transaction processing, that’s why often used for reservation systems. [4] Let’s recap that z/Architecture still maintains backward compatibility to System/360. Model z900 was first IBM zSeries mainframe. It became common habit that after introducing high-end model, another low-cost derivate is released later. It was model z800. The following models are usually available in high-end version Enterprise Class (EC) and low-cost Business Class (BC). Following tables summarize whole IBM System z business and technical parameters.

16) EB – Exabyte = 10 18 bytes

13

Mainframe generations and history

Release Model Hardware cost Rent price per MIPS MSU 17) (year) (millions $) month ($) 2000 z900 0.5 – 5.3 6 000 – 50 000 239 – 3192 41 – 535 2002 z800 0.24 – 1.47 1 900 – 12 800 41 – 636 7 – 108 2003 z990 1 – 15.4 7 400 – 78 000 450 – 960 77 – 1512 2004 z890 0.24 – 1.63 1 500 – 20 600 26 – 1365 4 – 208 2005 z9 EC 0.86 – 22.3 6 150 – 92 660 198 – 17802 34 – 3046 2006 z9 BC 0.1 – 3.6 1 100 – 19 500 26 – 1786 4 - 290 2008 z10 EC 0.95 - 26 6 300 – 142 000 209 – 29590 36 – 5042 2008 z10 BC 0.1 – 2.55 1 160 – 31 200 26 – 2760 4 – 464 2010 z196 0.95 – 28.5 6 300 – 200 000 240 – 52286 30 - 6140 2011 z114 0.08 – 2.55 1 140 – 34 560 26 – 3139 ? 2012 zEC12 0.8 – 33.1 6 200 – 256 400 240 – 78426 30 – 9194 2013 zBC12 ? ? 50 - 4900 6 - 614

3.2 IBM System z business parameters [1][7][8]

(information wasn’t available for fields marked “?”)

Model Max Memory Max I/O channels Footprint Weight CPUs (GB) ESCON FICON 18) OSA 19) (m 2) (kg) z900 16 5 – 64 256 96 n/a 1.32 – 2.81 917 – 1866 z800 4 8 – 32 240 32 24 1 545 z990 32 16 – 64 512 120 n/a 2.49 1174 – 4415 z890 4 8 – 32 420 40 40 1.24 1482 – 1730 z9 EC 54 16 – 512 1024 456 96 2.49 1212 – 1740 z9 BC 4 8 – 64 420 152 48 1.24 785 z10 EC 64 16 – 1520 1024 682 96 2.83 1248 – 2271 z10 BC 5 4 – 245 480 248 144 1.42 857 – 953 z196 80 32 – 3056 240 672 144 2.83 1248 – 2271 z114 5 8 – 248 240 256 192 1 1000 – 1130 zEC12 101 32 – 3040 n/a 672 192 3.64 1276 – 2564 zBC12 32 8 – 496 ? ? ? 1 817 – 1132

3.3 IBM System z technical and physical parameters [1][7][8] (information wasn’t available for fields marked “?”)

17) MSU – Million Service Units – performance measurement in one hour used mostly for mainframes 18) FICON – Fibre Connection, direct successor of ESCON, allows communication with rate 1, 2, 4 or 8 Gbit/s (based on model) at distance up to 100km with lower cost than ESCON 19) OSA – Open System Adapter, network controller supporting Ethernet, and connectivity

14

Hardware configuration

3.2 Hardware configuration

Although basic principles for hardware components are identical for mainframes and personal computers (processing unit, input/output, primary and secondary memory), concrete configuration is much more different in respect of component layout as well number and performance of particular components. In the past whole frame with processor(s), volatile memory and I/O channels was referred as CPU (). Terms system, processor and CPU were used interchangeably which became confusing, especially when multiprocessor machines were released. Nowadays terms were clarified – CPU or a processor is used for single processing unit within CPC (Central Processor Complex) which stands for physical collection of the hardware that includes primary memory, one or more processors and input/output channels. [5]

Let’s focus on CPC itself – what are its components and what resides in. For description, latest mainframe model IBM zEnterprise EC12 will be used. Content of most of older IBM System z machines is very similar. There are only small nuances and main difference is in number of elements and their technical maturity. Other names for CPC are frame or rack. It can be situated on raised or non-raised floor which directs further planning regarding cabling and cooling options. Frame’s high is slightly over 2 meters, depth about 1.8 m and width measures from 1.57 to 1.85 meters depending on model, weighting about 2500 kg which is based on maximum system configuration. [8] With two large front covers, only emergency power-off switch is visible. This switch, when activated, immediately disconnects frame from external power supply and internal batteries take over power supply.

3.4 zEC12 with covers (front view) [1]

15

Hardware configuration

After removing front covers, all internal parts are visible and manageable. There are two types of racks for zEC12 depending on cooling option (water cooling or air radiators), both available with overhead power cables. All internal components of CPC are visible on figure 3.5 .

3.5 zEC12 rack with removed covers (front view) [8]

Frame is divided into two parts called A frame (right part) and Z frame (left part). It holds following components: [8] • Internal Batteries – This is an optional feature. Batteries are installed in pairs, up to 6 units. They are able to hold supply of electricity for the whole frame up to 10 minutes. They are mainly used to prevent systems crash and volatile memory loss in case of external power supply failure. • Power Supplies – Provides electricity through whole machine from external power supply. Their number depends on model (i.e. number of processors) which highly influences total power consumption. Power Supplies are always in redundant number for problem avoiding in case of any unexpected Power Supply loss. • Support Elements – Two notebooks (primary and alternate, which is redundant) situated in their own drawers in front of I/O drawers. They are connected to zEC12 through private LAN. All frame components are managed through Hardware Management Console (HMC) running on both notebooks. Except hardware management, HMC is also used for operating and monitoring whole CPC. Basic cryptographic software also runs on Support Elements and HDD holds keys to particular LPARs running on machine.

16

Hardware configuration

• I/O cage and drawers – Input/output cage with its drawers provides enough connectivity for inner and outer communication. All data exchanged within CPC components, between CPC and peripherals or several CPCs passes through this I/O cage and its drawers. There are several types of protocols and interfaces. Let’s mention PCIe 20) and InfiniBand 21) except FICON and OSA. • Radiators-based Air Cooling – Contains heat exchanger, blowers and water pumps. This configuration provides cooling of internal closed water loops connected to the processors. As requested option, Radiator-based Air Cooling can be replaced by Water Conditioning Units. • Water Conditioning Units – Water cooling can be chosen optionally in place of air cooling. Water Conditioning Units are connected to facility external water supply and maintain the same internal closed water loops as radiator-based cooling. When used, an additional air heat exchanger is installed in the rear of the frame. • Processor Books – The A frame contain Processor Cage which can hold up to four Processor Books (which determines mainframe model). Processors and main operational memory are kept within books which are connected with I/O cages and internal water loops.

3.2.1 Processor Book concept

Central Processing Complex uses packaging design based on books. Processor books creates core of whole mainframe. They cannot exist without other supporting components but books configuration has the most influence on mainframe computational power and price.

3.6 Side view of one processor book [8]

20) PCIe – Peripheral Component Interconnect – Express, high-speed serial interface for infrastructure communication with bandwidth of 8GB/s [8] 21) InfiniBand is network communication used in data centers and high-performance computing, bandwidth 6GB/s

17

Processor Book c oncept

Up to four books can be installed in Processor Cage of zEC12. Each of books contains following components: [8] • Multiple Chip Module (MCM) – There is exactly one Multiple Chip Module on each book, having six multi-core functional chips and two storage control chips. • Memory Slots – Overall thirty (16+14) slots for Dual Inline Memory Modules (DIMM). Single plugged module can have 4, 8, 16 or 32 GB but combination of different types is not allowed. 10 modules are always present. There is minimum 80 GB physical memory installed in one book configuration. For more books there is limitation minimum 40 GB. Each book can contain up to 960 GB of physical memory but part is always reserved for RAIM 22) parity so there is maximum 768 GB of customer memory per book (together 3 TB of memory with full four book configuration). [8] • I/O Connections – Combination of up to eight input/output connections of InfiniBand and PCI-Express channels interfacing memory and processors in book with I/O cage or I/O drivers. PCI-Express (8 GB/s) is used for internal communication while InfiniBand serves for external CPC linking. [8] • Flexible Service Processor (FSP) – Two FSP cards are used for system control. [8] • Power Supplies – Three power supply devices provides power to whole book. Loss of one power supply leaves enough power to satisfy book requirements. Power supplies can be concurrently serviced. • Water Cooling Connectors – Internal closed water loops heads heat from processors on MCM to Radiator-based Air Cooling device or Water Conditioning Units installed inside of the rack.

3.2.2 Multiple Chip Module

This 96 x 96 mm large glass ceramic substrate plate holds all operational customer dedicated processors in mainframe. MCM is plugged into card that is part of CPC packaging design. It always contains six Processing Units (PU) and two Storage Control (SC) Chips. Total number of transistors within MCM is over 23 billions. Multiple Chip Module is pictured on following page.

22) RAIM – Redundant Array of Independent Memory, RAIM design detects and recovers memory failures

18

Multiple Chip Module

3.7 Multiple Chip Module of zEC12 [1]

Processing Units (PU) Every chip has 6 cores from which 4 to 6 are active for customer work. Standardly there are 27 active cores per Multiple Chip Volume, only highest zEC12 model have 30 cores per MCM. All the cores run on frequency 5.5GHz. Every single core has its own co-processor and few built-in control units. Mainframe processors exploit four-level cache memory structure. Generation z10 had only three levels of cache but there was found in z196 development that for processing acceleration is better to add another level of cache than enlarge all cache levels. So for z196 another high level cache called L1.5 was added. For zEC12 cache level were renamed from L1 to L4 cache. Each core has embedded cache L1 (64 kB for instructions and 96kB for data) and cache L2 (1MB for instructions and another 1 MB for data). In addition each core has dedicated 48 MB of L3 cache from single L3 cache pool combined for all cores on particular PU. Processing chips have also high-speed 10 GB/s input/output interfaces (marked GX0-GX7 on figure 3.7 ), some of them holds Processor Support Interface (PSI on figure) which controls system communication. [8] Every PU can be characterized for specific purpose according to customer needs while manufactured. There are few possible specifications: [8] • Central Processor (CP) – classic multi-purpose processor • Integrated Coupling Facility (ICF) – handles shared data access in Sysplex • zSeries Application Assist Processor (zAAP) – specialized for processing Java and XML services • zSeries Integrated Information Processor (zIIP) – customized for work with DB2 23) • Integrated Facility for Linux (IFL) – processor for Linux support • System Assist Processor (SAP) – input/output management processor

23) DB2 – relational database management system developed by IBM in 1983

19

Multiple Chip Module

Storage Control Chips (SC) Main task of Storage Control Chip is holding L4 cache, which is common for all Processing Units placed on MCM. There are two SCs, each with L4 size 192 MB consisting of four 48 MB quadrants and one controller, which makes 384 MB of L4 cache for each book. Storage Control Chips also contains Fabric Book Connectivity (marked FBC0-FBC2 on figure 3.7 ) which ensures connection between books within Central Processing Complex. [8]

3.2.3 zEnterprise EC12 models

Following table summarizes available models of zEC12. Let’s mention that maximal configuration is very expensive rare high-end machine which is not purchased ordinarily. Mainframe is able to satisfy customer needs in sufficient efficiency even with basic setup. System zEC12 is able to run up to 60 LPARs – sixty self-sufficient systems able to operate independently with own operating system.

Model Books PUs SAP Minimum Maximum Integrated Customer Installed cores spare customer firmware Memory cores 24) used cores core (GB) H20 1 27 (1 x 27) 4 2 20 1 32 – 704 H43 2 54 (2 x 27) 8 2 43 1 32 – 1392 H66 3 81 (3 x 27) 12 2 66 1 32 – 2272 H89 4 108 (4 x 27) 16 2 89 1 32 – 3040 HA1 4 120 (4 x 30) 16 2 101 1 32 - 3040 3. 8 IBM zEnterprise EC12 models [8]

3.2.4 System robustness

Number of most hardware components of EC12 rack is based on so-called N+1 concept which means redundancy of hardware parts. [8] There are backup air moving devices in the back of the frame in case of cooling units failure, extra power supply device in the rack so as in each book, RAIM memory redundancy for handling memory errors, triple environmental sensors redundancy (ambient temperature, relative humidity, corrosion and air density for altitude determination) [8] and furthermore backup solutions to avoid unplanned mainframe shutdown. Whole mainframe computation also relies on RAS philosophy. RAS is abbreviation for Reliability, Availability, Serviceability and is about preventing or masking outages on both hardware and software level. This is Outages could be planned or unplanned. It covers for example addition of processor capacity or I/O cards (planned) and also power supply outage

24) Spare core is non-active processor dedicated to overtake of any processor in case of detected failure

20

Syste m robustness or memory failures (unplanned). The frame contains several of various controllers for detecting cache and main memory errors, chip failures, power regulation and signal control. Most of defects can be corrected or masked without noticing of users. Thanks to all of these listed features, mainframe is most robust IBM architecture and belongs to most reliable architectures of present.

3.3 Mainframe peripherals

Despite its size and advanced hardware configuration Central Processing Complex contains (from the view of general ) only processing units and primary (volatile) memory. CPC itself doesn’t contain any non-volatile secondary memory or input/output devices. Therefore some mainframe peripherals have to be connected to mainframe through I/O channels to make whole system complete.

3.3.1 Direct Access Storage Device

Often referred to simply as DASD, is commonly used as secondary memory. It is characterized as medium where each record in it has its strict location and unique address which allows direct access to information stored in this record. Three types of DASD were gradually introduced – drum memory (used in IBM 650 computer) [4] , data cells (introduced and used together with System/360) [1] , and presently used disk drives. Related to mainframe environment DS8000 device family is currently used. There are several models from DS8100 to newest DS8870. Whole generation again emphasize reliability, resilience and security.

3.9 Opened DS8870, base model 961 [5]

21

Direct Access Storage Device

Basis of DS8870 is model 961, box approximately half-size of CPC which holds disk array: [5] • Storage enclosures – 10 storage enclosures each of them able to hold twelve 3.5-inch disks or twenty four 2.5-inch disks. Disks could be standard magnetic hard drives, SSD 25) or both. Hard drives speed are usually 7200rpm, 10000rpm or 15000rpm. [1] • Hardware management console – Notebook running console similar to that one in CPC. It is used for controlling network connection, system storage maintenance (including configuration), problem notification and remote service. It can be accessed remotely through storage manager program and line interface. There is ordinarily secondary external console in case of failure of the primary one. • Processor complex – Several processor cores which handles input/output operations and data transactions. Processor complex also contains volatile operational memory used by processors for DS8000 data management. Number of cores and memory size depends on particular configuration. • I/O enclosures – This is same part of hardware as residing CPC interfacing processor complex with Storage enclosures and other devices (mainly CPC) through FICON channels. I/O channels provide RAID support for Storage enclosures. [5] • Power supplies – Include uninterruptible power supply in case of electricity outage. Power supplies redundancy is also granted in here. • Rack Power Control (RPC) – Pair of power control cards managing power distribution within the whole storage facility. [5]

DS8000 storage facility family provides RAID 26) technology support to enhance storage robustness and reliability. Storage facility also contains basic encryption for data safety. DS8870 capacity can be significantly expanded by adding up to three expansion models 96E. It contains almost same components like model 961 but missing processor complex and management console. This space is used for additional storage enclosures. As usual there are more models of DS8870 depending on configuration.

25) Solid- drive – non-volatile flash memory based units emulating standard hard drive interface, SSD don’t have any mechanical moving parts thus they have lesser power consumption and are faster in exchange for greater price 26) RAID – Redundant Array of Inexpensive/Independent Disks, hard drive security method for disk failure recovery, its principle is in specific data saving distributed among more disks, including control parity

22

Other peripherals

Processor Memory Maximum Model 96E Max capacity Max capacity cores (GB) drives connected 2.5-inch HDD 3.5-inch HDD 2-core 16/32 144 N/A 172.8 TB 288 TB 4-core 64 240 N/A 288 TB 480 TB 8-core 128 1056 0-2 1.26 PB 2.112 PB 8-core 256 1536 0-3 1.84 PB 3 PB 16-core 512 1536 0-3 1.84 PB 3 PB 16-core 1024 1536 0-3 1.84 PB 3 PB 3.10 Summary of DS8870 configurations [5]

3.3.2 Other peripherals

Of course mainframe can have (and needs) much more peripherals than secondary memory devices. There is also tertiary storage, input and output and some mainframe special devices. Let’s summarize most important peripherals very often used in typical mainframe installations.

Tape Storage device up to several CPCs size, containing tape drives and slots for holding a large number of tape cartridges. It is used as tertiary storage with removable media (tape cartridges). In past manual libraries were used. It consisted from reading device and room with shelves where magnetic tapes on reels were residing. Tape reels were labeled, each had to be found by operator and manually mounted on reading device. Today are such libraries automated (referred to as ATL – Automated Tape Library), equipped with robotic hand with bar code reader which finds tape cartridges and mount them automatically to tape drive.

3.11 Past manual tape library [4] 3.12 Inside today autom ated tape library [1]

23

Other peripherals

Today tapes are capable to hold data from tenths of gigabytes up to 1 TB and IBM belongs to one of main producer of storage tapes. [4] For example IBM TS3500 Tape Library Information Center consists from one base frame and up to fifteen expansion frames can include more than 20000 tape cartridges with maximum capacity 900 PB.[5] StorageTek’s (subsidiary of Oracle specialized in storage technologies) SL8500 Modular Library System in maximum configuration provides up to 100000 tape cartridge slots and 2100 PB of storage space. [9]

3.13 StorageTek SL8500 base frame [9] 3.14 IBM TS3500 base frame with 3 expansions [1]

Tape libraries are mostly used for storing not recently used data as backups, old logfiles 27) , program outputs and so on. There is also set of rules on each system telling when to migrate data from disk drives to tapes (usually after new generation of data is created and old one should be kept or when data aren’t accessed for particular period). For a long time there was in effect that main advantage of tapes were in cost per GB stored compared to hard drives. Lowering disk prices are presently reaching tape storage cost but tapes are still cost-preferred mainly in big customers like banks and insurance companies which are obligated to keep very large amount of records for a long time. Tapes can be also considered more reliable and preservable due to their removable character. Thanks to great tape library scalability, tape storage with its hundreds of petabytes to exabytes capacity can be counted almost unlimited and occupying much less room than DASD in same amounts. On the contrary it takes much more time to access data stored on tapes – tape have to be found, mounted and then data on it should be sequentially searched. Tapes are also behind disks with reusability due to sequential access. Considering all the aspects, tapes still have its place in mainframe computing.

27) Logfiles are files recording events happened while an operating system or other software runs. [4]

24

Other peripherals

Virtual tape library Often called VTS according to Virtual Tape Server introduced by IBM in 1997 [4] or abbreviated as VTL. It could be said that VTS is transition between DASD and tape library. In real it is disk array but whole device is emulating tape environment. It is mostly used for data backup. From central processing complex point of view it looks like tape library but in fact it have all advantages and disadvantages of DASD.

Printers Although lot of program outputs and logs are processed by virtualized printers and stored as data, in some companies there are still policies according which some records are archived in paper form. Mainframe can use standard laser or inkjet printers but their printing speed and cost are not suitable for it. Instead line printers or dot matrix printers are used. There are few types of line printers. All of them have in common printing of whole line of text at a time. Already in 1950s line printer IBM 1403 was able to print 600 lines per minute, later increased to 1100 lines per minute. [1] IBM 1403 could produce over 230 two-line documents, such as checks, per minute which equals theoretical printing speed of 4800 lines per minute. Today line printers are smaller and runs more quietly but are able to produce up to 2500 lines per minute. [11]

3.15 IBM 1403 line printer (1959) [1] 3.16 IBM 6400 Printer – Model 6400i24 (2014) [11]

Another type of mainframe used printers is dot matrix printer, well known from era of first home printers. They have moving head needles striking ink-soaked ribbon against the paper (similar to typewriter mechanism but characters are drawn out of a dot matrix). Today speed of dot matrix printers is from few hundreds to approximately 1550 characters per second. [4] IBM Dot Matrix Printer Model 4247 can print up to 1100 characters per second. [11] Mainframe printers are usually not situated directly on mainframe site but in some other operating facility and connected remotely. They are not suitable for graphics printing but in exchange they offer very fast and cheap printing used for archiving and accounting.

25

Other per ipherals

Operator consoles Inside each Central Processing Complex is situated one primary and secondary hardware management console in form of notebook with appropriate software installed. Also in other peripherals is usually some control component whether notebook or simple control panel. But there is need to maintain systems remotely and moreover make it available for hundreds or thousands of users simultaneously. In the past consoles were hardware devices (at first as panel with pilot lights and switches, then IBM 3270 terminal subsystem was introduced). Few consoles or terminals were located on mainframe site allowing users to control system. This demand is solved on software level now. Operators and system programmers are connected to z/OS remotely through 3270 console , physically hundreds or thousands kilometers away from CPC itself. Presently software product called IBM Personal Communicator is ordinarily used. This program runs on common personal computer using telnet or SSH 28) connection for remote access.

3.17 IBM System/360 console (1965) [4] 3.18 IBM 3270 terminal (1972) [4]

3.19 IBM Personal Communicator (2014) [5]

28) Telnet (Telecommunication Network) and SSH (Secure Shell) are communication protocols standardly used in computer networks to provide interactive communication with remote computer

26

Other peripherals

Control unit Control unit is hardware device controlling and coordinating operation of more input and output devices within mainframe installation. It is primarily used for larger installations including more CPCs and storage devices. Without control unit all devices have to be connected to all the other hardware. In case when control unit is used all storage devices are connected to control unit via channel subsystem and data is transferred through it. [5][10]

Cross-system coupling facility Abbreviated as XCF, cross-system coupling facility is specialized component which handles communication between logical partitions and single CPCs within sysplex. Information about workload and status of particular sysplex partitions including data transmission occurs through coupling facility. It is responsible for three tasks: [10] • Cache – optimizes data transmission between LPARs and maintains coherency between local buffer pools • Locking – shares information about held data and resources within sysplex • Signal – system response checking

Because all communication in sysplex practically occurs through coupling facility when used, it represents sysplex single point of failure. For this reason another backup facility is always implemented for covering failures. [5] It is possible to replace hardware device logically by dedicating LPAR in sysplex to administer mentioned tasks.

3.4 Typical mainframe installation

Common site installation contains one or more central processing complexes, secondary and tertiary storage devices as DASD, virtual tape library and automated tape library. In case of larger installation control unit is often used and for sysplexes coupling facility is usually installed. Printers are usually situated remotely in operating facilities within reach of maintenance staff. Systems are accessed from most of time remotely on hundreds of kilometers from delivery centers by monitoring operators, middleware technicians, administrators and system programmers. There is usually only little personal presence directly on mainframe site.

27

Typical mainframe installation

Geographically Dispersed Parallel Sysplex (GDPS) Hand in hand with RAS philosophy, mainframe offers feature called parallel sysplex . It is used for clustering several LPARs together sharing workload and data in order to remove single points of failure. More robust extension of parallel sysplex is GDPS. This type of setting includes two individual site installations with very similar configuration backing up each other. Single sites are up to 100 km apart from each other connected and synchronized through coupling facility on each side. [13] Delivery centers are able to reach both of these sites any time. This solution covers scenarios like fatal main cabling disruption (for example due to structural works misconduct), long term electricity power stop or even sabotage. Figure 3.20 illustrates geographically dispersed parallel sysplex setting example. It consist of primary Site A and secondary Site B. Each of these sites has two central processing complexes (marked CPC-1 – CPC-4) connected to each other. Sysplex includes six LPARs from which four are production systems (L1 – L4) and two are controlling ones (LA and LB) which handle data consistency and sysplex monitoring. Each site also contains tape library (TL-1, TL-2), virtual tape library (VTS-1, VTS-2) and DASD (DS-1, DS-2) from which DS-1 is primarily used by all production LPARs. All the storage hardware parts in each installation are joined through control unit (CU) and then connected to CPCs. Coupling facilities (CF) of both sites are connected which provides communication between sites. There is also time synchronizer (hardware or virtual) between coupling facilities.

3.20 Geographically Dispersed Parallel Sysplex schema[10]

28

Typical mainframe installation

Principle of GDPS is following. All tasks running on each of four CPCs primarily uses DS-1 DASD for data saving and swapping (system of swapping and memory virtualization is described later). Recently unused data are migrated and data are backuped on VTS-1 and TL-1. Simultaneously every change in DASD on Site A is reflected on DS-2 (with periodical migration and backuping on VTS-2 and TL-2). In addition logical partitions L1 and L2 are also defined on Site B, idling. The same goes vice versa with L3 and L4 on Site A. If coupling facility on Site B founds out that Site A is not responding, predefined L1 and L2 are started and DS-2 is set as primary. Since then all data storage activity is redirected to DS-2. Virtual tape library and tape library on Site B continue with their activity, VTS-1 and TL-1 are not mirrored just as control partitions LA because they are not needed. All this measures are done within few seconds and end users shouldn’t be affected. [10] Once connection between sites is restored L1 and L2 are switched back to Site A, DS-1 is set back as primary storage and data are synchronized. [10]

3.5 Basic operating system principles

Thanks to different hardware configuration and needs suitable for multiprocessing and all other mainframe features have z/OS completely different approach compared to personal computers. It must consider hardware distribution among different logical partitions, manage large amount of data simultaneously processed through main storage by various programs and maintain data integrity. One of the cornerstones is logical partitioning of processors and memory within central processing complex. Each core in CPC can be designated directly to any of LPARs or could be shared within pool of available processors. From partition point of view it could be also determined whether to use only dedicated processor or shared pool can be exploited. Speaking about second option there is another parameter to set. LPAR can be capped – it means it have designated maximum amount of processor resources from shared core pool it can use (this amount is fixed till partition is reactivated). Second option is uncapped partition which means it can temporarily access to additional processor resources depending on demands. Likewise main memory is distributed – certain size is dedicated to different LPARs and the rest is in shared pool. [5] Every processor core can access all devices, control unit (or storage devices) and use I/O channels assigned to partition using that core. This leads to flexibility, reliability and performance optimization. [8]

29

Mainframe memory and addressing

3.5.1 Mainframe memory and addressing

Storage concept of mainframe works with three basic types of memory. Least addressable unit of each is 4 kB. [12]

Real Storage Term central storage or main memory could be also met. Real storage is physical memory in the books of the central processing complex. It is primary storage directly accessible by processors. Least addressable units in it are called frames.

Auxiliary Storage Auxiliary storage is represented by special files (called page data sets) stored and defined on a DASD. These page datasets makes extension of real storage and are divided into 4 kB addressable units referred to as slots.

Virtual Storage Mainframe architecture exploits as other computers from memory virtualization. It is an illusion created by operational system that pretends that system has more physical memory that it really has. It allows programs to allocate enough memory for its processing while parts of program not currently processed are moved from real storage to auxiliary storage pretending they are still in real storage. Memory virtualization improves memory utilization and increases applications I/O efficiency. Process of moving non-processing parts of programs is called paging, just as addressable units of virtual storage are called pages. Moving whole program memory from real to auxiliary storage (thus making it started but inactive) is called swapping. There is definition for each program running if it’s swappable or not, meaning if whole program can be swapped out from real storage. There is implemented feature dynamic address translation (DAT) which translates between virtual and real addresses.

For each process of program running in z/OS environment is created so called address space in virtual memory which is area of virtual addresses available for executing instruction and storing data. Address space size is limited by architecture (currently 64-bit which is enable to address up to 16 exabytes) and system settings. [12] Address space is divided into several storage areas each with its purpose. There are two milestones in address space determined by previous architectures. On mark 24 bit (16 MB of addressable space) is line and 31 bit boundary (2 GB of addressable space) is called bar . To address storage above the bar, high virtual storage, specific 64-bit instructions are used so only 64-bit programs can reach it. Area above the bar are used exclusively for data storing not for executing instructions. [12] Area between line (24 bit) and bar (31 bit) mirrors

30

Mainframe memory and addressing space below line. It is called extended area and has the same attributes as below 16 MB boundary but it is much larger. [5]

3.21 Address space segmentation [10]

Detailed address space partition (from bottom – address 0): [5] • Prefixed Save Area (PSA) – In every address space are addresses from zero through 8191 reserved for hardware level addressing. It maps location of processor so its content depends on core where process actually runs. • Private area – It differs from address space to another. As its name prompts, it is private for particular process and cannot be accessed only by this process. • Common area – Common area content is the same for all address spaces on partition. It consists of nucleus, read-only part which contains operating system control programs, common storage area which holds frequently used addresses and last part is link pack area (LPA) where system programs addresses are used. Because common area is addressable by every address space, there is no need for copy in each address space, there are only pointers. • Extended common area – Extension of common area addressing space. • Extended private area - Extension of private area addressing space. • High virtual storage – Addressing space above bar used exclusively for data.

There are three types of address space:[10] • User IDs – Accounts of users are running and visible on system as address spaces. • Jobs – Job is an file which can be launched under z/OS. It is usually set of consecutive commands. Jobs are usually written by operating staff. • Started tasks (STCs) – Started tasks can be compared to running applications on PC. It could be database, middleware, security product, scheduler or system service.

31

Mainframe memory and addressing

All the time when system needs to reach some data it has to go through several storage layers depending when data are stored. Mainframe memory hierarchy is described via storage pyramid on figure 3.22 . Top layers are faster but can hold smaller amount of data, it applies vice versa for lower layers. Approximate time to get instruction from different layers is summarized in table below.

3.22 Mainframe memory hierarchy [12]

Memory layer Time to get instruction CPU cache nanoseconds Central storage 10ms Auxiliary storage 50-100ms DASD seconds Tape up to 2 minutes

[10] 3.23 Data acquirement time according memory layer

3.5.2 Data storing

All data under z/OS are stored by means of . It is file that contains one or more records. Data set can hold program , compiled executable program, data used as job inputs, system parameters, readable text or any other information. Data sets are stored on volumes . Volume is space on DASD or tape defined for data set storing. Its basic parameters are label and size. Volumes are used for better data set organization. In case data set is worked with (while editing or processed by program) it is copied into central storage. Data sets can be

32

Data stori ng entered in system catalog which allows them to be referred without specifying its storing location or non-cataloged where system needs specific location of data set to access it. There are few types of data sets: [13] • Sequential – Records in data set are stored consecutively. Dataset is read sequentially to the memory. • Partitioned – Also called PDS or library, consists of a directory and members. Directory holds address of each member. Members are consecutively stored records of dataset. Operational system can directly access any member of the library which is then browsed sequentially. Partitioned data sets are often used for bunching information of same type together. • VSAM – Virtual Storage Access Method is special coded data set format not used in common applications. It comes in four types of organization. ° Entry Sequenced – accessed via key which is based record storing order ° Key Sequenced – mostly used, have index and data component, data are stored in tree and accessed through index ° Relative Record – similar to key sequenced, alternate index is defined ° Linear – unstructured with linear access

When data set is allocated some parameters have to be chosen while other can automatically set by system storage routines (in case it’s allowed on system or for the dataset). For historical reasons data set size is usually determined in tracks and cylinders (after disk tracks and cylinders). One track has 56kB and one cylinder is fifteen tracks (840kB). Basic parameters of dataset are following: [10] • Primary allocation – Space reserved when data set is allocated. • Secondary allocation – When size of all records saved in data set exceeds data set allocation it is extended by secondary allocation. Maximum extension count depends on data set type. • Record format – Fixed blocked (FB) format tells that each record have same length while in variable (V) format could be records of different lengths. There are also unformatted data sets. • Logical record length – Sets length of record for fixed format and maximum length for variable format. • size – Block size determines size of physical blocks written on disk.

There are more parameters for dataset allocation including volume on which should be dataset stored or data set classes which are defined on system and tells how often should be dataset backuped, after which time it should be migrated from DASD to tape when not accessed etc. Lot of important system settings as basic system parameters, authorized programs and user definitions are stored in datasets.

33

Important system components and started tasks

3.5.3 Important system components and started tasks

Operational system contains lot of components managing from basic to advanced system functions. Some are firmly present on each logical partition some of them are optional. Let’s mention at least several of them: • Time Sharing Option (TSO) – TSO allows multiple users to log on and resources of the mainframe. It also provides limited set of commands for work on system. Most users work with TSO through menu-driven interactive interface called ISPF (Interactive System Productivity Facility) which can be executed from TSO. ISPF provides to users full control over mainframe to the extent of actions permitted by security controls. [13] • System modules and utilities – Simple executable programs which perform basic system functions according given parameters as work with datasets, data processing, mail sending, compiling or support other functions. They could be used in user written jobs or called hidden on background while processing user requests in ISPF or other facilities. [5] • JES2 or JES3 – Two versions of Job Entry Subsystem base operation system component. It provides job, started task and data management functions as scheduling, job flow controlling, priorities, reading and writing on storage devices, source code conversion and its hand over to operation system. [13] • Resource Access Control Facility (RACF) – Optional IBM software security product providing access control and auditing functionality. It is used for user identification and verification, system resources protection and authorization of user rights for data access, manipulation and system controlling. Other non-IBM security software is also available. [5] • Catalog – Catalog describes where catalogued data sets are stored which allows accessing data set only by knowing its name. Every z/OS system has at least one master catalog. If there is only one catalog, all data set locations are stored within it. However using only master catalog is neither flexible nor efficient. Most installation stores only important system definition data sets in master catalog which also holds more user catalogs. User catalogs perform same function as master catalog but are hierarchically under master catalog. It allows data set categorization and catalog flexibility. [13] • Virtual Lookaside Facility (VLF) – VLF is responsible for holding the most frequently used and important modules within central storage for their quick availability. [10] • Library Lookaside (LLA) – LLA has similar function as VLF. It is used for often used modules (there is counter for modules usage). Unlike VLF it holds in memory only reference to modules for acceleration of their availability. [10] • Storage Management Subsystem (SMS) – Optional, but mostly used function, which is responsible for automatic data management as migration, backups, archiving, tape management, data classification, volume administration and much more others. It has five components each responsible for another part of storage management. [10]

34

Important system components and started tasks

• Global Resource Serialization (GRS) – GRS is designed for resources integrity protection. It is responsible for data set and tape access serialization in case one or more programs request exclusive rights to dataset access (for example if two jobs want to write into same dataset). Resource serialization works on three levels – within address space, single system and across multiple LPAR images. [5] • System Management Facility (SMF) – System management facility collects and records information about operating system activity including security, system utilization, errors, input/output, network activity and so on. SMF data can be also used for billing purposes. It also provides data for another optional feature Resource Measurement Facility which is performance monitor for z/OS. [4][5] • Virtual Telecommunications Access Method (VTAM) – Communication subsystem that implements IBM Systems Network Architecture (SNA) protocol for z/OS environment. • Transmission Control Protocol and Internet Protocol (TCPIP) – Another subsystem providing communication through widely used TCP/IP network protocol. • System Display and Search Facility (SDSF) – Although SDSF is not fixed part of z/OS, it is used almost in every installation. It provides information to monitor, manage and control system. It is used practically by every user on system providing command interface, access to system log, output manager and control over started tasks, jobs and the whole Job Entry Subsystem . • Scheduler – There are few IBM so as non-IBM scheduler applications. Scheduler is extension of the z/OS used for unattended job submitting according prescheduled plan or triggers. Trigger could be some system monitored event, time interval or direct date and time when job is sent into JES to submission. Most known schedulers are IBM Tivoli Workload Scheduler (also known as OPC according previous name Operations Planning and Control ), Control-M or Cortex . All of them provides interface and performs same function only with mostly visual differences. • Workload Manager (WLM) – Fixed system component in charge of workload balance and distributing resources among competing workloads based on system administrator external specifications. It can be used on single partition or within sysplex. [5]

This is list of some significant system parts running under z/OS environment forming system itself, providing its basic functions or helping with system management to operators, programmers and administrators. Note that most of them are so complex that its functionality is described in separated manuals and references. This suite of publications is published by IBM and referred to as IBM Redbooks, freely available on http://www.redbooks.ibm.com/ . There is much more IBM and non-IBM products and facilities which may be exploited by mainframe environment. Important fact is that there are always several options with its benefits and handicaps allowing customer or system administrator to suit his needs.

35

Common middleware applications

3.5.4 Common middleware applications

Except core subsystem, middleware applications very often make part of z/OS system. They stand between operational system and end applications. It is usually licensed IBM or non-IBM product used for holding, manipulating or transferring customer’s data. The most common middleware used on mainframe environment is following: • WebSphere MQ (Message Queue) – Previously known as MQSeries, is message oriented software used for asynchronous communication between different systems. It provides reliable and secure transport of messages and data for web services, applications and other programming environments. WebSphere MQ is available for many various platforms including z/OS, , Linux, Windows and more others. [1] • DB2 – IBM database software product which exploits relational database model, XML 29) and SQL 30) programming language. It consists of few compulsory and eligible address spaces. DB2 grants reliability and consistency, it is used to manage customer data. [4][10] • Customer Information Control System (CICS) – General-purpose transaction subsystem designed to provide service for online running applications. It is adapted to handle many users submitting requests to same applications or using the same files. It manages resource sharing, data integrity, execution priority, user authorization and passes application requests to database manager (as DB2) with fast response. It doesn’t manage data as DB2, only accesses them and controls programs through transactions. It could be said CICS performs similar functions as very own operational system but handling primarily customer data. It is used for business operation such as travel request processing, bank accounts managing or company payroll. [5] • Information Management System (IMS) – IMS is combination of database and transaction manager in one product. Unlike DB2 it works with hierarchical . It isn’t maybe as fast as CICS (though enough fast not to be overwhelmed) but it offers more complex solution by combining database and transaction manager features. IMS grants reliability, data consistency, security and backup while processing transactions and updates data at high speed. It also consists of more address spaces but three main components are transaction manager (for transaction processing), database manager (for data administration) and set of system services providing common services to them. [5][10]

All of these products provide lot of partial functions which makes them very sophisticated tools for customer services. More information about defining, installation and work with middleware subsystems can be found in Redbooks too.

29) XML – Extensible Markup Language, used for data serialization and its exchange between applications 30) SQL – Structured Query Language, special programming language designed for database management

36

Spooling

3.6 Spooling

Spool is acronym for Simultaneous Peripheral Operations On-Line and it is term for temporary storage of data on a DASD under control of an operating system. [4] These data are stored in special defined spool datasets. Spooling has few purposes and is one of basic z/OS features. As many started tasks and job runs concurrently on system, all of them are producing some output information. It could be job progress, error reports, task activities and lot of other data. These outputs are kept in spool datasets. Some started tasks (system tasks, databases or transaction subsystems) can run few days, weeks or even months and for example transactions managers with many transactions every second can produce really enormous spool data. Some data processing jobs can also have large outputs even if aren’t usually running for such long time. When any task or job ends, its output is kept in spool datasets or purged according to the rules set for every job and task. [19] Spooling is also used for output devices as printers. When more running programs want to write output to a printer simultaneously, all outputs would be mixed together. There is possibility to give control of the output device to one program but it would block whole device until program controlling it ends even if it could be idling. To avoid this situation and improve output devices utilization outputs of all programs requesting device usage are stored into spool, making device free. As any of outputs is complete and program ends, output is sent from spool to the device. This approach also saves processor time because spooling is faster than actually printing the output, programs complete faster and don’t exploit processor unnecessarily. [19] Ready-to-run jobs waiting for execution as soon as the system has resources for their processing are also stored in spool. [4]

3.7 Batch processing

Mainframe computing is based on so called batch processing which is defined as execution series of jobs without user interaction. [4][5] It is similar to scripts on common operating systems but under z/OS amount of data processed can be measured in terabytes and millions of records. Batch processing occurs mainly through the night, it is called batch window and is opposite of online transaction processing during day. Let’s take in example bank account management. ATM withdrawal is example of online transaction service during day. Through the night during batch window, bank databases are updated, reorganized, accounts are balanced, backups are made, reports system reports are created and sent to technicians, accounts statistics are sent to bank accountants and furthermore. All of these batch activities usually have their own processing branch thus careful planning of production control technicians is needed for the best efficiency and avoiding data contention (which don’t endanger data itself but efficiency thanks to GRS and database security). During batch processing large amount of data is processed and stored as output. [5]

37

Batch processing

In practice, this means creating from hundreds or thousands of jobs, their linking into job streams 31) by their purpose and logical sequence and finally scheduling jobs for periodical submission. Through the night batch processing is usually monitored by system operators having their instructions how to deal with possible failures. Immediate response time is usually not required although batch jobs often must be completed within batch window not to block system resources to online processing during day. [5] Job streams are continuously maintained according actual customer needs and for system performance optimization. Batch processing brings following benefits: [4] • Job processing can be shifted to when system resources are less busy due to priorities. • Avoiding system resources idling due to waiting for manual interventions. • Amortization of the computer by keeping high overall rate of utilization. • Optimizing of system utilization by avoiding workload peaks – instead of multiple process of one transaction for each request, many transactions are processed at once

3.8 Mainframe vs. distributed computing

There is lot of speculations whether to use mainframe or distributed system in companies. One of the biggest criteria is cost of operation and reliability. There were also studies made not always delivering consistent results. One thing that is for sure – mainframe hardware and software purchase price so as its operation and maintenance cost is always expensive. But as following studies and opinions show, ultimately mainframe exploitation in production can be much more cost efficient comparing to other platforms. In overall, effective usage of particular platform depends very highly on customer exact needs and applications planned to run on it. Technology and business magazine eWEEK cooperated with IBM and Hewlett-Packard trying to formulate five advantages of each distributed and mainframe environment. [14]

Distributed systems advantages: • Acquisition costs – Low-end distributed servers can be purchased for few thousands of dollars ( PowerEdge R805 starts on $2000), while low-end mainframes are priced from hundreds of thousands to millions of dollars. • Basic operational costs – According HP officials, their blade servers use from 20-30% less power and cooling compared to mainframes. • Flexibility – Distributed model is able to react faster on actual business needs (in matter of hours against weeks regarding mainframe).

31) Job stream is group of jobs linked in pre-established sequence of executing where single job is responsible for partial task within whole job stream.

38

Mainframe vs. distributed computing

• Expertise – Thanks to fact that mainframe is highly used but for most people invisible platform there is not much attraction to young programmers. Most of true mainframe professionals and architects are near retirement age and there aren’t enough experienced technicians who could replace them. • Data center convergence – HP estimates that companies can save up to 80 percent of operational cost using its all-in-one BladeSystem Matrix, realize payback in 8 months and reach return of investment more than 300% in three years.

Mainframe environment advantages: • Security – IBM Series z have numerous security features on hardware and software level offering one of the most secure platform nowadays. • Resiliency – Mainframes are built to stay up and running forever despite many planned or unplanned outages, updates or natural disasters. • Dynamics – IBM mainframes can add or remove workload to their systems at a moment’s notice and dynamically react on workload situation. • Consolidation – One System z frame with its size of refrigerator can cover up to 1500 common servers saving footprint and up to 85% of energy costs, according to IBM. • Data management – Centralized databases avoids data replication within distributed system which eases data consistency and fragmentation.

Marcel den Hartog, principal Product Manager of Computer Associates International, Inc. speaks about using mainframe decision in transportation company analogy. [15] Although companies like DHL or UPS own lot of various transportation vehicles to transport diverse cargo types of different sizes, they still rent trucks, planes and ships making them flexible and competitive. As there is no logic in transporting one box of goods by large ferry or split big shipment into hundreds of vans, the same goes with applications and computing platforms. By his words: “In IT, the initial choice of a given platform should not be carved in stone and IT staff should not be opinionated about the type of servers. If an application is too small to run on a mainframe, move it to a cheaper platform. However, if an application is too large for the 65 distributed servers it already requires, it may make more sense to move it (back) to a mainframe.”[15]

According storage and data management blog drunkendata.com [16] are some applications more suitable for centralized and some for decentralized approach. Based on experiences, mainframe precedes other platforms in storage management. Software support of distributed system is often trying to find solution on distribution system which already works on mainframe. Although mainframe is very expensive platform with quite high base operational cost, if you need its resiliency, robustness, reliability, almost zero downtime and great cost-efficiency

39

Mainframe vs. distributed computing mainframe environment is cheaper in the long run terms. There is no way to obtain the same reliable system for same amount of money.

Rubin Worldwide, research and consultancy firm focused on technology economics, presents long-term evidence-based study from 2012.[17] The study processes data collected since 2008 from 498 companies across 20 sectors. It follows companies with different level of distributed and mainframe usage and analyses their infrastructure expense in relation to revenue. Facts common for both platforms are that computational needs expands faster than revenue, 57% of company infrastructure cost is spent for IT and MIPS requirements are yearly 18% greater while storage requirements grows at 45% per year. It was found that distributed servers capacity growth is 3.5x the rate of revenue growth whereas mainframe capacity growth only 2.33x the rate of revenue. Average percent increase in infrastructure expense for $1 billion was 4.2% for mainframes and 12.4% for distributed which makes mainframe three times economically successful than distributed. Rubin studies also works with term “IT cost of goods” which means how much of goods price takes their processing through information technology. Data in subsequent table shows how cost of information technologies affects various goods price. It is based on year 2011-2012 analysis.

Industry Measure Average Mainframe Distributed Mainframe IT cost biased biased less cost Bank ATM transaction $0.029 $0.124 $0.378 67% Mortgage approved loan $290 $98 $304 68% Credit Card transaction $0.146 $0.098 $0.189 48% Railroads ton mile $0.0011 $0.001 $0.002 36% Armed Service person $8 819 $6 877 $10 526 35% Automotive vehicle $356 $276 $400 31% Retail store/door $542 330 $433 191 $595 789 27% Utilities MWh $2.580 $2.480 $3.075 19% Hospitals bed per day $73 $56 $76 27% Oil & Gas barrel of oil $2.41 $1.79 $2.5 28% Consulting consultant $57 666 $47 888 $66 331 28% Trucking road mile $0.185 $0.158 $0.198 20% Airlines passenger mile $0.008 $0.006 $0.009 30% Chemicals patent $63 489 $56 765 $63 316 10% Web Sites search $0.038 $0.039 $0.036 -8% Average: 31%

3.24 Linking of technology cost to business cost [17]

40

Mainframe vs. distributed computing

In the context of real business impact mainframes significantly took lead in some sectors. Following table shows yearly savings per given volume if mainframes would be used instead of distributed systems.

Sector Volume Mainframe Biased vs. Distributed Biased Mortgages 1 000 000 approved loans -$206 360 000 Automotive 10 000 000 vehicles -$1 239 400 000 Hospitals 1 000 000 beds -$7 456 220 000 Credit Card 1 000 000 000 card transactions -$9 100 000 000

[17] 3.25 Yearly key industries savings per volume using mainframe rather than distributed

These information and numbers shown above proves that mainframe, as more than 50 years old technology, move with the times and still matters. Although it is not much visible among all the other brand new technologies, it makes key element in many industry sectors.

41

Programmin g under z/OS

4 Programming under z/OS

A programming language is way for human how to communicate with computer. As computer works only with which is for human hard to understand, programming language is needed. After writing source code in programming language, source code is converted into machine code to be understandable by computer. Mainframe operating system supports many different programming languages of different levels and focus. Choosing of proper language depends on many factors which may be (except programmer’s skill and preferences) uttermost usage of particular language at a given installation, strengths and weaknesses of programming language, requirements of future application, compiled 32) or interpreted 33) language usage or response and time requirements. Most used programming languages under z/OS are following: [4][5] • Assembler language – Low-level symbolic programming language which is closest to machine code. It uses mnemonic abbreviations representing simple processor instructions. Therefore is highly platform depended with worse portability. On the other side thanks to its low-level character it can be used for creating very fast optimized applications. Before execution language has to be converted into machine code by special program called assembler . On z/Os IBM High Level Assembler (HLASM) is often used which in addition offers for example ability to write user-defined functions, and structured macros (for conditioning or cycles). • COBOL – COmmon Business Oriented Language is imperative 34) compiled programming language developed in cooperation with USA Department of Defense. It is based on English language and, as the name suggests, highly used for business applications. Lot of basic modules and utilities under z/OS are written in COBOL.

32) source code has to be compiled by program into machine code and only then can be executed. Compiled programs are usually much more faster than interpreted but after every editing of source code, compilation is needed again. [4] 33) Interpreted languages needs special program called which allows execution of source code. Interpreted languages are slower compared to compiled languages but on the other side among their benefits belong easier source code editing, more comfortable and usually much more better platform portability. [4] 34) is in which program consists of consecutive statements that forms . Algorithm is browsed statement by statement which changes program state.

42

Programming under z/OS

• PL/I – PL/I or Programming Language One is another high-level English-based high level language. It was created as multi-purpose language and is suitable for development both scientific and commercial applications. Its principal domain is data processing and numeric or scientific computation. PL/I also supports recursive call 35) . • C or C++ - Widely used general purpose compiled imperative programming language and its object-oriented 36) derivate. C is high-level language but have also low-level language capabilities. This allows its usage except text processing and graphics for system software coding as well. Despite its low-level capabilities, C is consistent and highly portable across different platforms. • Java – Object-oriented compiled programming language used for developing standard mainframe commercial or interface-based internet applications. Thanks to compiling into so-called ran through are Java applications platform independent. IBM is a major supporter of Java across all of the IBM computing platforms, including z/OS. Some installations contain special zAAP processor designed for running Java applications. COBOL and PL/I provide interfaces to java programs. • CLIST – CLIST (stands for command list) is interpreted imperative language for mainframes which invokes TSO functions. In the simplest form it is consecutive set of TSO system commands, in complex form CLIST can include conditioning and cycles. It is often used for performing routine tasks, invoking other , applications written in other languages and some ISPF functions are also called via CLIST. • REXX – Restructured Extended Executor, REXX, is imperative high-level programming language. On most platform is used as interpreted, on mainframe exist also compiler. Although it’s different language, REXX can be used for same purposes as CLIST, in addition it’s also good for one-time quick solutions, scripting, system programming or replacement of another high-level programming language thanks to ability of invoking other services.

35) Recursion in programming environment means situation when any function invokes the function itself. It is used for simplifying some definitions. When defining recursion some terminating condition is needed. 36) Object-oriented programming uses concept where parts of memory are described as objects having their data fields and associates methods which are used to interact with another objects.

43

Restructured Extended Executor

4.1 Restructured Extended Executor

As already mentioned, REXX is general-purpose, imperative, high-level programming language, can be compiled or not. It is widely used through mainframe platform for its versatility. Thanks to high readability and common programming structure is good for beginners and general users. REXX language is also suitable for experienced professionals because it provides wide range of powerful functions, has extensive mathematical capabilities and can be intermixed with commands to different host environments. [18] Next REXX features and components are: [18] • Ease of use – Instructions names are mostly meaningful English words, not only abbreviations as for lower-level programming languages. There are only about two dozens of instructions to use. • Free format – Although there are few rules for REXX coding, there is no need to start instructions in particular columns, spaces and even lines can be skipped, instructions can be spanned through more lines or more instructions can be coded in single line. There is no need for predefining variables, variables are always untyped 37) , variables and instruction names aren’t case sensitive and source code can be filed in upper, lower or mixed case. • Convenient built-in functions – REXX supplies large number of built-in functions for processing, searching, formatting and comparing both text strings and numbers. • Debugging capabilities – In case of encountering error while executing REXX program, message and code describing is displayed on screen. In addition instruction trace can be used for debugging. • Extensive parsing capabilities – Many built-in functions are designed for manipulating mixed input which is very handy when working with program outputs, gathered data or system commands output. • TSO external functions –Functions provided by TSO can be accessed in REXX and interact with z/OS to do specific tasks. • Data stack functions – REXX environment have predefined dynamic data structure 38) called data stack . Data can be “pushed” or “queued” into data stack. When queued data are “pulled” off the stack, they are in same order as queued in, pushed data are pulled in reverse order. In case of mix pushed and queued data in stack, pushed data in reverse order are obtained first then queued data. More data stacks can be active concurrently.

37) Untyped variable means that after declaring or filling it up, such is not associated with any . For example if number is assigned to variable, string can be assigned to same variable thereafter without any complications. 38) Dynamic structures don’t have predefined size. They are constructed via pointers linked to next item in structure (having its own pointer) and always request size according actual number of items in structure.

44

Restructured Extended Executor

REXX program can be interpreted or compiled. Usually while developed, for debugging and one-time solutions is used interpreted version of programs. For routine tasks and long-term solutions which are not planed to be edited frequently is program in many cases compiled. After execution, REXX programs runs in foreground of z/OS so any interaction with submitting user can be incorporated into program. Compiled programs could have considerably better performance. For example programs performing large number of arithmetic operations show great improvement while program entering command sequences not because compilation cannot decrease time taken to process given commands. Compiling also reduces system load because program is already prepared for execution and won’t take processor time for interpreting. Another benefit of compiling is protection of source code against unauthorized upgrades because compiling transforms source code into unreadable sequence suitable for executing. Compiler also checks syntax errors before program can be executed and can produce messages which help you with developing and maintaining REXX programs. Last benefit is in portability of compiled programs on virtual machines run under z/OS. [18]

To write new REXX interpreted program (also called REXX ) is enough to create new non-VSAM dataset with fixed blocked record format with logical record length of 80. REXX source code can reside in both sequential dataset so as in member of partitioned dataset (second case is used more often to keep various REXX programs together). [10] There is only one mandatory statement of REXX source code dataset (except correct syntax requirement). Every REXX exec has to contain commented characters “REXX” in very first line of code to be identified as REXX exec. Comments starts with “/*” and ends with “*/”, so first line of REXX exec could look as follows: /* REXX */ [18]

4.2 Job Control Language and job processing

There is one another language used in z/OS installations. Probably most often encountered language in mainframe is Job Control Language. It is not programming language in the true sense of the term. It is interpreted used for calling system modules and utilities with specific parameters. Source code of Job Control Language is also referred to as JCL. Job Control Language is used mostly for writing all the batch jobs. Majority of started tasks on system have its JCL too and it looks very similar, but let’s concentrate on batch jobs’ source code. [19] JCL is coded (as REXX code) into non-VSAM sequential data set or member of partitioned dataset, allocation requirements are the same as for REXX – fixed blocked format with 80 characters per record (in fact there could be more than 80 characters per record but only first 72 bytes are available for JCL code, following 8 columns are reserved for an optional sequence number and everything beyond 80 column is ignored).[10] Whole JCL must be entered

45

Job Control Language and job processing in UPPER CASE otherwise job ends with JCL syntax error immediately after submission. Each JCL consists of header and number of steps . Header identifies job and can also contain some JES control statements, steps are indivisible job elements. In every step specific system module or utility is invoked to perform work according parameters given in step. Three basic types of statements are used for JCL coding: [20] • JOB statement – Identifies job name, contains additional information as accounting info or programmer’s name and finally specifies various job settings as time for execution before cancelling due to timeout, which user will be notified about job end, classification of job in JES environment (there are job classes in JES defining execution priorities, available resources and so on) and many others. [10][20] • EXEC statement – Every step is quoted by EXEC statement which identifies utility invoked in the step. Step naming is optional though highly recommended as many system messages and JCL coding features refer to job and step name. EXEC statement can also include some additional parameters passed to invoked utility or conditional processsing parameters. [10][20] • statement – Identifies data set allocated for the job step. This data set can be used as input, output or workplace for utility invoked in EXEC statement. Usually there are more DD statements in one step. For example, if utility for copying data set is invoked there will be two DD statements, one for input dataset and another for output. DD statement can have any name but for some utilities particular DD names are needed. DD statement can have many various forms and parameters from straigth pointing to existing dataset through creating new datasets to hard-coded instream 39) parameters for particular utilities. [10][20]

There are few more statements for JES control, comments, indentifying external procedures, conditional execution of a job step etc., but most important are the three above. There is also possibility to code more jobs in a row into one JCL. There are strict rules for JCL coding. Each statement must be coded in following form: [20]

[identifier][name] [operation] [parameters] [comments]

identifier – starts in column 1 and identifies JCL code consisting generally of two slashes “//” but there are exceptions for comment statement (“//*”) or instream delimiter (“/*”) name – one to eight alphanumeric or national ($,#,@) characters long, starting on column 3 operation – statement type as JOB, EXEC or DD, must be preceded and followed by space parameters – one or more parameters depending on operation separated by commas comments – preceded by space any text after parameters is treated as comments

39) Instream is hard-coded data or free form text in JCL propagated into DD statement. It is needed for input parameters of some invoked utilities or coding in programming language called by JCL.

46

Job Control Language and job processing

When a job source code is written, it can be submitted directly to execution or scheduled to be submitted at given time or trigger event via scheduler. After submission, job is sent into JES input queue (stored in spool) where until system have free resources to execute it. According to system settings many jobs can be executed concurrently. All jobs are executed in the background of operating system without any user intervention. Running jobs, jobs waiting for execution and job outputs can be displayed and managed through system commands or via System Display and Search Facility. Jobs can be browsed, held from execution, released after being held, canceled, purged (i.e. canceled including deleting of output), re-executed etc. [12] When job is ready for execution it passes six states:[10] • Input – Job is sent into JES and system unique identifier is assigned to it. • Conversion – JES determines if JCL includes any external procedure. If so, procedure is merged with JCL. Then JES analyzes syntax of job. In case of encountering syntax error proper error messages are issued and job is sent directly for output processing. Otherwise source code is converted into machine code and next phase is invoked. • Execution – This is only one phase did outside of JES. Execution is handled directly by operating system. After execution, the job is sent back to JES. • Output – JES analyzes execution and creates output data. • Hard-Copy – Not always presented, it depends on job output settings. It represents copying output from spool into data set. • Purge – Job is purged from spool and message to operator is sent.

47

Syste m information gathering utility

5 System information gathering utility

A part of this diploma thesis is REXX utility developed for gathering important system information across several sysplexes for execution under z/OS environment. Utility itself consists of two partitioned data set members with REXX source code. It is not compiled because it is primarily intended to be used by skilled system programmers which can slightly modify input parameters to get desired results. Although there is possibility to create utility with interactive control and input parameters filling, it is not needed because of its destination. Ultimately it would mean only significant increase in a number of source code lines which could slow down program itself without any benefit in way of acceleration work with the program. Every system programmer is capable enough to edit utility and simply change input parameters directly in REXX exec. For usage by operators there is way to compile utility with fixed parameters and let operators run compiled version. Basic principle of the utility is generating JCL jobs with REXX code as instream and routing these JCL jobs for execution on logical partitions where user wants to know system settings. Subsequently, routed jobs will run on desired systems, generate output and send it back to partition where utility was originally submitted.

5.1 Motivation

In large mainframe business is common practice that every system part is managed by various departments. Having small team managing one partition completely would be substantially ineffective. Mainframe computation with all its hardware and software components is very complex system requiring really huge amount of knowledge to be handled effectively without failures due to lack of experience. Therefore several (from few to tens) associated partitions are kept together and responsibility over different z/OS areas are distributed among more teams. There are usually operator teams with the least authorizations monitoring system 24/7 with given instructions what to do in different cases of system errors, system programmers’ team maintaining and tuning the system itself, storage team taking care of system storage, production control team planning batch processing and middleware support handling databases and transaction managers. Finally each of this team manages from around ten to fifty different

48

Motivation logical partitions of one large customer or few smaller customers with similar scope, excluding non-customer functional partitions for networking, controlling and so on. For obvious economic reasons customers want to keep their leased systems utilized as much as possible so that they are not overloaded. Each production or even development partition is therefore large living system with many subsystems, running programs, products and facilities. Due to optimization, continuous upgrades and reacting on business requirements system settings are often changed. Getting any information about some of system settings is very simple. Often it means issuing system command or browsing appropriate system data set containing particular definition. But there could be situations when operator or system programmer needs to know particular setting or even complete information about all forty images (equals LPARs) he manages. This would mean logging on every system, issue set of commands manually, browse some definition data sets and record all the information somewhere. Then repeat that thirty-nine times. And this could take even hour or two, despite the fact that any mistake could be done in the repetitive work. For such cases utility for system information gathering across several sysplexes was developed. In addition other uses that could be found are discussed later.

5.2 How it works

Whole utility consists of two REXX execs – main program and system information gathering part. When main program is executed, it generates one JCL job for each logical partition which name is specified in the list on beginning of main program, subsequently the JCL job is submitted into JES. JCL jobs code is specified inside main program generating it. In addition whole system information gathering part is incorporated as instream into the generated job. Header of each generated job is provided with control statement containing LPAR name which causes that instead of executing under system when job was originally submitted this will routed on desired system. Note that all systems not in sysplex with partition where main program was submitted have to be connected to it via network node. Generated jobs are consists of three steps: 1. CRTEREXX – Contains whole system information gathering part source code as instream data which are stored in temporary data set. 2. CALLREXX – This step invokes execution of REXX exec system information gathering part from temporary data set created in first step. REXX is executed on current system. 3. FTPTRANS – Last step sends output created by REXX executed in second step to LPAR where main program has been submitted. Parameters for transfer are created also by REXX from second step and stored in separated output data set member. Jobs for control LPARs (those which name ends with C or D letter) have added steps causing 10 sec (respectively 20 sec) delay before step CALLREXX to avoid contention while processing CALLREXX in sysplex.

49

System information gathering part

5.2.1 System information gathering part

Although this REXX exec contains inputs which defines in which dataset the output will be stored and parameters for output transfer, parameters are used only in case they aren’t propagated from JCL job which invokes this exec. After execution, existence of output data set specified in input is checked. If data set not exists, new is created via TSO functions for data set allocation. System setting information is then gathered by issuing system commands and user programmed functions. Gathered info is continuously stored into data stack. Information gathered is described below:

System name, date and time For system name, date and time when information was obtained are used standard REXX built-in functions.

System data set volumes Name of volumes where most important system definitions resides, name and residing volume of master catalog data set. Master catalog name is obtained by calling TSO listing function. Most important system definitions are in data set with conventional names SYS1.PARMLIB and SYS1.IPLPARM. For data set residing volume is used standard REXX built-in function.

Systems in sysplex Standard system command is used for displaying sysplex partitions.

IPL information IPL (Initial Program Load) is process of loading operating system into memory. It is done after system is restarted (systems are periodically, per week or month, restarted to prevent failures) and uses parameters specified in SYS1.PARMLB and SYS1.IPLPARM. Standard system command is used for displaying last IPL parameters.

Local parmlib modification User written function exploiting TSO commands for detection of manual changes in particular members inside partitioned data set SYS1.PARMLIB. This is specific for current installation. When particulars member would be changed locally, problems with IPL could be expected.

50

System information gathering part

Parmlib updates since last IPL User-written function which exploits TSO services. It compares change date of each member in SYS1.PARMLIB to date from IPL info. If member is changed after last IPL, it is mentioned in output. When there is problem during IPL, it is possible that it’s caused by improper change in some of SYS1.PARMLIB members. That’s why are changed member listed in output.

Page data sets Page data sets holds auxiliary memory. Standard system command is used for displaying information about page data sets.

Spool volumes Spool data sets are usually defined within whole volume. Standard system command is used for displaying information about spool volumes and overall spool utilization.

JES checkpoint data sets Information about Job Entry Subsystem status is stored within checkpoint data sets. They are used for recovery in case of JES failure. Standard system command is used for displaying checkpoint data set information.

Couple data sets Couple data sets store information about its systems within sysplex. Standard system command is used for displaying couple data sets information.

Active catalogs TSO listing command is used for displaying all active catalogs on system.

Real storage status Standard system command is used for displaying information about real storage.

Status of processors Standard system command is used for displaying information about system processors.

After all information is gathered, data stack contents is saved into output data set in member with same name as system where REXX exec is run. In the end, output transfer parameters used by last step in JCL job are generated by REXX exec and stored in separate member in output data set.

51

Sy stem information gathering part

System information gathering part creates major part of whole utility. It is designed so that it can be run separately on invoked by JCL job generated by main program with propagation of input parameters. Its principle of operation is shown in following figure.

5.1 System information gathering part activity diagram

52

Main program

5.2.2 Main program

Main program input is data set name with system information gathering part REXX exec, if not found, program immediately ends. Another input is name of output data set and current system dataclass 40) , both are propagated into system information gathering part via created JCL job. The last input is data stack filled with system names where information gathering jobs will be sent. For each system, job is generated, submitted and executed on given partition. Job creates output and sends it to system specified in system information gathering REXX exec. Main program activity diagram is shown on figure 5.2 .

5.2 Main program activity diagram

40) Class defined in Storage Management Subsystem which is needed for data transfer. It could be obtained from any storage administrator managing current system.

53

Problems encountered in the implementation

5.3 Problems encountered in the implementation

Few obstacles were encountered while the utility was programmed. Some of them could be evaded by changing source code, some of them not because problems weren’t matter of coding but were caused by particular system settings.

Utility was tested and run on installation with more than forty logical partitions, approximately fifteen of the partitions are control systems. Two different unsolvable problems were encountered. One partition is not connected via network node to the remaining so routing JCL job to it doesn’t work. There would be needed intervention of network administrator to fix this problem. Three LPARs have problem with executing routed jobs thanks to settings of SDSF. As soon as parameters will be fixed, utility will be working also for these partitions.

On the other hand two other solvable problems were encountered. For checking if some important members in system definition dataset SYS1.PARMLIB were locally modified or not, custom function has been coded. This function uses directly ISPF services. It means that it have to be invoked from user having its own ISPF profile, if not service doesn’t work. Therefore definition of temporary ISPF profile has been added into second step CALLREXX in generated JCL job. But when jobs creating temporary profiles were executed on different systems in sysplex simultaneously, contention between the jobs occurred. Testing and investigation of problem showed that a little delaying of the jobs on control partitions will solve the problem. Therefore main program checks if generated job belongs to control LPAR, if so steps with delay are added. Another problem occurred during output transferring from many systems to one at once. Final output dataset was originally created as partitioned (PDS) but it turned out that it is not able to handle lot of concurrent accesses for storing output members all at once. Problem was fixed by changing allocation from PDS to PDS/E (Partitioned Data Set Extended). PDS/E is a structure similar to common partition data sets but has improved internal structure.

Eventually there were two possibilities regarding transferring outputs back to system where the utility has been submitted. One option (that one actually used) was to incorporate output transfer into the JCL jobs routed on particular systems so all outputs are sent to one system. Second option (also implemented but finally not used) was to generate one job on the system where utility is executed simultaneously with JCL jobs generating. At the end of main program transfer job would be saved, containing locations of all created output. After submission, transfer job was intended to download all the outputs. It turned out that second approach didn’t speed up transfer of the outputs. In addition another one job submission would be needed, so original solution has been chosen.

54

Utility portability and modifiability

5.4 Utility portability and modifiability

Whole system information gathering utility is created with respect to different system installations. It means there are only least changes needed to run it in different z/OS environment. Basically only two things you need to change in source code are names of systems where the generated jobs are sent and ask storage administrator for working dataclass names to be used as parameter in output transferring.

It is likewise with modifiability. System information gathering part REXX exec is inserted into the generated jobs through parameter of its data set name. Thus, there is no problem to change input parameter with REXX exec location to different exec, omit output transferring part and the utility can be used for executing any REXX program on all partitions within whole installation at once. There is also option to change only information gathering part by deleting or adding some other functions. Main program may remain unchanged and users are able to customize whole utility to be the most suitable for their needs.

As can be seen, whole the utility has relatively significant potential in terms of versatility and scalability. It’s possible that more and more uses could be found while working with it.

55

Conclusion

6 Conclusion

In this diploma thesis mainframe platform was introduced as widely used but little known style of computing. Its evolution was described from very beginning in 1964 till present powerful machines. There was shown that practically unchanged fifty years old concept still has its place in modern computer world and goes hand in hand with technological advancement. There was explained why mainframe plays essential role in some business areas. Most of mainframe advancements and strengths were demonstrated. It was described from which hardware parts is mainframe built, how powerful hardware components exploits and which peripherals uses. Further, principles of mainframe software architecture were revealed and basic parts of operating system were mentioned. This thesis tried to introduce mainframe as whole and explain its importance in present world to all who never had the opportunity to meet it directly.

In the process of creation this thesis, utility running under mainframe environment was developed. The utility is primarily designed for gathering information about system settings from greater number of logical partitions at once. It was tested and executed on active customer systems and is fully working. Except gathering system information can be the utility easily modified for massive executing REXX programs on more logical partitions at once. It can be used to simplify work of system programmers and operators by automating some manual tasks to be performed on more systems.

By working on this diploma thesis author obtained overview about history of International Business Machines Corporation, deepened his knowledge of mainframe hardware and software but first of all he had opportunity to extend his experiences with programming under z/OS.

56

List of references

List of references

1) IBM Corporation, IBM Archives [online], Armonk, New York, US, [cit. 2014-02-26]. http://www-03.ibm.com/ibm/history/documents/index.html

2) Forbes, Inc, The World's Biggest Public Companies [online], New York City, US: May 2013 [cit. 2014-02-26]. http://www.forbes.com/

3) IFI CLAIMS Patent Services, 2013 Top 50 US Patent Assignees [online], 2013, [cit. 2014-02-26]. http://www.ificlaims.com/

4) Wikipedia, free encyclopedia [online], Florida, US: created on 15.1.2001, [cit. 2014-03-08]. http://en.wikipedia.org/

5) IBM Corporation, IBM Information Center: z/OS basic skills [online], Armonk, New York, US, [cit. 23-03-2014]. https://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp

6) IBM Corporation, IBM zEnterprise System Technical Introduction . Indianapolis, Indiana, US: IBM Press, 2013. Product SG24-8050-01

7) Technology News of America, Co. Inc. Reliable Computer [online]. US: 1990 [cit. 02-04- 2014]. http://www.tech-news.com/publib/

8) IBM Corporation, IBM zEnterprise EC12 Technical Guide . 2 nd edition, Indianapolis, Indiana, US: IBM Press, 2013. Product SG24-8049-01

9) , Oracle Tape Storage [online]. California, US [cit. 02-05-2014] http://www.oracle.com/us/products/servers-storage/storage/tape-storage

10) Michal Ergens, Tomáš Hláč and others, notes from Mainframe backoffice education , October 2011

11) Printer Connection, Inc., IBM Printer Outlet.Com [online]. Dallas, US. [cit. 04-05-2014] http://www.ibmprinteroutlet.com/

12) IBM Corporation, ABCs of z/OS System Programming . 3 rd edition, Indianapolis, Indiana, US: IBM Press, 2011. ISBN-13 9780738495613

57

List of references

13) IBM Corporation, z/OS Basic Skills Information Center: z/OS concepts, Armonk, New York, US, 2010. Product number 5694-A01

14) eWEEK, Big Iron Mainframes Versus Servers: What You Need to Know . [online- article]. US: QuinStreet [cit. 18-05-2014] http://www.eweek.com/c/a/IT-Infrastructure/Big-Iron-Mainframes-Versus-x86- Servers-What-You-Need-to-Know-332020/

15) Marcel den Hartog, Is Distributed Computing Or A Mainframe Better For Your Application . [online-article]. US: Computer Associates Internation, Inc. [cit. 18-05-2014] http://www.businesscomputingworld.co.uk/is-distributed-computing- or-a-mainframe-better-for-your-application/

16) DrunkenData.com, Mainframe versus Distributed . [online-blog]. US: The Data Management Institute, LLC, 2008. [cit. 18-05-2014]. http://www.drunkendata.com/?p=1933

17) Dr. Howard Rubin, CEO & Founder, Technology Economics of Mainframe vs. Distributed Server Intensity . Study. US: Rubin Worldwide, 2012. Article No. ZSL03188-USEN-00

18) IBM Corporation, TSO/E REXX User’s Guide . 2 nd edition, Indianapolis, Indiana, US: IBM Press, 2001. Product SA22-7791-01

19) IBM Corporation, MVS JCL User’s Guide . 3 rd edition, Indianapolis, Indiana, US: IBM Press, 2003. Product SA22-7598-02

20) Mike Murach & Associates, Murach’s OS/390 and z/OS JCL . UK: Skillsoft, 2002. ISBN-13 9781890774141

21) IBM Corporation, TSO/E REXX Reference . 7 th edition, Indianapolis, Indiana, US: IBM Press, 2006. Product SA22-7790-06

22) IBM Corporation, MVS JCL Reference . 10 th edition, Indianapolis, Indiana, US: IBM Press, 2000. Product GC28-1757-09

58

List of used abbreviations

ASCC - Automatic Sequence Controlled Calculator ATL - Automated Tape Library BC - Business Class C-T-R - Computing-Tabulating-Recording Company CF - Coupling Facility CICS - Customer Information Control System CLIST - Command list CMOS - Complementary Metal-Oxide-Semiconductor COBOL - Common Business Oriented Language CP - Central Processor CPC - Central Processing Complex CPU - Central Processing Unit CU - Control Unit DASD - Direct Access Storage Device DAT - Dynamic Address Translation DIMM - Dual Inline Memory Module EBCDIC - Extended Binary Coded Decimal Interchange Code EC - Enterprise Class ESCON - Enterprise Systems Connection FICON - Fibre Connection FORTRAN - Formula Translation system GDPS - Geographically Dispersed Parallel Sysplex GRS - Global Resource Serialization HDD - Hard Disk Drive HLASM - High Level Assembler HMC - Hardware Management Console I/O - Input/Output ICF - Integrated Coupling Facility IBM - International Business Machines LAN - Local Area Network IFL - Integrated Facility for Linux IMS - Information Management System ISPF - Interactive System Productivity Facility JCL - Job Control Language JES - Job Entry Subsystem LLA - Library Lookaside LPA - Link Pack Area

59

LPAR - Logical Partition MCM - Multiple Chip Module MIPS - Million Instructions Per Second MQ - Message Queue MSU - Million Service Units NASA - National Aeronautics and Space Administration NSFNet - National Science Foundation Network OSA - Open System Adapter PC - Personal Computer PCIe - Peripheral Component Interconnect – Express PDS - Partitioned Data Set PDS/E - Partitioned Data Set Extended PL/I - Programming Language One PSA - Prefixed Save Area PU - Processing Unit RACF - Resource Access Control Facility RAM - Random Access Memory RAID - Redundant Array of Independent Disks RAIM - Redundant Array of Independent Memory RAMAC - Random Access Method of Accounting and Control RAS - Reliability, Availability, Serviceability REXX - Restructured Extended Executor RISC - Reduced Instruction Set Computing RPC - Rack Power Control rpm - revolutions per minute SABRE - Semi-Automatic Business Research Environment SAGE - Semi-Automatic Ground Environment SAP - System Assist Procesor SC - Storage Control SDSF - System Display and Search Facility SLT - Solid Logic Technology SMF - System Management Facility SMS - Storage Management Subsystem SNA - Software Network Architecture SQL - Structured Query Language TCPIP - Transmission Control Protocol and Internet Protocol Telnet - Telecommunication network TSO - Time Sharing Option VLF - Virtual Lookaside Facility VM - Virtual Machine

60

VSE - Virtual Storage Extended VTAM - Virtual Telecommunications Access Method VTS - Virtual Tape Server VSAM - Virtual Storage Access Method WLM - Workload Manager XCF - Cross-system Coupling Facility XML - Extensible Markup Language zAAP - zSeries Application Assist Processor zIIP - zSeries Integrated Information Processor

61