COBOL Quick Guide - Tutorials Point

Transcription

COBOL - QUICK GUIDEhttp://www.tutorialspoint.com/cobol/cobol quick guide.htmCopyright tutorialspoint.comCOBOL - OVERVIEWIntroduction to COBOLCOBOL is a high-level language. One must understand the way COBOL works. Computers onlyunderstand machine code, a binary stream of 0s and 1s. COBOL code must be converted intomachine code using a compiler. Run the program source through a compiler. The compiler firstchecks for any syntax errors and then converts it into machine language. The compiler creates aoutput file which is known as load module. This output file contains executable code in the formof 0s and 1s.Evolution of COBOLDuring 1950s, when the businesses were growing in the western part of the world, there was aneed to automate various processes for ease of operation and this gave birth to a high-levelprogramming 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 (COBOL68).It was again revised in 1974 and 1985 to develop subsequent versions named COBOL-74 andCOBOL-85 respectively.In 2002, Object-Oriented COBOL was released, which could use encapsulated objects as anormal part of COBOL programming.Importance of COBOLCOBOL was the first widely used high-level programming language. It is an English-likelanguage 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 COBOLStandard LanguageCOBOL is a standard language that can be compiled and executed on machines such as IBMAS/400, personal computers, etc.Business OrientedCOBOL was designed for business-oriented applications related to financial domain, defensedomain, etc. It can handle huge volumes of data because of its advanced file handling capabilities.Robust LanguageCOBOL is a robust language as its numerous debugging and testing tools are available for almostall computer platforms.

Structured LanguageLogical 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 SETUPInstalling COBOL on Windows/LinuxThere are many Free Mainframe Emulators available for Windows which can be used to write andlearn simple COBOL programs.One such emulator is Hercules, which can be easily installed on Windows by following a few simplesteps as given below:Download and install the Hercules emulator, which is available from the Hercules' home site:www.hercules-390.euOnce you have installed the package on Windows machine, it will create a folder likeC:/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 programscan be found .htmHercules is an open-source software implementation of the mainframe System/370 and ESA/390architectures, 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 toenter into the Z/OS interface (TSO/E or ISPF).Compiling COBOL ProgramsIn 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 theactual program at the time of execution. The load libraries are concatenated and given to the JCLat the time of execution using JCLLIB or STEPLIB.There are many mainframe compiler utilities available to compile a COBOL program. Somecorporate companies use Change Management tools like Endevor, which compiles and storesevery version of the program. This is useful in tracking the changes made to the D//SYSPRINT//*JOB ,CLASS 6,MSGCLASS X,NOTIFY &SYSUIDEXEC IGYCRCTL,PARM RMODE,DYNAM,SSRANGEDD DSN MYDATA.URMI.SOURCES(MYCOBB),DISP SHRDD DSN MYDATA.URMI.COPYBOOK(MYCOPY),DISP SHRDD DSN MYDATA.URMI.LOAD(MYCOBB),DISP SHRDD SYSOUT *IGYCRCTL is an IBM COBOL compiler utility. The compiler options are passed using the PARMparameter. In the above example, RMODE instructs the compiler to use relative addressing modein the program. The COBOL program is passed using the SYSIN parameter. Copybook is the libraryused by the program in SYSLIB.Executing COBOL ProgramsGive below is a JCL example where the program MYPROG is executed using the input fileMYDATA.URMI.INPUT and produces two output files written to the spool.

