You are on page 1of 46

COBOL (Common Business Oriented Language) – 15-18 sessions

----------------------------------------------------------------
Intro COBOL Program Structure - Division, Section & Paragraph

Variable Declarations - Level Numbers, PIC clause,


Data types & Size
Input-Output & Arithmetic - VALUE CLAUSE, Accept &
Display - Compute
Data Movement Verbs - Simple Move, Move with Of
clause, Group Move & CORR
Conditional Statements - IF & Evaluate Statement –
Continue & Next Sentence
Control Sequence Verbs - Perform ,STOP RUN, GOBACK,
EXIT, EXIT PROGRAM, GOTO
File Handling - OPEN, READ, WRITE, REWRITE,
DELETE & CLOSE
Memory Saving - Usage Clause, 88 Level
Number, Redefines & Renames 66 LEVEL
Array-Occurs table - Search & Search All - PERFORM
VARYING
Sub-Program - CALL Statement
(Static & Dynamic Call)
String Handling Verbs - String, Unstring, Inspect &
Referential
===================================================================================
==========================
Mandatory Task To Complete in Practicals:
1. DISPLAY PGM 2. ADDPGM01 - ABEND THE PGM 3. CLIAM PGM - 10 BUINESS VAR. 4.
CUSTPGM -TIILE. 5. CARDPGM -4 POINTS
===================================================================================
==========================
COBOL CLASS 10:-
----------------------------------
FILE PROGRAM-:-

ANY APPLICATION -> 1PGM -> 10000 FILE PGM --> FALL INTO 4 TYPES

1. 1 INPUT FILE -- 1 OUTPUT FILE


2. 1 INPUT FILE -- MORE OUTPUT FILE 1 & 2 TYPE => ARE
STRIGHT FORWARD - EASY
--
3. MULTIPLE INPUT FILE - 1 OUTPUT FILE
3. MULTIPLE INPUT FILE - MORE OUTPUT FILE

--> MULTIPLE INPUT:-


LET SAY -> 2 INPUT FILE

1. MAIN INPUT FILE -> LOGIC TO PROCESS THIS DATA


2. REFERENCE INPUT FILE --> USED TO 1. GET MORE INFORMATION TO PROCESS
THE MAINRECORD
2. JUST FOR VALTIATION OF THE MAIN RECORD.

TRANSACTION FILE(CREDIT CARD FOR OCT) MAIN FILE** - > MASTER CARD
FILE (C1111,02000.00,0.15
-
C1111,ANIL,10,000.00
-> CREATE A CREDIT CARD BILL ?? TOTAL-DUE-
CURRENT-MONTH + LAST-DUE + DUE-INTREST
-> IF WE HAVE MULTIPLE INPUT FILE IN PGM:
-> WE NEED TO USE A LOGIC - 2 SUCH:

1. MATCHING LOGIC
2. LOOK-UP LOGIC

-> TODAY CLASS -> TO HANDLE - 1 INPUT FILE:-

2 FILE PGM:

1. CREATE AN FILE - ACCOUNT DATA 1 OUTPUT


FILE
2. READ THE ACCOUNT FILE (P1) -> CREATE 2 MORE FILE AS OUTPUT.
1 INPUT FILE --- 2 OUTPUT FILE

--> 1. ACCTPGM1
1. DEFINE SOME ACCOUNT VARIABLE (*INPUT - OUTPUT VARIBALE)
2. GET THE INPUT -> ACCEPT
3. PROCESS
3.1 -> VALIDATE THE DATA
4. IF DATA IS VALID -> WRITE** - PUT THE DATA INTO A FILE.

INPUT -> ACCEPT


LOGICAL -> IF CONDITION
OUTPUT -> WRITE -> FILE

=> WRITE STATEMENT: 1.USED TO MOVE THE DATA FROM PGM => FILE
2. WE CAN ONLY WRITE - FULL SINGLE RECORD

SYNTAX: WRITE FILE-LAYOUT-NAME.

--> ACCTPGM2
1. DEFINE TH ACCOUNT FILE VARIBALE.
2. GET THE INPUT -. FILE --> READ**
3. PROCESS:
3.1 => CHECK THE ACCOUNT TYPE
1. SAVINGS --> OUTPUT FILE F1
2. CURRENT --> OUTPUT FILE F2
3. OTHER -> ERRRO DISPLAY/ABEND
4. AS PER THE ACCT-TYPE
-2 OUTPUT FILE > WRITE

INPUT -FILE F1 ---> READ => CHECK ACCT TYPE -> 1. FILE F2 <SAVING
2. FILE F3 < CURRENT

--> READ STATEMENT - USED TO GET 1 RECORD FROM THE FILE

3 RECORD -. READ -> 1ST RECORD


READ -> 2ND RECORD
READ -> 3RD RECORD
READ -> NO RECORD -> END OF THE FILE.

SYNTAX: READ FILE-NAME


AT END
CLOSE THE LOOP
NOT AT END
PROCESS THE RECORD
END-READ.

-PROJECT:

READ FILENAME
AT END
CLOSE THE LOOP.
COBOL CLASS 09:-
------------------------------
File Handling - OPEN, READ, WRITE, REWRITE,
DELETE & CLOSE
---------------------------
MAINFRAME -> USED TO STORE THE DATA

-> IN MAINFAME > DATA IS STORED IN 2 PLACE 1. FILE SYSTEM


(NOTEPAD)
2. DATABASE -SOFTWARE DESIGNED TO
STORE & MANAGE DATA (MS WORD)

--> FILE SYSTEM -> IN PROJECT 2 FILE SYSTEM

1. QSAM --> PS & PDS (PS - DATA , PDS - PGM)


2. VSAM --> KSDS KSDS DATA

--> I WANT TO USE THE PS (PHYSICAL SEQ ) /FILE IN MY PGM:-

FILE CONCEPT => 2 THINGS 1. FILE -> CONTAINS THE DATA (FILE
-COLLECTION OF RECORDS
EACH SINGLE
RECORD ->COLLECTION OF FIELDS
-ACCOUNT-FILE:
A1111,ANIL,1000.00,100.00,B10933,S9191 R1 F1-
A11111,F2-ANIL
A1111,ANIL,1000.00,100.00,B10933,S9191 R2
A1111,ANIL,1000.00,100.00,B10933,S9191 R3

2. LAYOUT OF THE FILE/RECORD -> EXPLAIN THE


FIELDS NAME & TYPE

ACCOUNT FILE- LAYOUT:


01 ACCT-DETAILS-IN.
03 ACCT-NUM
03 CUST-NAme
03 ACCT-CURR-BAL
03 LAST-TRAN-AMT
03 BR-CODE
03 B-SERIVCE-CODE

==> I WANT TO CODE THE COBOL+FILE PROGRAM:-

-CHANGES:
ID DIVISION. NO CHANGE
PROGRAM-ID. NAME.
AUTHOR. NAME.
DATE-WRITTEN. TODAY.

ENVIRONMENT DIVIISON. -THIS IS 1ST CHANGE - RELATED TO FILE


PGM.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
** DEFINE THE REQUIRED FILE (INPUT-OUTPUT) -4 LINES
SELECT FILE-NICK-NAME-1 ASSIGN TO JCL-DDNAME-1
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-STATUS-VARIABLE-1.

SELECT FILE-NICK-NAME-2 ASSIGN TO JCL-DDNAME-2


ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-STATUS-VARIABLE-2.

DATA DIVISION.
FILE SECTION. THIS IS IOUR SECOND CHANGE
FD FILE-NICK-NAME-1
LABEL RECORD ARE STANDARD.
01 ACCT-DETAILS-IN -RECORD LAYOUT/FILE
LAYOUT/LAYOUT
03 ACCT-NUMBER
..

FD FILE-NICK-NAME-2
LABEL RECORD ARE STANDARD.
01 ACCT-DETAILS-OUT.
03 ACCT-NUMBER

WORKING-STORAGE SECTION.
01 WS-STATUS-1 PIC X(02) VALUE SPACE.
01 WS-STATUS-2 PIC X(02) VALUE SPACE.

PROCEDURE DIVISION.
-> TO ANY - 3 STEPS

1. OPEN THE FILE -> OPEN STATEMENT


2. ACCESS THE DATA -> READ ,
WRITE , REWRITE , DELETE
3. CLOSE THE FILE -> CLOSE STATEMENT

-> OPEN STATEMENT -> 1ST STEP - BEFORE WE ACCESS THE DATA
- WE MUST OPEN THE FOLE SUCCESSUFLL

SYNTAX: OPEN MODE FILENAME-1, FILE-NAME2.

-> FILE OPENING MODES:


1. INPUT MODE -> OPEN INPUT FILE-NAME. ->
ONLY OPERATION - 'READ THE DATA' << FILE ACTS AS INPUT
2. OUTPUT MODE -> OPEN OUTPUT FILE-NAME ->
ONLY OPETAIOJN 'WRITE' -> ONLY ADD NEW RECORD TO FILE
3. I-O MODE -> OPEN I-O FILE-NAME -> OPERATION
-> READ & REWRITE *UPDATE OF THE DATA
4. EXTEND MODE -> OEPN EXTEND FILE-NAME ->
ONLY WRITE -> ADD NEW RECORD TO FILE

1. DIFF OUTPUT & EXTEND MODE:- 1. OUTPUT MODE -> WE ARE USE
- NEW FILE -> RECORD WILL BE ADDED ON THE TOP.
2. EXTEND MODE -> WE ARE USING
'EXISTING FILE' - RECORD WILL ADDED TO BOTTOM ON FILE

2. FOR A SEQUENTIAL FILE (PS FILE) -> WE CANNOIT USE - DELETE


OPERATION.
3. IN OUR PROJECT POINT
-> WE ONLY - READ (INPUT MODE) & WRITE (OUTPUT MODE) TO
FILE
-> WE DO NOT UPDATE THE DATA IN FILE (WE CANNOT
DELETE AS WELL)

REASON:-
FILE F1 -> ON DAY -> 1000.00
-> DEPOSIT --> UPDATE ON BAL -> F1
-> WITHEDARW => UPDATE ON BAL -> F1
--> -10 DAYS
-> FILE F1 -> CURENT BAL -> 1100.00

-QUESTION -> WHAT WAS MY PREVIOUS BAL:_ --> WE LOST THE


HISTORY *UPDATE THE DATA FILE - WE LOOSE THE HISTORY.

HOW TO UPDATE DATA IN PROJECT**


FILE F1 --> ON DAT -> 1000.00
-> DEPOIST -> 1000.00 + 100 -> 1100 WRITE-> F2
-> WITHDRASW -> 100.00 -> 1100 - 100 - 1000 -
>WIRTE -> F3

TEXT BOOK --> WHILE UR OPENING ? -> READ -> CLOSE

NEW NOTE BOOK --> WHILE UR OPENING ? -> WRITE -> CLOSE

2. CLOSE THE FILE:

CLOSE FILENAME1,FILENAME2.

1, ENVIRONMENT DIVISON, DEFINE THE FILE


2. DATA DIVISION DEFINE THE LAYOUT
3. PROESDURE 1. OPEN 2. READ 3.CLOSE
1. OPEN 2. WRIRE 3. CLOSE

--> SELECT ** -> USED TO PROVIDE 1. FILE'S NICK NAME


2. JCL DD NAME = USED TO CONNECT - COBOL
FILE NICK NAME =WITH THE - ACTUAL FILE NAME

-> FILE'S NICK NAME** (LOGICAL NAME)

MAINFRAME -> PS DATASET -> IBMUSER.T8.ACCT.FILE << ACTUAL FILE


NAME
1. WE CANNOT CODE THIS NAME -DIRECTLY IN THE
PGM
WHY? -> FORMAT -> IN COBOL -DOT? --END
OF THE STATEMENT
2. PROD FILE NAME & TEST FILE NAME
-> DIFFERENT.
2. INSTEAD - WE CAN DEFINE ANY SHORT NAME IN
THE PGM

IN COBOL: IN RUN JCL


SELECT ACCT-INFILE ASSIGN TO ACCTDD01 //ACCTDD01 DD
DSN=IBMUSER.T8.ACCT.FILE,DISP=SHR
A B B C
A=B B=C
EXECUTION
ANY OPERATION ON A-- > C <IT WILL EFFECT.

2. ORGANIZATION ->
USED TO TELL - TYPE OF THE FILE & HOW THE DATA IS ARRANGE IN THE
FILE..

PS -> ORGNAIZATION IS SEQUENTIAL 1. WE CAN WRITE A RECORD IN


SEQ IN 1 BY 1
2. WE CAN HAVE - DUPLICATE
3. DATA CAN BE IN UN-SORTED ORDER.

KSDS -> ORGNIAZATION IS INDEXED 1. WE CAN ADD NEW RECORD


1 BY 1
2. NO DUPLICATE
3. DATA WILL BE IN SORT ORDER

BY DEFAULT -> 'SEQUENTIAL.

3. ACCESS MODE -> USED TO TELL - HOW TO ACCESS/GET THE DATA FROM FILE.

3 WAYS 1. SEQUENTIAL -> READING THE DATA 1 BY 1 - FROM TOP -


BOTTOM
A1,A2...A8,A9,A10 --> LOOKING A8 -
SEQ -> READ A1..A2...A8

2. RANDOM -> READ A PARTICUALR RECORD BASED ON THE KEY VALUE


A1,A2....A10 -> LOOK FOR A8 -->
RANDOM -> READ ONLY A8

3. DYNMIAC -> RANDOM + SEQ

>> PS --> SEQUNETIAL


>> KSDS -> SEQ + RANDOM + DYNAMIC

>> BY DEFAULT - ITS SEQUNETIAL

4. FILE STATUS VARIBALE-:

-> SUB A JOB -COMPILATION/EXECUTION -> WILL IT BE ALWAYS SUCCESSFUL 0-


NOT
-HOW DO WE KNOW IT WAS
SUCCESS/FAILED -> RETURN CODE = MAXCC=??
-> WHEN WE PERFORM ANY FILE OPERATION (READ - WRITE) - IT MAY BE
SUCCESS / FAIL
-HOW DO WE KNOW IT IS
SUCCESS/FAILED -> SYSTEM -RETRUN CODE -> STATUS CODE.

01 WS-STATUS-CODE PIC X(02).

FILE OPERATION (READ/WRITE)


STATUS CODE = 00 -> SUCCESSFUL
---
10 - END OF THE FILE *WHILE UR READING)
-
21,22,23,24 -> KSDS ERROR
-
39* -> ATTRIBUTE MISMATCH ERROR
(DEVELOPER MISTAKE)
IN COBOL FILE DETAILS NOT MATCHING
JCL FILE
--
41,42... LOGICAL ERROR *DEVELOPER
MISTAKE)
-
35 * 96 -> INVALID/MISSING DDNAME
(COBOL - SELECT 5 FILE - JCL - 4 FILE)
-
97 -> KSDS INDEX ISSUE
COBOL CLASS 08:-
------------------------------------------------------
CODE A SIMPLE -> PGM -> CARD DETAILS

