Friday, January 27, 2017

COBOL - Quick Guide

COBOL - Overview

Introduction to COBOL

COBOL is a high-level language. One must understand the way COBOL works. Computers only understand machine code, a binary stream of 0s and 1s. COBOL code must be converted into machine code using a compiler. Run the program source through a compiler.
The compiler first checks for any syntax errors and then converts it into machine language. The compiler creates a output file which is known as load module. This output file contains executable code in the form of 0s and 1s.

Evolution of COBOL

During 1950s, when the businesses were growing in the western part of the world, there was a need to automate various processes for ease of operation and this gave birth to a high-level programming language meant for business data processing.
  • In 1959, COBOL was developed by CODASYL (Conference on Data Systems Language).
  • The next version, COBOL-61, was released in 1961 with some revisions.
  • In 1968, COBOL was approved by ANSI as a standard language for commercial use (COBOL-68).
  • It was again revised in 1974 and 1985 to develop subsequent versions named COBOL-74 and COBOL-85 respectively.
  • In 2002, Object-Oriented COBOL was released, which could use encapsulated objects as a normal part of COBOL programming.

Importance of COBOL

  • COBOL was the first widely used high-level programming language. It is an English-like language which is user friendly. All the instructions can be coded in simple English words.
  • COBOL is also used as a self-documenting language.
  • COBOL can handle huge data processing.
  • COBOL is compatible with its previous versions.
  • COBOL has effective error messages and so, resolution of bugs is easier.

Features of COBOL

Standard Language

COBOL is a standard language that can be compiled and executed on machines such as IBM AS/400, personal computers, etc.

Business Oriented

COBOL was designed for business-oriented applications related to financial domain, defense domain, etc. It can handle huge volumes of data because of its advanced file handling capabilities.

Robust Language

COBOL is a robust language as its numerous debugging and testing tools are available for almost all computer platforms.

Structured Language

Logical control structures are available in COBOL which makes it easier to read and modify. COBOL has different divisions, so it is easy to debug.

COBOL - Environment Setup

Installing COBOL on Windows/Linux

There are many Free Mainframe Emulators available for Windows which can be used to write and learn simple COBOL programs.
One such emulator is Hercules, which can be easily installed on Windows by following a few simple steps as given below:
  • Download and install the Hercules emulator, which is available from the Hercules' home site: www.hercules-390.eu
  • Once you have installed the package on Windows machine, it will create a folder like C:/hercules/mvs/cobol.
  • Run the Command Prompt (CMD) and reach the directory C:/hercules/mvs/cobol on CMD.
  • The complete guide on various commands to write and execute a JCL and COBOL programs can be found at:
  • www.jaymoseley.com/hercules/installmvs/instmvs2.htm
Hercules is an open-source software implementation of the mainframe System/370 and ESA/390 architectures, in addition to the latest 64-bit z/Architecture. Hercules runs under Linux, Windows, Solaris, FreeBSD, and Mac OS X.
A user can connect to a mainframe server in a number of ways such a thin client, dummy terminal, Virtual Client System (VCS), or Virtual Desktop System (VDS). Every valid user is given a login id to enter into the Z/OS interface (TSO/E or ISPF).

Compiling COBOL Programs

In order to execute a COBOL program in batch mode using JCL, the program needs to be compiled, and a load module is created with all the sub-programs. The JCL uses the load module and not the actual program at the time of execution. The load libraries are concatenated and given to the JCL at the time of execution using JCLLIB or STEPLIB.
There are many mainframe compiler utilities available to compile a COBOL program. Some corporate companies use Change Management tools like Endevor, which compiles and stores every version of the program. This is useful in tracking the changes made to the program.
//COMPILE   JOB ,CLASS=6,MSGCLASS=X,NOTIFY=&SYSUID             
//*            
//STEP1     EXEC IGYCRCTL,PARM=RMODE,DYNAM,SSRANGE
//SYSIN     DD DSN=MYDATA.URMI.SOURCES(MYCOBB),DISP=SHR
//SYSLIB    DD DSN=MYDATA.URMI.COPYBOOK(MYCOPY),DISP=SHR
//SYSLMOD   DD DSN=MYDATA.URMI.LOAD(MYCOBB),DISP=SHR
//SYSPRINT  DD SYSOUT=*
//*
IGYCRCTL is an IBM COBOL compiler utility. The compiler options are passed using the PARM parameter. In the above example, RMODE instructs the compiler to use relative addressing mode in the program. The COBOL program is passed using the SYSIN parameter. Copybook is the library used by the program in SYSLIB.