/SYSIN//CUST1//CUST2/*JOB CLASS 6,NOTIFY &SYSUIDEXEC PGM MYPROG,PARM ACCT5000DD DSN MYDATA.URMI.LOADLIB,DISP SHRDD DSN MYDATA.URMI.INPUT,DISP SHRDD SYSOUT *DD SYSOUT *DD *10001001The load module of MYPROG is located in MYDATA.URMI.LOADLIB. This is important to note thatthe above JCL can be used for a non-DB2 COBOL module only.Executing COBOL-DB2 programsFor 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 createdalong with the load module. The DBRM contains the SQL statements of the COBOL programswith its syntax checked to be correct.The DBRM is bound to the DB2 region (environment) in which the COBOL will run. This can bedone using the IKJEFT01 utility in a JCL.After the bind step, the COBOL-DB2 program is run using IKJEFT01 (again) with the loadlibrary 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 *//SYSOUTDD 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 thatthe program name, DB2 Sub-System Id (SSID), and DB2 Plan name are passed within the SYSTSINDD statement. The DBRM library is specified in the STEPLIB.Try it Option OnlineYou really do not need to set up your own environment to start learning COBOL programminglanguage. Reason is very simple, we have already set up COBOL Programming environmentonline, so that you can compile and execute all the available examples online at the same timewhen you are doing your theory work. This gives you confidence in what you are reading and tocheck 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 WorldFor some of the examples given in this tutorial, you will find a Try it option in our website codeselections at the to right corner that will take you to the online compiler. So just make use of it andenjoy your learning. Try it option would work only with the code compatible with OpenCOBOL. Theprograms that require JCL (Input file, Output file or Parameters) for execution would not run onTryit option.COBOL - PROGRAM STRUCTUREA COBOL program structure consists of divisions as shown in the following image: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 apredefined 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 theProcedure 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-1MOVE '10' TO WS-ID- Statement-2DISPLAY WS-ID- Statement-3.----- -- Sentence - 1----- DivisionsCOBOL program consists of four divisions.Identification DivisionIt is the first and only mandatory division of every COBOL program. The programmer and thecompiler use this division to identify the program. In this Division, PROGRAM-ID is the onlymandatory paragraph. PROGRAM-ID specifies the program name that can consist 1 to 30characters.Try the following example using the Try it option online.IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.PROCEDURE DIVISION.DISPLAY 'Welcome to Tutorialspoint'.STOP RUN.Given below is the JCL to execute the above COBOL program.//SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following result:Welcome to TutorialspointEnvironment DivisionEnvironment division is used to specify input and output files to the program. It consists of twosections:Configuration section provides information about the system on which the program iswritten and executed. It consists of two paragraphs:Source computer : System used to compile the program.Object computer : System used to execute the program.Input-Output section provides information about the files to be used in the program. Itconsists of two paragraphs:File control : Provides information of external data sets used in the program.I-O control : Provides information of files used in the program.ENVIRONMENT DIVISION.CONFIGURATION SECTION.SOURCE-COMPUTER. XXX-ZOS.OBJECT-COMPUTER. XXX-ZOS.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT FILEN ASSIGN TO DDNAMEORGANIZATION IS SEQUENTIAL.

Data DivisionData division is used to define the variables used in the program. It consists of four sections:File section is used to define the record structure of the file.Working-Storage section is used to declare temporary variables and file structures whichare used in the program.Local-Storage section is similar to Working-Storage section. The only difference is that thevariables will be allocated and initialized every time program a starts execution.Linkage section is used to describe the data names that are received from an externalprogram.COBOL ProgramIDENTIFICATION DIVISION.PROGRAM-ID. HELLO.ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT FILEN ASSIGN TO INPUT.ORGANIZATION IS SEQUENTIAL.ACCESS IS SEQUENTIAL.DATA DIVISION.FILE SECTION.FD FILEN01 NAME PIC A(25).WORKING-STORAGE SECTION.01 WS-STUDENT PIC A(30).01 WS-ID PIC 9(5).LOCAL-STORAGE SECTION.01 LS-CLASS PIC 9(3).LINKAGE SECTION.01 LS-ID PIC 9(5).PROCEDURE DIVISION.DISPLAY 'Executing COBOL program using JCL'.STOP RUN.The JCL to execute the above COBOL program is as follows://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLO//INPUT DD DSN ABC.EFG.XYZ,DISP SHRWhen you compile and execute the above program, it produces the following result:Executing COBOL program using JCLProcedure DivisionProcedure division is used to include the logic of the program. It consists of executable statementsusing variables defined in the data division. In this division, paragraph and section names are userdefined.There must be at least one statement in the procedure division. The last statement to end theexecution in this division is either STOP RUN which is used in the calling programs or EXITPROGRAM which is used in the called programs.IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NAME PIC A(30).