1. DEFINE THE VARIBALE


2. GET THE DATA AS INPUT ACCEPT
3.PROCESS OF THE DATA
3.1 AUDIT THE DATA
3.2 REMOVE THE DUPLICATE CARD NUMBER.
3.3 FILTER FOR THOSE CUSTOMER -WHOSE DUE AMOUNT - GREATER THAN
75% OF THE CARD LIMIT*
3.4 FILTER FOR THOSE CUSTOMER - WHOSE - CARD EXPIRE DATE IS
WITHIN 30 DAYS**
4. IF THE INPUT IS VALID DATA -> SEND IT AS OUTPUT = DISPLAY

==> VALIDATION OF THE DATA -> 3 LEVEL 1. CHECK FOR PRENCSE OF THE DATA
(IF INPUT RECEIVED OR NOT) CARD-NUMBER -> SPACE??
2. RECEVIED INPUT -> IS IT IN REQUIRED FORMAT
-> CONTACT-NUMBER -> 9908 502 54 (10DIGT)
3. THE DATA WE GOT IS PRSENT IN MASTER
FILE/TABLE -> REFERENCE VALIADation
CLAIM-
REQUEST -> POLICY NUMBER

POLICY MASTER TABLE

CONTROL PGM FLOW -> 2 STATEMENT:

1. PERFORM --> USED TO PASS THE CONTROL TO A PARA -- THE CONTROL


WILL RETURN BACK AFTER EXECUTING THE STATEMENT -PARA.
-> WE USE PERFORM -> PASS CONTROL - LOGICAL
PARA - TO EXECUTE THE STATEMENT
PERFORM 310-AUDIT-PARA.

2. GOTO** --> USED TO PASS THE CONTROL TO A PARA -- THE CONTROL


WILL NOT RETURN BACK
==> WE USE 'GOTO' -> PASS THE CONTROL ONLY
'EXIT-PARA' 0> TO SKIP THE LOGICAL STATEMENT.

DUPLICATE:
1 C1111
2 C2222
3 C3333
4 C2222
5 C4444
6 C3333 --> OUT OF THESE 6 RECORDS -> WHICH RECORD ARE DUPLICATE -
> = 4 & 6

2 AND 3 - ARE THEY DUPLICATE?? NO

IN COBOL -> HOW MANY RECORD WE PROCESS AT A TIME ONLY 1.

-<IF U GET THE FIRST -> CHECK FOR DUPLICATE -> NO CHECK
-> IF U GET SECOND -> HOW TO CHECK FOR DUPLICATE -> WE OVERIDE ON 1ST
RECORD.

==> DATA NEED TO BE SORTED ORDER.


C111 1ST RECORD -> NOT A DUPLICATE -> HOLD THIS RECORD -
ANOTHER VARIBALE
C222 2ND RECORD -> COMPARE WITH HOLD VARIBALE
C222
C333
C333
C444

CARDLIMIT -> 10000 25000 (75 - 18750)


5000 ? NO 17500 ?? NO
6000 ? NO 19000 ? YES
7000 ? NO
8000 ? YES

COBOL CLASS 07:-


---------------------------------
HOW TO CODE COBOL PGM IN PROJECT STYLE:-

-> WE FOLLOW -2 CODING CONEPTS 1. TOP-DOWN APPROACH


2. MODUCLAR CODING/PARAGRAPH CODING.

=-=> PROCEDURE DIVISION.


0000-MAIN-PARA. -> TOP OF THE
PGM**
DISPLAY 'PGM NAME STARTED'.
PERFORM 1000-INITIAL-PARA THRU 1000-EXIT.
PERFORM 2000-GET-INPUT-PARA THRU 2000-EXIT. TO GET ONLY
1 ST RECORD.
PERFORM 3000-PROCESS-PARA THRU 3000-EXIT
UNTIL WS-END-OF-INPUT = 'YES'.

CLOSE THE FILE HERE (IN CASE)

DISPLAY 'TOTAL INPUT RECORD COUNT ' WS-IN-REC-CNT.


DIPLAY 'TOTAL OUTPUT RECORD COUNT ' WS-OT-REC-CNT.

GOBACK.

1000-INITIAL-PARA.
1. SET/RESET THE SWTICH VARIBALE MOVE 'Y' TO WS-SW-VAR OR
MOVE 'N' TO WS-SW-VAR.
2. INTITILIZE THE NUM & ALP-NUMERIC MOVE SPACE OR MOVE ZERO

3. GET THE DATES -IF REQUIRED. 1. CURRENT DATE 2. WEEKEND 3.


MONTH END 4. YEAR END DATE

4. OPEN THE FILE HERE.


5. INITIALIZE THE FILE VARIBALE HERE
6. PREPARE THE LOOK-UP DATA TABLE****

1000-EXIT. EXIT.

2000-GET-INPUT-PARA.
1. GET THE INPUT 1. ACCEPT 2. FILE -READ STATEMENT
2. INCREASE THE COUNTER -> ADD +1 TO WS-IN-REC-CNT.

2000-EXIT. EXIT.

3000-PROCESS-PARA.
1. AUDIT THE DATA INPUT(VALIDATION) -3 LEVEL OF VALIDATION
2. APPLY THE BUINESS LOGIC 1. DATA FILTER 2. DATA CREATATION 3.
CALCUCATION
PERFORM 3100-GET-PREVI-BAL-PARA THRU 3100-EXIT
PERFORM 3200-CAL-CURR-BAL-PARA THRU 3200-EXIT
PERFORM 3300-CAL-FINAL-BAL-PARA THRU 330O-EXIT

3. PREPARE THE OUTPUT VARIBALE.


4. SEND THE DATA AS OUTPUT** END OF THE RECORD 1ST , 2ND
RECORD , 3RD RECORD

5. GET NEXT RECORD 2ND RECORD -3RD INPUT RECORD -? NO 4TH


RECORD

3000-EXIT. EXIT.

-> IMP** > PARA -NUMBERING** => USED TO KNOW - PROGRAM FLOW.

-> ON A DAY -> ANIL IS SUPPORT -> JOB ABEND -> PGM P1 -> SPOOL ->SYSOUT
-> 'ERROR IN 3230-CAL-PARA'

--> ANIL -> SEE'S -> CONTROL -> 0000 - 3000 - 3200 - 3230 << CONTROL
MOVED IN PGM.
-> MAIN-PARA. 0000
1000-INITIAL
2000
3000--> 3100
3200 --> 3210 -> 3211,3212... 3213-1000
3220
3230 -> FAILED

COBOL CLASS 06;-


------------------------
Control Sequence Verbs - Perform ,STOP RUN, GOBACK,
EXIT, EXIT PROGRAM, GOTO
-----------------

COBOL PGM -> 3 IMP STATMENT -> 1. MOVE 2. IF COND 3. PERFORM *TODAY-
TOMORROW

MOVE -> WORK WITH DATA MOVMENET


IF COND -> LOGIC & PERFOMACNE
--
PERFORM -> CONTROL THE FLOW THE PGM**

--> CONTROL THE PGM -> 2 CASES

1. CONTROL THE EXIT OF THE PGM


2. CONTROL THE FLOW THE PGM -WITHIN THE CODE.

--> PGM -> EXECUTION -> AS A DEVELOPER -> 2 WAYS TO COME OUT OF THE PGM

1. COMPLETE THE PGM SUCCESSFUL -> USE =EXIT CONTROL STATEMENT '1. STOP
RUN 2. GOBACK 3. EXIT PROGRAM
2. ABEND THE PGM -> IN CASE OF DATA ISSUE -> CALL 'ABENDPGM'
-->