Executing COBOL Programs

Give below is a JCL example where the program MYPROG is executed using the input file MYDATA.URMI.INPUT and produces two output files written to the spool.
//COBBSTEP  JOB CLASS=6,NOTIFY=&SYSUID
//
//STEP10    EXEC PGM=MYPROG,PARM=ACCT5000
//STEPLIB   DD DSN=MYDATA.URMI.LOADLIB,DISP=SHR
//INPUT1    DD DSN=MYDATA.URMI.INPUT,DISP=SHR
//OUT1      DD SYSOUT=*
//OUT2      DD SYSOUT=*
//SYSIN     DD *
//CUST1     1000
//CUST2     1001
/*
The load module of MYPROG is located in MYDATA.URMI.LOADLIB. This is important to note that the above JCL can be used for a non-DB2 COBOL module only.

Executing COBOL-DB2 programs

For running a COBOL-DB2 program, a specialized IBM utility is used in the JCL and the program; DB2 region and required parameters are passed as input to the utility.
The steps followed in running a COBOL-DB2 program are as follows:
  • When a COBOL-DB2 program is compiled, a DBRM (Database Request Module) is created along with the load module. The DBRM contains the SQL statements of the COBOL programs with its syntax checked to be correct.
  • The DBRM is bound to the DB2 region (environment) in which the COBOL will run. This can be done using the IKJEFT01 utility in a JCL.
  • After the bind step, the COBOL-DB2 program is run using IKJEFT01 (again) with the load library and the DBRM library as the input to the JCL.
//STEP001  EXEC PGM=IKJEFT01
//*
//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR
//*
//input files
//output files
//SYSPRINT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSDBOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//DISPLAY  DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(MYCOBB) PLAN(PLANNAME) PARM(parameters to cobol program) -
    LIB('MYDATA.URMI.LOADLIB')
    END
/*
In the above example, MYCOBB is the COBOL-DB2 program run using IKJEFT01. Please note that the program name, DB2 Sub-System Id (SSID), and DB2 Plan name are passed within the SYSTSIN DD statement. The DBRM library is specified in the STEPLIB.

Try it Option Online

You really do not need to set up your own environment to start learning COBOL programming language. Reason is very simple, we have already set up COBOL Programming environment online, so that you can compile and execute all the available examples online at the same time when you are doing your theory work. This gives you confidence in what you are reading and to check the result with different options. Feel free to modify any example and execute it online.
Try the following example using our Try it option available alongside the code in our website.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'Hello World'.
STOP RUN.
When you compile and execute the above program, it produces the following result:
Hello World
For some of the examples given in this tutorial, you will find a Try it option in our website code selections at the to right corner that will take you to the online compiler. So just make use of it and enjoy your learning. Try it option would work only with the code compatible with OpenCOBOL. The programs that require JCL (Input file, Output file or Parameters) for execution would not run on Tryit option.

COBOL - Program Structure

A COBOL program structure consists of divisions as shown in the following image:
Program Structure A brief introduction of these divisions is given below:
  • Sections are the logical subdivision of program logic. A section is a collection of paragraphs.
  • Paragraphs are the subdivision of a section or division. It is either user-defined or a predefined name followed by a period, and consists of zero or more sentences/entries.
  • Sentences are the combination of one or more statements. Sentences appear only in the Procedure division. A sentence must end with a period.
  • Statements are meaningful COBOL statement that performs some processing.
  • Characters are the lowest in the hierarchy and cannot be divisible.
You can co-relate the above-mentioned terms with the COBOL program in the following example:
PROCEDURE DIVISION.
A0000-FIRST-PARA SECTION.
FIRST-PARAGRAPH.
ACCEPT WS-ID            - Statement-1  -----|
MOVE '10' TO WS-ID      - Statement-2       |-- Sentence - 1
DISPLAY WS-ID           - Statement-3  -----|
.

No comments:

Post a Comment