01 WS-ID PIC 9(5) VALUE '12345'.PROCEDURE DIVISION.A000-FIRST-PARA.DISPLAY 'Hello World'.MOVE 'TutorialsPoint' TO WS-NAME.DISPLAY "My name is : "WS-NAME.DISPLAY "My ID is : "WS-ID.STOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following result:Hello WorldMy name is : TutorialsPointMy ID is : 12345COBOL - BASIC SYNTAXCharacter Set'Characters' are lowest in the hierarchy and they cannot be divided further. The COBOL CharacterSet includes 78 characters which are shown below:CharacterDescriptionA-ZAlphabets(Upper Case)a-zAlphabets (Lower Case)0-9NumericSpace Plus Sign-Minus Sign or Hyphen*Asterisk/Forward Slash Currency Sign,Comma;Semicolon.Decimal Point or Period"Quotation Marks(Left Parenthesis)Right Parenthesis Greater than Less than:Colon'Apostrophe

Equal SignCoding SheetThe source program of COBOL must be written in a format acceptable to the compilers. COBOLprograms are written on COBOL coding sheets. There are 80 characters position on each line of acoding sheet.Character positions are grouped into the following five fields:PositionsFieldDescription1-6Column NumbersReserved for line numbers.7IndicatorIt can have Asterisk (*) indicating comments, Hyphen (-)indicating continuation and Slash ( / ) indicating form feed.8-11Area AAll COBOL divisions, sections, paragraphs and some specialentries must begin in Area A.12-72Area BAll COBOL statements must begin in area B.73-80Identification AreaIt can be used as needed by the programmer.ExampleThe following example shows a COBOL coding sheet:000100 IDENTIFICATION DIVISION.000200 PROGRAM-ID. HELLO.000250* THIS IS A COMMENT LINE000300 PROCEDURE DIVISION.000350 A000-FIRST-PARA.000400DISPLAY “Coding Sheet”.000500 STOP RUN.000100000101000102000103000104000105000106JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following result:Coding SheetCharacter StringsCharacter strings are formed by combining individual characters. A character string can be aComment,Literal, orCOBOL word.All character strings must be ended with separators. A separator is used to separate characterstrings.Frequently used separators : Space, Comma, Period, Apostrophe, Left/Right Parenthesis, andQuotation mark.

CommentA comment is a character string that does not affect the execution of a program. It can be anycombination of characters.There are two types of comments:Comment LineComment line can be written in any column. The compiler does not check a comment line forsyntax and treats it for documentation.Comment EntryComment entries are those that are included in the optional paragraphs of an IdentificationDivision. They are written in Area B and programmers use it for reference.The text highlighted in Bold are the commented entries in the following example:000100 IDENTIFICATION DIVISION.000150 PROGRAM-ID. HELLO.000200 AUTHOR. TUTORIALSPOINT.000250* THIS IS A COMMENT LINE000300 PROCEDURE DIVISION.000350 A000-FIRST-PARA.000360/ First Para Begins - Documentation Purpose000400DISPLAY “Comment line”.000500 STOP 07000108JCL to execute above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following result:Comment LineLiteralLiteral is a constant that is directly hard coded in a program. In the following example, "HelloWorld" is a literal.PROCEDURE DIVISION.DISPLAY 'Hello World'.There are two types of literals as discussed below:Alphanumeric LiteralAlphanumeric Literals are enclosed in quotes or apostrophe. Length can be up to 160 characters.An apostrophe or a quote can be a part of a literal only if it is paired. Starting and ending of theliteral should be same, either apostrophe or quote.ExampleThe following example shows valid and invalid Alphanumeric Literals:Valid:‘This is valid’"This is valid"‘This isn’’t invalid’Invalid:

‘This is invalid”‘This isn’t valid’Numeric LiteralA Numeric Literal is a combination of digits from 0 to 9, , -, or decimal point. Length can be up to18 characters. Sign cannot be the rightmost character. Decimal point should not appear at theend.ExampleThe following example shows valid and invalid Numeric Literals:Valid:100 10.9-1.9Invalid:1,0010.10.9-COBOL WordCOBOL Word is a character string that can be a reserved word or a user-defined word. Length canbe up to 30 characters.User-DefinedUser-defined words are used for naming files, data, records, paragraph names and sections.Alphabets, digits, and hyphens are allowed while forming user-defined words. You cannot useCOBOL reserved words.Reserved WordsReserved words are predefined words in COBOL. Different types of reserved words that we usefrequently are as follows:Keywords like ADD, ACCEPT, MOVE, etc.Special characters words like , -, *, , , etcFigurative constants are constant values like ZERO, SPACES, etc. All the constant values offigurative constants are mentioned in the following table:Figurative One or more characters which will be at the highest position indescending order.LOW-VALUESOne or more characters have zeros in binary representation.ZERO/ZEROESOne or more zero depending on the size of the variable.SPACESOne or more spaces.QUOTESSingle or double quotes.ALL literalFills the data-item with Literal.