1. STOP RUN -> USED TO SEND THE CONTROL OUT OF THE PGM , CONTROL WILL RETURN
BACK TO 'OS' -> MUST BE USED ONLY IN MAINPGM

2. EXIT PROGRAM -> USED TO SEND THE CONTROL OUT OF THE PGM , CONTROL WILL BE
RETURNED BACK TO 'MAINPGM' -> MUST BE USED ONLY IN SUBPGM

3. GOBACK -> USED TO SEND THE CONTROL OUT OF THE PGM. ==> GOBACK CAN BE USED
IN ANY PGM --> PREFFER THIS IN ALL OUR PROJECT PGM

==> WE CAN CODE THE EXIT STATMEENT (STOP RUN , GOBACK ,EXIT PROGRAM) -IN ANY WHERE
IN THE PGM
-> MUST BE CODED ONLY 1 TIME.

==? Q1 -> CODE THE COBOL PGM ->COMPILE THE PGM - ?? WHY DO WE COMPILE ==> CONVERT
THE SRC TO MACHINCE -> WHY DO U WANT TO CONVERT? MACHINCE -LOAD.
==> Q2 -> CODE THE RUNCJL JOB -> SUBMIT-EXECUTING -> Q1 -> HOW THE MACHINCE CAN
UNDERSTAND JCL ENG??

//IBMUSERX JOB ===>ENGLISH -> UNDERSTOOD THIS CODE?


//S1 EXEC PGM=NAME

=> CODE RUN JCL -> SUBMIT -> JES -> 1. CHECK UR JCL CODE -> MISTAKES -> 'JCL
ERROR'
2. NO MISTAKES -> STEPLIB --> PICK THE LOAD UR PGM ->
HAND LOAD TO 'OS'

SPOOL -> SUBMIT JOB -> JESMSGLG


JESJCL
JESSYSMSG

-> SUBMIT -> FEW SECOND => MAXCC=00 (NOTIFICATION- NOTIFY)


--
CODE JCL > SUBMIT -> JES -> STEPLIB -LOAD -> OS (PGMA - S1,S2,S3..STOP RUN) -->OS -
> JES -NOTIFY -> MAXCC=00

IN COBOL -> SUB-PROGRAM CONCEPTS:

PGMA --PASSING THE CONTROL --> PGMB


| |
MAINPGM SUBPGM

