Showing posts with label Mainframes tutorials. Show all posts
Showing posts with label Mainframes tutorials. Show all posts

History of the IBM Mainframes Computer

Mainframes  are powerful computers used mainly by large organizations for critical applications, typically bulk data processing such as census, industry and consumer statistics, enterprise resource planning, and financial transaction processing.

A mainframe is a continually evolving general purpose computing platform incorporating in it architectural definition the essential functionality required by its target applications."

Some additional comments about this definition are in order. One of the most fundamental features of the mainframe world is the rapid and apparently endless evolution of the product line. From 16 general and 4 floating point registers of System/360, to the control register additions in the early 370s, to the access registers of the latter 370s, to the full complement of floating point registers of System/390 and the full 64 bit implementation offered by the z800/900 models; from 6 selector channels to 16 block multiplexing channels to 256 high speed optical channels; from 142 instructions to over 500 instructions; from real addressing to virtual addressing to virtual machines; from the simple 8 bit memory of the 360/30 through generations of development to the multiported, multilevel caching, multiprocessor supporting memory of the z900, the entire hardware domain of the mainframe world has been characterized by an unmatched, and indeed accelerating, evolution.

Mainframes used to be defined by their size, and they can still fill a room, cost millions, and support thousands of users. But now a mainframe can also run on a laptop and support two users. So today's mainframes are best defined by their operating systems: Unix and Linux, and IBM's z/OS, OS/390, MVS, VM, and VSE. Mainframes combine four important features: 1) Reliable single-thread performance, which is essential for reasonable operations against a database. 2) Maximum I/O connectivity, which means mainframes excel at providing for huge disk farms. 3) Maximum I/O bandwidth, so connections between drives and processors have few choke-points. 4) Reliability--mainframes often allow for "graceful degradation" and service while the system is running.

What is GETMAIN and FREEMAIN? What are the restrictions while using GETMAIN and FREEMAIN?

The concept of CICS GETMAIN is simply to provide the programmer the capacity of obtaining additional storage to augment storage acquired automatically by his program (e.g. WORKING-STORAGE in a COBOL program). The programmer may define certain fields (01 Levels) in the LINKAGE SECTION that may require the use of a GETMAIN to obtain the storage. These fields are usually output fields that are not passed to the program by another program (caller).

In the case of input fields the use of the SET can be used to point to the acquired area or a calling program can pass the address to the called program. The acquired area from a GETMAIN can be above or below the line. In addition storage acquired by a normal GETMAIN can be explicitly released by a FREEMAIN or automatically released when the task ends by CICS. However a program can acquire SHARED storage that comes out of the SDSA/ESDSA that requires an explict FREEMAIN as this type of storage is not automatically released at task end. The use of shared storage requires more control as incorrect use can quickly deplete the (E) DSA storage available.

Basic Framework of Job Control Language-JCL

My head’s spinning around the 3 JCL Statements : JOB, EXEC and DD. Could you tell me something more about them?
So, you’ve got the gist of the concept behind JCL, all the JCL that you going to write from hereon, maybe for the next 10-20 years, would be composed of three main statements :





//nameJOBparameters...
//nameEXECparameters...
//nameDDparameters..

Each of this JCL Statements have a label – a symbolic name assigned to them. Its like naming kids. Well, there could be so many boys in your area, but how do distinguish them? Of course, by their names.


In the same way, a JCL may contain a bunch of DD Statements, one for Input file, one for the output file, one for the error file. How do you tell them apart, by naming them. As a good practice, we always give names to all our JCL Statements. Names kinda help you to refer back to these statements in the future. You want to point out a particular JCL Statement to your friend, just spell out its name.

But, notice carefully, each label(name) is preceded with two slashes //. The two slashes are a JCL Statement’s signature. They indicate that the statement is a JCL Statement(one of JOB, EXEC, DD). Every JCL Statement wear the two slashes //. A naked statement without // won’t be treated as a JCL Statement.

Now, every JOB, EXEC and DD Statement has got these whole lot of parameters. What you’ll be learning throughout these tutorials is mostly the parameters. Parameters add stuff and meaning to the JCL Statement.

Now, let me give you a booster, that’s going to help you organise the way you think about this JCL.

JCL is made up of mainly JOB, EXEC and DD.
- JOB is easy to learn and use.
- EXEC is easy and fun to use.
- DD Statements take three forms
   1. DD Statements to read a file.(easy)
   2. DD Statements to write to the logs.(easy)
   3. DD Statements to create a new file(hard!); you’d have to learn parameters such as DISP, UNIT, DCB, SPACE and several others to code this.

Have a good look at this chart :
Image99[1]