COBOL - DATA TYPESData Division is used to define the variables used in a program. To describe data in COBOL, onemust understand the following terms:Data NameLevel NumberPicture ClauseValue Clause01 Level NumberTOTAL-STUDENTS Data NamePIC9(5) Picture ClauseVALUE '125'. Value ClauseData NameData names must be defined in the Data Division before using them in the Procedure Division.They must have a user-defined name; reserved words cannot be used. Data names givesreference to the memory locations where actual data is stored. They can be elementary or grouptype.ExampleThe following example shows valid and invalid data OVECOMPUTE100100 B(Reserved Words)(Reserved Words)(No Alphabet)( is not allowed)Level NumberLevel number is used to specify the level of data in a record. They are used to differentiatebetween elementary items and group items. Elementary items can be grouped together to creategroup items.Level NumberDescription01Record description entry02 to 49Group and Elementary items66Rename Clause items77Items which cannot be sub-divided88Condition name entryElementary items cannot be divided further. Level number, Data name, Picture clause andValue clause (optional) are used to describe an elementary item.

Group items consist of one or more elementary items. Level number, Data name, andValue clause (optional) are used to describe a group item. Group level number is always 01.ExampleThe following example shows Group and Elementary items:DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NAMEPIC X(25).01 WS-CLASSPIC 9(2) VALUE01 WS-ADDRESS.05 WS-HOUSE-NUMBER05 WS-STREET05 WS-CITY05 WS-COUNTRYPICPICPICPIC'10'.9(3).X(15).X(15).X(15) VALUE 'INDIA'.--- ELEMENTARY ITEM--- ELEMENTARY ITEM--- GROUP ITEM--- ELEMENTARY ITEM--- ELEMENTARY ITEM--- ELEMENTARY ITEM--- ELEMENTARY ITEMPicture ClausePicture clause is used to define the following items:Data type can be numeric, alphabetic, or alphanumeric. Numeric type consists of only digits0 to 9. Alphabetic type consists of letters A to Z and spaces. Alphanumeric type consists ofdigits, letters, and special characters.Sign can be used with numeric data. It can be either or .Decimal point position can be used with numeric data. Assumed position is the position ofdecimal point and not included in the data.Length defines the number of bytes used by the data item.Symbols used in a Picture umericVImplicit DecimalSSignPAssumed DecimalExampleThe following example shows the use of PIC clause:IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC S9(3)V9(2).01 WS-NUM2 PIC PPP999.01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.01 WS-NAME PIC A(6) VALUE 'ABCDEF'.01 WS-ID PIC X(5) VALUE 'A121 '.PROCEDURE DIVISION.DISPLAY "WS-NUM1 : "WS-NUM1.DISPLAY "WS-NUM2 : "WS-NUM2.

DISPLAY "WS-NUM3 : "WS-NUM3.DISPLAY "WS-NAME : "WS-NAME.DISPLAY "WS-ID : "WS-ID.STOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following result:WS-NUM1WS-NUM2WS-NUM3WS-NAMEWS-ID :: 000.00: .000000: -123.45: ABCDEFA121 Value ClauseValue clause is an optional clause which is used to initialize the data items. The values can benumeric literal, alphanumeric literal, or figurative constant. It can be used with both group andelementary items.ExampleThe following example shows the use of VALUE clause:IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 99V9 VALUE IS 3.5.01 WS-NAME PIC A(6) VALUE 'ABCD'.01 WS-ID PIC 99 VALUE ZERO.PROCEDURE DIVISION.DISPLAY "WS-NUM1 : "WS-NUM1.DISPLAY "WS-NAME : "WS-NAME.DISPLAY "WS-ID: "WS-ID.STOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following result:WS-NUM1 : 03.5WS-NAME : ABCDWS-ID: 00COBOL - BASIC VERBSCOBOL verbs are used in the procedure division for data processing. A statement always start witha COBOL verb. There are several COBOL verbs with different types of actions.Input / Output VerbsInput/Output verbs are used to get data from the user and display the output of COBOL programs.The following two verbs are used for this process:Accept Verb