= JCL -> SUBMIT -> JES -:<LOAD (PGMA) -> OS ->(PGMA -S1,S2,S3..--PGMB(S1,S2,S3 -
STOP RUN) --> OS --> INCORRECT. CONTROL SHPOIULD GO TO MAINPGM
--
-> JCL 0> SUBMIT -> JES -> LOAD (PGMA) -> OS -> PGMA -S1,S2,S3 -PGMB (S1,S2,S3 -
EXIT PROGRAM) -> PGMA(S4,S5-STOP RUN) -> OS - JES -> MAXCC=00

==3RD CASE:
->
? JCL -> SUBMIT -> JES -> LOAD (PGMA) -> OS ->(PGMA -S1,S2,S3 -> GOBACK) --> OS**
(LIKE STOP RUN)
? JCL -> SUBMIT -> JES -> LOAD (PGMA) -> OS -> (PGMA S1,S2,S3 - PGMB -S1,S2,S3 -
GOBACK---> PGMA -S4,S5=GOBACK) --> OS - JES - MAXCC=00

PGM. S1 PGM S1
S2 S3
GOBACK GOBACK
S3 -> THIS FELLOW? S2

===> CONTROL THE PGM FLOW - WITH IN THE CODE**:-

-1. PERFORM
-2. GO TO
-3. EXIT
--->
PERFORM STATEMENT *THORY -BOOK POINT:-

-> 2 TYPES 1. INLINE PERFORM


2. OUTLINE PERFORM

> INLINE PERFORM: THE LOGICAL STATEMENT(S1,S2) -> ARE CODED WITHIN PERFORM -
END-PERFORM STATEMENT
-> S1,S2 CANNOT BE EXECUTED/REUSED -FROM ANY
PART OF THE PGM

SYNTAX: PERFORM
S1
S2
END-PERFORM.

> OUTLINE PERFORM > THE LOGICAL STATEMENT (S1,S2) ARE CODED IN PARAGRAPHS (X-
PARA) - CONTROL IS PASSED USED 'OUTLINE PERFORM'
=> S1,S2 -> CAN BE EXECUTED -AGAIN FROM ANY WHERE
PROGRAM.

PERFORM X-PARA. -CONTROL WILL GOTO X-PARA -EXECUTE S1,S2


& CONTROL WILL RETURN BACK
S3
PERFORM X-PARA.

X-PARA.
S1
S2.

PERFORM X-PARA.

==> PERFORM > IS ALSO USED FOR LOOPING** -> EXECUTE THE SAME CODE MULTIPLE TIMES
WE CALL THIS AS LOOP

TYPE OF PERFORM -LOOP:


1. SIMPLE PERFORM -> PERFORM X-PARA. >
EXECUTE ONLY 1 TIME
2. PERFORM N TIMES -> PERFORM X-PARA 5 TIMES. -> X-
PARA EXECUTE 5 TIMES. (NOT MUCH USED)
3**. PERFORM UNTIL COND -> PERFORM X-PARA UNTIL COND-IS-
TRUE
-> COND IS TRUE -> LOOP WILL
STOP
-> COND IS FALSE -> LOOP WILL
START -CONTINUE
4* PERFORM VARYING -> LATER.
5* PERFORM THRU** -> USED TO EXECUTE MULTIPLE PARA TOGETHER

-> BOOK EX: => EXECUTE ALL 3 PARA


-> 1. PERFORM X-PARA
PERFORM Y-PARA
PERFORM Z-PARA.

-> 2. PERFORM X-PARA THRU Z-PARA. S1,S2 -S3,S4


- S5 S6

X-PARA.
S1,S2.
Y-PARA.
S3,S4.
Z-PARA.
S5,S6.
-> PROJECT EX:
-> IN UR PGM -> FOR EACH LOGICAL CODE -> CODE 2 PARAGRAPHS

1. LOGICAL PARA -> S1,S2,.. LOGIC


2. EXIT PARA -> EXIT STATEMENT (NO OTHER STATEMENT)

PERFORM 1000-PROCESS-PARA THRU 1000-EXIT.


PERFORM 1000-PROCESS-PARA THRU 1000-EXIT UNTIL COND-IS-TRUE.

1000-PROCESS-PARA.
S1
S2
S3.

1000-EXIT. EXIT.

EX:**
01 WS-I PIC 9(02) VALUE ZERO.

P.D.
PERFORM UNTIL WS-I > 10 0>10(F) 1>10(F) 9>10 10>10 (F)
11>10(T) -EXIT
DISPLAY WS-I 0 1 9 10
ADD +1 TO WS-I 0+1=1 1+1=2 9+1=10
10+1 = 11
END-PERFORM.

O/P: 0-10

01 WS-I PIC 9(02) VALUE ZERO.

P.D.
PERFORM UNTIL WS-I < 10 0 < 10 (T) -> EXIT THE LOOP
DISPLAY WS-I
ADD +1 TO WS-I
END-PERFORM.
O/P: -> NOTHING

1. U CODE THE LOOP -> LOOP SHOULD START -> COND MUST BE FALSE
2. IF LOOP ALREADY STARTED -> MAKE SURE -> LOOP STOP SOME WHERE.

01 WS-I PIC 9(02) VALUE ZERO.

P.D.
PERFORM UNTIL WS-I > 100 0 > 100(F) ... 99>100(F) 00>100(F)
1>100(F)....99>100(F)
DISPLAY WS-I 0 99 00
99
ADD +1 TO WS-I 0+1 = 1 99+1=00 0+1=1
99+1=00
END-PERFORM.
O/P?: ->1. 0-100
2.LOOP -- RIGHT
3. 0-99
4. 0-100

-->LOGICAL LOOP **

CUSTPGM1 -> LOGIC SEQ -> 1. ACCEPT 2. IF 3. MOVE 4. DISPLAY <<


ONLY 1 CUSTOMER

-> CODE THE PGM FOR 3CUSTOMER:

DEV-1 --> ACCEPT ACCEPT ACCEPT IF IF IF MOVE MOVE MOVE DISPLAY


DISPLAY DISPLAY => NO ONE
ANIL -ARUN SUNIL
|GONE |GONE

DEV-2 --> ACCEPT IF MOVE DISPLAY ACCEPT IF MOVE DISPLAY ACCEPT IF MOVE
DISPLAY => ALL OVER -> RIGHT
ANIL -----MR,ANIL ARUN......... MR.ARUN
RANI..........MRs.RANI

=> DEV-1 -> LOOPED ONLY STATEMENT.


=> DEV-2 => LOOP THE LOGIC -> RIGHT
COBOL CLASS 05:-
-------------------------------------------------------------
Conditional Statements - IF & Evaluate Statement –
Continue & Next Sentence
-----------------

CONDITIONAL STATEMENT 1. IF STATEMENT (TODAY)


2. EVALUATE STATEMENT (TOMORROW)

-> IN PGM -> WE DO THE DATA PROCESSING 1. AUDIT/VALIDATION => IF


STATMENT
2. CALCUCATION
3. FILTERING THE DATA ==> IF
4. APPLYING THE BUINESS RULES --> IF

-> WE CAN CODE A CONDITION ON ANY DATA-TYPE -> ALP-NUMER OR NUMEIRC

--> IF STATEMENT : USED TO SET A CONDITION -> BASED ON THE CONDITION


(TRUE/FALSE) OUTPUT - WE SET THE LOGICAL STATEMENT.

0> CONDITION VARIBALE -> SINGLE POSSIBLE (BOOLEAN) => IF OR IF-


ELSE
-> MULTIPLE POSSIBLE VALUE => IF-ELSE
LADDER** & EVALUATE

IF - 3 SYNTAX:
SIMPLE IF: STATEMENT S1
IF CONDITION
T- S2,S3
END-IF.
S4
COND - TRUE -> S1 - S2 -S3 - S4
FALSE -> S1 - S4

2> IF-ELSE S1
IF CONDITION
T-S2,S3
ELSE
F-S4,S5
END-IF.
S6 COND -TRUE -> S1 - S2,S3 - S6
FA -> S1 - S4,S5 - S6

3> IF-ELSE LADDER


S1
IF CONDITION-1
T-S2,S3
ELSE
IF CONDITION-2
T-S4,S5
ELSE
F-S6,S7
END-IF
END-IF.
S8
ONLY COND-1 IS TRUE: - S1 - S2,S3- S8
ONLY COND-2 IS TRUE: - S1 -S4,S5,- S8
BOTH COND-1/2 ARE TRUE - >S1,S2,S3,S8
BOTH COND-1/2 ARE FALSE -> S1,S6,S7,S8

SYNTAX POINT: - FOR EACH IF -> WE CODE - AN 'END-IF'


-> B/W IF & END-IF -> ALL THE STATEMENT WE CODE - DO NOT USE -
DOT (.)

==> EVALUATE STATEMENT:- USED FOR CONDITION IN THE PGM


-> MULTIPLE VARIABLE OPTION *IF-ELSE LADDER

CUSTOMER PGM -> GENDER:


-------------------------
IF-ELSE LADDER EVALUATE TRUE
EVALUATE VARIBALE'

IF GENDER = 'MALE' EVALUATE TRUE


EVALUATE GENDER
MR. WHEN GENDER = 'MALE' WHEN
'MALE'
ELSE MR MR
IF GENDER = 'FEMALE' WHEN GENDER = 'FEMALE'
WHEN 'FEMALE'
MRs. MRs MRs
ELSE WHEN OTHER WHEN OTHER
ERROR + ABEND ERROR + ABEND
ERROR + ABEND
END-IF END-EVALUATE.
END-EVALUATE.
END-IF.
========
CONTINUE & NEXT SENTENCE: THESE SATATEMENT ARE CALLED AS 'DO NOTHING STATEMENT'
-> THEY ARE USED - TO SKIP THE CONTROL FROM THE IF/EVALUATE
STATEMENT.

-> IF CONDITION --> SOME TIME IF CONDITION


T - S1,S2 T- NO LOGIC TO CODE < DO
NOTHING - 1. CONTINUE OR NEXT SENTECNE
ELSE ELSE
F - S3,S4 F - S1,S2
END-IF END-IF.

> CONTINUE -> THE SYSTEM WILL MOVE THE CONTROL TO NEXT STATEMENT - WHICH COME
AFTER -'NEAREST END-IF'

> NEXT SENTENCE -> THE SYSTEM WILL MOVE THE CONTROL TO NEXT STATEMENT - WHICH
COME AFTER 'NEAREST DOT'

EX:
Q1: IN PGM P1
3 LINES OF CODE

ACCEPT VARA.
ACCEPT VARB
ACCEPT VARC. -Q? HOW MANY STATEMENT? 3 STATEMENT
HOW MANY SENETANCE? 2 SENTENCE (CAN HAVE
1 OR MORE STATEMENT END WITH A DOT)

S1
IF COND-1
S2
S3
IF COND-2
- NOTHING 1. CONTINUE 2. NEXT SENTENCE
ELSE
S4,S5
END-IF
S6 - HERE -CONTINUE
ELSE
S7
END-IF.
S8 -HERE NEXT SENTENCE.

Q2: S1
IF CONDITION-1
-NOTHING ?? WHAT I NEED CODE> CONTINUE / NEXT SENTENCE
ELSE
S2,S3
END-IF.
S4 << TO GET THE CONTROL HERE
-- ABOVE IS BOOK POINT -- BELOW IS PROJECT VIEW:-

-CODE A SIMPLE PGM - 1. DEFINE SOME VARIBALE -> CUSTOMER DETAILS


2. GET THE INPUT -> ACCEPT
3. CHECK -CUSTOMER-GENDER --> MALE - FEMALE
| |
4. OUTPUT- CUSTOMER-TITLE MR. MRs

ID DIVISION.
PROGRAM-ID. CUSTPGM1.
AUHTOR. NAME.
DATE-WRITTEN. TODAY.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUST-DETAILS-IN.
03 CUST-ID PIC X(05).
03 CUST-NAME PIC X(10).
03 CUST-GENDER PIC X(10).

01 CUST-DETAILS-OUT.
03 CUST-ID PIC X(05) VALUE SPACE.
03 CUST-TITLE PIC X(03) VALUE SPACE.
03 CUST-NAME PIC X(10) VALUE SPACE.
03 CUST-GENDER PIC X(10) VALUE SPACE.

PROCEDURE DIVISION.
000-MAIN-PARA.
DISPLAY 'CUSTPGM1 STARTED'.

S1 MOVE SPACE TO CUST-ID OF CUST-DETAILS-IN


CUST-NAME OF CUST-DETAILS-IN
CUST-GENDER OF CUST-DETAILS-IN.

S2 ACCEPT CUST-ID OF CUST-DETAILS-IN


ACCEPT CUST-NAME OF CUST-DETAILS-IN ANIL
RANI ANIL
ACCEPT CUST-GENDER OF CUST-DETAILS-IN. MALE
FEMALE MAIL

S3 IF CUST-GENDER OF CUST-DETAILS-IN = 'MALE' MALE =


'MALE' (T) FEMALE='MALE'(F) MAIL='MALE'
MOVE 'MR' TO CUST-TITLE OF CUST-DETAILS-OUT
MR. SKIP SKIP
END-IF.
S4 IF CUST-GENDER OF CUST-DETAILS-IN = 'FEMALE' MALE =
'FEMALE'(F) FEMALE='FEMALE'(T) MAIL=FEMALE
MOVE 'MRs' TO CUST-TITLE OF CUST-DETAILS-OUT
SKIP MRs NO
END-IF.

S5 MOVE CUST-ID OF CUST-DETAILS-IN TO


CUST-ID OF CUST-DETAILS-OUT
MOVE CUST-NAME OF CUST-DETAILS-IN TO
CUST-NAME OF CUST-DETAILS-OUT
MOVE CUST-GENDER OF CUST-DETAILS-IN TO
CUST-GENDER OF CUST-DETAILS-OUT

S7 DISPLAY 'CUSTOMER DETAILS WITH TITLE ' CUST-DETAILS-OUT. MR


ANIL MRs.RANI .ANIL

STOP RUN.
--> CODE -> COMPILE -> LOAD
--TEST RUN JCL
//IBMUSERX JOB NOTIFY=&SYSUID
//STEP1 EXEC PGM=CUSTPGM1
//STEPLIB DD DSN=IBMUSER.T8.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
C1111 C2222
ANIL RANI
MALE FEMALE
/*
//
EXPECTED O/P -> CUSTPGM1 STARTED CUSTPGM1 STARTED
C1111 MR ANIL MALE C2222 MRs RANI FEMALE

---> DEVELOPER -> PGM NEED TO GET INTO THE PRODUCTION.

CUSTPGM1 -> COMPILED -> TESTED -ALL ARE GOOD -> SHALL WE MOVE THIS
CODE IN PRODUCTION**

2 FACTOR -bEFORE WE MOVE THE CODE TO PRDUCTION.


-> 1. PERFORMANCE OF THE PGM

CUSTPGM1 -> 10 RECORD AS INPUT -> 20 COND CHECK


1 MILLION -> 2 MILLION CONDITION

-
CUSTPGM2:

PROCEDURE DIVISION.
000-MAIN-PARA.
DISPLAY 'CUSTPGM2 STARTED'.

MOVE SPACE TO CUST-ID OF CUST-DETAILS-IN


CUST-NAME OF CUST-DETAILS-IN
CUST-GENDER OF CUST-DETAILS-IN.

ACCEPT CUST-ID OF CUST-DETAILS-IN


ACCEPT CUST-NAME OF CUST-DETAILS-IN ANIL
RANI ANIL
ACCEPT CUST-GENDER OF CUST-DETAILS-IN. MALE
FEMALE MAIL

IF CUST-GENDER OF CUST-DETAILS-IN = 'MALE'


MALE='MALE'(T) FEMALE = 'MALE'(F) MAIL = MALE
MOVE 'MR' TO CUST-TITLE OF CUST-DETAILS-OUT
MR SKIP SKIP
ELSE
MOVE 'MRs' TO CUST-TITLE OF CUST-DETAILS-OUT
MRs MRs
END-IF.

MOVE CUST-ID OF CUST-DETAILS-IN TO


CUST-ID OF CUST-DETAILS-OUT
MOVE CUST-NAME OF CUST-DETAILS-IN TO
CUST-NAME OF CUST-DETAILS-OUT
MOVE CUST-GENDER OF CUST-DETAILS-IN TO
CUST-GENDER OF CUST-DETAILS-OUT

DISPLAY 'CUSTOMER DETAILS WITH TITLE ' CUST-DETAILS-OUT.MR


ANIL MRs RANI MRs.ANIL

STOP RUN.

MALE -> 1 COND -> 10 RECORD => 10 COND CHECK


FEMALE -> 1 COND

==? WHICH PGM WE MOVE TO


PRODUCTION? BAD DATA.. ==MOVE TO PROD==
--> CUSTPGM1 -> 2 COND FOR EACH RECORD --> POOR -> NO <-
No title -ANIL NO
-> CUSTPGM2 > 1 COND FOR EACH RECORD -> BEST -> YES <-
WRONG TITLE - MRs.ANIL NO

--> LOGIC & PERFORMNACE <-- CHOOSE ONE?? -> LOGIC IS IMPORTANT

ID DIVISION.
PROGRAM-ID. CUSTPGM3.
AUHTOR. NAME.
DATE-WRITTEN. TODAY.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUST-DETAILS-IN.
03 CUST-ID PIC X(05).
03 CUST-NAME PIC X(10).
03 CUST-GENDER PIC X(10).

01 CUST-DETAILS-OUT.
03 CUST-ID PIC X(05) VALUE SPACE.
03 CUST-TITLE PIC X(03) VALUE SPACE.
03 CUST-NAME PIC X(10) VALUE SPACE.
03 CUST-GENDER PIC X(10) VALUE SPACE.

PROCEDURE DIVISION.
000-MAIN-PARA.
DISPLAY 'CUSTPGM3 STARTED'.

MOVE SPACE TO CUST-ID OF CUST-DETAILS-IN


CUST-NAME OF CUST-DETAILS-IN
CUST-GENDER OF CUST-DETAILS-IN.

ACCEPT CUST-ID OF CUST-DETAILS-IN


ACCEPT CUST-NAME OF CUST-DETAILS-IN ANIL
RANI ANIL
ACCEPT CUST-GENDER OF CUST-DETAILS-IN. MALE
FEMALE MAIL

IF CUST-GENDER OF CUST-DETAILS-IN = 'MALE'


MALE='MALE'(T) FEMALE='MALE'(F) MAIL='MALE'(F)
MOVE 'MR' TO CUST-TITLE OF CUST-DETAILS-OUT MR.
SKIP SKIP
ELSE
IF CUST-GENDER OF CUST-DETAILS-IN = 'FEMALE'
FEMALE='FEMALE(T) MAIL=FEMALE(F)
MOVE 'MRs' TO CUST-TITLE OF CUST-DETAILS-OUT
MRs SKIP
ELSE
DISPLAY 'ERROR IN CUSTOMER GENDER INPUT'
DISPLAY 'CUSTOMER DETAILS IS ' CUST-DETAILS-IN
CALL WS-ABENDPGM
ERROR + ABEND
END-IF
END-IF.

MOVE CUST-ID OF CUST-DETAILS-IN TO


CUST-ID OF CUST-DETAILS-OUT
MOVE CUST-NAME OF CUST-DETAILS-IN TO
CUST-NAME OF CUST-DETAILS-OUT
MOVE CUST-GENDER OF CUST-DETAILS-IN TO
CUST-GENDER OF CUST-DETAILS-OUT

DISPLAY 'CUSTOMER DETAILS WITH TITLE ' CUST-DETAILS-OUT.


MR.ANIL mrS.RANI

STOP RUN.

--> MALE RECORD -> 1 TIME


--> FEMALE RECORD -> 2 TIMES

10 RECORD -> 6 MALE -> 1 * 6 = 6


4 FEMALE -> 2 * 4 = 8 -> 14

10 RECORD -> 4 MALE -> 1 * 4 -> 4


6 FEMALE -> 2 * 6 -> 12 => 16

CUSTPGM1 -> 10 RECORD -> 20 TIMES -> POOR --> LOGIC IS NOT CORRECT
-> NO TO PROD
CUSTPGM2 -> 10 RECORD -> 10 TIMES -> BEST LOGIC IS VERY BAD
-> NO TO PROD
CUSTPGM3 -> 10 RECORD -> 14/16 TIMES -> GOOD LOGIC IS CORRECT
=> YES TO PROD.

COBOL CLASS 04:-


-------------------------------------------
--> TODAY CLASS -> SHOW U 2 THING -> 1. SIMPLE & IMPORTANT

1. HOW DO I COMPILE THE PGM IN PROJECT** (INTERVIEW)


2. VOWEL OF COBOL LANG
|
VOWEL -> A E I O U
> IN ENG LANG -> THERE IS NO WORD - WHICH DO NOT HAVE THE LETTER
OR NOT USED SPELL OF THE NAME

IN COBOL -> VOWEL** -> 3 STATEMENT -> USED IN EACH AND EVERY
SINGLE COBOL PGM

1. MOVE STATEMENT (TODAY) -- HANDLE THE DATA


MOVEMENT
2. IF STATMENET (TOMORROW) -> LOGICAL
3. PERFORM STATEMENT (NEXT DAY) -> PROGRAM FLOW.

--> COMPILATION -> WE USE TOOL 1. EDIT THE PGM 2. COMPILE THE PGM -=>
VERSION CONTROL TOOL

-> EDITING THE PGM -> F3 & ENTER -> COMPILER JOB
SUBMITED BY THE TOOL** -> MAXCC=00??
====>
MOVE STATEMENT**:-
--> USED TO PASS THE DATA TO A VARIBALE WITHIN THE PGM

-> VARIBALE -> WE GET DATA FROM OUTSIDE OF THE PGM (USING INPUT STATEMENT)
|
TO PASS THE DATA TO ANOTHER VARIBALE << MOVE STATEMENT.

SYNTAX: MOVE VAR-A TO VAR-B. VAR-A = 10 , VAR-


B=20 -AFTER MOVE - VAR-A = 10 ;; VAR-B=10

POINT #1:
HOW MOVE STATEMENT - BEHAVIUS.:

DATA -> 2 TYPE 1. NUMEIRC 2. ALP-NUMERIC

--> NUMRICA -> RIGHT JSUTIFICATION

MOVE 100 TO VAR-A PIC 9(03). -> NO ISSUE 100


MOVE 100 TO VAR-A PIC 9(04). -> NO ISSUE 0100 ->
LEFT OVER SPACE - ADD - ZERO
MOVE 100 TO VAR-A PIC 9(02). -> DATA TRUCATION -> 1- 00

-> ALP-NUMERIC -> LEFT JUSTIFICATION

MOVE 'ANIL' TO VAR-B PIC X(04) -> NO ISSUE -> ANIL


MOVE 'ANIL' TO VAR-B PIC X(05). -> NO ISSUE -> ANILb
b- BLANK SPACE
MOVE 'ANIL' TO VAR-B PIC X(03) -> ANI - L

ANILb = ANILbb > equal or not? -> MATCHING -> ANY SPACE
RIGHT SIDE ARE IGNROED IN COMPARSION
ANILbKUMAR = ANILbbKUMAR -> NOT MATCHING
VAR-VALUE -> ANIL = anil -> same
'ANIL' = 'anil' -CONSTANCT -> NOT SAME.
POINT #2
-WHEN TO USE THE MOVE IN PGM**

1. INITILIZE THE VAIRBALE IN PROCEDURE DIVISION.

VALUE -> I CAN INITLAIZE THE VAOIBRALE 1. USED IN


WORKING-STORAGE SECTION 2. ONLY INITLIZE BEFORE 1 RECORD
MOVE -> USED FOR ALL VAIRBALE -. INITLIZE THE VAIRBALE - BEFORE
GET NEXT RECORD

MOVE SPACE TO ALP-NUM.


MOVE ZERO TO NUM-VAR. MOVE ZERO TO VAR-A, VAR-B.

2. RESET/SET THE 2 MAIN VARIABLE

1. SWTICH VARIBALE. -> USED FOR CONDITION & CONTROLING THE PGM

MOVE 'Y' TO SW-VARIABLE ->SET


MOVE 'N' TO SW-VARIABLE -> RESET

2. COUNTER VAIRBALE/NUM VARIABLE


MOVE ZERO TO COUNTER-VAR.

3. MOVING THE DATA B/W INPUT - OUTPUT VARIBALE.

-> IN ANY PGM -> DEFINE THE VAIRBALE 2 SETS 1. INPUT VARIBALE ->
RECEVIE THE INPUT DATA + UNDER GO THE PROCESS LOGIC
2. OUTPUT VARIBALE. -> MOVE THE
DATA INPUT -> OUTPUT -> SEND IT OUT

==> EXAMPLE:

MOVE A TO B.
MOVE A TO B ,C.
MOVE 10 TO A B.
MOVE 'ANIL' TO A.
----
MOVE A TO 10. --> INVALID -> TARGET SHOULD A VARAIBLE.
MOVE A TO A. -> INVALID -> SYSTEM WILL ERROR - IN COMPILATION A
IS NO UNQIUE
--

VAR-A PIC 9(02)


VAR-B PIC X(02).
- BOTH ARE GOOD ONE** DATA -BEHAVIOUS
1. MOVE VAR-A TO VAR-B. VALID 00-99 -> CAN I MOVE STORE
THAT VALUE - X(02) -> VALID
2 MOVE VAR-B TO VAR-A. VALID 00-99 -> CAN I MOVE STORE
THE VALUE - 9(02) -> VALID
A-T -> CAN I STORE THE VALUE ->
9(02) --> VALID =: A = +1
*/,?( -> CAN I STOTE THIS VALUE -
> 9(02) -> S0C7 ABEND BAD DATA IN NUM VARIABLE.

==> GROUP MOVE** -> USED WHEN WE HAVE 2 IDENTICAL GORUP

01 CLAIM-DETAILS-IN. 01 CLAIM-DETAILS-OUT. -> 2


DIFF GROUP
03 CLAIM-NUMBER 03 CLAIM-NUMBER
-> SAME VAIRALE ARE ALLOWED.
03 CUST-NAME 03 CUST-NAME

IF THE VARIALE SEQ + SAME TYPE + SAME SIZE -> SAME


GROUP MOVE: MOVE CALIM-DETAILS-IN TO CLAIM-DETAILS-OUT. (NOT
PRFFERED IN MANY PROJECT)

IF THE GROUP ARE NOT SAME: SIMPLE MOVE

-SYNTAX 1: MOVE CLIMA-NUMBER TO CLAIM-NUMBER. ?? INVLAID

-SYNTAX 2:** MOVE CLAIM-NUMBER OF CLAIM-DETAILS-IN


TO
CLAIM-NUMBER OF CLAIM-DETAILS-OUT.

-> ACCEPT CLAIM-NUMBER OF CALIM-DETAILS-IN.

MOVE CLAIM-NUMBER OF CLAIM-DETAILS-IN


TO
CLAIM-NUMBER OF CLAIM-DETAILS-OUT.

-> DISPLAY CLAIM-NUMBER OF CLAIM-DETAILS-OUT.

====
CODE A PGM 1. DEFINE THE 10 BUSINESS VARIABLE RELATED TO CLAIM APPLICATION
*(INPUT - OUTPUT GROUP)
2. ACCEPT THE 10 INPUT VARIABLE
3. MOVE THE DATA - IN - OUT VARIABLE
4. DISPLAY THE CLAIM DETAILS

SPOOL: O/P
1. CLAIM NUMBER............ C11111
2. CLAIM STATUS............. APPROVED
..
10 VARIABLE.

COBOL CLASS 03:-


-----------------------------------------------

1. CODE A SIMPLE PGM -> TO ADD 2 NUMBER -> DISPLAY THE TOTAL.

PGM P1 -> 1. VARIBALE REQUIRED -> 3 2 INPUT -> NUM1 & NUM2 -
OUTPUT -> TOTAL.
2. GET THE DATA AS INPUT -> ACCEPT
3. CALUCATION
-> ADD , SUBTRACT, MULTIPLY DIVIDE -> STATEMENT

-> COMPUTE -> STATEMENT

SYNTAX: COMPUTE RESULT-VAR = A + B * C / D.


4. SEND THE RESULT AS OUTPUT -> DISPLAY.

-----
POINT #1 -> MAXCC=00 -> SUCCESSFUL COMPILATION
04 -> SUCCESSFUL + WARNING --> IGNORE
---
COBOL PGM ERROR == 08/12 -> ERROR - FIX AND RE-COMPILE.

--> NEW DEV-1 -> CODING A COBOL PGM -> 100 LINES --> IS THERE ANY CHANCE
HE MAKE A MISTAKE ==> YES
--> ANIL AS TRAINER / DEV -> 13 YEAR -> 1000 LINES --> IS THERE ANY CHANGE
HE MAKE A MISTAKE --> YES

--> DIFF -> I CAN FIX ANY ERROR

== HOW TO FIND THE MISTAKE & FIX IT

1. WHEN U GET ANY COMPILER ERROR (MAXCC=8/12)


1. GOTO SPOOL (DO NOT OPEN THE PGM -TO FIND
THE MISTAKE)
2 WAYS: 1. LONG PATH --> F3 - ISPF -. S;ST -
OPEN THE LOG
2. SHORT PATH --> START - OPEN NEW SCREEN
-> 1 SCREEN -PDS S9 Swap.
2 SCREEN -
SPOOL

2. OPEN THE COPILER LOG -> SYSPRINT


3. SCROLL - F8 -PAGE DOWN > FIND UR CODE
4. LOOK FOR THE ERROR MESSAGE
2. READ -2-3 TIMES - UNDERSTAND THEN TRY TO FIX IN PGM

IN CASE -> I SEE MY ERROR - I AM NOT UNDERSTANDING IT -->


1. SEND A SCREENSHOT OF THE ERROR MESSAGE

IGYDS1102-I -> INFORMATION - IGNORE


IGYDS1102-W -> WARINING - IGNORE
IGYDS1102-E -> ERROR
IGYDS1102-S -> SEVER ERROR

POINT #2:-

DEV-1 -> CODE THE RUN JCL -> ANY CHANCE OF MAKING MISTAKE ==> YES

-> JCL MISTAKE => SUBMIT -> 'JCL ERROR'

1. I GOT THE JCL ERROR


1. GOTO TO SPOOL
2. OPEN THE JESMSGLG
JESJCL
JESYSMSG -- JCL ERROR WILL BE HERE.

POINT #3:-
=>ALAYS => LOGIC PGM & DATA => NEED TO SPREATED.
-> WE CANNOT KEEP THE DATA IN THE PGM
--> WE NEED TO GET THE INPUT FROM THE OUT SIDE THE PGM

-> HOW TO GET THE DATA INPUT -> ACCEPT**

Q1: 2 THING 1. PGM LOGIC


2. DATA
-> OUT OF THESE 2 THINGS -> WHICH ONE WILL CHANGING *:- DATA**
==> ADDPGM01 -> TESTING 1. -> ADDITION 10 + 20 ==> 30
2. -> 20 & 30 -> DEV-1 -> CHANGE + COMPILER + EXECUTE -
> OUTPUT -> 50
3. -> 30 + 40 -> CHANGE + COMPILE + EXECUTE ->
OUTOUT -> 70

-> AM I DOING -RIGHT?? -> NO -> MISTAKE? -> PRODUCTION* - DATA


CHANGES EACH AND EVERY DAY
-> WE CANNOT CHANGE PGM
+ COMPILE + MOVE TO PROD ,,,

POINT 4#:-

50 + 50 = 100 => OUTPUT = 00


| | |
9(02) 9(02) 9(02) -> 1 - DATA TRUCATION -> RESULT = 00

-->
ANIL IS SUPT APPLICATION -> DAILY 500 JOB WILL RUN

DAY-1 -> ALL 500 JOB EXECUTE - RAN SUCCESSFUL --> WILL ANIL OPENS ALL
THE JOB LOG AND VERIFY?? NO
DAY-2 -> 500 JOB EXECUTE - SECUESSFUL -> WILL ANUL OPEN ANY
LOGS? NO
-
DAY-3 -> OUT OF THESE 500 JOB - 1 JOB ABEND (SMALL NOT SO IMP) - DO
ANIL NEED TO CHECK . IT. -> YES.

-> COBOL -> DATA PROCESSING -> IN CASE OF ANY DATA TRUCATION --> COBOL
IGNORE THAT -> MAXCC=00

--> TO FIX THE DATA TRUCATION ISSUE"

3 SOLUTION: BASED ON 'ON SIZE ERROR'


| USED FOR CALUCATION STATEMENT -> TO TRAP ANY SIZE
ERROR
-> RESULT IS WITHIN THE GIVEN SIZE -> NO ERROR
-> RESULT IS OUTSIDE THE SIZE -> ON SIZE ERROR
-> ACTIVE.

1. ON SIZE ERROR + DISPLAY ** ==> SHALL WE USE THIS IN


PROJECT? -> NO -> WHY SO -> MAXCC=00

002000 COMPUTE TOTAL = NUM1 + NUM2


002010 ON SIZE ERROR
002020 DISPLAY 'ERROR IN COMPUTE STATEMENT'
002030 DISPLAY 'INPUT IS NUM1 ' NUM1 ' NUM2 ' NUM2.

O/P::
ERROR IN COMPUTE STATEMENT
INPUT IS NUM1 50 NUM2 50
2. ON SIZE ERROR + RETURN-CODE -> USED TO CHANGE THE MAXCC
CODE. - GOOD SOLUTION

002000 COMPUTE TOTAL = NUM1 + NUM2


002010 ON SIZE ERROR
002020 DISPLAY 'ERROR IN COMPUTE STATEMENT'
002030 DISPLAY 'INPUT IS NUM1 ' NUM1 ' NUM2 ' NUM2
002040 MOVE 3200 TO RETURN-CODE.

O/P -> MAXCC=3200


ERROR IN COMPUTE STATEMENT
INPUT IS NUM1 50 NUM2 50

PGM P1 -> 10 STATMENT TO PROCESS THE DATA

STATEMENT-1
2
S3
S4 -> DATA GOT CORRUPTED HERE ITSELF 1. DO U LIKE TO
CONTINUE THE DATA PROCESSING
.. 2. OR WOULD U LIKE TO
STOP THE PROCESS.
..
S10

3. ON SIZE ERROR + DISPLAY + ABEND THE PGM** ABEND -> ABNORAL END

IN UR TRAINING COBOL PGM:

1. 01 WS-ABENDPGM PIC X(08) VALUE 'ABENDPGM'.


2. IN PART OF THE PGM
TO THE STOP/ABEND > CALL WS-ABENDPGM.
COBOL CLASS 02 -
Input-Output & Arithmetic - VALUE CLAUSE, Accept &
Display - Compute
-----------------------------------------------------------------------------------
-------------------------
-> CODE THE PGM -1. GET THE DATA AS INPUT 2. PROCESS THE DATA 3. SEND
THE DATA AS OUTPUT
| |
3 STEPS 2 STEPS
1. DEFINE THE VARIABLE 1.
PREPARE THE OUTPUT DATA -REQUIRED VARIABLE
2. INITIAIZE THE VARIABLE 2.
SEND THE DATA OUTPUT
3. GET THE DATA AS INPUT.

--> INITIALIZE THE VARIBALE:-


|
KEEPING SOME -FIRST VALUE IN THE VARIBALE MEMORY:

-> WHEN WE DEFINE A VARIBALE - 9(10) OR X(10)


-> SYSTEM WILL -ALLOCATE THE MEMORY
-> THIS ALLOCATE -WILL HAVE SOME USED DATA -FROM
OTHER PGM.

-> BEFORE WE GET OUR PGM DATA -> WE NEED TO CLEAN THE MEMORY SPACE.
-> IN COBOL -> WE CAN DO INTIALIZING IN 3 WAYS:

1. DATA DIVISION -> VALUE - TODAY


2. PROCEDURE DIVISION -> MOVE STATEMENT
3. PROCEDURE DIVISION -> INITIALIZE KEY WORD

>> VALUE CLAUSE:-

-> USE IT -ONLY IN WORKING-STORAGE SECTION


-> WE CAN SET AN INITIAL VALUE -> NUMERIC ->9 -> ZERO.
-> ALP-NUMERIC -> X -> SPACE.

01 NUM-VAR PIC 9(10) VALUE ZERO.


01 AL-NUM-VAR PIC X(10) VALUE SPACE.

-
01 SWITCH-VAR PIC X(01) VALUE --> ON/OFF - YES/NO -
O/1 - TRUE/FALSE. SPACE.

01 WS-HARD-CODED-VAR PIC X(10) VALUE 'SOME-DATA-HERE'.


01 CLAIM-STATUS PIC X(10) VALUE 'APPROVED'. -THAT
VALUE - WILL STORE IN FILE -> HARD CODED DATA.

--> DATA**: STORED IN FILE


--
HOW THE DATA CAME TO A FILE (DATA IS CREATED)
|
ONLINE PROCESSING -> CUSTOMER -WE CREATE THE DATA
|FILLING AN APPLICATION
|SWIPE OF UR CARD
-> DATA -> CREATED BY CUSTOMER -> ONLY DATA -THAT IN STORED IN
FILE.

SOME DATA -> CREATED BY CUSTOMER -> CLAIM REQUEST APPLICATION


-> 1. CUSTOMER 2. DETAILS DAMANGE 3. POLICY-DETAI
SOME DATA -> CREATED BY UR PGM*** -> CLAIM-STATUS?? THRU PGM
-> CLAIM-NUMBER?? THRU PGM

==> GET THE INPUT & OUTPUT:-

HOW TO GET THE DATA TO PGM VARIBALE AS INPUT**

WAYS SOURCE OF DATA


---------------------- ------------------------
---
1. ACCEPT STATEMENT JCL -> SYSIN DD *
<DEVELOPER MANUAL INPUT
2. READ STATEMENT FILE << PROJECT
DATA
3. SELECT SQL QUERY TABLE <<
PROJECT DATA
4. RECEVIE CICS COMMAND CICS SCREEN
<< USER -MANUAL INPUT (BUSINESS TEAM)

-HOW TO SEND THE DATA AS OUTPUT FROM THE PGM:

WAYS TARGET OF DATA


----------------------- ------------------------
1. DISPLAY STATEMENT SPOOL -> SYSOUT.
2. WRITE STATEMENT FILE
3. INSERT/UPDATE SQL QUERY TABLE
4. SEND CICS COMMAND CICS SCREEN

==> TODAY -> INPUT -> ACCEPT


OUTPUT -> DISPLAY
===>

BOOK TOPIC:

-> ACCEPT STATEMENT -> USED TO GET THE DATA AS INPUT FROM THE JCL -JOB.

SYNTAX: ACCEPT VARIBALE-NAME-1. EX: ACCEPT


CUST-NAME.
ACCEPT VARIBALE-NAME-2. ACCEPT ACCT-
BAL.

> RUN JCL //SYSIN DD *


//SYSINDD *
INPUT-VAL-1 CUST-NAME X(10) ANIL KUMAR
INPUT-VAR-2 ACCT-BAL
/* 1. UNSIGNED -> 9(04)
0001 , 0012 , 0123 , 1234 ALL DIGIT
// 1 , 12 ,
123 -> INVALID

2. SIGNED NUMERIC
S9(04). -> SIGN
WILL BE STORED AS LETTER ON THE LAST BYTES
+1234 = 123D
3. DECIMAL S9(3)V9(02). >
+123.45 -> INVALID
>
1234E -> VALID (NO DOT ALLOWED)

S9(04) -> HOW BYTES ALLOCATED -> 1. 4


2. 5 --> WRONG

EX: +120 -> 12{ +0 = { -120


=> 12} -0 = }
+121 > 12A +1 = A
-121 => 12J -1 = J
+2 - B -122 => 12K
-2 = K

+1234 -> 123D -D =+4

--> PROJECT POINT: -> Q? CAN I AS DEVELOPER - PROVIDE - SALES DATA AS INPUT
THRU JCL**
| -CUSTOMER DETAILS - JCL**

--> APPLICATION=A -> 100 COBOL-PGM -> MAY BE 3/4 PGM -WILL HAVE ACCEPT
STATEMENT**

==>
OUTPUT STATEMENT -> DISPLAY
-> USED TO PRINT THE MESSAGE AND THE VARIBALE VALUE -> INTO THE
SPOOL

SYNTAX: DISPLAY 'MESSAGE '


DISPLAY VARIABLE-NAME. PRINT -VALUE
DISPLAY 'MESSAGE ' VARIBALE-NAME.

EX:
DISPLAY 'CUSTOMER NAME IS' O/P -> CUSTOMER NAME IS
DISPLAY CUST-NAME. O/P -> ANIL KUMAR
DISPLAY 'CUSTOMER NAME IS ' CUST-NAME. O/P > CUSTOMER
NAME IS ANIL KUMAR.

-> ABOVE IS BOOK POINT:-


-> BLOW AS PROJECT POINT:
-> SPOOL -> TEMPOARY SPACE -> 3/4 DAY - LOG WILL BE
DELETED
-> USED TO EXECUTE UR JOB
-> STORE THE LOG MESSAGE
-> SHALL WE SEND OUR PRODUCTION DATA TO SPOOL** => NO

-> APPLICATION -A -> 100 COBOL PGM -> OUT OF 100 PGM -> HOW MANY WILL USE
THIS DISPLAY? --> 100 PGM WIL USE.

==> ANIL IS IN SUPT ROLE -> RESP > HE NEED TO FIX ANY ISSUE THAT COME

> ON A DAY - ANIL -> JOB ABEND -> TO THE FIX ISSUE

1. FIND THE ERROR IN THE PGM P1 --> 3000 LINE OF CODE ==> HOW MUCH
UR NEED TO ANLSYSIS A 3000 LINE - FIND THE MISTAKE? 1 DAY
2. FIND THE ERROR RECORD IN FILE -> 1 MILLION RECORDS ==> HOW MUCH TIME
WE NEED FINE 1 BAD RECORD -> 1 MONTH

==> HOW MUCH TIME ANIL AS SUPT WILL HAVE?:-

--> SLA --> SERIVCE LEVEL AGREEMENT

TICKET: ACK-TIME/RESPONSE -
RESOLUTION
P1 -> URGENT 15MIN 2/4
HR
P2 -> HIGH 15MIN
4/8 HR < SAME DAY
P3
P4

==> IN PGM -> DISPLAY STATEMENT - KEY FACTOR.

IN THE PGM -> DEVELOPER -> WHEN HE WANT TO ABEND THE PGM *BAD DATA

DISPLAY 'ERROR IN PARA-NAME' -> 200 LINES -> << 1HR


DISPLAY 'REASON OF ERROR '
DISPLAY 'PROCESSING RECORD KEY ' ACCT-NUMBER. -- FEW
MIN

-> IN PGM > AUDIT MESSAGE**

PROCEDURE DIVISION.
DISPLAY 'PGMNAME STARTED'.

END OF THE PGM.

DISPLAY 'TOTAL INPUT RECORD ' WS-IN-REC-CNT.


DISPLAY 'TOTAL OUTPUT RECORD ' WS-OT-REC-CNT
DISPLAY 'TOTAL ERROR RECORD ' WS-ERR-REC-CNT.

-> TESTING -> DISPLAY 'AM IN X-PARA'


-> DISPLAY 'AM IN Y-PARA'. = TRACK THE PGM FLOW

-> DISPLAY 'BEFORE X-PARA ' VAR-A.


-> DISPLAY 'AFTER X-PARA ' VAR-A. = TRACK THE DATA
CHANGES

==> CODE THE SIMPLE COBOL PGM -> DIVISION SECTION PARA -STATEMENT
--> DEFINE THE VAIRBALE.
--> INITLIZE THE VARIBALE + ACCEPT + DISPLAY

COBOL CLASS 01 - VARIABLE DECLARATION:-


--------------------------------------------------
AS DEVELOPER -> 3 STEPS:

1. CODE THE COBOL PGM --> 2. COMPILE THE PGM -LOAD 3. CODE THE TEST
RUNJCL EXECUTE.

CODE - > COMPILE -> EXECUTE


|
ANY COBOL PGM: 1. GET THE DATA AS INPUT INTO THE PGM
2. APPLY THE BUSINESS RULES -> PROCESS THE DATA
3. SEND THE PROCESS DATA AS OUTPUT.

-> INPUT -> PROCESS -> OUTPUT


|
3 STEPS: 1. DECLARE THE VARIBALE AS REQUIRED (MEMORY ALLOCATION)
2. INITILIZE THE VAIRBALE (CLEAN THE MEMORY)
3. GET THE DATA INTO THE VARIBALE.
--> HOW TO DECLARE THE VAIRBALE:

VARIBALE -> TEMPORARY MEMORY SPACE -WITHIN THE PGM - USED TO STORE & PROCESS THE
DATA

REAL DATA -> FILE/TABLE**(MILLION RECORDS) -- GET 1 RECORD -> PGM (VARIBALE -
STORE + PROCESS- SEND IT ) --> FILE/TABLE(PROCESSED DATA)

VARIBALE >2 TYPES


1. GROUP VARIBALE -> IF THE DATA CAN BE SUB-DIVIDED -
WE CAN DEFINE A GROUP VAIRBALE.
2. ELEMENTARY VARIBALE -> ITS A VALUE - WE CANNOT
SUB-DIVIDE

EX:- CUST-ADDRESS --> GROUP -> CITY,STATE,PINCODE


ACCT-TYPE --> ELEMENTARY -> SAVING OR CURRENT OR CHECKING <<
VALUE

EX:- VAR-A
VAR-B -> WE CANNOT TELL THE TYPE BY NAMES
-> SYSTEM ALSO -> CANNOT DECIDE THE TYPE BY NAME.

SYNTAX**:- TELL YOU HOW TO CODE A PGM**

AS PER THE SYNTAX: GROUP VARIBALE: LEVEL-NUMBER VARIABLE-NAME.


(END WITH A DOT)

ELEMENTARY VARIBALE: LEVEL-NUMBER VARIABLE-NAME PIC


(FOLLOWED BY PIC)

EX: 01 VAR-A PIC - ELEMENTARY


01 VAR-B. -> GROUP

==> DEFINE THE VARIBALE -> ELEMENTARY:

LEVEL-NUMBER VARIABLE-NAME PIC DATA-TYPE(SIZE).


-->

LEVEL-NUMBER -> IN COBOL - ALL THE VARIBALE MUST BE PREFIXD WITH A LEVEL NUMBER
-> USED TO TELL THE STRUCTURE OF THE DATA RECORDS

1. IN COBOL WE HAVE LEVEL NUMBER -> 01,02...49 - 66,77 88


2. 01 LEVEL NUMBER -> USED FOR GROUP VAIRBALE & ALSO ELEMENTARY VARIBALE.
3. 02-49 -> 1. MUST COME UNDER 01 LEVEL
2. 02-49 - CAN BE USED TO DEIFNE A SUB-GROUP & ELEMENTARY AS WELL.
3. IN CASE OF ANY SUB-GROUP -> THE ELEMENTARY VARIBALE UNDER THAT
SHOULD USE 'INCREASED LEVEL NUMBER'

IN GENERAL -> WE USE -> 01 - 03, 05 , 07..


01 - 05 ,10 , 15
->
IN A PGM -> WE Can define ANY NUMBER GROUP WE WANT TO USE
-> WE CAN DEFINE ANY NUMBER ELEMENTARY WE WANT TO USE

-> 77 -> ONLY ELEMENTARY -> IGNORE IT -> USE ALWAYS 01.
-> 66 * 88 -> LATER.

01 ACCT-DETAILS.
03 ACCT-NUMBER PIC X
03 CUST-NAME PIC X
03 CUST-ADDRESS.
05 CITY PIC X
05 STATE PIC X
05 PINCODE PIC X
03 ACCT-BAL PIC S-9-V
03 ACCT-TYPE PIC X
03 ACCT-OPEN-DATE PIC X
03 ACCT-CLOSE-DATE.
05 YYYY PIC 9
05 MM PIC 9
05 DD PIC 9
03 ACCT-STATUS PIC X

01 ACCT-TOTAL-BAL PIC S-9-V

#POINT2: VARIABLE NAME**

RULES: 1. MAX 32 CHAR


2. SHOULD NOT START WITH A NUMBER
3. SHOULD NOT USE THE COBOL KEY WORD 01 DISPLAY - 01
DIVISION < IN VALID
01 DISPLAY-VAR -> OKAY
4. SHOULD NOT USE MUSTIPLE WORD AS UR VARIBALE
- INSTEAD U CAN JOIN THE WORD BY USIUNG 'HYPEN'
01 ACCT NUMBER. INVALID -
NO SPACE
01 ACCT-NUMBER VALID ->
HYPEN

5** -> ALWAYS -ALL THE VARIBALE -MUST BE SELF EXPLAINED.


6** -> VARIBALE SHOULD POINT TO THE DATA SOURCE

--> ABOVE IS THE BOOK ---> BELOW IS THE PROJECT POINTS

-> DEV-1 -> CODED A PGM P1 -> 2010 IN THE PGM HE DEFINED SOME VAIRBALE..

01 CS PIC (THIS IS AN ELEMENTARY VARIBALE)

-> 2023 -> WE JOINED THE PROJECT -> ASKED -ANALYSIS THE PGM P1

-> VAIRBALE 'CS' -> WHAT DOES THIS VARIABLE MEANS??

-> DEV-2 -> CODED A PGM P2 = 1990 IN THE PGM -VRIBALE..

01 CLAIM-STATUS PIC ... THIS ELEMTNATY VARIBALE.

-> 2023 -> WE JOINED THE PROJECT -> ASKED -ANALYSIS THE PGM P2
-
-> CLAIM-STATUS -> --EASY TO UNDERSTAND.

PGM P3 - --FROM WHERE THE DATA IS COMING THE


VAIRBALE.
---------- --------------------------------------
CLAIM-STATUS > NO PREFIX /NO SUFIX ->
FILE VARIBALE.
WS-CLAIM-STATUS > WS- WORKING-STORAGE ->
DEFINE BY DEVELOPER - TO BUILD LOGIC**
WS-CLAIM-STATUS-HOLD > WS- HOLD -> TO STORE/HOLD
PREVIOUS RECORD *FIND THE DUPLICATE
DCL-CLAIM-STATUS > DCL- DB2 TABLE VAIRBALE.
CLAIM-STATUSI > SUFIX -> I -> ONLINE INPUT
VARIBALE. CICS PGM
CLAIM-STATUSO > SUFIX -> O -> OUTPUT
VAIRBALE CICS PGM

3. PIC -> USED TO PROVIDE THE DATA-TYPE & SIZE FOR A ELEMENTARY VARIBALE
|
PICTURE

4. DATA-TYPE & SIZE:-

DATA-TYPE -> TELL -> WHAT KIND OF DATA -IS STORED IN THAT VARIBALE.

IN COBOL -> 3 TYPES 1. NUMERIC ->DENOTED 9 01 VAR-NAME PIC


9 -> VAIRBALE MEMORY SPACE USED TO STORE NUMBEIC DATA
2. ALPHABATIC -> DENOTED A
3. ALPNUMERIC -> DENOTED X.

NUMERIC -> ALLOW -> 0-9 => ALP -> A-Z SYMBOL ==> ALP=NUM =-> 0-9 & A-
Z -SPACE.

EX:
->NUMERIC: -9
VALUE 123 PIC 9(03) 9 -NUMERIC DATA ,
03 MEMORY ALLOCATION
VALUE +/-123 PIC S9(03) S- SIGEN
NUMBEIC = 9 - 03 MEMORY
VALUE +/-123.45 PIC S9(03)V9(2) S - SIGNED - V-
ASSUMED DECIMAL

-> ALPBHATIC (NOT USED)


-A VALUE ANIL PIC A(04) A- TYPE , 04 - SIZE

-> ALP-NUMERIC
X VALUE ANIL PIC X(04)
VALUE 1234 PIC X(04).
VALUE ANIL1234 PIC X(08)

ABOVE IS BOOK POINT --> BELOW IS PROJECT POINT**


================================================

PONIT#:IF THE DATA IS INVLOVED IN CAL -> THEN IT WILL BE NUMERIC -- IF NOT
ALP-NUMERIC.

-> AS DEVELOPER -> DEFINE A VARIBALE.

VALUE => 12345 -> ? -> DATA-TYPE X(05)


9(05) -> WHY SO ->

-> DIFF B/W -> NUMBER & NUMERIC


|-> VALUE THAT WILL BE INVOLVED IN CALCLUATION.

EX: PINCODE -> 1837191 -- X.

->DEVELOP -> CODE THE PGM** -> FOR THEM - PGM IS THE MOST IMPORTANT ->
WRONG
---------
DATA = IS MORE IMPORTANT:

==> ACCT-NUMBER -> X TYPE*

OPENING A NEW BANK -> ACCT-NUMBER PIC X(04).

-> POSSIBALE VALUE I CAN HAVE IN ACCT-NUMBER --> 0000-9999,A000-


A999,Z999,ZZ99,ZZZ9,ZZZZ -> UNLIMIT POSSIBLITLTY

-> 1ST CUSTOMER -> ACCT-NUMBER -> 0001


-> 2ND CUSTOMER -> ACCT-NUMBER -> PREVIOUS-ACCT-NUM + 1 =>
ERROR .

OPENING ANOTHER BANK -> ACCT-NUMBER PIC 9(04).


->
POSSIBLE VALUE: -> 0000 - 9999 --> LIMITED VALUE

-> 1ST CUSTOMER -> ACCT-NUMBER --> 0001


-> 2ND CUSTOMER -> PREVIOUS-ACCT-NUM + 1 => 0002
...
1 YEAR
-> NEW CUSTOMER -> ACCT-NUMBER -> 9999
->
NEW CUSTOMER -> ANIL -> DEPOIST -> 100 BILLION $ --> ACCT-NUMBER ->
9999 +1 -> ERROR

OPTION 1. REMOVED ANY OLD CUSTOMER - ZERO BAL -> TAKE


ANIL BILL..
2. SAY NO TO ANIL
#POINT2
DATA: -> KEY FIELDS:: >> ACCT-NUMBER , CLAIM-NUMBER , PHO NUMBER , PAN , SSN ,
AADHAR, PASSPORT , VECH-RN

1. ALWAYS INCREASE
2. NO DUPLICATE

-> ACCT-NUMBER -> COMBINATION > X & 9

X -> =UNLIMITED POSSIBLILTY


9 -> =USED FOR CAL

-> ACCT-NUMBER 01 ACCT-NUMBER.


03 BRACH-CODE PIC X(04). 0001
0002
03 AREA-CODE PIC X(02). 01 02
... 99 A1 ZZ 01
03 ACCT-SEQ-NUMBER PIC 9(06). 1-99999 1-99999
1-99999 1-999999 1-999999 1-99999

-> V-RIN -> 2 - STATE CODE


2 -> RTA CODE
LETTER -< TYPE
4 -> NUMBER

POINT#3
DATES** -> SOME THEY ARE DISPLAY
=> X
SOME OF THEM ARE CALUCATION -> AGE OF THE CUSTOMER. , EMI
DUE , POST BILL DATE =>9

-> FORMAT** -> YYYYMMDD < 8 FORMAT


YYYY-MM-DD < 10 FORMAT (DDMMYYYY - INVALID)
============================
COBOL: AS A DEVELOPER:-

AS A DEVELOPER: 3 STEPS 1. CODE THE PGM


2. COMPILE THE PGM - CONVERT THE CODE - MACHINE LANG
3. EXECUTE THE PGM

-> CODE - COMPILE & EXECUTE

COBOL LANG -> PGM LANG 1. LOGIC - DATA PROCESSING


1. CONDITION -> POLICY -1 YEAR START TODAY
- 100,000
-> CLIAM -> SEP 25 2025 -->
APPROVED? REJECTED
-> POLICY EXPIRED ??
> CLAIM REQ -> DEC 2023 -> 1>
50000 -> APPROVED -> <100%
2> 200000
-> APPROVED -> 90,000
3> 10000
-> APPROVED -> 8000

2. CALUCATION

EACH DAY -> HAVING 1 CLAIM TO PROCESS -> CAN I DO IT MANUALLY? -> YES
100 YES MANUAL
-
1000000 million -1. MAY BE ISSUE -> TIME CONSUION
MANUL ERROR
-->
-> WE AS HUMAN CAN PROCESS SOME AMT OF DATA
-> AS PROJECT -> DAILY -WE GET MILLION OF RECORD TO PROCESS
-> FOR THIS WE NEED A MACHINE -> MAINFRAME

-> MAINFRAME -> CAN I TELL VERBELLY TO DO SOMETHING -> NO


> CAN I TELL IN ENG AND ASK TO DO THE PROCESS > NO
> PROGRAM LANG -> YES

COBOL -> EASY LANG


> ENGLISH LIKE LANG

-> COBOL IS ALWAYS LENGTH -> SMALL LOGIC -> 300 LINES CODE
GOOD PROJECT LEVEL -> 3000 LINE CODE.

---> IN COBOL CODE FORMAT:

DIVISION
SECTION
PARAGRAPHS
STATEMENT --> INSTRUCTION TELLING THE SYSTEM WHAT TO DO.
ADD -STATEMENT
READ FILE -> STATEMENT

IN COBOL -> 4 DIVISION

1. IDENFICATION DIVISION (ID DIVISION)


2. ENVIRONMENT DIVISION
3. DATA DIVISION.
4. PROCEDURE DIVISION.

-> ID DIVISION: THIS IS USED TO PROIVDE -IN-PROGRAM DOCIMENTATION DETAILS

1. IN THIS DIVISION 6 PARA -> OUT OF THESE ONLY PROGRAM-ID IS


REQUIRED, OTHER ARE OPTIONAL.
2. PROJECT PGM -> PROGRAM-ID, AUTHOR AND DATE-WRITTEN.
SYNTAX:
ID DIVISION.
PROGRAM-ID. NAME-OF-PGM. REQUIRED
AUTHOR. UR NAME.
DATE-WRITTEN. TODAY.
DATE-COMPILED. TODAY.
INSTALLTION. TEAM/APPLICATION NAME.
SECURITY. WARNING MESSAGE

--> NAME-OF-PGM -> ALP-NUMERIC -MAX 8 CHAR

EX: ANILPGM1 , ANILPGM2 --> ARE THESE VALID NAME? -> YES
CAN I USE THIS NAMING STYLE IN MY PROJECT ->
NO

-> PROJECT -> APPLICATION-A --> Z1YNnnnn -> NEW PGM -> Z1YN1881 -->
Z1YN0 -> KINDS , Z1YN1.. , Z1YN2..
APP- B --> Z1YEnnnn -> NEW PGM -> Z1YE1881

--> ENVIRONMENT DIVISION:- -> USED TO DEFINE THE FILES REQUIRED IN THE PGM (IF
ANY)

-> AINFRAME -STORE THE DATA -2 PLACE 1. FILE


2. DATABASE

IN CASE = IF UR PGM - NEED THE DATA FROM A FILE (INPUT ) -


SEND THE DATA TO A FILE (OUTPUT) -> WE NEED TO DEFINE THE
FILE NAME IN ENV DIVISION,

-> IN SOME PGM DO NOT HAVE A FILE -> THIS DIVISION IS OPTIONAL**

SYNTAX: ENVIRONMENT DIVISION.


INPUT-OUTPUT SECTION.
FILE-CONTROL.
DEFINE THE FILES

ONLINE TEST QUESTION:-

COBOL PGM TYPE** IS ENV DIVISION REQUIRED(Y/N)


---------------------------- -----------------------------------
-----------
BATCH PGM 1. ONLY COBOL N
2. COBOL+FILE YES
3. COBOL+DB2 TABLE N
4. COBOL+FILE + DB2 YES
ONLINE PGM
5. COBOL+CICS N
6. COBOL+CICS+FILE N - ONLINE PGM -ENV
DIVISION IS NOT REQUIRED
7. COBOL+CICS+DB2 N
8. COBOL+CICS+FILE+DB2 N
ANSWER -> ALL PGM EXPECT 1ST
> 2 4 6 8
> EXCEPT 1 & 5
3. DATA DIVISION:-
1. USED TO DEFINE THE VAIRBALE IN THE PGM

VARIBALE: IN THE PGM -> IS TEMP MEMORY SPACE - USED TO STORE AND PROCESS THE
DATA

ACCOUNT-FILE: --> DEPOIST 100$ COBOL PGM:


CURR-ACCT-FILE
A111 1. GET THE DATA INTO PGM
A111
ANIL -> DEFINE VARIBALE -> ACCT-NUM
A111 ANIL
1000.00 CUST-NAME ANIL
1100.00
SAVINGS CURR-ACCT-BAL 1000.00 +
100.0 -1100.00
ACCT-TYPE - SAVINGS
2. AFTER PROCESS - SEND THE DATA OUT OF PGM

FOR DATA ELEMENT -> WE NEED TO DEFINE - A VAIRBALE

SYNTAXl DATA DIVISION.


FILE SECTION. VARIBALE OF FILE
WORKING-STORAGE SECTION. DEVELOPER VAIRBALE -TO BUILD LOGIC
LINKAGE SECTION.

4. PROCEDURE DIVISION:-
1. CONTAINS THE PGM LOGIC + CAL => TO PROCESS THE DATA
2. IN THIS DIVIISON - WE DO NOT HAVE ANY PRE-DEFINED
SECTION/PARAGRAPHS
3. AS A DEVELOPER -> WE CAN DEFINE OUR OWN SECTION.

4. USING THE STAMTENT - IN A RIGHT ORDER - WE CODE THE LOGIC.

SYNTAXl PROCEDURE DIVISION.


000-MAIN-PARA.
STATEMENT1
S2
S3
STOP RUN. END OF THE COBOL PGM.

->
-> EX: LET US GO TO A MOVIE (NEW MOVIE) -< ALL OF GET THE
SCREEN/AUDIT ->MOVIE START
1. TITLE -> ENJOY
2. CAST -. HER/HERION - HAPPY
3. TECH -> MUSIC , DIRECT ,
PRODUCER
4. OPENING SCENE -> LET US - COME
OUT OF THE MOVIE

-> HAPPY / ANGRY -> WHY UR ANGRY? -> MISS THE WHOLE STORY

-->
ID DIVISION. PGM NAME *TITLE
ENVIRONEMENT. FILE NAME (CAST)
DATA DIVISION. VARIBALE NAME (TECH)
--
PROCEDURE DIVISION --> WHOLE STORY - 80% WORK LOAD
- STATMENTS => INSTRUCTION TO
SYSTEM HOW TO PROCESS THE DATA

==? DIVISION SECTION PARA & STATEMENT


-> CODE A COBOL PGM -> COBOL CODE SHEET** ANSWER

CODE SHEET -> 1-80 COL LENGTH

1-6 COL -> LINE NUMBER (AUTO-GENERTE)

7* -> USED FOR MAKING A LINE - AS 'COMMENT' 1. IN PGM -> CODE TO


EXECUTE- PROCESS THE DATA
2. IN PGM -> WRITE - DETAILS - IN
ENG -> EXPLAIN THE LOGIC
IN THE 7TH COL -> * -> CONSIDE THAT LINE - AS COMMENT
-> SYSTEM WILL IGNORE THOSE LINE - DURING EXEUCTION
8-11 -> AREA-A -> HEADER
-> DIVISION - SECTION - PARAGAPHS = LEVEL NUMBER

12-72 -> AREA-B -> CODE THE STATEMENT ( U BREAK A STATEMENT INTO MANY LINES)

73-80 -> CHANGE TAG** (REAL PGM)

=-=> 7-72 -> 7 -* - COMMENT


-> 8 -> START HEADER
-> 12 -> START STATEMENT

--> PUNCH CARD -> SIZE 1-80

SAMPLE COBOL PGM:

1 8 12

ID DIVISION.
PROGRAM-ID. CBLPGM01.
AUTHER. NAME.
DATE-WRITTEN. TODAY.

ENVIRONMENT DIVISION.
INPUT-OUTOUT SECTION.
FILE-CONTROL.

DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.

PROCEDURE DIVISION.
000-MAIN-PARA.

DISPLAY 'HELLO ALL'


STOP RUN.

You might also like