Accept verb is used to get data such as date, time, and day from the operating system or directlythe from user. If a program is accepting data from the user, then it needs to be passed through JCL.While getting data from the operating system FROM option is included as shown in the followingbelow example:ACCEPT WS-STUDENT-NAME.ACCEPT WS-DATE FROM SYSTEM-DATE.Display VerbDisplay verb is used to display the output of a COBOL program.DISPLAY WS-STUDENT-NAME.DISPLAY "System date is : " WS-DATE.COBOL PROGRAMIDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-STUDENT-NAME PIC X(25).01 WS-DATE PIC X(10).PROCEDURE DIVISION.ACCEPT WS-STUDENT NAME.ACCEPT WS-DATE FROM DATE.DISPLAY "Name : " WS-STUDENT NAME.DISPLAY "Date : " WS-DATE.STOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLO//INPUT DD DSN PROGRAM.DIRECTORY,DISP SHR//SYSIN DD *TutorialsPoint/*When you compile and execute the above program, it produces the following result:Name : TutorialsPointDate : 2014-08-30Initialize VerbInitialize verb is used to initialize a group item or an elementary item. Data names with RENAMEclause cannot be initialized. Numeric data items are replaced by ZEROES. Alphanumeric oralphabetic data items are replaced by SPACES. If we include REPLACING term, then data items canbe initialized to the given replacing value as shown in the following example:IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NAME PIC A(30) VALUE 'ABCDEF'.01 WS-ID PIC 9(5).01 WS-ADDRESS.05 WS-HOUSE-NUMBER PIC 9(3).05 WS-COUNTRY PIC X(15).05 WS-PINCODE PIC 9(6) VALUE 123456.PROCEDURE DIVISION.A000-FIRST-PARA.INITIALIZE WS-NAME, WS-ADDRESS.

INITIALIZE WS-ID REPLACING NUMERIC DATA BY 12345.DISPLAY "My name is: "WS-NAME.DISPLAY "My ID is: "WS-ID.DISPLAY "Address: "WS-ADDRESS.DISPLAY "House Number : "WS-HOUSE-NUMBER.DISPLAY "Country: "WS-COUNTRY.DISPLAY "Pincode: "WS-PINCODE.STOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following result:My name isMy ID isAddressHouse ove VerbMove verb is used to copy data from source data to destination data. It can be used on bothelementary and group data items. For group data items, MOVE CORRESPONDING/CORR is used. Intry it option, MOVE CORR is not working; but on a mainframe server it will work.For moving data from a string, MOVE(x:l) is used where x is the starting position and l is the length.Data will be truncated if destination data item PIC clause is less than the source data item PICclause. If the destination data item PIC clause is more than the source data item PIC clause, thenZEROS or SPACES will be added in the extra bytes. The following example makes it clear:IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9).01 WS-NUM2 PIC 9(9).01 WS-NUM3 PIC 9(5).01 WS-NUM4 PIC 9(6).01 WS-ADDRESS.05 WS-HOUSE-NUMBER PIC 9(3).05 WS-COUNTRY PIC X(5).05 WS-PINCODE PIC 9(6).01 WS-ADDRESS1.05 WS-HOUSE-NUMBER1 PIC 9(3).05 WS-COUNTRY1 PIC X(5).05 WS-PINCODE1 PIC 9(6).PROCEDURE DIVISION.A000-FIRST-PARA.MOVE 123456789 TO WS-NUM1.MOVE WS-NUM1 TO WS-NUM2 WS-NUM3.MOVE WS-NUM1(3:6) TO WS-NUM4.MOVE 123 TO WS-HOUSE-NUMBER.MOVE 'INDIA' TO WS-COUNTRY.MOVE 112233 TO WS-PINCODE.MOVE WS-ADDRESS TO WS-ADDRESS1.DISPLAY "WS-NUM1: " WS-NUM1DISPLAY "WS-NUM2: " WS-NUM2DISPLAY "WS-NUM3: " WS-NUM3DISPLAY "WS-NUM4: " WS-NUM4DISPLAY "WS-ADDRESS : " WS-ADDRESSDISPLAY "WS-ADDRESS1 : " WS-ADDRESS1STOP RUN.

JCL to execute the above COBOL program.//SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program it produces the following 12233123INDIA112233Legal MovesThe following table gives information about the legal blePossibleNot cNot PossiblePossiblePossibleAdd VerbAdd verb is used to add two or more numbers and store the result in the destination operand.Syntaxgive below is the syntax to Add two or more numbers:ADD A B TO C DADD A B C TO D GIVING EADD CORR WS-GROUP1 TO WS-GROUP2In syntax-1, A, B, C are added and the result is stored in C (C A B C). A, B, D are added and theresult is stored in D (D A B D).In syntax-2, A, B, C, D are added and the result is stored in E (E A B C D).In syntax-3, sub-group items with in WS-GROUP1 and WS GROUP2 are the added and result isstored in WS-GROUP2.ExampleIDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9) VALUE01 WS-NUM2 PIC 9(9) VALUE01 WS-NUM3 PIC 9(9) VALUE01 WS-NUM4 PIC 9(9) VALUE01 WS-NUMA PIC 9(9) VALUE01 WS-NUMB PIC 9(9) VALUE01 WS-NUMC PIC 9(9) VALUE01 WS-NUMD PIC 9(9) VALUE01 WS-NUME PIC 9(9) VALUE10 .10.10.10.10.10.10.10.10.

PROCEDURE DIVISION.ADD WS-NUM1 WS-NUM2 TO WS-NUM3 WS-NUM4.ADD WS-NUMA WS-NUMB WS-NUMC TO WS-NUMD GIVING WS-NUME.DISPLAY "WS-NUM1: " WS-NUM1DISPLAY "WS-NUM2: " WS-NUM2DISPLAY "WS-NUM3: " WS-NUM3DISPLAY "WS-NUM4: " WS-NUM4DISPLAY "WS-NUMA: " WS-NUMADISPLAY "WS-NUMB: " WS-NUMBDISPLAY "WS-NUMC: " WS-NUMCDISPLAY "WS-NUMD: " WS-NUMDDISPLAY "WS-NUME: " WS-NUMESTOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following 0000000040Subtract VerbSubtract verb is used for subtraction operations.Syntaxgiven below is the syntax for Subtract operations:SUBTRACT A B FROM C DSUBTRACT A B C FROM D GIVING ESUBTRACT CORR WS-GROUP1 TO WS-GROUP2In syntax-1, A and B are added and subtracted from C. The Result is stored in C (C C-(A B)). A andB are added and subtracted from D. The result is stored in D (D D-(A B)).In syntax-2, A, B, C are added and subtracted from D. Result is stored in E (E D-(A B C))In syntax-3, sub-group items within WS-GROUP1 and WS-GROUP2 are subtracted and the result isstored in WS-GROUP2.ExampleIDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9) VALUE01 WS-NUM2 PIC 9(9) VALUE01 WS-NUM3 PIC 9(9) VALUE01 WS-NUM4 PIC 9(9) VALUE01 WS-NUMA PIC 9(9) VALUE01 WS-NUMB PIC 9(9) VALUE01 WS-NUMC PIC 9(9) VALUE10 .10.100.100.10.10.10.

01 WS-NUMD PIC 9(9) VALUE 100.01 WS-NUME PIC 9(9) VALUE 10.PROCEDURE DIVISION.SUBTRACT WS-NUM1 WS-NUM2 FROM WS-NUM3 WS-NUM4.SUBTRACT WS-NUMA WS-NUMB WS-NUMC FROM WS-NUMD GIVING WS-NUME.DISPLAY "WS-NUM1: " WS-NUM1DISPLAY "WS-NUM2: " WS-NUM2DISPLAY "WS-NUM3: " WS-NUM3DISPLAY "WS-NUM4: " WS-NUM4DISPLAY "WS-NUMA: " WS-NUMADISPLAY "WS-NUMB: " WS-NUMBDISPLAY "WS-NUMC: " WS-NUMCDISPLAY "WS-NUMD: " WS-NUMDDISPLAY "WS-NUME: " WS-NUMESTOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS A,MSGCLASS C//STEP1 EXEC PGM HELLOWhen you compile and execute the above program, it produces the following 0000000070Multiply VerbMultiply verb is used for multiplication operations.SyntaxGiven below is the syntax to multiply two or more numbers:MULTIPLY A BY B CMULTIPLY A BY B GIVING EIn syntax-1, A and B are multipled and the result is stored in B (B A*B). A and C are multipled andthe result is stored in C (C A*C).In syntax-2, A and B are mult

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. CCOOBBOOLL -- EENNVVIIRROONNMMEENNTT SSEETTUUPP 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.