0% found this document useful (0 votes)
134 views81 pages

Cobol Combined

This document provides an introduction to mainframe online training, including introductions to COBOL, JCL, and Z/OS (TSO-ISPF). It discusses what a mainframe is and how it is used to store and process large amounts of data. It then describes common industries that use mainframes like banking, insurance, retail, and healthcare. The document goes on to explain batch and online processing, the role of COBOL for business logic, and the basic structure of a COBOL program with the identification, environment, data, and procedure divisions. It also provides an overview of what JCL is used for in compiling and executing COBOL programs on a mainframe.

Uploaded by

srbcobol
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
134 views81 pages

Cobol Combined

This document provides an introduction to mainframe online training, including introductions to COBOL, JCL, and Z/OS (TSO-ISPF). It discusses what a mainframe is and how it is used to store and process large amounts of data. It then describes common industries that use mainframes like banking, insurance, retail, and healthcare. The document goes on to explain batch and online processing, the role of COBOL for business logic, and the basic structure of a COBOL program with the identification, environment, data, and procedure divisions. It also provides an overview of what JCL is used for in compiling and executing COBOL programs on a mainframe.

Uploaded by

srbcobol
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 81

WELCOME TO MAINFRAME ONLINE TRAINING.

----------------------------------------------
1. Introduction to Mainframe
2. Introduction to COBOL
3. Introduction to JCL
==
4. Introduction to Z/OS (TSO-ISPF) - THEORY
5. Introduction to Z/OS (TSO-ISPF) - PRACTICAL.
================================================================================
========================
1. Introduction to Mainframe
--------------------------------------
INTRODUCTION TO MAINFRAME:-

WHAT IS MAINFRAME:- ITS A COMPUTER --> DEAL WITH DATA**

MAINFRAME -- IS USED 1. STORE THE HUGE AMT DATA


2. USED TO PROCESS THE DATA

WHO USES THE MAINFRAME ?? BUSINESS PROJECT -- MONEY.

--> MAINFRAME DOMAIN


-
1. BANKING 2. INSURANCE 3. RETAILS 4. TRANSPORT 5. MANFUN 6. TELCOM 7. HEALTH CAR
E 8. STOCK MARKET 9. FED/ARMY 10 WEATHER.

PROJECT -> BANKING -> BOA/ICICI/BOS/CITY

> HOW MANY CUSTOMER A BANK HAVE? --> MILLION CUSTOMER -> 1. ALL CUSTOMER DATA
NEED TO BE STORED
>> HOW MANY TRANSACTION IN A DAY --> MILLION 2. PROCESS THESE TRANSACTION
>>> 3. MULTI USER
4. SECURE
5. FAST & ACCURATE.

== FOR THIS KIND OF DATA IN THE MARKET -

WE HAVE 3 DIFF COMPUTER:


1. PERSONAL COMPUTER (LAPTOP) -- NOT USED
2. BUSINESS COMPUTER
IBM - MAINFRAME ;; IBM-AS-400
HP -TANDUM

3. SUPER COMPUTER --> ISRO/NASA --> COSTLY.

IBM - MAINFRAME**
=> DATA -> 2 POINT 1. TO STORE THE DATA 2 PLACE: 1. FILE SYSTEM 1. PS - 2. KSDS
2. DATABASE SOFTWARE 1. DB2 2. IMS-DB

2. TO PROCESS THE DATA 2 TYPES 1. BATCH PROCESS 2. ONLINE PROCESS

1. BATCH PROCESSING:

1. BULK DATA PROCESS SYSTEM 2. SCHEUDLED PROCESSING 3. WITHOUT USER INTERACT


ION 4. THRU JCL**
-->
EX: -> CUSTOMER -ANIL -> I HAVE A CREDIT CARD --> BILLING DATA -> NOV 5TH (EACH MONT
H 5TH)

1.MAINFRAME -> CREATING A BILL TODAY 1. WILL IT CREATE THE BILL ONLY FOR ANIL
2. WILL IT CREATE THE BILL FOR ALL CUST -WHOSE BILL DATE IS NOV-5 --> BULK DATA

2. WHEN WILL ANIL GET THE NEXT BILL -> DEC=5TH -SCHEULED PROCESS

3. DO ANIL REQUIRED HERE?? -> NOPE -- NO USER INTERACTION

4. - JCL - JOB CONTROL LANG**

2. ONLINE PROCCESING

1. SHORT INFOR PROCESSING 2. UNSCHDULED 3. WITH USER INTERACTION 4. THRU CICS**

EX:- --> ATM TRANSACTION < ANIL CUSTOMER:

1. ANIL DID A WITHDRAW > 1. ANIL IS DATA ONLY WILL BE UPDATED -> SHORT INFORMA
TION
2. WHEN WILL ANIL DO HIS NEXT TRANS? 2. UNSCHEDULED..
3. DO ANIL REQUIRED ?? 3. USER INTERACTION IS REQUIRED
4. 4. CICS *** CUSTOMER INFROMATION CONTROL SYSTEM..

MAINFRAME PROJECT: -> 1. BATCH PROCESSING


2. ONLINE PROCESSING

APPLICATION**

DOMAIN---> BANKING
-PROJECT -> BOA/ICICI/CHASE/WELLS..
-> MODULES 1. CORE BANKING
2. LAON PROCESS
3. INSURANCE
4. CREDIT CARD
--> APPLICATION: 1. NEW CUSTOMER PROCESS
2. TRANSACTION -CC
3. BILLING SYSTEM
4. REWARD POINT
5. SETTLEMENT
6. RENEWEL / UPGRADE
7. PAYMENT ->
SUB-LEVEL APPLICATION 1. ONLINE/NET BANKING
2. CASH
3. CHECK << U WILL BE

-- WHICH EVER APPLICATION IT MIGHT BE

1. ONLY BATCH APPLICATION -> 1. COBOL 2. FILE & DB2 3. JCL


2. ONLY ONLINE APPLICATION -> 1. COBOL 2. FILE & DB2 3. CICS
3. BOTH IN SAME APPLICATION --> 1. COBOL 2. JCL 3. FILE & DB2 4. CICS

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

Introduction to COBOL
-----------------
MAINFRAME --> IT IS A BIG COMPUTER -> USED FOR DATA 1. STORE & 2. PROCESSING

PROCESSING -> 1. BATCH PROCESS 2. ONLINE PROCESSING

1. BUSINESS LOGIC -> COBOL.

COBOL -> WE CANNOT DEVELOPER ANY SOFTWARE


-> WE CAN CODE BUSINESS LOGIC -> TO MAINTAIN THE APPLICATION

COBOL -> VERY EASY


-> MOSTLY ENGLISH

--> PGM ARE LENGTHY -> SMALL LOGIC PGM --> 300 LINES OF CODE

==> IF AM INTO MAINFRAME -APPLICATION

2 THINGS -> 1. AS A DEVELOPER -> WE NEED TO KNOW HOW TO CODE THE PGM -> FALL INT
O A DEVELOPER PROJECT
2. AS A ANALSYST/SUPT ROLE --> 1. ALONG WITH THE CODING THE PGM 2. HOW TO ANALY
SIS OF THE PGM
==>
HOW TO CODE A COBOL PGM** :-

PGM FORMAT: DIVISION.


SECTION.
PARAGRAPHS
STATEMENT. --> COMMAND/INSTRUTION TO SYSTEM -HOW TO PROCESS THE DATA.

DIVISION -> 4 DIVISION

1. IDENTIFICATION DIVISION. (ID DIVISION)


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

>> ID DIVISION: USED TO PROVIDE THE IN-PROG DOCUMENTATION DETAILS.


-> WE HAVE ONLY PARAGRAPHS..
-> OUT OF THESE 6 PARA -> ONLY PROGRAM-ID IS REQUIRED.
-> PROJECT PROG -> PROGRAM-ID - AUTHOR & DATE-WRITTEN.

ID DIVISION.
PROGRAM-ID. NAME-OF-PGM.
AUTHOR. UR NAME.
DATE-WRITTEN. TODAY-DATE.
DATE-COMPILED. TODAY-DATE.
INSTALLTION. APPLICATION-NAME.
SECURITY. WARNING MESSAGE.

PGM NAME -> 8 CHAR (ALP-NUM) --> EX: ANILPGM1 ANILPGM2 , TESTPGM1 , TESTPGM2 -->
VALID NAME?? NOT VALID..

PROJECT => APPLICATION -A --> Z1YE* -> Z1YE0001 - Z1YE9999 -> NEW PROJECT PROGRAM
-> Z1YE**
APPLICATION -B --> Z1YN* -> Z1YN0001 - Z1YN9999

>> ENVIRONMENT DIVISION:- USED TO DEFINE THE REQUIRED FILE IN THE PGM** OF BATCH A
PPLICATION (FOR ONLINE - NO NEED)

DATA-STORE-.FILE/TABLE -> PROCESS-GET THE DATA (COBOL - LOGIC +CAL -SEND) -> FILE/TA
BLE.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
DEFINE THE ALL FILE (INPUT - OUTPUT)

== COBOL PGM TYPES == == IS ENV DIVISION REQUIRED.? (YES/NO)


===
1. ONLY COBOL NO
2. COBOL + FILE YES
3. COBOL + DB2 NO
4. COBOL + DB2 + FILE YES
--------------------------------------------------------------------------------------ONLINE PGM - NO ENV REQUIRED.
5. COBOL + CICS NO
6. COBOL + CICS +FILE NO -- NOT REQUIRED --> FCT - FILE CONTROL TABLE
7. COBOL + CICS + DB2 NO
8. COBOL + CICS + FILE + DB2 NO -- NOT REQUIRED

>> DATA DIVISION:- => USED TO DEFINE ALL VARIABLE REQUIRED IN THE PGM
----

VARIABLE:- TEMP MEMORY SPACE ALLOCATED IN THE PGM - TO STORE AND PROCESS THE
DATA
-> SCOPE/LIFE OF A VAIBRALE -> TILL THE END OF PGM.
=> UR PGM COMPLETED -> VARIABLE MEMORY -> DELETED.
-> WHY I NEED A VAIABLE??

DATA (FILE/DB2) -> GET DATA INTO PGM (COBOL - MEMORY?? HOLD THAT -> DEFINE MEMOR
Y -VARIABLE + PROCESS ) -> SEND -> FILE/TABLE
--
A1111,ANIL,5000 < DEPOSIT -2000 ACCT-NUM,CUST-NAME,ACCT-BAL, DEP-AMT << VARIABLE
ACCT-BAL + DEP-AMT << PROCESS ==> A1111,ANIL,7000
==== SHOPPING IN SUPER MARKET ====

SUPER MARKET HOME


ITEM -HERE STORED ===> BAG’S / COVER / -CARD BOX ===========> ITEM (FREE/CONT
/USE)

DATA DIVISION.
FILE SECTION. -> FILE VARIBALE.
WORKING-STORAGE SECTION. -> DEVELOPER VARIBALE -> USE FOR BUILDING LOGIC + DB
2
LINKAGE SECTION. -> DIFF STYLE -> LINKING VARIABLE

>> PROCEDURE DIVISION:


>> USED TO CODE ALL BUSINESS LOGIC
>> WE DONT HAVE PRE- DEFINED SECTION / PARAGRAPHS.
>> WE AS DEVELOPER WE CAN CODE OUR OWN SECTION/PARAGRAPHS
>> 80% OF UR WORK WILL BE HERE.

>> WE CODE THE STATEMENT -> COMMAND TO SYSTEM TELLING - HOW TO PROCESS THE DA
TA

=> STOP RUN -> COBOL STATEMENT ->COME OUT OF THE PGM ( END OF THE COBOL PGM)

8TH COL
ID DIVISION.
PROGRAM-ID. CBLPGM01.
AUTHOR. NAME.
DATE-WRITTEN. TODAYS.

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

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

PROCEDURE DIVISION.
000-MAIN-PARA. COMMON.
12 COL
DISPLAY ’ HELLO ALL’.
DISPLAY ’ WELCOME TO MAINFRAME TRAINING’.

STOP RUN.

COBOL -> COBOL CODE SHEET** -> PGM LINE -> 1-80 COL LENGTH

1-6 -> LINE NUMBER -> SYSTEM AUTO..

7TH COL -> USED FOR CODE A COMMENT (COMMENT -> SYSTEM WILL IGNORE THOSE LINE
S)
8-11 -> AREA-A > HEADER > DIVISION , SECTION , PARAG , 01 LEVEL -> BUT WE ALWAYS -ST
ART 8TH ONLY

12-72 -> AREA-B -> STATEMENT (DISPLAY -STOP RUN)

73-80 --> CHANGE TAG -> I WILL SHOW U IN PROJECT.

--> 7-72 -> COMMENT + HEADER + STATEMENT


7 8 12

--> ASKED ME TO CODE A COBOL PGM: 1. WHAT ARE MY IN/OUTPUT ARE 1. FILE -> OKAY -ST
YLE-1
2. TABLE -> OKAY -STYLE-2
2. ID - FINISH IT
3. ENVIRONMENT -> CHECK POINT-1
4. DATA DIVISION (COMPLET IT PARTITALY) - UNTIL THE LOGIC IS COMPLETED..
5. PROCEDURE DIVISION (COMPLETE IT )
6. COMPILE + TEST + RETEST..

PGM vs DATA -> CHOOSE 1 -> DATA**

--> ANALYS THE PGM: -> FULL PGM - CHECK AND TELL ME -WHAT THE PGM DOING??

BIG PGM: 1. CHECK THE COMMENT OF THE PGM**


2. ENVIRONMENT DIVISION --. INPUT?? IS IT FILE A PGM YES -> STYLE 1 , DB2 PGM -STYLE
-2
3. PROCEDURE DIVISION.
4. IF REQUIRED -> CHECK THE DATA DIVISION. (THIS IS ONLY IF REQUIRED)

---

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

3. Introduction to JCL
---------------------------------

CLASS-1 -> MAINFRAME


CLASS-2 -> COBOL -> 4 DIVISION -> 1 ID DIVISION 2. ENVIRONEMENT 3. DATA DIVISION 4.
PROCEDURE DIVISION.
NAME-PGM NAME-FILE NAME-VARIBALE -- LOGIC --

JCL - JOB CONTROL LANG** (STATIC LANG -> LEARN IT 1 TIME):-


-----

WE AS A DEVELOPER -> WHEN WE CODE ANY COBOL PGM (SMALL/BIG)

-> WILL IT BE HAVING ANY MISTAKE?? -HOW TO FIND THE MISTAKE OF OUR CODE.
-> OUR PGM - IS CODED IN ENGLISH? -> CAN A SYSTEM UNDERSTAND IT? -> NO

DEVELOPER: 3 STEPS 1. CODE THE PGM


2. COMPILE THE PGM - LOAD MODULE
3. EXECUTE THE PGM
>> COMPILATION : 1. FIND THE SYNTAX MISTAKE -> DISPLAY ’HELLO’. RIGHT === DISPALY ’
HELLO’
2. CONVERT THE CODE - MACHINE CODE

COBOL -ENG -> SRC CODE. -- NOT EXECUTABLE --> CONVERT --> LOAD MODULE -> EXECUTA
BLE

IN MAINFRAME -> TO DO COMPILATION:

JCL JOB* 2 STEPS STEP1 -> PGM=IGYCRCTL (COBOL COMPILER) --> 1. SYNTAX MISTAKE 2.
CONVERT THE CODE MACH/OBJECT CODE
STEP2 -> PGM=HEWL/IEWL (LINK-EDITOR) --> 1. OBJ-CODE + LINK + OTHER LOAD + COBO
L DEFINE

O/P -> LOAD MODULE

HOW TO RUN THIS COMPILATION PROCESS 1. PROJECT -> TOOLS (VERSION CONTROL TOOL
) --> 1. EDIT 2. COMPILE => I WILL SHOW
2. TRAINAING -> EXISTING COMPILATION JOB -> RUN IT MANUALLY. => I WILL SHOW

>>> EXECUTION OF THE LOAD MODULE**:

COBOL PGM (BATCH - ONLINE) --> COMPILE IT ---> LOAD -> USE THIS FOR EXECUTION

IN MAINFRAME -> TO EXECUTE THE LOAD -> 2 WAYS 1. JCL JOB --> BATCH APPLICATION
2. CICS TRANS-ID ==> ONLINE APPLICATION

==> JCL -- JOB CONTROL LANG* => STATIC LANG.. - NOT MUCH LOGIC

JOB --> IT MEANS -EXECUTION OF 1 OR MORE PGM


STEP --> IT MEAN -> EACH PGM EXECUTION IS CALLED A ’STEP’.

JOB -CONTAINS- STEPS

EX: TEAM MEMEBR ->>> SAY -> ANIL CAN U CHECK THE JOB AND TELL ME THE NUMBER STEP
S IN IT..
ANIL ANS --> IN THIS JOB WE HAVE 10 STEPS - EXECUTING 10 PGM.

SINGLE JOB -> MAX -EXEC -255 PGM --> IN GENERAL JOB PROJECT -> 1 STEPS -> 30 STEPS M
AX

>>
HOW TO CODE A JCL JOB:-

JCL -> 4 STATEMENT 1. JOB STATEMENT


2. EXEC STATEMENT
3. DD STATEMENT**
4. NULL STATEMENT << END OF THE JOB
==>
JOB STATEMENT**:
USED TO PROVIDE 1. JOB NAME
2. JOB EXECUTION SETUP DETAILS (USING PARAMETER)
SYNTAX:
//JOBNAME JOB PARAMETER1,PARAMETER2....

>> JOBNAME -> 8 CHAR -ALP-NUMERIC -> EX: ANILJCL1 ANILJOB2 ? VALID - ITS NOT VALID
FOR ANY PROJECT

PROJECT -> 2 CASES 1. PRODUCTION JOB --> NAME STANDARD -> APPLICATION-A: TXWCJ*
-> TXWCJ001 - TXWCJ999
2. TEST JOB --> ANY APPLICATION
//USERID + 1 CHAR JOB ..

EX: -> AN$Z1A1 TEST JOB -> //AN$Z1A1X JOB ..

>> PARAMETER (BIG TOPIC)


USING THESE PARAMETER - WE CAN TELL THE SYSTEM - HOW JOB SHOULD RUN , TIME , OT
HER RESOURCE DETAILS

1. NOTIFY=&SYSUID (USED FOR UR TEST/TRAINING JOB)

-> WHEN U EXECUTE ANY JOB -> 1 MIN, 2 MIN , 20MIN --> WE DONT NEED TO WAIT FOR THE J
OB TO COMPLETED
-> WHEN THE JOB COMPLETED -> SYSTEM WILL SEND A NOTIFICATION .

EX: //AN$Z1A1X JOB NOTIFY=&SYSUID

==> EXEC STATEMENT:-


--- USED TO EXECUTE THE PGM*

//STEPNAME EXEC PGM=NAME-OF-PGM (NAME OF LOAD -> PGM NAME & LOAD NAME -KEEP I
T SAME)

=> NAME -> //STEP005 //STEP010 //STEP0015 .. < REASON -> IN FUTURE/LATER - IF U WANT
TO ADD STEP IN B/W -> 6,7,8,9

STEPNAME --> 8 CHAR (ALP-NUM)

EX: -> REQUEIMENT -> CODE A JOB WITH 30 STEPS

--> DEV-1 --> //ANILSTEP //ARUNSTEP ..... //RAVISTEP ///......//SUNILSTP

ON A DAY -> ANIL IS SUPT -> FOUND THE JOB -> ABEND
-> ANIL -> LOG -> CHECKED THE JOB -> FOUND -< STEPNAME - RAVISTEP -> FAILED

MIND -> 1. BEFORE THE FAILED STEP - HOW MANY STEPS RAN FINE? !!
2. AFTER THE FAILED STEP - HOW MANY ARE WAITING? !!

--> DEV-2: --> //STEP001 //STEP002 //STEP003.....//STEP0015.....//STEP0030

ON DAY -> ANIL IS SUPT -> FOUND THE JOB ABEND/FAILURE

-> ANIL -LOG FOUND -> STEPNAME = STEP0015 -FAILED

MIND -> 1. BEFORE THE FAILED STEP - HOW MANY STEPS RAN FINE? 14
2. AFTER THE FAILED STEP - HOW MANY ARE WAITING? 15 + 1

--> PGM NAME - JCL JOB - STEP NAME -. PROJECT STANDARD

==> DEV -> CODE ANYTHING NEW -> CAN IT GO DIRECTLY IN PRODCUTION.. NO

CODE + REVIEWED

EX: //STEP1 EXEC PGM=NAME-OF-PGM

==> DD STATEMENT**

JOB -> JOB NAME , EXEC - PGM NAME

DD --> TO PROVIDE THE INPUT - OUTPUT REQUIRED FOR THE PGM.

FOR ANY COBOL PGM -> 3 MIN THINGS REQUIRED

1. LOAD LOCATION OF THE PGM.. ACT AS INPUT -> LOAD MODULE -> ’STEPLIB’
2. PGM IS EXECUTED -> SUCCESS/FAIL -> ANY PGM EXEUTING - GENERATING LOG MESSAG
E (RUNNING MESSAGE)

STORE THE LOG MESSAGE --SUCCESS/FAIL --> OUTPUT -> ’SYSPRINT’ - ’SYSOUT’

CODE: //STEPLIB DD LOCATION.LOAD.MODULE


//SYSPRINT DD SYSOUT=* * - SPOOL =TEMP PLACE FOR JOB EXECUTION
//SYSOUT DD SYSOUT=* * - SPOOL

FULL SIMPLE JCL JOB

//JOBNAME JOB NOTIFY=&SYSUID


//STEP1 EXEC PGM=CBLPGM01
//STEPLIB DD DSN=LOAD.LOC,DISP=SHR <<< U WILL UNDERSTAND NEXT CLASS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
// END OF THE JCL

--
//JOBNAME JOB NOTIFY=&SYSUID
//STEP1 EXEC PGM=CBLPGM01
//STEPLIB DD DSN=LOAD.LOC,DISP=SHR <<< U WILL UNDERSTAND NEXT CLASS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//STEP2 EXEC PGM=CBLPGM02
//STEPLIB DD DSN=LOAD.LOC,DISP=SHR <<< U WILL UNDERSTAND NEXT CLASS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
// END OF THE JCL
================================================================================
================================================================================
=============

4. Introduction to Z/OS (TSO-ISPF) - THEORY


---

MAINFRAME AS A COMPUTER -> WE USE AN OPERTING SYSTEM -> Z/OS (TSO/ISPF)


--
AM NEW MAINFRAME -> LET ASSUME WE HAVE NEW JOB -> TODAY AM JOINING IT.

1. U NEED A SYSTEM + EMULATOR SOFTWARE (PROJECT -> BULE ZONE**, QWS , IBM TELNE
T -> CONNECT TO MAINFRAME COMPUTER)
TRAINING -> VISTA TN3270 -ONLY TRAINING (DONT TELL IN INTERVIEW)
2. MAINFRAME IP ADDRESS/HOST NAME
PORT NUMBER (PROJECT -> TAKE UR TEAM MEMBER HELP <-> TRAINING -> IP: 127.0.0.1 ,
PORT -> 3270)

3. U WILL CONNECT TO MAINFRAME -> WELCOME SCREEN -> ASKING FOR USERID: ___ PAS
SWD:____
TRAINING ( USERID: - IBMUSER
PASSWRD: SECURE1 (SMALL/CAPS)

4. ONCE U LOGGED TO THE MAINFRAME -> WHAT U WILL SEE HERE??

SCREEN -> CALL IT AS -> SESSION LIST


SESSION LIST
MAINFRAME -> 2 MAJOR ENIVRONMENT 1. TSO --> SUB=LEVEL- ENVIRONEMNT 1. TSO - PRO
D
2. TSO - DEV/TEST
3. TSO - QUAL

2. CICS CICS - PROD


CICS - TEST
CICS - QUAL

TSO -> COBOL PGM (ONLINE BATCH) , JCL JOB (TEST , PROD) , LOAD (ONLINE BATCH) , FILE
S (TEST/PROD) , DB2 TABLE(TEST,PROD) -- ALL CODING/DATA

CICS -> INTERACTIVE SCREEN - USED BY THE USER

===> TODAY -> WE WANT TO CODE A COBOL PGM , COMPILE -LOAD , USE FOR EXECUTION JCL
, SEE THE OUTPUT.

WE NEED ’DATASET’ - USED TO STROE THE PGM , JOB , LOAD ..

DATASET -> 2 TYPES 1. PDS 1. PS

>> PDS -> USED FOR CODING COMPONENET -> COBOL PGM , JCL JOB , LOAD MODULE , COPY
BOOK , CONTROL CARD..

>> PS -> USED FOR DATA -> CUSTOMER DETAILS , ACCOUNT DETAILS , SALES , CREDIT CARD
==>
HOW TO CREATE A PDS** --

SELECT THE TSO --> ISPF PRIMARY OPTION MENU --< Z/OS > MENU DRIVEN SCREEN

ISPF PRIMARY OPTION MENU

OPTION: ____________0_______________________________________________

0 SETTINGS
1 VIEW
2 EDIT
3 UTILITES*** DATASET
4 FORGROAD
..
..

F1 =HELP F3 EXIT F7 - UP F8 DOWN

NAVIGATE IN THE Z/OS -> 1. FORWARD/NEXT SCREEN --> CHOOSE AN OPTION FROM THE ME
MU
2. BACKWARD/EXIT SCREEN/PREVIOUS SCREEN -> FUCNTION F3

ON A PAGE -> UP & DOWN -> PF7 & PF8


ON A PAGE -> LEFT & DWON -> F10 & F11
-
SWAP B/W 2 SCREEN -> F9

==> HOW TO CREATE A NEW PDS-DATASET** (PDS -ONLY WE STORE OUR COBOL PGM , JCL J
OB , LOAD )

2 STEPS: 1. NAVIGATION
2. ACTION WITH DETAILS

> NAVIGATE: FROM THE ISPF -> OPTION = 3.2 (3 UTLITIES 2 - DATASET )
-> A -> ALLOCATE OF NEW DATASET
-> D -> DELETE A DATASET
-> R -> RENAME THE DATASET

> ACTION / DETAILS:

1. NAME OF THE DATASET


2. LOCATION OF THE DATASET
3. SPACE ALLOCATION***
4. TYPE & ATTRIBUTE

1. NAME OF THE DATASET: 1. MAX 44 CHAR


2. SHOULD CONTAINS A QULIFER MAX 8 CHAR
3. SHOULD NOT START WITH NUMBER
4. JOIN THE QUILIFER USING . (DOT)

EX: NEW DATASET: PROJECT: -> NAMING : USERID.APPLNAME.MODULE


EX: PROJECT -> AN$Z1A1 -APPLICATION -> LOGNET / TIC / WX

AN$Z1A1.LN.COBOL -> TRICK --> KEEP IT SHORT


AN$Z1A1.TIC.JCL

PROJECT -> PRODUCTION/PROJECT DATASET:

PROJCODE.APPLCODE.JOBNAME.FIELNAME.FILENAME (CHANGE A LITTLE FROM PROJEC


T - PROJECT)
TZ1A1.TIC.Z1YN001.ACCT.DATA
TZ1A1.TCI.*

TRAINING -> IBMUSER.T5.COBOL


IBMUSER.T5.JCL

2. LOCATION:
1. TELL THE - UNIT -> SYSDA / 3390
2. TELL THE - VOLUMN -> JASYS1 <TRAINING> (PROJECT - CHECK ANY EXISTING DATASE
T)

LAPTOP --> 500 GB -HARD DISK -> OS -WINDOW -> PARATIOIN DRIVE (C: D: E:) -> FOLDER/D
OCEUMENT

MAINFRAME --> 500 GB ->DASD -> Z/OS --> PARAITITON UNITS -( 1. SYSDA/3390 2. SYSALDA/3
380 ) -- VOLUMNS(V1,V2..) --> DATASET(PDS/PS)

DASD --> DIRECT ACCESS STORAGE DISK

3. SPACE ALLOCATION: (STATIC NATURE)

ALLOCATE THE REQUIRD SPACE - AT THE TIME OF CREATING THE DATASET.

4 POINTS 1. SPACE UNIT ? --> TRACK & CYLINDER ==> 1 CYL = 15 TRACKS
2. PRIMARY QTY SPACE ==> FIXED SPACE ALLOCATION -> 1 : 1 -> EX: 10 TRACK = 10 TRA
CK
3. SECONDARY QTY SPACE ==> EXTENDABLE SPACE > 1 : 15 -> EX: 10 TRACK => 10,10,10,
10,10,10,10..15 TIMES
4. DIRCTORY BLOCK(PARATITIONS) -> ONLY FOR PDS --> 1 : 6 -> USED TO CREATE MEMBE
R SPACE.
PS > NO DIRECTORY BLOCK => 0

EX: TRACK => PQ-1,1-SQ -> MIN= 1 MAX- 16


EX: CYL => PQ=10,SQ=10 -> MIN= 10 MAX- 160
DB=10 -> 1- 60 PGM IN IT..

4. ATTRIBUTE:-

1. TYPE => PDS - PDS -> PS -> BLANK


2. RECORD LENGTH => ALWAYS PDS - 80
3. RECORD FORMAT => FB -COBOL & JCL ==> LOAD = U (UNDEFINED)
4. BLOCK SIZE => MULTIPLE OF RECORD LENGTH
80 , 160.... 800

PDS -> OPTION -3.2 1. NAME -> IBMUSER.T5.COBOL IBMUSER.T5.LOAD


2. LOCATION UNIT=3390/SYSDA;VOL=JASYS1 UNIT=3390/SYSDA;VOL=JASYS1
3. SPACEE PQ=10,SQ=10,DB=10,UNIT=TRACKS PQ=10,SQ=10,DB=10,UNIT=TRACKS
4. ATTRIBUTE TYPE=PDS,RECLEN=80,RECFM=FB,BLSI=800 TYPE=PDS,RECLEN=80,RECF
M=U,BLSIZE=800

PDS > PROJECT -> OPTION 3.2 -> NAME > 1. USERID.APPLCODE.MODULENAME
2. LOCATION > UNIT-3390 , VOL - CHECK OTHER DATASET
3. SPACE > PQ=50,SQ=50,DB=30,UNIT=CYLINDER
4. ATTRIBUTE -> TYPE=PDS,REC LEN = 80 , REC FM -FB , BLKSSIZE = 800

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

5. Introduction to Z/OS (TSO-ISPF) - PRACTICAL.


------------------
TODAYS -> 1. CREATE A PDS 2. CODE 2 COBOL PGM 3. COMPILE - LOAD 4. CODE RUN JCL -E
XECUTE 5. SEE THE OUTPUT

>> 1. CREATE A PDS -> 3.2 => A -ALLOCATION -

DETAIILS: 1. NAME 2. LOCATION 3. SPACE 4. ATTRIBUTE

PDS -> OPTION -3.2 1. NAME -> IBMUSER.T5.COBOL IBMUSER.T5.LOAD


2. LOCATION UNIT=3390/SYSDA;VOL=JASYS1 UNIT=3390/SYSDA;VOL=JASYS1
3. SPACE PQ=10,SQ=10,DB=10,UNIT=TRACKS PQ=10,SQ=10,DB=10,UNIT=TRACKS
4. ATTRIBUTE TYPE=PDS,RECLEN=80,RECFM=FB,BLSI=800 TYPE=PDS,RECLEN=80,RECF
M=U,BLSIZE=800

>> 2. EDIT THE PDS -> FROM THE ISPF OPTION -> 3.4 (SEARCH SCREEN)

-> PROVIDE THE DATASET NAME: 2 WAYS: FULL NAME > IBMUSER.T5.COBOL -> HIT ENTER
PARTIAL IBMUSER.T5.*

--> HOW TO CREATE A MEMBER(PGM) IN THE PDS


IN 3.4 -DSLIST SCREEN

2 CASES: 1. EMPTY PDS *1ST TIME E IBMUSER.T5.COBOL(MEMBER-NAME) -> HIT ENTER 3


TIMES (MEM = 8 CHAR)
IBMUSER.T5.LOAD

2. LATER TIME E IBMUSER.T5.COBOL -> HIT ENTER


- SHOW THE EXISTING PGM -- EDIT THEM - E -EDIT
- IN THE PDS -> NEW PGM/MEM -> ’S MEMBER-NAME’ - HIT ENTER

>> ONCE UR IN THE EDITING PANELL:;


I - INSERT NEW LINE
D - DELETE A OLD LINE

>> COBOL COLOR FORMAT -> DEFAULT -> RED -> COBOL KEYWORD
GREEN -> DEVELOPER NAME/WORDS
TO GET THIS COLOR
’HI COB’ (HILIGHT COBOL COLOR)

ALL THE PGM ARE AUTO-SAVED -> F3 (SAVE & EXIT)

3. HOW TO COMPILE THE PGM:-


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

WE NEED A COMPILER JOB -> PROJECT -> WE EXECUTE THE COMPILER JOB -> THRU TOOLS

-> TRAINING -> WE EXECUTE THE COMPILE JOB > MANULLY

1. COPY THE COMPILER JOB FROM ANOTHER PDS = ’IBMUSER.TEAM.COBOL’ (1 TIME)

1. GOTO 3.4 -> TYPE -> IBMUSER.TEAM.COBOL -> HIT ENTER


2. BROWSE -> B IBMUSER.TEAM.COBOL --> LIST OF MEMBER IN THAT PDS
3. COPY -> ’C’ -> HIT ENTER -> ASK U THE TARGET DATASET -> IBMUSER.T5.COBOL -> HIT
ENTER
4. -PROMPT -> COPIED -> F3 -> GOTO UR PDS.

-> IF A DATASET - IS UR PERSONAL DATASET -> U CAN USE -> E- EDIT


BUT IF THE DATASSET - IS UR’S TEAM /PROJECT -> -> B-BROWSE *CANNOT EDIT IT

2. EDIT THE COMPILER JOB -> WITH UR DATASET NAME * PGM NAME

SYSIN DD -> IBMUSER.T5.COBOL << INPUT -- COBOL PGM


SYSLMOD DD -> IBMUSER.T5.LOAD << OUTPUT -- LOAD OF THE COBOL PGM

MEM => PGM NAME

//IBMUSERX JOB ’285’,’POLSANI’,NOTIFY=&SYSUID,REGION=6M


//JOBPROC JCLLIB ORDER=S1304.ANIL.PROC PLZ DONT CHANGE THIS
//COBCL EXEC COBCL,MEM=CBLPGM01 GIVE YOUR PGM NAME HERE
//COMPILE.SYSIN DD DSN=IBMUSER.T5.COBOL(&MEM),DISP=SHR INPUT-COBOL
//LKED.SYSLMOD DD DSN=IBMUSER.T5.LOAD(&MEM),DISP=SHR OUTPUT-LOAD

3. EXEUCTE THE COMPILE JCL JOB

TO EXECUTE ANY JCL JOB (1.COMPILER JOB 2. RUN JCL JOB) --> WE USE ’SUBMIT/SUB’

-> ONCE U SUBMIT ANY JOB -> 1. ACKNOWLEDGE MESSAGE (RED COLOR) ===IKJ56250I JO
B IBMUSERX(JOB01249) SUBMITTED
2. JOB -COMPLETION -NOTIFCATION (RED COLOR)

19.20.17 JOB01249 $HASP165 IBMUSERX ENDED AT N1 MAXCC=0 CN(INTERNAL) ==> LOOK -


> MAXCC=?? RETURN CODE
COMPILE THE PGM : MAXCC= 0000 > SUCCESFUL
0004 > SUCCESFUL + WARNING (IGNORE)
0008/0012 -> ERROR -> CORRECT THE MISTAKE IN PGM - RE-COMPILE

>>4 - HOW TO EXECUTE THE COBOL LOAD**:-

1. GOTO 3.4 -> IBMUSER.T5.COBOL -> EDIT -> CREATE A RUN JCL JOB ’S CBLPGMJ1’
2. CODE THE RUN JCL JOB -> EXECUTE (SUBMIT)

>>5 - CHECK THE OUTPUT :


DISPLAY --> THE OUTPUT WILL BE IN A PLACE CALLED ’SPOOL’

SPOOL -> TEMP JOB EXECUTION/JOB LOG -LOCATION

GOTO SPOOL -> FROM ISPF -> OPTION ’S - SDSF’ --> OPTION ST - STATUS OF THE JOB.. (U W
ILL SEE ALL LIST OF JOB)

-> TO THE OPEN JOB LOG -> ’?’


-> TO OPEN ANY DD LIB -> ’S’

A - ALLOCATE - E - EDIT - D - DELETE - R - RENAME

===============================================
4. Introduction to Z/OS (TSO-ISPF) - THEORY
---

MAINFRAME AS A COMPUTER -> WE USE AN OPERTING SYSTEM -> Z/OS (TSO/ISPF)


--
AM NEW MAINFRAME -> LET ASSUME WE HAVE NEW JOB -> TODAY AM JOINING IT.

1. U NEED A SYSTEM + EMULATOR SOFTWARE (PROJECT -> BULE ZONE**, QWS , IBM TELNE
T -> CONNECT TO MAINFRAME COMPUTER)
TRAINING -> VISTA TN3270 -ONLY TRAINING (DONT TELL IN INTERVIEW)
2. MAINFRAME IP ADDRESS/HOST NAME
PORT NUMBER (PROJECT -> TAKE UR TEAM MEMBER HELP <-> TRAINING -> IP: 127.0.0.1 ,
PORT -> 3270)

3. U WILL CONNECT TO MAINFRAME -> WELCOME SCREEN -> ASKING FOR USERID: ___ PAS
SWD:____
TRAINING ( USERID: - IBMUSER
PASSWRD: SECURE1 (SMALL/CAPS)

4. ONCE U LOGGED TO THE MAINFRAME -> WHAT U WILL SEE HERE??

SCREEN -> CALL IT AS -> SESSION LIST


SESSION LIST
MAINFRAME -> 2 MAJOR ENIVRONMENT 1. TSO --> SUB=LEVEL- ENVIRONEMNT 1. TSO - PRO
D
2. TSO - DEV/TEST
3. TSO - QUAL
2. CICS CICS - PROD
CICS - TEST
CICS - QUAL

TSO -> COBOL PGM (ONLINE BATCH) , JCL JOB (TEST , PROD) , LOAD (ONLINE BATCH) , FILE
S (TEST/PROD) , DB2 TABLE(TEST,PROD) -- ALL CODING/DATA

CICS -> INTERACTIVE SCREEN - USED BY THE USER

===> TODAY -> WE WANT TO CODE A COBOL PGM , COMPILE -LOAD , USE FOR EXECUTION JCL
, SEE THE OUTPUT.

WE NEED ’DATASET’ - USED TO STROE THE PGM , JOB , LOAD ..

DATASET -> 2 TYPES 1. PDS 1. PS

>> PDS -> USED FOR CODING COMPONENET -> COBOL PGM , JCL JOB , LOAD MODULE , COPY
BOOK , CONTROL CARD..

>> PS -> USED FOR DATA -> CUSTOMER DETAILS , ACCOUNT DETAILS , SALES , CREDIT CARD

==>
HOW TO CREATE A PDS** --

SELECT THE TSO --> ISPF PRIMARY OPTION MENU --< Z/OS > MENU DRIVEN SCREEN

ISPF PRIMARY OPTION MENU

OPTION: ____________0_______________________________________________

0 SETTINGS
1 VIEW
2 EDIT
3 UTILITES*** DATASET
4 FORGROAD
..
..

F1 =HELP F3 EXIT F7 - UP F8 DOWN

NAVIGATE IN THE Z/OS -> 1. FORWARD/NEXT SCREEN --> CHOOSE AN OPTION FROM THE ME
MU
2. BACKWARD/EXIT SCREEN/PREVIOUS SCREEN -> FUCNTION F3

ON A PAGE -> UP & DOWN -> PF7 & PF8


ON A PAGE -> LEFT & DWON -> F10 & F11
-
SWAP B/W 2 SCREEN -> F9

==> HOW TO CREATE A NEW PDS-DATASET** (PDS -ONLY WE STORE OUR COBOL PGM , JCL J
OB , LOAD )
2 STEPS: 1. NAVIGATION
2. ACTION WITH DETAILS

> NAVIGATE: FROM THE ISPF -> OPTION = 3.2 (3 UTLITIES 2 - DATASET )
-> A -> ALLOCATE OF NEW DATASET
-> D -> DELETE A DATASET
-> R -> RENAME THE DATASET

> ACTION / DETAILS:

1. NAME OF THE DATASET


2. LOCATION OF THE DATASET
3. SPACE ALLOCATION***
4. TYPE & ATTRIBUTE

1. NAME OF THE DATASET: 1. MAX 44 CHAR


2. SHOULD CONTAINS A QULIFER MAX 8 CHAR
3. SHOULD NOT START WITH NUMBER
4. JOIN THE QUILIFER USING . (DOT)

EX: NEW DATASET: PROJECT: -> NAMING : USERID.APPLNAME.MODULE

EX: PROJECT -> AN$Z1A1 -APPLICATION -> LOGNET / TIC / WX

AN$Z1A1.LN.COBOL -> TRICK --> KEEP IT SHORT


AN$Z1A1.TIC.JCL

PROJECT -> PRODUCTION/PROJECT DATASET:

PROJCODE.APPLCODE.JOBNAME.FIELNAME.FILENAME (CHANGE A LITTLE FROM PROJEC


T - PROJECT)
TZ1A1.TIC.Z1YN001.ACCT.DATA
TZ1A1.TCI.*

TRAINING -> IBMUSER.T5.COBOL


IBMUSER.T5.JCL

2. LOCATION:
1. TELL THE - UNIT -> SYSDA / 3390
2. TELL THE - VOLUMN -> JASYS1 <TRAINING> (PROJECT - CHECK ANY EXISTING DATASE
T)

LAPTOP --> 500 GB -HARD DISK -> OS -WINDOW -> PARATIOIN DRIVE (C: D: E:) -> FOLDER/D
OCEUMENT

MAINFRAME --> 500 GB ->DASD -> Z/OS --> PARAITITON UNITS -( 1. SYSDA/3390 2. SYSALDA/3
380 ) -- VOLUMNS(V1,V2..) --> DATASET(PDS/PS)

DASD --> DIRECT ACCESS STORAGE DISK

3. SPACE ALLOCATION: (STATIC NATURE)


ALLOCATE THE REQUIRD SPACE - AT THE TIME OF CREATING THE DATASET.

4 POINTS 1. SPACE UNIT ? --> TRACK & CYLINDER ==> 1 CYL = 15 TRACKS
2. PRIMARY QTY SPACE ==> FIXED SPACE ALLOCATION -> 1 : 1 -> EX: 10 TRACK = 10 TRA
CK
3. SECONDARY QTY SPACE ==> EXTENDABLE SPACE > 1 : 15 -> EX: 10 TRACK => 10,10,10,
10,10,10,10..15 TIMES
4. DIRCTORY BLOCK(PARATITIONS) -> ONLY FOR PDS --> 1 : 6 -> USED TO CREATE MEMBE
R SPACE.
PS > NO DIRECTORY BLOCK => 0

EX: TRACK => PQ-1,1-SQ -> MIN= 1 MAX- 16


EX: CYL => PQ=10,SQ=10 -> MIN= 10 MAX- 160
DB=10 -> 1- 60 PGM IN IT..

4. ATTRIBUTE:-

1. TYPE => PDS - PDS -> PS -> BLANK


2. RECORD LENGTH => ALWAYS PDS - 80
3. RECORD FORMAT => FB -COBOL & JCL ==> LOAD = U (UNDEFINED)
4. BLOCK SIZE => MULTIPLE OF RECORD LENGTH
80 , 160.... 800

PDS -> OPTION -3.2 1. NAME -> IBMUSER.T5.COBOL IBMUSER.T5.LOAD


2. LOCATION UNIT=3390/SYSDA;VOL=JASYS1 UNIT=3390/SYSDA;VOL=JASYS1
3. SPACEE PQ=10,SQ=10,DB=10,UNIT=TRACKS PQ=10,SQ=10,DB=10,UNIT=TRACKS
4. ATTRIBUTE TYPE=PDS,RECLEN=80,RECFM=FB,BLSI=800 TYPE=PDS,RECLEN=80,RECF
M=U,BLSIZE=800

PDS > PROJECT -> OPTION 3.2 -> NAME > 1. USERID.APPLCODE.MODULENAME
2. LOCATION > UNIT-3390 , VOL - CHECK OTHER DATASET
3. SPACE > PQ=50,SQ=50,DB=30,UNIT=CYLINDER
4. ATTRIBUTE -> TYPE=PDS,REC LEN = 80 , REC FM -FB , BLKSSIZE = 800
================================================================================
================================================================================
======

5. Introduction to Z/OS (TSO-ISPF) - PRACTICAL.


------------------
TODAYS -> 1. CREATE A PDS 2. CODE 2 COBOL PGM 3. COMPILE - LOAD 4. CODE RUN JCL -E
XECUTE 5. SEE THE OUTPUT

>> 1. CREATE A PDS -> 3.2 => A -ALLOCATION -

DETAIILS: 1. NAME 2. LOCATION 3. SPACE 4. ATTRIBUTE

PDS -> OPTION -3.2 1. NAME -> IBMUSER.T5.COBOL IBMUSER.T5.LOAD


2. LOCATION UNIT=3390/SYSDA;VOL=JASYS1 UNIT=3390/SYSDA;VOL=JASYS1
3. SPACE PQ=10,SQ=10,DB=10,UNIT=TRACKS PQ=10,SQ=10,DB=10,UNIT=TRACKS
4. ATTRIBUTE TYPE=PDS,RECLEN=80,RECFM=FB,BLSI=800 TYPE=PDS,RECLEN=80,RECF
M=U,BLSIZE=800
>> 2. EDIT THE PDS -> FROM THE ISPF OPTION -> 3.4 (SEARCH SCREEN)

-> PROVIDE THE DATASET NAME: 2 WAYS: FULL NAME > IBMUSER.T5.COBOL -> HIT ENTER
PARTIAL IBMUSER.T5.*

--> HOW TO CREATE A MEMBER(PGM) IN THE PDS


IN 3.4 -DSLIST SCREEN

2 CASES: 1. EMPTY PDS *1ST TIME E IBMUSER.T5.COBOL(MEMBER-NAME) -> HIT ENTER 3


TIMES (MEM = 8 CHAR)
IBMUSER.T5.LOAD

2. LATER TIME E IBMUSER.T5.COBOL -> HIT ENTER


- SHOW THE EXISTING PGM -- EDIT THEM - E -EDIT
- IN THE PDS -> NEW PGM/MEM -> ’S MEMBER-NAME’ - HIT ENTER

>> ONCE UR IN THE EDITING PANELL:;

I - INSERT NEW LINE


D - DELETE A OLD LINE

>> COBOL COLOR FORMAT -> DEFAULT -> RED -> COBOL KEYWORD
GREEN -> DEVELOPER NAME/WORDS
TO GET THIS COLOR
’HI COB’ (HILIGHT COBOL COLOR)

ALL THE PGM ARE AUTO-SAVED -> F3 (SAVE & EXIT)

3. HOW TO COMPILE THE PGM:-


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

WE NEED A COMPILER JOB -> PROJECT -> WE EXECUTE THE COMPILER JOB -> THRU TOOLS

-> TRAINING -> WE EXECUTE THE COMPILE JOB > MANULLY

1. COPY THE COMPILER JOB FROM ANOTHER PDS = ’IBMUSER.TEAM.COBOL’ (1 TIME)

1. GOTO 3.4 -> TYPE -> IBMUSER.TEAM.COBOL -> HIT ENTER


2. BROWSE -> B IBMUSER.TEAM.COBOL --> LIST OF MEMBER IN THAT PDS
3. COPY -> ’C’ -> HIT ENTER -> ASK U THE TARGET DATASET -> IBMUSER.T5.COBOL -> HIT
ENTER
4. -PROMPT -> COPIED -> F3 -> GOTO UR PDS.

-> IF A DATASET - IS UR PERSONAL DATASET -> U CAN USE -> E- EDIT


BUT IF THE DATASSET - IS UR’S TEAM /PROJECT -> -> B-BROWSE *CANNOT EDIT IT

2. EDIT THE COMPILER JOB -> WITH UR DATASET NAME * PGM NAME

SYSIN DD -> IBMUSER.T5.COBOL << INPUT -- COBOL PGM


SYSLMOD DD -> IBMUSER.T5.LOAD << OUTPUT -- LOAD OF THE COBOL PGM
MEM => PGM NAME

//IBMUSERX JOB ’285’,’POLSANI’,NOTIFY=&SYSUID,REGION=6M


//JOBPROC JCLLIB ORDER=S1304.ANIL.PROC PLZ DONT CHANGE THIS
//COBCL EXEC COBCL,MEM=CBLPGM01 GIVE YOUR PGM NAME HERE
//COMPILE.SYSIN DD DSN=IBMUSER.T5.COBOL(&MEM),DISP=SHR INPUT-COBOL
//LKED.SYSLMOD DD DSN=IBMUSER.T5.LOAD(&MEM),DISP=SHR OUTPUT-LOAD

3. EXEUCTE THE COMPILE JCL JOB

TO EXECUTE ANY JCL JOB (1.COMPILER JOB 2. RUN JCL JOB) --> WE USE ’SUBMIT/SUB’

-> ONCE U SUBMIT ANY JOB -> 1. ACKNOWLEDGE MESSAGE (RED COLOR) ===IKJ56250I JO
B IBMUSERX(JOB01249) SUBMITTED
2. JOB -COMPLETION -NOTIFCATION (RED COLOR)

19.20.17 JOB01249 $HASP165 IBMUSERX ENDED AT N1 MAXCC=0 CN(INTERNAL) ==> LOOK -


> MAXCC=?? RETURN CODE

COMPILE THE PGM : MAXCC= 0000 > SUCCESFUL


0004 > SUCCESFUL + WARNING (IGNORE)
0008/0012 -> ERROR -> CORRECT THE MISTAKE IN PGM - RE-COMPILE

>>4 - HOW TO EXECUTE THE COBOL LOAD**:-

1. GOTO 3.4 -> IBMUSER.T5.COBOL -> EDIT -> CREATE A RUN JCL JOB ’S CBLPGMJ1’
2. CODE THE RUN JCL JOB -> EXECUTE (SUBMIT)

>>5 - CHECK THE OUTPUT :


DISPLAY --> THE OUTPUT WILL BE IN A PLACE CALLED ’SPOOL’

SPOOL -> TEMP JOB EXECUTION/JOB LOG -LOCATION

GOTO SPOOL -> FROM ISPF -> OPTION ’S - SDSF’ --> OPTION ST - STATUS OF THE JOB.. (U W
ILL SEE ALL LIST OF JOB)

-> TO THE OPEN JOB LOG -> ’?’


-> TO OPEN ANY DD LIB -> ’S’

A - ALLOCATE - E - EDIT - D - DELETE - R - RENAME

===============================================
4. Introduction to Z/OS (TSO-ISPF) - THEORY
---

MAINFRAME AS A COMPUTER -> WE USE AN OPERTING SYSTEM -> Z/OS (TSO/ISPF)


--
AM NEW MAINFRAME -> LET ASSUME WE HAVE NEW JOB -> TODAY AM JOINING IT.

1. U NEED A SYSTEM + EMULATOR SOFTWARE (PROJECT -> BULE ZONE**, QWS , IBM TELNE
T -> CONNECT TO MAINFRAME COMPUTER)
TRAINING -> VISTA TN3270 -ONLY TRAINING (DONT TELL IN INTERVIEW)
2. MAINFRAME IP ADDRESS/HOST NAME
PORT NUMBER (PROJECT -> TAKE UR TEAM MEMBER HELP <-> TRAINING -> IP: 127.0.0.1 ,
PORT -> 3270)

3. U WILL CONNECT TO MAINFRAME -> WELCOME SCREEN -> ASKING FOR USERID: ___ PAS
SWD:____
TRAINING ( USERID: - IBMUSER
PASSWRD: SECURE1 (SMALL/CAPS)

4. ONCE U LOGGED TO THE MAINFRAME -> WHAT U WILL SEE HERE??

SCREEN -> CALL IT AS -> SESSION LIST


SESSION LIST
MAINFRAME -> 2 MAJOR ENIVRONMENT 1. TSO --> SUB=LEVEL- ENVIRONEMNT 1. TSO - PRO
D
2. TSO - DEV/TEST
3. TSO - QUAL

2. CICS CICS - PROD


CICS - TEST
CICS - QUAL

TSO -> COBOL PGM (ONLINE BATCH) , JCL JOB (TEST , PROD) , LOAD (ONLINE BATCH) , FILE
S (TEST/PROD) , DB2 TABLE(TEST,PROD) -- ALL CODING/DATA

CICS -> INTERACTIVE SCREEN - USED BY THE USER

===> TODAY -> WE WANT TO CODE A COBOL PGM , COMPILE -LOAD , USE FOR EXECUTION JCL
, SEE THE OUTPUT.

WE NEED ’DATASET’ - USED TO STROE THE PGM , JOB , LOAD ..

DATASET -> 2 TYPES 1. PDS 1. PS

>> PDS -> USED FOR CODING COMPONENET -> COBOL PGM , JCL JOB , LOAD MODULE , COPY
BOOK , CONTROL CARD..

>> PS -> USED FOR DATA -> CUSTOMER DETAILS , ACCOUNT DETAILS , SALES , CREDIT CARD

==>
HOW TO CREATE A PDS** --

SELECT THE TSO --> ISPF PRIMARY OPTION MENU --< Z/OS > MENU DRIVEN SCREEN

ISPF PRIMARY OPTION MENU

OPTION: ____________0_______________________________________________

0 SETTINGS
1 VIEW
2 EDIT
3 UTILITES*** DATASET
4 FORGROAD
..
..

F1 =HELP F3 EXIT F7 - UP F8 DOWN

NAVIGATE IN THE Z/OS -> 1. FORWARD/NEXT SCREEN --> CHOOSE AN OPTION FROM THE ME
MU
2. BACKWARD/EXIT SCREEN/PREVIOUS SCREEN -> FUCNTION F3

ON A PAGE -> UP & DOWN -> PF7 & PF8


ON A PAGE -> LEFT & DWON -> F10 & F11
-
SWAP B/W 2 SCREEN -> F9

==> HOW TO CREATE A NEW PDS-DATASET** (PDS -ONLY WE STORE OUR COBOL PGM , JCL J
OB , LOAD )

2 STEPS: 1. NAVIGATION
2. ACTION WITH DETAILS

> NAVIGATE: FROM THE ISPF -> OPTION = 3.2 (3 UTLITIES 2 - DATASET )
-> A -> ALLOCATE OF NEW DATASET
-> D -> DELETE A DATASET
-> R -> RENAME THE DATASET

> ACTION / DETAILS:

1. NAME OF THE DATASET


2. LOCATION OF THE DATASET
3. SPACE ALLOCATION***
4. TYPE & ATTRIBUTE

1. NAME OF THE DATASET: 1. MAX 44 CHAR


2. SHOULD CONTAINS A QULIFER MAX 8 CHAR
3. SHOULD NOT START WITH NUMBER
4. JOIN THE QUILIFER USING . (DOT)

EX: NEW DATASET: PROJECT: -> NAMING : USERID.APPLNAME.MODULE

EX: PROJECT -> AN$Z1A1 -APPLICATION -> LOGNET / TIC / WX

AN$Z1A1.LN.COBOL -> TRICK --> KEEP IT SHORT


AN$Z1A1.TIC.JCL

PROJECT -> PRODUCTION/PROJECT DATASET:

PROJCODE.APPLCODE.JOBNAME.FIELNAME.FILENAME (CHANGE A LITTLE FROM PROJEC


T - PROJECT)
TZ1A1.TIC.Z1YN001.ACCT.DATA
TZ1A1.TCI.*
TRAINING -> IBMUSER.T5.COBOL
IBMUSER.T5.JCL

2. LOCATION:
1. TELL THE - UNIT -> SYSDA / 3390
2. TELL THE - VOLUMN -> JASYS1 <TRAINING> (PROJECT - CHECK ANY EXISTING DATASE
T)

LAPTOP --> 500 GB -HARD DISK -> OS -WINDOW -> PARATIOIN DRIVE (C: D: E:) -> FOLDER/D
OCEUMENT

MAINFRAME --> 500 GB ->DASD -> Z/OS --> PARAITITON UNITS -( 1. SYSDA/3390 2. SYSALDA/3
380 ) -- VOLUMNS(V1,V2..) --> DATASET(PDS/PS)

DASD --> DIRECT ACCESS STORAGE DISK

3. SPACE ALLOCATION: (STATIC NATURE)

ALLOCATE THE REQUIRD SPACE - AT THE TIME OF CREATING THE DATASET.

4 POINTS 1. SPACE UNIT ? --> TRACK & CYLINDER ==> 1 CYL = 15 TRACKS
2. PRIMARY QTY SPACE ==> FIXED SPACE ALLOCATION -> 1 : 1 -> EX: 10 TRACK = 10 TRA
CK
3. SECONDARY QTY SPACE ==> EXTENDABLE SPACE > 1 : 15 -> EX: 10 TRACK => 10,10,10,
10,10,10,10..15 TIMES
4. DIRCTORY BLOCK(PARATITIONS) -> ONLY FOR PDS --> 1 : 6 -> USED TO CREATE MEMBE
R SPACE.
PS > NO DIRECTORY BLOCK => 0

EX: TRACK => PQ-1,1-SQ -> MIN= 1 MAX- 16


EX: CYL => PQ=10,SQ=10 -> MIN= 10 MAX- 160
DB=10 -> 1- 60 PGM IN IT..

4. ATTRIBUTE:-

1. TYPE => PDS - PDS -> PS -> BLANK


2. RECORD LENGTH => ALWAYS PDS - 80
3. RECORD FORMAT => FB -COBOL & JCL ==> LOAD = U (UNDEFINED)
4. BLOCK SIZE => MULTIPLE OF RECORD LENGTH
80 , 160.... 800

PDS -> OPTION -3.2 1. NAME -> IBMUSER.T5.COBOL IBMUSER.T5.LOAD


2. LOCATION UNIT=3390/SYSDA;VOL=JASYS1 UNIT=3390/SYSDA;VOL=JASYS1
3. SPACEE PQ=10,SQ=10,DB=10,UNIT=TRACKS PQ=10,SQ=10,DB=10,UNIT=TRACKS
4. ATTRIBUTE TYPE=PDS,RECLEN=80,RECFM=FB,BLSI=800 TYPE=PDS,RECLEN=80,RECF
M=U,BLSIZE=800

PDS > PROJECT -> OPTION 3.2 -> NAME > 1. USERID.APPLCODE.MODULENAME
2. LOCATION > UNIT-3390 , VOL - CHECK OTHER DATASET
3. SPACE > PQ=50,SQ=50,DB=30,UNIT=CYLINDER
4. ATTRIBUTE -> TYPE=PDS,REC LEN = 80 , REC FM -FB , BLKSSIZE = 800
================================================================================
======================================================================

5. Introduction to Z/OS (TSO-ISPF) - PRACTICAL.


------------------
TODAYS -> 1. CREATE A PDS 2. CODE 2 COBOL PGM 3. COMPILE - LOAD 4. CODE RUN JCL -E
XECUTE 5. SEE THE OUTPUT

>> 1. CREATE A PDS -> 3.2 => A -ALLOCATION -

DETAIILS: 1. NAME 2. LOCATION 3. SPACE 4. ATTRIBUTE

PDS -> OPTION -3.2 1. NAME -> IBMUSER.T5.COBOL IBMUSER.T5.LOAD


2. LOCATION UNIT=3390/SYSDA;VOL=JASYS1 UNIT=3390/SYSDA;VOL=JASYS1
3. SPACE PQ=10,SQ=10,DB=10,UNIT=TRACKS PQ=10,SQ=10,DB=10,UNIT=TRACKS
4. ATTRIBUTE TYPE=PDS,RECLEN=80,RECFM=FB,BLSI=800 TYPE=PDS,RECLEN=80,RECF
M=U,BLSIZE=800

>> 2. EDIT THE PDS -> FROM THE ISPF OPTION -> 3.4 (SEARCH SCREEN)

-> PROVIDE THE DATASET NAME: 2 WAYS: FULL NAME > IBMUSER.T5.COBOL -> HIT ENTER
PARTIAL IBMUSER.T5.*

--> HOW TO CREATE A MEMBER(PGM) IN THE PDS


IN 3.4 -DSLIST SCREEN

2 CASES: 1. EMPTY PDS *1ST TIME E IBMUSER.T5.COBOL(MEMBER-NAME) -> HIT ENTER 3


TIMES (MEM = 8 CHAR)
IBMUSER.T5.LOAD

2. LATER TIME E IBMUSER.T5.COBOL -> HIT ENTER


- SHOW THE EXISTING PGM -- EDIT THEM - E -EDIT
- IN THE PDS -> NEW PGM/MEM -> ’S MEMBER-NAME’ - HIT ENTER

>> ONCE UR IN THE EDITING PANELL:;

I - INSERT NEW LINE


D - DELETE A OLD LINE

>> COBOL COLOR FORMAT -> DEFAULT -> RED -> COBOL KEYWORD
GREEN -> DEVELOPER NAME/WORDS
TO GET THIS COLOR
’HI COB’ (HILIGHT COBOL COLOR)

ALL THE PGM ARE AUTO-SAVED -> F3 (SAVE & EXIT)

================================================================================
================================================================================
=====
Introduction to COBOL
-----------------
MAINFRAME --> IT IS A BIG COMPUTER -> USED FOR DATA 1. STORE & 2. PROCESSING

PROCESSING -> 1. BATCH PROCESS 2. ONLINE PROCESSING

1. BUSINESS LOGIC -> COBOL.

COBOL -> WE CANNOT DEVELOPER ANY SOFTWARE


-> WE CAN CODE BUSINESS LOGIC -> TO MAINTAIN THE APPLICATION

COBOL -> VERY EASY


-> MOSTLY ENGLISH

--> PGM ARE LENGTHY -> SMALL LOGIC PGM --> 300 LINES OF CODE

==> IF AM INTO MAINFRAME -APPLICATION

2 THINGS -> 1. AS A DEVELOPER -> WE NEED TO KNOW HOW TO CODE THE PGM -> FALL INT
O A DEVELOPER PROJECT
2. AS A ANALSYST/SUPT ROLE --> 1. ALONG WITH THE CODING THE PGM 2. HOW TO ANALY
SIS OF THE PGM
==>
HOW TO CODE A COBOL PGM** :-

PGM FORMAT: DIVISION.


SECTION.
PARAGRAPHS
STATEMENT. --> COMMAND/INSTRUTION TO SYSTEM -HOW TO PROCESS THE DATA.

DIVISION -> 4 DIVISION

1. IDENTIFICATION DIVISION. (ID DIVISION)


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

>> ID DIVISION: USED TO PROVIDE THE IN-PROG DOCUMENTATION DETAILS.


-> WE HAVE ONLY PARAGRAPHS..
-> OUT OF THESE 6 PARA -> ONLY PROGRAM-ID IS REQUIRED.
-> PROJECT PROG -> PROGRAM-ID - AUTHOR & DATE-WRITTEN.

ID DIVISION.
PROGRAM-ID. NAME-OF-PGM.
AUTHOR. UR NAME.
DATE-WRITTEN. TODAY-DATE.
DATE-COMPILED. TODAY-DATE.
INSTALLTION. APPLICATION-NAME.
SECURITY. WARNING MESSAGE.

PGM NAME -> 8 CHAR (ALP-NUM) --> EX: ANILPGM1 ANILPGM2 , TESTPGM1 , TESTPGM2 -->
VALID NAME?? NOT VALID..
PROJECT => APPLICATION -A --> Z1YE* -> Z1YE0001 - Z1YE9999 -> NEW PROJECT PROGRAM
-> Z1YE**
APPLICATION -B --> Z1YN* -> Z1YN0001 - Z1YN9999

>> ENVIRONMENT DIVISION:- USED TO DEFINE THE REQUIRED FILE IN THE PGM** OF BATCH A
PPLICATION (FOR ONLINE - NO NEED)

DATA-STORE-.FILE/TABLE -> PROCESS-GET THE DATA (COBOL - LOGIC +CAL -SEND) -> FILE/TA
BLE.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
DEFINE THE ALL FILE (INPUT - OUTPUT)

== COBOL PGM TYPES == == IS ENV DIVISION REQUIRED.? (YES/NO)


===
1. ONLY COBOL NO
2. COBOL + FILE YES
3. COBOL + DB2 NO
4. COBOL + DB2 + FILE YES
--------------------------------------------------------------------------------------ONLINE PGM - NO ENV REQUIRED.
5. COBOL + CICS NO
6. COBOL + CICS +FILE NO -- NOT REQUIRED --> FCT - FILE CONTROL TABLE
7. COBOL + CICS + DB2 NO
8. COBOL + CICS + FILE + DB2 NO -- NOT REQUIRED

>> DATA DIVISION:- => USED TO DEFINE ALL VARIABLE REQUIRED IN THE PGM
----

VARIABLE:- TEMP MEMORY SPACE ALLOCATED IN THE PGM - TO STORE AND PROCESS THE
DATA
-> SCOPE/LIFE OF A VAIBRALE -> TILL THE END OF PGM.
=> UR PGM COMPLETED -> VARIABLE MEMORY -> DELETED.
-> WHY I NEED A VAIABLE??

DATA (FILE/DB2) -> GET DATA INTO PGM (COBOL - MEMORY?? HOLD THAT -> DEFINE MEMOR
Y -VARIABLE + PROCESS ) -> SEND -> FILE/TABLE
--
A1111,ANIL,5000 < DEPOSIT -2000 ACCT-NUM,CUST-NAME,ACCT-BAL, DEP-AMT << VARIABLE
ACCT-BAL + DEP-AMT << PROCESS ==> A1111,ANIL,7000

==== SHOPPING IN SUPER MARKET ====

SUPER MARKET HOME


ITEM -HERE STORED ===> BAG’S / COVER / -CARD BOX ===========> ITEM (FREE/CONT
/USE)

DATA DIVISION.
FILE SECTION. -> FILE VARIBALE.
WORKING-STORAGE SECTION. -> DEVELOPER VARIBALE -> USE FOR BUILDING LOGIC + DB
2
LINKAGE SECTION. -> DIFF STYLE -> LINKING VARIABLE

>> PROCEDURE DIVISION:


>> USED TO CODE ALL BUSINESS LOGIC
>> WE DONT HAVE PRE- DEFINED SECTION / PARAGRAPHS.
>> WE AS DEVELOPER WE CAN CODE OUR OWN SECTION/PARAGRAPHS
>> 80% OF UR WORK WILL BE HERE.

>> WE CODE THE STATEMENT -> COMMAND TO SYSTEM TELLING - HOW TO PROCESS THE DA
TA

=> STOP RUN -> COBOL STATEMENT ->COME OUT OF THE PGM ( END OF THE COBOL PGM)

8TH COL
ID DIVISION.
PROGRAM-ID. CBLPGM01.
AUTHOR. NAME.
DATE-WRITTEN. TODAYS.

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

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

PROCEDURE DIVISION.
000-MAIN-PARA. COMMON.
12 COL
DISPLAY ’ HELLO ALL’.
DISPLAY ’ WELCOME TO MAINFRAME TRAINING’.

STOP RUN.

COBOL -> COBOL CODE SHEET** -> PGM LINE -> 1-80 COL LENGTH

1-6 -> LINE NUMBER -> SYSTEM AUTO..

7TH COL -> USED FOR CODE A COMMENT (COMMENT -> SYSTEM WILL IGNORE THOSE LINE
S)

8-11 -> AREA-A > HEADER > DIVISION , SECTION , PARAG , 01 LEVEL -> BUT WE ALWAYS -ST
ART 8TH ONLY

12-72 -> AREA-B -> STATEMENT (DISPLAY -STOP RUN)

73-80 --> CHANGE TAG -> I WILL SHOW U IN PROJECT.

--> 7-72 -> COMMENT + HEADER + STATEMENT


7 8 12

--> ASKED ME TO CODE A COBOL PGM: 1. WHAT ARE MY IN/OUTPUT ARE 1. FILE -> OKAY -ST
YLE-1
2. TABLE -> OKAY -STYLE-2
2. ID - FINISH IT
3. ENVIRONMENT -> CHECK POINT-1
4. DATA DIVISION (COMPLET IT PARTITALY) - UNTIL THE LOGIC IS COMPLETED..
5. PROCEDURE DIVISION (COMPLETE IT )
6. COMPILE + TEST + RETEST..

PGM vs DATA -> CHOOSE 1 -> DATA**

--> ANALYS THE PGM: -> FULL PGM - CHECK AND TELL ME -WHAT THE PGM DOING??

BIG PGM: 1. CHECK THE COMMENT OF THE PGM**


2. ENVIRONMENT DIVISION --. INPUT?? IS IT FILE A PGM YES -> STYLE 1 , DB2 PGM -STYLE
-2
3. PROCEDURE DIVISION.
4. IF REQUIRED -> CHECK THE DATA DIVISION. (THIS IS ONLY IF REQUIRED)

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

COBOL CLASS 02:- VARIABLE

AS DEVELOPER: 3 STEPS 1. CODE THE COBOL PGM 2. COMPILE -LOAD 3. CODE THE RUN JCL -
EXECUTE

>> CODE THE COBOL PGM: 1. GET THE DATA AS INPUT


2. APPLY BUINESS RULES + CONDITION + CAL + FILTER..
3. SEND THE DATA AS OUTPUT

>> GET THE DATA AS INPUT INTO THE PGM**

1. DEFINE THE VARIABLE (MEMORY IN THE PGM)


2. INITIALIZE (SET A DEFAULT) VALUE
3. GET THE DATA FROM OUTSIDE OF THE PGM

-> HOW TO DEFINE A VARIABLE**:

VARIABLE -> ITS A TEMP MEMORY SPACE ALLOCATED IN THE PGM , USED TO STORE AND PR
OCESS THE DATA

FROM INPUT -IF WE ARE GETTING 2 VALUE - WE NEED 2 VAIRBALE PGM


10 VALUE - WE NEED 10 VARIABLE PGM

IN COBOL -- VARIABLE -> 2 TYPES 1. GROUP VARIABLE -- IT CAN BE SUB-DIVIDED INTO 1 OR


MORE ELEMENTARY ITEM
2. ELEMENTARY VARIBALE -- SINGLE ELEMENT TO STORE THE VALUE (CANNOT BE SUB-
DIVIDED)
EX: ACCOUNT-DETAILS -> GROUP - ACCT-NUM , CUST-NAME , ACCT-TYPE
ACCOUNT-BALANCE -> ELEMENTARY

EX: CUSTOMER-ADDRESS -> GROUP


CITY -> ELEMENTARY

EX: VARA
VARB

HOW TO TELL THE SYSTEM: IN ANY PROG LANG -> WE FOLLOW ’SYNTAX" => RULE TO CODE
A LINE IN PGM

VARIABLE SYNTAX: 2 TYPE

GROUP VARIBALE: LEVEL-NUMBER VARIABLE-NAME. (END WITH A DOT)

ELEMENTARY VARIABLE: LEVEL-NUMBER VARIABLE-NAME PIC (FOLLOW BY PIC)

EX: 01 GRP-VARA PIC -ELEMENTARY VARIABLE


01 ELE-VARB. -GROUP VARIBALE

--> LEVEL-NUMBER: IN COBOL , ALL VARIBALE MUST BE PREFIXED BY A NUMBER

WE HAVE -> 01,02,03,04....49 , 66 ,77, 88

01 --> USED TO DEFINE A GROUP AND ELEMENTARY AS WELL


02-49 -> THESE VARIABLE SHOULD BE UNDER 01
-> THESE NUMBER CAN BE USED TO DEINFE ELEMENTARY & ALSO SUB-GROUP.
-> WHEN ADDING ELEMENTARY VARIBALE UNDER A SUB-GRP - INCREASE THE LEVEL NUMB
ER

==> USE THE LEVEL NUMBER - > ODD SERIES , MULTIPLE 5/10 > EX: 01 - 03,05,07.. EX: 01 -0
5,10,15..

77 --> ONLY FOR ELEMENTARY - FORGET , USE 01 ALWAYS

66 - RENAMES , 88 - COND NAME CONDITION --> LATER

DATA RECORD:

A1111,ANIL KUMAR,HYD,TS,98765678,SAVING,2022-11-11,2023-11-11,98789.00

EX: 01 ACCOUNT-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-TYPE PIC X
03 ACCT-OPEN-DATE PIC X/9
03 ACCT-CLOSE-DATE.
05 YEAR.
07 CENTURY PIC X/9
07 YY PIC X/9
05 MONTH PIC X/9
05 DAY PIC X/9
03 ACCT-BALANCE PIC S-9-V

01 TOTAL-ACCOUNT-BALANCE PIC
OR
77 TOTAL-ACCOUNT-BAL PIC

>> VARIABLE NAME::


BOOK: 1. 32 CHAR MAX
2. SHOULD NOT START WITH A NUMBER
3. SHOULD NOT USED COBOL KEYWORD 01 DIVISION - ERROR
4. WE CANNOT USE 2 WORD AS VRAIBALE NAME -> IF U WANT TO USE -> CONNECT THE WO
RD USING HYPEN (-)

==> ABOVE IS BOOK POINT <=== ==> BELOW IS THE PROJECT POINT <===

5. ALL THE VARIABLE SHOULD BE SELF EXPLAINED.


6. VARIBALE SHOULD POINT TO THE DATA SOURCE**

ANIL IS NEW TO THE PROJECT -

Q? IN PGM P1 -> 01 CS PIC ... COBOL SKILL -ITS AN ELEMENTARY


PROJECT -> WHAT THIS CS MEANS?? ->

Q? IN PGM P2 -> 01 CLAIM-STATUS PIC... -> ELEMENTARY VARIABLE(PIC) + BUSINESS -> STA
TUS OF CLAIM ,APPROVE/REJECTED

IN THE PGM P3 ONLY - ANIL -NEW - HE SEES AS BELOW

CLAIM-STATUS -> WITH NO PREFIX/NO SUFIX -> DATA SORUCE VARIABLE FILE/TABLE
WS-CLAIM-STATUS -> WS- > WORKING-STORAGE -> ALL DEVELOPER VARIABLE (WE DEF
INED FOR OUR LOGIC)
DCL-CLAIM-STATUS -> DCL- / HS- --> TABLE VARIABLE
CLAIM-STATUSI -> I - SUFIX -> CICS INPUT VARIBALE
CLAIM-STATUSO -> O - SUFIX -> CICS OUTPUT VARIABLE
CLAIM-STATUS-HOLD -> HOLD -> TEMP DEVELOPER VARIABLE (LOGIC)

==> PIC CLAUSE**: - USED FOR ONLY ELEMENTARY


- USED TO PROVIDE - DATA TYPE * SIZE FOR THE MEMORY ALLOCATION.

IN THE PGM -> DEFINE THE VAIRBALE MEMORY SPACE -> THEN WE STORE THE DATA

DATA -> TYPES 1. NUMERIC -9


2. ALPBATIC -A - DO NOT USE
3. ALPHANIUMERIC -X
1. NUMERIC --> 9 (0-9) EX: 123 PIC 999 / 9(03). 9 - NUMERIC 03 - 3 BYTES MEMORY SPACE
+123/-123 PIC S9(03). S - SIGN , 9 - NUM , 03 - BYTES
+/- 123.45 PIC S9(03)V9(02). S - SIGN , 9 -NUM , V - ASSUMED DECIMAL , 03+02 - BYTES
MAX - S9(18).
S9(16)V9(02)

2. ALPH -> A EX: ANIL PIC A(04). FORGET THIS

3. ALP-NUMER -> X EX: ’ANIL’ PIC X(04)


’1234’ PIC X(04)
’ANIL1234’ PIC X(08).

WHEN WE ARE DEVELOPER -> WILL THE CUST/USER -> WILL THEY COME AND TELL THE TYPE
IN THE PGM..

WHICH ONE I SHOULD USE?

VALUE -> 12345 --> 1. NUM-9 2. ALPNUM-X ?? ANSWER? -> 1/2

1. IF THE VALUE IS REQUIRED TO BE USED FOR CALCUATION --> MUST DEFINE IT AS NUMERI
C ,, IF NOT - ALP-NUM.

EX: PINCODE - PIC -> AL-NUMERIC

>> ACCOUNT NUMBER: PIC X.

ACCOUNT-NUMBER PIC X(04). -POSSIABLE VALUE: 0001-9999 , A000-A999,Z999,ZZ99,ZZZ9,ZZ


ZZ

EX: 1ST CUSTOMER -> ACCT-NUM -> 0001


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

ACCOUNT-NUMER PIC 9(04). -POSSIABLE VALUE: 0001-9999

EX: 1ST CUSTOMER -> ACCT0NUMBER -> 0001


2ND CUSTOMER -> ACCT-NUMBER -> 0001 + 1 = 0002 => VALID
..AFTER 1 YEAR..
9999 CUSTOMER -> ACCT-NUMBER -> 9998 + 1 => 9999 > VALID
NEW CUST - BILLION $ -DEPOSIT --> 9999 + 1 ==> ?? -> 1. SAY NO TO CUSTOMER -> U DON
T HAVE ACCT NUMBER
2. REMOVE OLD CUST -> ADD THIS NEW CUST

PGM VS DATA -> FIRST UNDERSTAND THE DATA

ACCOUNT-NUMBER , CLAIM-NUMBER , POLICY-NUMBER , AAHAR CARD , PASSPORT , SSN , OR


DER , A LOT THEM HERE...

KEY FIELDS 1. ALWAYS INCREASE (NO LIMIT)


2. NO DUPLICATE
DATA-TYPE -. COMBINATION

03 ACCT-NUMBER.
05 BRACNH-CODE/IFCI PIC X(04). -> 0001 0002 ->9999,A999,Z999,ZZ99,Z999,ZZZZ
05 AREA-CODE PIC X(02). -> 01 02 99 01
05 ACCT-NUM PIC 9(06). -> 01-99999 01-999999 01-99999

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

COBOL CLASS 03:- INPUT-OUTPUT STATEMENT:-


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

DEVELOPER: 1. CODE THE PGM 2. COMPILE 3. CODE RUNJCL + EXECUTE

> CODE THE PGM: >STEP 1. GET THE DATA AS INPUT


2. -APPLY THE BUINESS LOGIC + CONDITION + CAL
3. SEND THE DATA AS OUTPUT

1. GET THE DATA INTO THE COBOL PGM: 1. DEFINE THE VARIBALE --> TEMP MEMORY ALLOCA
TION IN THE PGM , STORE UR DATA
--> LEVEL NUMBER + VARIBALE-NAME + DATA-TYPE
2. INTIALIZE THE VARIBALE --> VALUE -SPACE/ZERO..
3. GET THE DATA INTO THE VARIBALE.

--> 1. INTIIALIZING THE VARIBALE --> VALUE


--> 2. INPUT-OUTPUT STATEMENT --> ACCEPT & DISPLAY
==>
INIITLAIZE THE COBOL VARIBALE:-

2 REASON: 1. WHEN UR PGM STARTS 1ST TIME -> ALLOCATE THE MEMORY SPACE -. WHICH
WILL ALREADY HAVE PREVIOUS PGM DATA

WE NEED TO REMOVE THOSE UNKNOW VALUE - INITIALIZING THE VARIBALE.

2. WHEN WE PROCESS DATA -> WE DO ON MULTIPLE RECORD

U GOT 1ST RECORD -> VARIBALE -> PROCESS -> SEND IT


U SECOND RECORD -> REMOVE THE PREVIOUS VALUE -> START OVER A NEW MEMORY

INITILIZING CAN BE DONE IN 2 WAYS: 1. VALUE CLAUSE --> DATA DIVISION -> DECLARING TH
E VARIBALE. <<1ST VALUE
2. MOVE/INITIALIZE KEYWORD --> PROCEDURE DIVISION

VALUE CLAUSE : IS USED TO INITIALIZE THE VAIABLE -WITH A DEFAULT VALUE.


-> PGM STARTS - SYSTEM ALLOCATE MEMORY SPACE -> DEFAULT VALUE WILL BE ASSINED.

>> NUMERIC DATA -> 01 VAR-A PIC 9(03) VALUE ZERO. << FIGURTIVE CONSTANT
01 VAR-B PIC 9(03) VALUE 100. >> NUM CONSTANT.

>> ALP-NUM -> 01 VAR-A PIC X(03) VALUE SPACE.


-> 01 VAR-B PIC X(04) VALUE ’ANIL’. >> ALP-NUMERIC

-> IS COBOL LANG -> CASE SENTITIVE ?? !!!

DISPLAY -- display -> CONVERTING INTO ’DISPLAY’ > OPTION CAPS ON << ALWAYS ACTIVE

’Error in claim data’ < constant -> CAPS OFF

’A’ is not euqal ’a’ -->

>> SWTICH VARIBALE: DEVELOPER LOGIC VAIRBALE..

ON/OFF - TRUE/FALSE (T/F) -> 0/1 -> YES/NO (Y/N)

01 WS-SWITCH-VARIBALE PIC X(01) VALUE SPACE.

>> HARD CODED DATA VAIRBALE***:

HOW THE PROJECT IS PREPARED?? -> 90% OF THE DATA IS CREATED BY BUSINESS USER/C
USTOMER
-> 10% DATA COME FROM PGM

APPLICATION FOR CLAIM AS A CUSTOMER -> DETAILS? 1. POLICY NUMBER 2. NAME ADRE
SS 3. CLAIM AMT << CUSTOMER DATA
1. CLAIM-STATUS??

01 WS-CLAIM-STATUS PIC X(10) VALUE ’APPROVED’.

==> INPUT-OUTPUT STATEMENT*:-

WAYS TO GET THE DATA AS INPUT -> COBOL PGM VARIBALE:

1. VALUE -> WITHIN THE PGM -CONSTANT INPUT


2. ACCEPT STATEMENT -> JCL -> DD ->//SYSIN DD *
3. READ STATEMENT -> FILE
4. SELECT QUERY -SQL -> DB2 TABLE
5. RECEVIE COMMAND -> CICS -SCREEN

WAYS TO SEND THE DATA AS OUTPUT ->

1. DISPLAY -> SPOOL -> TEMP SPACE


2. WRITE STATEMENT -> FILE
3. INSERT/UPDATE -SQL -> TABLE
4. SEND COMMAND -> CICS SCREEN

==> TODAY:

ACCEPT -> DISPLAY::-


---

ACCEPT STATEMENT: USED TO GET AN INPUT DATA TO THE VAIRBALE.


WHEN U CODE ANY ACCEPT STATEMENT - THE INPUT VALUE MUST BE PASSED THRU JCL
SYNTAX:
ACCEPT VARIABLE-NAME-1. EX: ACCEPT CUST-NAME
ACCEPT VARIABLE-NAME-2. ACCEPT ACCT-BAL

IN RUN JCL**
//SYSIN DD * //SYSIN DD *
INPUT-VAL-1 ANIL KUMAR
INPUT-VAL-2 ?? 9(03) --> 123 ,
/* /* 12 -> INVLAID -> 012 <VALID
// 1 -> INVALID -> 001 >VALID

9(3)V9(02) -> 1. 123.45 --> INVALID (S0C7)


2. 12345 -> VALID DATA

S9(03) -> 1. +123 ==> INVALID


2. 123 ==? VAILD

===> ABOVE IS BOOK POINT <<== ==>BELOW IS PROJECT POINT <===

APPLICATION-A: -> 100 PGM => OUT OF THESE 100 PGM -> 3-5 PGM USE ACCEPT

-> PGM -> 2 KIND OF INPUT 1. PROJECT-PROD DATA INPUT --> ALL SALES DATA FILE
2. DEVELOPER INPUT --> COUNTRY NAME , BRANCH CODE , Y/N , DATE -BUILDING THE L
OGIC

EX: -> USER > ANIL IS DEVELOPER -.>> TO CREATE A MONTHLY SALES REPORT FOR COUNT
RY OF CANADA

ANIL -> CODED A NEW COBOL:P1 1. INPUT -> USED A FILE OF ALL SALES DETAILS OF ALL CO
UNTRY
2. LOGIC
CONDITION -> IF COUNTRY-NAME = ’CANADA’
3. OUTPUT -> CREATE THE REPORT.

USER CHECK THE REPORT -> HAPPY -> MOVE PRODUCTION..

-> ANOTHER USER --> I NEED THE SIMILAR REPORT -> ’INDIA’

DEV-1 --> TOOK THE PGM P1 -> COPIED THE PGM -> P2 -> IN THE PGM -LOGIC

IF COUNTRY-NAME = ’INDIA’ -> OUTPUT

--
DEV-2 --> USED THE SAME P1 > MADE A CHANGE IN THE LOGIC AS BELOW..

ACCEPT WS-COUNTRY-NAME.
IF COUNTRY-NAME = WS-COUNTRY-NAME
-> OUTPUT

//SYSIN DD *
INDIA
/*
//SYSIN DD *
CANADA
/*
//SYSIN DD *
US
/*

==>
DISPLAY STATEMENT:-
1. USED TO PASS A MESSAGE/CONSTANT OR DATA OF A VAIRBALE -TO SPOOL
2. THE MESS/VALUE => STORED IN DD NAME ’SYSOUT’

SYNTAX: DISPLAY ’ MESSAGE ’ < CONSTANT


DISPLAY VARIABLE-NAME --> SYSTEM WILL PRINT VALUE THAT WAS STROED IN THE MEM
ORY
DISPLAY ’MESSAGE ’ VAIRBALE-NAME

DISPLAY ’TOTAL IS ’ > O/P SYSOUT -> TOTAL IS


DISPLAY CUST-NAME-VAR >O/P SYSOUT -> ANIL KUMAR

DISPLAY ’CUSTOMER NAME IS’ CUST-NAME. O/P -> CUSTOMER NAME IS ANIL KUMAR

==ABOVE IS BOOK POINT <= ==> BELOW IS PROJECT POINT <==

APPLICATION-A --> 100 PGM -OUT OF THESE 100 PGM -> 100 PGM USE IT.

DISPLAY STATEMENT -> 1. IS NOT USED TO DISPLAY THE PROJECT DATA (PUT THEM IN FILE/
TABLE)

EX; > ANIL IS SUPT ROLE

ON A DAY -> JOB J1 -> ABEND (ABNORMAL END-FAILED)

SPOOL -> JOB J1 -> STEP3-P1 ABENDED


HOW LONG
ANALYSIS 1. TO CHECK 3000 LINE OF PGM -FIND WHERE IS ABEND HAPPENED ?? MANY H
OURS - DAYS
2. TO CHECK MILLION RECORD FILE -> FIND WHICH RECORD IS CAUSING THE ISSUE ?? NO
T POSSIABLE

IN THE SUPT -> SKILL + TIME -> ABEND -> 2-4HR (SLA-RULES)

-> DEVELOPER: -> WHEN HE WANT TO ABEND THE PGM

1.CLUES:
DISPLAY ’ERROR IN 2000-PARA’
DISPLAY ’ERROR REASON CODE ’ ABEND-CODE
DISPLAY ’LAST RECORD IN PROCESS IS’ ACCT-NUMBER

HOW LONG
ANALYSIS 1. TO CHECK 3000 LINE OF PGM -FIND WHERE IS ABEND HAPPENED ?? 1MIN
2. TO CHECK MILLION RECORD FILE -> FIND WHICH RECORD IS CAUSING THE ISSUE ?? 1 M
IN

2. AUDIT DISPLAY
PROCEDURE DIVISION.
000-MAIN-PARA.
DISPLAY ’PGMNAME STARTED’.

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


DISPLAY ’TOTAL OUTPUT RECORD COUNT ’ WS-OT-REC-CNT.
STOP RUN.

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

COBOL CLASS 04:-


--------------------
PRACTICAL IN MAINFRAME --> DIVISION - SECTION - PARAGRAPHS -- VARIABLE -- VALUE -- AC
CEPT -- DISPLAY -(COMPILER SETUP)

==> LETS CODE A SIMPLE PGM -> JUST TO ADD 2 NUMBER - DISPLAY THE RESULT.

10 + 20 => 30

--> 1000/2000 LINE OF PGM -> CODE AS FRESHER/NEW DEVE -> I WILL MAKE ERROR
-> CODE AS EXP /EXPERT -> I WILL MAKE ERROR

COMPILE -> PGM -> MAXCC=8/12 -> ERROR -> HOW TO SOLVE THE ERROR

OPTION 1. GOTO PGM , CHECK LINE BY LINE -> FIND MISTAKE -- CORRECT THEM - RE-COMPIL
ER -- NEVER DO THIS..
2. GOTO SPOOL -> CHECK THE SYSPRINT - SEE THE MISTAKE - CORRECT THEM - RE-COMPIL
ER -- ALWAYS..

HOW TO GOTO SPOOL /NAVIGATE FAST.


1. START COMMAND - TO OPEN NEW SESSION ,,, USE =F9 - SWAP B/W SCREEN

COMPILER ERROR -> -I > INFORMATIVE -> IGNORE


-W > WARNING -> IGNORE
-E > ERROR
-S > SEVER ERROR

IGYDS1082-E A period was required. --> DOT IS MISSING IN PREVIOUS/BEFORE STATEMENT


IGYPS2010-E Procedure-name "000-MAIN-PARA" was found in area "B" -->
IGYPS2121-S "TOTLA" was not defined as a data-name. --> VARIBALE IS NOT FOUND 1. SPELLIN
G MISTAKE 2. U FORGOT DEFINE.

8-11 > AREA=A => DIVISION ,SECTION , PARA


12-72 > AREA-B -> STATEMENT.

2ND POINT**
JCL ERROR *(COMPILER JOB , RUN JCL JOB) --> ERROR -> ’JCL ERROR’ --> SPOOL -> CHECK -
JESYSMSG DD LIB

3RD POINT**
PGM & DATA -> WHAT WILL BE CHANGING DAILY -> DATA

-ADDPGM01 -> I HAVE ADDED -> 10,20 > 30


NOW -> ADD - 30,40 1. EDIT THE PGM 2. COMPILE 3. EXECUTE 4. SEE THE RESULT.
NOW -> ADD - 25 45

=AM I DOING IT CORRECT -> NO --> WE CANNOT EDIT THE PGM , EACH TIME DATA CHANGE
S.

-> THE PGM & DATA SHOULD BE SEPERATED..

4TH POINT -MAIN POINT:-


---

NUM1 PIC 9(02) 00-99 > 50


NUM2 PIC 9(02) 00-99 > 50
TOTAL PIC 9(02) 00-99 > 100 -2 DIGIT ARE ALLOWED -> NUMERIC -> RIGHT 1- 00

=ANIL IS SUPT --> APPLICATION -A -> DAILY - 500 JOB WILL EXECUTE (NIGHTLY BATCH CYCLE)

DAY-1 -> ALL 500 JOB -> MAXCC=00 -> WILL ANIL OPEN ANY JOB LOGS? --> NO
DAY-2 => ALL 500 JOB -> MAXCC=00 OPEN?? NO
-
DAY-X -> 1 JOB FAILED , 499 ARE SUCCESFUL -> WILL OPEN THE LOG ?? YES..

--> ABOVE -> ANIL WILL OPEN THE LOG’S ONLY WHEN THE JOB FAILED

COBOL -> CANNOT SAY ERROR -> WHEN DATA IS GETTING TRUCATED..

==> ADDITION -> I WILL TELL U 3 SOLUTION -> CHOOSE THE BEST OPTION..

1. DATA IS TRUCATED -
2. MAXCC=00 -- THIS IS ALSO AN ISSUE.

ON SIZE ERROR
1. DISPLAY.. > DISPLAY ’ERROR IN COMPUTE’ >> SHALL WE USE THIS OPTION? NO.NO,
NO
2. RETURN-CODE (WE DONT USE PROJECT) > MOVE 3200 TO RETURN-CODE >> SHALL W
E USE THIS OPTION? YES..
3. ABEND THE PGM**
01 WS-ABENDPGM PIC X(08) VALUE ’ABENDPGM’.
CALL WS-ABENDPGM.

Q: PGM ->
S1
S2
S3
S4 --> DATA PROCESS -> DATA GOT CORRUPTED. ? SHALL I CONTINUE THE PROCESS - EX
ECUTE S5,S10???
...
S10

PGM -> STOP RUN -> SUCCESSFUL EXECUTION


ABEND THE PGM -SOME TIMES --> DATA ISSUE

--> A --> +1 B -> +2 --> A + B ==> C = +3

S9(02) -> 20 --DISPLAY -> SPOOL --> NOT SHOW => +20
SHOW -> 2{ { +0
21 2A
22 2B

S9(02) -> HOW MANY BYTES ALLOCATED? > 2 BYTES

+33 --> 3C

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

COBOL CLASS 05:-


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

2 POINTS - I WANT SHOW 2 POINT : 1. HOW TO COMPILE A PGM IN PROJECT -- USING -TOOL ->
MAKE CHANGES - F3 -ENTER - SUBMIT COMPILE JOB
2. 3 STATEMENT - MOVE IF PERFORM

PROJECT - PGM -> APPLICATION-A : ASSUME -> U HAVE 100 PGM -> AVG -> 1000-3000

LESS THAN 10 < ABOVE 3000 LINES


LES THAN 15 < BELOW 1000 LINE
----
75 PGM -> B/W >1000 <3000

COBOL LANG --> WE HAVE 10-15 STATEMENT TO USE (ACCEPT , DISPLAY..COMPUTE)

WE HAVE 15 STATEMENT -- HOW TO CODE 1000 LINES OF PGM = REPETITION OF THE STATE
MENT

1 STATEMENT -> 100 TIMES -> 100 LINE OF CODE


15 STATR ---> 100 TIME -> 1500 LINES OF CODE.

OUT OF 15 STATEMENT -> 3 STATEMENT MAKE THE 75% OF THE PGM

1. MOVE 2. IF STATEMENT 3. PERFORM


================================================================================
================
Data Movement Verbs - Simple Move, Move with Of clause, Group Move & CORR

MOVE --> USED TO PASS THE DATA TO A VARIABLE..


> PASS -> CONSTANT TO A VAIRBALE -> MOVE 10 TO VARA.
> PASS -> VARIABALE TO ANOTHER VARIABLE > MOVE VARA TO VAR-B.

EX: MOVE A TO B. A - 10 , B- 20 ---AFTER MOVE -- A-10, B-10


A - 12 , B- 03 ---AFTER MOVE -- A-12, B-12

==>
WHY DO WE USE MOVE IN MY PGM:

1. INITILIZE THE VARIALE IN PROCEDURE DIVISION

-> MOVE NUMERIC DATA -> MOVE ZERO TO VARA.


ALP-NUM -> MOVE SPACE TO VARB.
SWTCIH VARI -> MOVE ’Y’ TO VARC. --> MOVE TRUE TO VARX.

2. MOVING THE DATA B/W INPUT - OUTPUT VARIABLE.

DATA PROCESSING -> WE WILL DEFINE VARIBALE -> INPUT


AND ALOS WE DEFINE VAIRBALE -> OUTPUT

INPUT -FILE-> -> GET THE DATA -> PGM (STORE IN INPUT VARIABLE <<APPLY BUSINESS RULE
S>> --> OUTPUT VARIABLE ))SEND -- FILE

==> BEHAVIOURS..: MOVE??

NUMEIRC DATA -> RIGHT JUSTIFICATION

EX:
MOVE 100 TO VAR-A. PIC 9(03). NO ISSUE -> 100
MOVE 100 TO VAR-A. PIC 9(04). NO ISSUE -> 0100
MOVE 100 TO VAR-A. PIC 9(02). DATA TRUCATION -> 1- 00

ALP-NUMERIC DATA : LEFT JUSTIFICATION

EX:
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). DATA TRUCATED > ANI - L

DECIMAL -> POINT JUSTICATION


EX:

MOVE 123.456 TO VARC. PIC 9(02)V9(02). O/P -> 23.45

>> HOW TO HANDLE DATA TURCATION OVER MOVE STATEMENT:- 1 WAYS -> GIVE REQUIRED/
MORE SPACE TO TARGET VARIABLE.

ON SIZE ERROR -> ONLY FOR AIRTHEMETIC OPERATION -> COMPUTE , ADD , SUB
---
==> TYPES OF MOVE STATEMENT
---
1. SIMPLE MOVE --> VAIRABLE SHOULD BE UNIQUE (SRC VARA NAME - TARGET VAR NAME -SH
OULD BE DIFF)

VALID EX: MOVE A TO B.


MOVE 10 TO A.
MOVE SPACE TO A, B, C.
MOVE 10 TO A,B,C.

INVALID EX: MOVE A TO A. =ERROR IN COMPILATION.

VARA- 9(03).
VARB- X(03). VALID ?
1. MOVE VARA TO VARB. YES
2. MOVE VARB TO VARA. YES

CHECK THE DATA -> GOOD AND BAD

VARA -> 123 -> MOVE VARA TO VARB. VALID.


VARA -> 1.2 ?? NO (IF U HAVE) -> MOVE VARA TO VARB --> VALID

VARB -> 123 -> MOVE VARB TO VARA. VALID


VARB -> 1.2?? YES -> MOVE VARB TO VARA -> ABEND S0C7 -> BAD DATA TO NUMERIC

2. GROUP MOVE:
01 CALIM-DETAILS-IN. 01 CLAIM-DETAILS-OUT.
03 CLAIM-NUMBER 03 CLAIM-NUMBER
03 CLAIM-AMT 03 CLAIM-AMT

> MOVE THE DATA B/W 2 GROUP:> THEY MUST IDENTICAL GROUP..

1. SAME NUM OF VAIRBALE


2. SAME SEQ
3. SAME TYPE & SIZE

EX: MOVE CLAIM-DETAILS-IN TO CLAIM-DETAILS-OUT.

> GROUP -CORR MOVE -> USED WHEN THE GROUP VARIBALE SEQ IS NOT MATCHING..

01 DATE-YMD. 01 DATE-DMY.
03 YYYY DD
03 MM MM
03 DD YYYY

GROUP MOVE -> MOVE DATE-YMD TO DATE-DMY. > WRONG MOVE


GROUP + CORR -> MOVE DATA-YMD CORR TO DATE-DMY. --> MATCH MOVE -> DD-DD , MM-
MM, YYYY-YYYY

>> GROUP/CORR MOVE ARE NOT PREFFERED IN THE PROJECT.

3.
MOVE WITH OF**
01 CLAIM-DETAILS-IN. 01 CLAIM-DETAILS-OUT.
03 CLAIM-NUMBER 03 CLAIM-NUMBER
03 CLAIM-AMT 03 CLAIM-AMT

I WANT TO MOVE THE DATA > 1. GROUP MOVE -> DONT USE
2. SIMPLE MOVE -> MOVE CLAIM-NUMBER TO CLAIM-NUMBER?? NO -INVALID -COMPILATI
ON

3. MOVE OF** MOVE CLAIM-NUMBER OF CLAIM-DETAILS-IN


TO
CLAIM-NUMBER OF CLAIM-DETAILS-OUT.

ANY TIME - IF U HAVE SAME VARIBALE NAME IN 2/MORE DIFF GROUP.. THEN WE MUST USE O
F CLAUSE AND POINT THE GROUP NAME.

ACCEPT CLAIM-NUMBER>> INVALID -- ACCEPT CLAIM-NUMBER OF CLAIM-DETAILS-IN << VAL


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

===
1. DISPLAY - HELLO
2. DEFINE -> CAL
3. ASSIGNEMENT: CODE A SIMPLE COBOL PGM -> 2 GROUP (IN-OUT)
-> DEFINE 10 VARIBALE << ONLY BUSINESS DATA VARIABLE.. ONLY CLAIM DATA.

CLAIM-STATUS -> BUSINESS VARIBALE


CUSTOMER-NAME -> NO -CUSTOMER DATA

CLAIM-TYPE -> BUSINESS VAIRBALE


CONTACT NUMBER -> CUSTOMER DATA
-> ACCEPT THEM INPUT GROUP VARI
-> MOVE THEM TO OUTPUT
-> DISPLAY THOSE 10 VARIBALE.
O/P
****CLAIM DATA *********
1. CLAIM NUMBER: 123445
2. CLAIM TYPE : MEDICAL
3. CLAIM STATUS : APPROVED
...

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

COBOL CLASS 06:-


Conditional Statements - IF & Evaluate Statement – Continue & Next Sentence
=====
IN COBOL -> 2 THINGS 1. CALCAUTION 2. CONDITION CHECK 1. FILTER CONDITION 2. DATA
VALIDATE 3. DATA COMPARE

2 STATEMENT 1. IF CONDITION -TODAY 2. EVALUATE STATEMENT -TOMORROW.

==> IF STATEMENT: - CONDITIONAL STATEMENT , CHECK SOME VALUE AND CONTROL THE EX
ECUTION FLOW.
SYNTAX:

SIMPLE IF: IF CONDITION


T- S1,S2
END-IF.

IF-ELSE IF CONDITION
T- S1,S2
ELSE
F- S3,S4
END-IF.

MULTIPLE POSISABLE VALUE : 1. IF-ELSE LADDER OR 2. EVALUATE

IF-ELSE LADDER: A-10


IF COND-1 IF A > 5
T-S1,S2
ELSE
IF COND-2 IF A > 6
T-S3,S4
ELSE
F-S5,S6
END-IF
END-IF.
S7 COND-1 -> TRUE -> S1,S2,S7
COND-2 -> TRUE -> S3,S4,S7
COND-1 & 2 - TRUE --> S1,S2,S7

->
NESTED-IF IF CONDITION-1
S1
S2
IF CONDITION-2
S3
ELSE
S4
END-IF
ELSE
S5
END-IF.

--> IN B/W IF & END-IF --> DO NOT USE ANY DOT (. -IMPLICT TERMINATOR)
--> TRY TO CODE EQUAL NUM OF - IF & END-IF.
==
== ABOVE IS BOOK POINT <== ==> BELOW IS THE PROJECT POINT <==
===
CODE A SIMPLE -- TO ACCEPT CUSTOMER DETAILS --> BASED ON GENDER -> ASSIGN A CUST
OMER-TITLE AS BELOW..

1. ACCEPT CUST-DETAILS
2. LOGIC -> GENDER -- MALE -> TITLE -MR. ANIL
FEMALE -> TITLE -MRs. RANI
3. DISPLAY THE DETAILS
ID DIVISION.
PROGRAM-ID. CUSTPGM1.
AUTHOR. NAME.
DATE-WRITTEN. TODAY.

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

DATA DIVISION.
FILE SECTION.
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.
S1 DISPLAY ’CUSTPGM1 STARTED’.

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


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

S3 ACCEPT CUST-ID OF CUST-DETAILS-IN


ACCEPT CUST-NAME OF CUST-DETAILS-IN
ACCEPT CUST-GENDER OF CUST-DETAILS-IN. << MALE

S4 IF CUST-GENDER OF CUST-DETAILS-IN = ’MALE’ MALE = MALE (T) MAIL = MALE (F)


MOVE ’MR’ TO CUST-TITLE OF CUST-DETAILS-OUT >> MR
END-IF.

S5 IF CUST-GENDER OF CUST-DETAILS-IN = ’FEMALE’ MALE = FEMALE (F) MAIL = FEMAL


E (F)
MOVE ’MRs’ TO CUST-TITLE OF CUST-DETAILS-OUT
END-IF.

S6 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


S8 STOP RUN.

-COMPILE THE PGM --> LOAD -


//JOBNAME JOB NOTIFY=&SYSUID
//STEP1 EXEC PGM=CUSTPGM1
//STEPLIB DD DSN=IBMUSER.T5.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
C1234 C1236 C1237
ANIL RANI ANIL
MALE FEMALE MAIL
/*
// O/P: C1234 MR ANIL MALE O/P: C1236 MRs RANI FEMALE O/P -> C1237 ANIL MAIL

==> QUESTION -> IF THIS PGM -CAN I USE THIS PGM FOR MY PRODCUTION: -

PGM P1 > CHECK EACH RECORD (MALE - FEMALE ) -> 2 CONDITION

10 RECORD INPUT ---> PGM - 20 CONDITION


1 MILLION PGM - 2 MILLION CONDITION

PERFORMANCE -> 1. POOR 2. GOOD 3. BEST ==> P1 ? POOR


========================
CUSTPGM2:
PROCEDURE DIVISION.
000-MAIN-PARA.
DISPLAY ’CUSTPGM1 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
ACCEPT CUST-GENDER OF CUST-DETAILS-IN. << MALE << FEMALE << MAIL

IF CUST-GENDER OF CUST-DETAILS-IN = ’MALE’ MALE = MALE =T FEMALE = MALE MAIL


= MALE
MOVE ’MR’ TO CUST-TITLE OF CUST-DETAILS-OUT MR
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.


STOP RUN.

-==> MALE -> MR ANIL ,, FEMALE --> MRs RANI MAIL --> MRs ANIL
PGM P2 -> FOR EACH RECORD - IT CHECKS ONLY 1 CONDITION

10 RECORD -- 10 CHECK
1M -- 1 MILLION

PERFORMANCE -> P2 -> 1. POOR 2. GOOD 3. BEST ==> BEST

LOGIC vs PERFROMANCE --> CHOOSE ANY 1--> LOGIC - PERFORMANCE

WHICH ONE U CHOOSE


P1 --> 2 CONDITION -> PERFORMANCE -POOR -> O/P -> NO TITLE ANIL -THIS IS UR STATEME
NT
P2 --> 1 CONDITION -> PERFORMANCE -BEST -> O/P -> MRs ANIL MRs ANIL -- THIS IS UR STAT
EMENT

CUSTPGM3:

PROCEDURE DIVISION.
000-MAIN-PARA.
DISPLAY ’CUSTPGM1 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
ACCEPT CUST-GENDER OF CUST-DETAILS-IN.

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


MOVE ’MR’ TO CUST-TITLE OF CUST-DETAILS-OUT
ELSE
IF CUST-GENDER OF CUST-DETAILS-IN = ’FEMALE’
MOVE ’MRs’ TO CUST-TITLE OF CUST-DETAILS-OUT
ELSE
DISPLAY ’INVALID GENDER INPUT ’ CUST-DETAILS-IN
CALL WS-ABENDPGM
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.


STOP RUN.

LOGIC
INPUT->1 --> MALE -> MR ANIL
2. => FEMALE -> MRs RANI
3. > MAIL -> -ERROR -> ABEND THE PGM

AS PER CUSTPGM3 --> ALL MALE RECORD -.1 TIME = ALL FEMALE -> 2 TIME CHECK

10 RECORD INPUT -> 4 MALE --> 4 TIME


6 FEMALE --> 12 TIME => 16 TIMES

6 MALE = 6 TIME
4 FEMALE = 8 TIME ==> 14 TIMES

P1 -> 20 CONDITION --> POOR


P3 -> 14-16 TIMES --> GOOD
P2 > 10 CONDITION --> BEST

100 STUDENT --> 90 PASSED - 90 TIMES


10 FAILED - 20 TIMES ==> 110 CHECK

-> 10 FAILED --> 10 TIME


-> 90 PASSED --> 180 ==> 190 CHECK

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

COBOL CLASS 07:-


===============================
Control Sequence Verbs - Perform ,STOP RUN, GOBACK, EXIT, EXIT PROGRAM, G
OTO
--
MOVE - IF - PERFORM -- WE NEED THESE
MOVE -> PASSING DATA B/W VARIBALE
IF -> LOGIC - BUSINESS COND / RULES / FILTER/ VALIDATION.
-PERFORM.

CONTROL SEQ FLOW: -- TO COME OUT OF CODE

STOP RUN --> USED TO PASS THE CONTROL OUT OF THE COBOL PGM , THE CONTROL WILL G
O BACK TO OS ONLY. --> ONLY MAINPGM(PGMA)
EXIT PROGRAM --> USED TO PASS THE CONTROL OUT OF THE COBOL SUBPGM, SEND CONTO
L BACK TO MAINPGM --> ONLY SUBOGM(PGMB)
GOBACK --> USED TO PASS THE CONTROL OUT OF THE COBOL PGM -- CAN BE USED IN ANYP
GM.. SEND CONTROL TO BACK FROM WHERE IT RECEVIED.

--> CODE A COBOL PGM ,COMPILE JOB , EXECUTE LOAD - OUTPUT <--

RUNJCL JOB -> SUBMIT --> SYSTEM WILL EXECUTE --> NOTIFICATION MAXCC=0/ABEND

JCLJOB -> SUBMIT --> JES (JOB ENTRY SUB-SYSTEM) -CHECK THE JCL CODE -MISTAKE -> FAIL
- JCL ERROR

JCLJOB -> SUBMIT -> JES -> CHECK CODE -> NO ERROR -> PICK LOAD (EXEC + STEPLIB) --> OS
-EXECUTING LOAD -STOP RUN -- OS - JES - NOTIFY -MAXCC=00
JCLJOB -SUB -JES -LOAD PGMA - OS -EXECUTE PGMA(STOP RUN) - OS - JES - MAXCC=00

SUBPGM: - PGM CALLED BY ANOTHER PGM

PGMA -> CALLING - PGMB


MAINPGM SUBPGM

>JCLJOB - SUB -> JES -> LOAD(PGMA) --> OS -> PGMA --- PGMB(STOP RUN) --OS --> INCORRECT
- PGMA IS IN THE SYSTEM WAITING

>JCLJOB - SUB -> JES -> LOAD(PGMA) --> OS -> PGMA --- PGMB(EXIT PROGRAM) --OS --> INCOR
RECT - PGMA IS IN THE SYSTEM WAITING

>JCLJOB - SUB -> JES -> LOAD(PGMA) --> OS -> PGMA --- PGMB(GOBACK) --> PGMA(GOBACK) --
OS -> JES --> NOTIFY = MAXCCC/ABEND

=== CONTROL THE PGM FLOW -WITHIN*:-


---

1. PERFORM --> USED TO PASS THE CONTROL TO PARAGRAPH FOR EXECUTION


2. GOTO --> USED TO PASS THE CONTROL TO PARAGRAPHS FOR EXECUTION
3. EXIT --> END THE PARA -EXIT THE PARA STATEMENT..

PERFORM vs GO TO:

PERFORM ---> TO PROCESS A LOGIC ON A RECORD..


--> IT CAN BE USED TO CREATE THE LOOP
--
GO TO --> TO SKIP A LOGIC FOR A RECORD.
--> THIS IS NOT FOR LOOP
==
BOOK TOPIC:
-----
PERFORM : 2 TYPES 1. INLINE PERFORM 2. OUTLINE PERFORM

>>INLINE PEROFRM -> THE STATEMENT OF LOGIC ARE CODED IN B/W PERFORM - END-PERF
ORM
==> THE LOGIC CANNOT BE EXECUTED FROM OTHER PART OF THE PGM..
==> IF I HAVE SAME CODE TO BE EXECUTED IN REPETITION.

SYNTAX: 1000 PERFORM


1001 S1
S2
S3
END-PERFORM.

2000 -> U NEED S1,S2,S3 -> CODE AGAIN

>> OUTLINE PERFORM -> THE STATEMENT OF LOGIC ARE CODED IN AN PARAGRAPH, CONTR
OL IS PASSED TO IT.
==> THE LOGIC (PARA) CAN BE EXECUTED FROM ANYWHERE IN THE PGM
SYNTAX: 1000 PERFORM X-PARA.

1500 X-PARA.
1501 S1
1502 S2
S3.

2000 -> PERFORM X-PARA.

PERFORM -- LOOP:

EXECUTE A LOGIC - 1. EXECUTE ONLY 1 TIME


2. N TIMES (FIXED)
3. CONDITION (VARYING)

INLINE PERFORM:
1. PERFORM
S1
S2
END-PERFORM.

2. PERFORM N TIMES N - 2,3,4..


S1
S2
END-PERFORM

3. PERFORM UNTIL CONDITION-IS-TRUE** --> USED WHEN WE DONT KNOW THE LOOP COU
NT.
COND - TURE -> LOOP EXIT
FALSE -> LOOP CONTINUE

OUTLINE PERFORM

1. PERFORM X-PARA.
S4

1. PERFORM X-PARA N TIMES. N -2,3,4..


S4

3. PERFORM X-PARA UNTIL COND-IS-TRUE


S4

X-PARA.
S1
S2
S3.

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

PD.
MOVE +1 TO WS-I. WS-I = 1
PERFORM UNTIL WS-I > 10 1 > 10(F) 2>10(F) 3>10, 4>10... 9>10(F) 10 > 10 11>10(T)
DISPLAY WS-I 1 2 9 10
ADD +1 TO WS-I 1+1 =2 1+2=3 1+9=10 1+10=11
END-PERFORM.
SX -> O/P -> 1 2 3... 10

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

PD.
MOVE +1 TO WS-I. WS-I = 98
PERFORM UNTIL WS-I > 100 98>100 (F) 99>100 00> 100 (F) 1>100(F) 2>(F).... 00>100
DISPLAY WS-I 98 99 00
ADD +1 TO WS-I 1+98=99 1+99 = 1-00 1+0 =1
END-PERFORM.
SX
O/P: - 1-99?? 1-100 --> INFINTE LOOP

GOOD DEVELOPER --> NOT ABT HOW START THE LOOP -> WHEN TO EXIT THE LOOP**

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

PD.
MOVE +1 TO WS-I.
PERFORM UNTIL WS-I < 10 1< 10 (T)-EXIT
DISPLAY WS-I
ADD +1 TO WS-I
END-PERFORM.
SX
O/P: - NOTHING
>> PEROFRM VARYING * PERFORM THRU*

======

IF & Evaluate Statement – Continue & Next Sentence


=====

HOW TO CODE AN CONDITIONAL STATEMENT (IF/EVALUATE):

1. ALL POSSIABLE VALUE OF THE DATA VARIABLE MUST BE ON THE CONDITION.. IF GENDER
= MALE AND IF GENDER = FEMALE
2. ELSE -> USE IT FOR INVALID DATA - HANDLE THE DATA (MAIL.. )
INVALID -> 2 WAYS TO HANDLE
1. IGNORE IT --> MOVE THE ERROR DATA TO AN ERROR FILE , CORRECT THEM LATER
2. HANDLE IT --> DISPLAY + ABEND THE PGM --> CORRECT IT NOW ONLY.

APPLICATION-A --> PASS DATA --> APPLICATION B (PROCESSING/ADD MORE DETAILS) ---> AP
PLICATION-C
===YOU ARE HERE ==
1MILLION -> FEW RECORD ARE INCORRECT?? --> NO > ERROR FILE (SEND IT BACK TO A
PP-A)
1MILLION -> PROCESS -NEW DATA - ISSUE --> ABEND THE PGM - CORRECT DATA - RERU
N.

3. PERFORMANCE --> HIGHER OCCURANCE OF THE VALUE MUST BE 1ST CONDITION..

Evaluate --> MUST BE MULTIPLE POSSIABLE VALUE..


Evaluate
Evaluate TRUE Evaluate VARIABLE

IF GENDER = MALE Evaluate TRUE Evaluate GENDER


DO THIS WHEN GENDER = MALE WHEN MALE
ELSE DO THIS DO THIS
IF GENDER = FEMALE WHEN GENDER = FEMALE WHEN FEMALE
DO THE DO THIS DO THIS
ELSE WHEN OTHER WHEN OTHER
ERROR+ABEND ERROR + ABEND ERROR + ABEND
END-IF END-Evaluate. END-Evaluate.
END-IF

IF & Evaluate -> CONDITIONAL STATEMENT -> THEY DECIDE WHAT LOGIC TO RUN ,IN CASE IF C
ONDTIION TRUE/FALSE
--
CONTINUE & NEXT SENTENCE.. -> DO NOTHING STATEMENT

>> CONTINUE -> THE CONTROL WILL JUMP TO NEXT STATEMENT -AFTER NEAREST END-IF

>> NEXT SENTENCE -> THE CONTROL WILL JUMP TO NEXT SENTEANCE -AFTER NEAREST . (D
OT).

EX: S1
IF CONDITION-1
S2
S3
IF CONDITION-2
-->NOTHING CONTINUE OR NEXT SENTENCE
ELSE
S4
S5
END-IF
S6
ELSE
S7,S8
END-IF.
S9 CONTINUE: - S6 NEXT SENTENCE:- S9

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

COBOL CLASS 08:-


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

PERFORM -- 1. SIMPLE PERFORM - 1 TIME


2. N TIMES PERFORM -> FIXED LOOP
3. UNTIL CONDITION -> COND-BASED -VARYING LOOP
4. PERFORM VARYING -> LATER
5. PERFORM THRU -->USED TO EXECUTE MULTIPLE PARAGRAPHS THOGETHER.

EX: EXECUTE ALL PARA 1 BY 1..

OPTION-1 PERFORM X-PARA.


SX
PERFORM A-PARA.
PERFORM Z-PARA.

OPTION-2 PERFORM X-PARA THRU Z-PARA. S1,S2 -S3,S4 - S5,S6


S7

X-PARA.
S1.
S2.

A-PARA.
S3
S4.

Z-PARA.
S5
S6.

PROJECT POINT: -> PGM -> PARA 2 KINDS 1. PROCESS-LOGIC


2. EXIT

PERFORM 1000-PARA-NAME THRU 1000-EXIT.


S4

1000-PARA-NAME.
S1
S2
S3.

1000-EXIT. EXIT. END OF THE PARAGRAPHS -MOSTLY USED TO SKIP THE PROCESS LOGIN I
N 1000-PARA-NAME.
===
HOW TO CODE A PROJECT STYLE PROGRAM::
-----------------

1. TOP-DOWN APPRAOCH --< 1. MAIN -> CONTROLER 2. DOWN-PROCESS PARA ->CONTR


OLLED BY MAIN
2. MODULAR CODING/PARAGRAPHS CODING. --> SPLIT A BIG LOGIC -INTO MULTIPLE PARAGR
APHS.
PROCEDURE DIVISION.
0000-MAIN-PARA.
DISPLAY ’PGMNAME STARTED’.

PERFORM 1000-INITIALIZE-PARA THRU 1000-EXIT.


PERFORM 2000-GET-INPUT-PARA THRU 2000-EXIT. GET ONLY 1ST RECORD
PERFORM 3000-PROCESS-PARA TRHU 3000-EXIT
UNTIL END-OF-INPUT = ’YES’. COND TO EXIT THE LOOP WHEN ALL INPUT ARE PROCESSE
D.

CLOSE THE FILES.


DISPLAY ’TOTAL INPUT RECORD ’ WS-IN-REC-CNT.
DISPLAY ’TOTAL OUTPUT RECORD ’ WS-OT-REC-CNT.
STOP RUN.

1000-INITIALIZE-PARA.
1. INITILIZE ALL NUMBERIC VARA , ALP-NUMERIC ==MOVE
2. SET ON/OFF OF THE SWTICH VARIBALE --> T/F - Y/N - ON/OFF 0/1
3. GET THE SYSTEM / REQUIRED DATES
4. OPEN THE FILES - AS REQUIRED
5. BUILD THE OCCURS TABLES(LOOK-UP**)
6. GET 1ST RECORD HERE ONLY.. -- DUPLICATE LOGIC (SOME DEVELOPER )

1000-EXIT. EXIT.

2000-GET-INPUT-PARA.
1. READ FILE
2. INCRASE THE INPUT VARIBALE COUNTER.

2000-EXIT.EXIT.

3000-PROCESS-PARA.
1. PERFORM 3100-AUDIT-PARA THRU 3100-EXIT
----
2. PERFORM 3200-LOGIC-PARA THRU 3200-EXIT
3. PERFORM 3300-CAL-PARA THRU 3300-EXIT
---
4. PERFORM 3400-MOVE-IN-OUT THRU 3400-EXIT
5. PERFORM 3500-SEND-OUTPUT THRU 3500-EXIT.
---
6. PERFORM 2000-GET-INPUT-PARA THRU 2000-EXIT

3000-EXIT. EXIT.

3200-LOGIC-PARA.
PERFORM 3210-CHECK-FLD1-PARA THRU 3210-EXIT
PERFORM 3220-CHECK-FLD2-PARA THRU 3220-EXIT

ABOVE POINT -DEVELOPER --> BELOW -1 POINT -> ANALYST ->SUPT

FOLLOW THE NUMBERS.. --> JOB -ABEND -> SPOOL -> SYSOUT -> ERROR IN 3320-CHK-FL-PA
RA

1. 3320
0000-MAIN --> 1000,
2000,
3000 -- 3100
3200
3300 --- 3310-
3320- ABEND HERE
3321
3322
- 3222-1000

0000 - 3000 - 3300 - 3320


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

CODE A PGM: --> CREDIT CARD PROGRAM

1. ACCEPT THE MULTIPLE REC AS INPUT


2. A. AUDIT THE DATA -> 1. CHECK IF THE VAIRBALE/INPUT ARE GIVEN OR NOT
B. REMOVE THE DUPLICATE’S
C. CAL -> DISPLAY ONLY THOSE CARD -WHOSE CARD DUE AMT -IS > 75 % OF CARD-LIMIT
10000(C-LIMIT) -> 5000 DUE AMT -> NO DISPLAY
-> 8000 DUE AMT -> DISPLAY
3. IF VALID DATA -> OUTPUT

VARIABLE -> 1. DATA VARIBALE -- EASY - INPUT FILE - DEFINE THE VARIABLE
2. LOGIC VARIBALE -- DEVELOPER SKILL

1. LOOPING VARIBALE
2. VALIDATION SWTICH
3. INPUT COUNT - OUTPUT COUNT
4. DATE VARIABLE
5. HOLD DATA VARIBALE
6. MORE ..

---
================================================================================
================================================================================

COBOL CLASS 09:-


===========================
File Handling - OPEN, READ, WRITE, REWRITE, DELETE & CLOSE
---
DATA IN MAINFRAME - CAN BE STORED IN FILE OR DATABASE
--> HOW TO WORK WITH FILE --> 1970 --- 1995 -DB2
===

FILE -> COLLECTION OF RECORDS


RECORD --> COLLECTION OF FIELDS(DATA VARIBALE)
-
FILE LAYOUT --> STURTURE OF THE FILE RECORD.

EX: ACCOUNT FILE --> OPEN - WE CAN ONLY SEE DATA RECORDS

A1111,ANIL KUMAR,98789,89222.00,SAVINGS,CLOSED,20020911 --R1 --> ACCT-NUM, CUST-NA


ME
A1111,ANIL KUMAR,98789,89222.00,SAVINGS,CLOSED,20020911
A1111,ANIL KUMAR,98789,89222.00,SAVINGS,CLOSED,20020911
A1111,ANIL KUMAR,98789,89222.00,SAVINGS,CLOSED,20020911 --RN --> R1-RN -> FILE

FILE/RECORD LAYOUT:

01 ACCT-DETAILS.
03 ACCT-NUMM PIC
03 CUST-NAME
03 BRACH-CODE
03 ACCT-BAL
--
HOW TO CODE A FILE PGM:

ID DIVISION. NO CHANGES
PROGRAM-ID. NAME-OF-PGM.
AUTHOR. NAME.
DATE-WRITTEN. TODAY.

ENVIRONMENT DIVISION. --> REQUIRED** ON FILE PGM.


INPUT-OUTPUT SECTION.
FILE-CONTROL.
1ST CHANGE 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. -- IN FILE SECTION VALUE CLAUSE NOT ALLOWED.
2ND CHANGE FD FILE-NICK-NAME-1
LABEL RECORD ARE STANDARD.
01 ACCOUNT-DETAILS.
03 ACCT-NUMBER PIC X(05).
03 CUST-NAME PIC X
03 CUST-ADDRESS.
05 CITY PIC X
05 STATE PIC X
05 PINCODE PIC X
03 ACCT-TYPE PIC X

FD FILE-NICK-NAME-2
LABEL RECORD ARE STANDARD.
01 LAYOUT-NAME PIC X(100).

WORKING-STORAGE SECTION.
3RD CHANGE 01 WS-STATUS-VARAIBAL-1 PIC X(02) VALUE SPACE.
01 WS-STATUS-VARAIBAL-2 PIC X(02) VALUE SPACE.
PROCEDURE DIVISION.
4TH CHANGE
-> ACCESS THE FILE DATA:: (ASSUME FILE AS BOOK )

1. OPEN THE FILE


2. ACCESS THE -READ / WRITE
3. CLOSE THE FILE

TEXT BOOK (INPUT FILE) -> OPEN -- ONLY READ -- CLOSE


NEW NOTEBOOK (OUTPUT FILE) -> OPEN - ONLY WRITE -- CLOSE
==
ON PS FILE DATA -> WE DONT DO UPDATE (REWRITE)
-> WE CANNOT DELETE A RECORD

INPUT FILE**
1. OPEN FILE SYNTAX: OPEN INPUT FILE-NAME. INPUT -CALLED OPENING MODE
2. READ:

1. READ FILENAME. GET’S ONLY 1 RECORD FROM THE FILE


-> STORE THE DATA IN THE FILE LAYOUT.

2. ALL RECORD : KEEP THE READ IN A LOOP..

READ FILENAME
AT END
-CLOSE THE LOOP
NOT AT END
-PROCESS THIS RECORD
END-IF.

3. GENERAL USED. --GET ALL RECORDS IN A LOOP

READ FILENAME
AT END
-CLOSE THE LOOP.

-PROCESS THE RECORD.

3. CLOSE THE FILE


CLOSE FILENAME.

OUTPUT FILE**
1.OPEN THE FILE SYNTAX: OPEN OUTPUT FILENAME.

2. A. PREPARE ALL OUTPUT FILE VARIBALE


B. WRITE RECORD-LAYOUT-NAME.

3. CLOSE THE FILE (AT OF PGM) CLOSE FILENAME.

READ--> FROM FILE -> SYNTAX: READ FILENAME.


WRITE -> FROM VARIABLE -> SYNTAX WRITE LAYOUT-NAME.
===> ANIL WHY WE DONT USE REWRITE <====

DAY-1: FILE-1: > CUST-BAL = 1000


2 FILE-1 > UPDATE ==> 1200
3: FILE-1 > UPDATE > 1300
...
..
..
N 1200 --> OPEN THIS TODAY -> CAN U TELL ME WHAT WAS THE BAL? -> NO WAY

UPDATE -> WE LOOSING HISTORY OF INFORMATION..


---
HOW TO UPDATE TO BAL - IN PROJECT:

DAY-1 FILE-1 -> CUST-BAL = 1000 ..


DAY-2 FILE-2 --> ADD/SUB -> CUST-BAL => 1200

FILE-1 => INPUT -> ONLY READ + COMPUTE UPDATE DATA IN PGM + WRITE --> FILE-2
1000 1200
==

--> ENEVIRONMENT DIVISION:-

>> SELECT -> USED TO TELL 2 THINGS 1. FILE NICK NAME ---> CAN ANYTHING 20 CHAR - SELF
EXPLAINED
2. JCL DD NAME ---> USED TO CONNECT THE FILE -8 CHAR, SAME NAME MUST BE IN JCL.

MAINFRAME -> DATASET --> IBMUSER.T5.ACCT.FILE --> ACTUAL FILE NAME --> Q? CAN I CO
DE THIS NAME IN COBOL PGM.
PGM NICK NAME -> ACCT-FILE -> FILE NICK NAME

COBOL: SELECT ACCT-INFILE ASSIGN TO ACCTDD01 IN JCL //ACCTDD01 DD DSN=IBMUSE


R.T5.ACCT.FILE,DISP=SHR
A B B C
A=B B=C
IN EXECUTION
A=C

-WHAT ALL OPERATION WE DO ON FILE (A) -> IT WILL EFFECT THE FILE (C)

>> ORGANIZATION -> USED TO TELL THE TYPE OF THE FILE , HOW THE DATA WILL BE ARRAG
NED IN FILE.

2 KINDS FILE 1. QSAM -> PS FILE --> SEQUNETIAL --> 1. ALLOW DUPLICATES 2. NO SORTED
ORDER
2. VSAM -> KSDS CLUSTER --> INDEXDED --> 1. NO DUPLICATE 2. SORTED ORDER -BY A
KEY FIELDS

BY DEFAULT -> SEQUENTIAL

>> ACCESS MODE > USED TO TELL HOW TO ACCESS THE DATA IN THE FILE....
3 WAYS: 1. SEQUENTIAL --> READ THE RECORD 1 BY 1 FROM TO BOTTOM -> PS & KSDS
2. RANDOM --> READ A PARTUCULAR RECORD BASED ON KEY VALUE ===> KSDS ONLY
3. DYNAMIC -> RANDOM + SEQ ==> KSDS ONLY

BY DEFAULT --> SEQUENTIAL

>> FILE STATUS: THIS IS THE RETURN CODE , WHICH TELL FILE OPERATION RESULT.

COBOL PGM -> COMPILATION -> JOB SUBMIT?? ==> MAXCC=0/4/8/12

01 WS-STATUS-VRAIBALE PIC X(02) VALUE SPACE.

--> FILE OPERATION <--


CHECK FILE STATUS CODE

00 --> SUCCESFULL
10 --> END OF THE FILE
21,22,23,24 --> KSDS ERROR
--
39 -> FILE ATTRIBUTE MISMATCH WHEN U OPEN FILE--> COBOL -DETAILS -NOT MATCH- JCL
FILE
--
41,42,43 --> LOGIC MISTAKE
--
35/96 -> INVALID /MISSED THE DDNAME IN JCL
--
97 --> KSDS INDEX ISSUE.

== 00 -SUCCESSFUL
-- ELSE -> ERROR + ABEND THE PGM
================================================================================
===============================================================================
COBOL CLASS 10:-
=================================
INTRO ON THE FILE:- 3 CHANGES 1. ENVIRONMENT DIVIISON => 1. FILE NICK NAME 2. JCL DD
NAME 3. STATUS VARIABLE
2. DATA DIVISION > FILE SECTION - FD -FILENAME + RECORD LAYOUT
> WORKING-STORAGE -> STATUS VARIABLE
3. PROCEDURE DIVISION > ACCESS THE DATA (READ -WRITE)

1. OPEN THE FILE 2. READ/WRITE 3. CLOSE THE FILE

PROJECT-APPLICATION- FILE PROGRAM:

4 TYPES: 1. ONE - ONE -> 1 INPUT FILE - LOGIC -- 1 OUTPUT FILE => EASY
2. ONE - MANY -> 1 INPUT FILE -LOGIC -- MORE OUTPUT FILE => EASY
---
3. MANY - ONE -> MORE THAN 1 INPUT FILE --- LOGIC --- 1 OUTPUT FILE
4. MANY - MANY -> MORE THAN 1 INPUT FILE --- LOGIC --- MANY OUTPUT FILE

>> MANY INPUT FILE FOR A PGM:


1 FILE IS MAIN-INPUT -> UR PGM IS PROCESSING THIS FILE DATA
OTHER INPUT FILE -> REFERENCE FILE -> 1. VALIDATE 2. GET MORE DATA RELATED.

EX: POLICY FILE - CLAIM FILE

--> 1 CLAIM RECORD --> VALIDATE A CLAIM?

PGM -> PROCESS THIS CLAIM DATA 1. INPUT CLAIM FILE (TODAY)
2. REFERENCE POLICY FILE

>> IN ANY PROGRAM IF U HAVE MORE THAN 1 INPUT FILE -> 2 LOGIC WILL BE USED.

1. MATCHING LOGIC
2. LOOP-UP LOGIC

===> CODE A FILE PGM** 1. CODE A FILE-PGM -> 1. TO ACCEPT ACCOUNT DETAILS
2--> VALIDATE THE DATA
3. WRITE THE VALID DATA INOT A FILE (WRITE) -- OUTPUT

2. CODE A FILE PGM --> 1. USE THE FILE FROM ACCTPGM1 AS INPUT
2--> FILTER THE DATA RECORD BASED ON ACCOUNT-TYPE (SAVING , CURRENT , INVALI
D)
3. 2 OUTPUT FILE 1. SAVING RECORD 2. CURRENT RECORD

ACCT-FILE --> INPUT -> READ** -> IF ACCT-TYPE = SAVING ---> SAVING FILE -WRITE -1
= CURRENT ---> CURRENT FILE -WRITE -2
ELSE -- --> SKIP
SPOOL -> 1. TOTAL ACCT BAL
2. TOTAL SAVE BAL
3. TOTAL CURR BAL
4. REC -COUNT ALL , SAVE , CURR

ANIL -WHERE I NEED TO KEEP THE DOT:

1. DIVISION NAME - SECTION - PARAGRAPHS - ALL VARIBALE --> MUST HAVE A DOT.
2. LAST STATEMENT OF ANY PARAGRAPS
3. B/W IF-ENDIF , PERFORM -END-PERFORM , EVA -END-EVALUATE -> DO NOT USE ANY DOT.

200-GET-INPUT-PARA. --3 RECORD*FILE


READ ACCT-INFILE 1ST -> RECORD-1 AS INPUT 2ND -R2 AS INPUT 3RD -> R3 AS
INPUT 4TH??NO REC
AT END IS IT END OF FILE? NO END? NO END? NO END? YES
MOVE ’Y’ TO WS-END-OF-FILE
GO TO 200-EXIT. --AVOID/SKIP THE LOGIC OF INCREMENT

ADD +1 TO WS-IN-REC-CNT. 1+0 => 1 1+1 = 2 2+1= 3 3+1?4(SKIP)


200-EXIT. EXIT.

================================================================================
==========================================================
COBOL CLASS 11:-
=============================================
COBOL -> COPYBOOK

COPYBOOK --> PIECE OF COBOL CODE , STORED IN ANOTHER PDS, CAN BE USED IN MANY PG
M.

--> RE-USEABLILITY -> CODE 1 TIME - USE IN MNAY PGM

WE HAVE TO CODE THE SAME CODE IN MANY PGM --> OPTION-1 -> WE CAN CODE IN EACH PG
M
2 -> CODE IT 1 TIME AND USE IT MANY PGM -- BETTER

EXAMPLE: -> FILE LAYOUT - ==> IF U HAVE A FILE -> FIXED LAYOUT
==> IF THIS FILE IS USED IN ANY PGM => WE NEED TO DEFINE THE LAYOUT -> FILE SECTI
ON.

ALL FILE LAYOUT - WE KEEP IN COPYBOOK:

1. CREATE A NEW PDS --> 3.2 - FB -> IBMUSER.T5.COPYLIB


2. CREATE A NEW MEMBER -> CODE THE RECORD LAYOUT OF THE FILES
3. ANY COBOL PGM ->
COPY COPYBOOK-NAME. COPY - COBOL , INCLUDE = DB2 COPYBOOK

COPY ACCTCPY1
REPLACING ACCT-DETAILS BY ACCT-DETAILS-OUT.

4. IN COMPILATION: == //SYSLIB** -> PROVIDE THE COPYBOOK LIB NAME

5- INFORMATION -> WHEN U COMPILE - COMPILER GET SRC CODE + COPYBOOK --> LOAD
MODULES

IN THE SPOOL - SYSPRINT -

000018 COPY ACCTCPY1


000019 REPLACING ACCT-DETAILS BY ACCT-DETAILS-OUT.
000020C 01 ACCT-DETAILS-OUT.
000021C 03 ACCT-NUMBER PIC X(05).
000022C 03 CUST-NAME PIC X(10).
000023C 03 ACCT-BAL PIC S9(03)V9(02).
000024C 03 ACCT-TYPE PIC X(10). --> THIS COPYBOOK CODE - KNOW AS
- COPYBOOK EXPANSION

2. HOW TO EDIT A COPYBOOK **:

INTERVIEW -- I NEED TO CHANGE A CODE IN COPYBOOK , HOW TO DO..

1. ANALYSIS -- SEARCH FOR THE COPYBOOK ,USED IN PGM’S


===> OPEN PROJECT COBOL PDS --> SRCHFOR COPYBOOK-NAME ---> FIND ALL PGM THA
T USES THE COPYBOOK
2. OPEN ALL PGM , LOOK FOR THE COPYBOOK NAME, IF REALLY USED - LIST ALL THE PGM’S
AS NEEDED.
3. ONCE THE LIST IS PREPARED -> ESTIMATE OF THE CHANGE
4. CHANGE THE COPYBOOK CODE --> RE-COMPILE ALL PGM THAT IS USING THIS COPYBOOK

5. IMPLEMENT /DEPLOY -> THE COPYBOOK & ALSO ALL PGM THAT ARE EFFECT.

====
ACCTPGM1 -- ACCTPGM2 -> RUN JCL**
---

ACCTPGM1: ---> INPUT -ACCEPT -- OUTPUT WRITE - FILE (-DDNAME -ACCTDD01)


ACCTPGM2: --> INPUT -> ACCTFILE -READ ---> OUTPUT > SAVING , CURRENT -> WRITE (DDNAM
E-

//IBMUSERX JOB NOTIFY=&SYSUID


//STEP1 EXEC PGM=ACCTPGM1
//STEPLIB DD DSN=IBMUSER.T5.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//*INPUT - OUTPUT FILES
//ACCTDD01 DD DSN=IBMUSER.T5.ACCT.FILE,DISP=(NEW,CATLG,DELETE),
// UNIT=3390,VOL=SER=JASYS1, NEW LINE SHOULD START B/W 4TH COL - 16TH COL
// SPACE=(TRK,(1,1),RLSE),
// DSORG=PS,LRECL=XX,RECFM=FB,BLKSIZE=0
//SYSIN DD *
VAL-INPUT
..
/*
//

NEW FILE -> 1. DSN , 2. DISP =(NEW,) .3. LOACTION....


-
EXISTING FILE -> 1. DSN - NAME 2. DISP= STATUS

INPUT FILE -> //DDNAME DD DSN=INPUT.FILE.NAME,DISP=SHR -> SHR > SHARE - UR PGM U
SING THE FILE AS INPUT,
OTHER PGM CAN ALSO USE FOR INPUT.

3.2 -> NEW PDS/DATASET -> 1. NAME 2. LOCATION 3. SPACE 4. ATTRIBUTE

FILE =- DD PARAMETER:

1. DSN==> DATASET NAME -> PROVIDE THE DATASET NAME.


2. DISP=
DISP=(STATUS,ON SUCCESS-ERROR, ON ABNED)

NEW: DISP=(NEW,CATLG,DELETE) --> NEW FILE, ON SUCCESS-SAVE THE FILE , ON ABEND -


DELETE
---
DISP=(NEW,CATLG,CATLG) --> NEW FILE -- ON SUCCESS/ABEND -> SAVE THE FILE
DISP=(NEW,DELETE,DELETE) --> NEW FILE -- ON SUCCESS/ABEND -> DELETE THE FILE
DISP=(NEW,PASS) --> NEW FILE --> ON SUCCESS -> PASS THE FILE TO NEXT STEP , FAILE
D = DELETE IT

3. LOCATION --> UNIT=3390/SYSDA , VOL=SER=JASYS1

4. SPACE ->4 POINT 1. UNIT OF SPACE > TRACK/TRK - CYLINDER /CYL


2. PQ -> FIXED -> 1
3. SQ -> VARYING -> *15 => 1 MIN=1 , MAX=16
4. DB -> ONLY FOR PDS
SYNATX:
SPACE=(UNITS,(PQ,SQ),RLSE) --> RLSE -> RELASE UNUSED SPACE FOR THE DATASET.

EX: PS -> SPACE=(TRK,(1,1),RLSE)

5. ATTRIBUTE: 1. TYPE PDS DSORG=PS


2. RECORD FORMAT FB/ U RECFM=FB / VB
3. RECORD LENGTH 80 LRECL= TOTAL LENGTH OF THE LAYOUT.
4. BLOCK SIZE 800 BLKSIZE=0 (ALWAYS)

---
LAST POINT -> WE DONT SEE THE DATA IN FILE - USING 3.4 (NOT SO READABLE..)

-- FILE MANAGEMENT TOOL --> 1. FILE MANAGER 2. FILE-AID 3. FILE MASTER

TO SEE THE DATA -> 2 THINGS 1. DATA FILE + COPYBOOK


2. FILE -TOOL

SOFTWARE -> FILE MANAGER --> ISPF -> OPTION = M , OPTION - 13 =FMN -> OPTION 1 -VIE
W

--> 1. INPUT FILE -> IBMUSER.T5.SAVE.FILE


2. COPYBOOK IBMUSER.T5.COPYLIB -> ACCTCPY1
3. OPTION -> 1 -ABOVE

-> ENTER --
================================================================================
================================================================================
========

COBOL CLASS 12:-


Memory Saving
- Usage Clause, 88 Level Number, Redefines & Renames 66 LEVEL
=====================
DATA POINT VIEW:-

DATA SECURITY -- MEMORY SAVINGS

HOW TO SAVE MEMORY SPACE & DATA SECURITY:

DATA -> 2 TYPES 1. NUEMRIC -- 9(4) -- COMP & COMP-3 - READ -> HEX ON & FILE TOOL + C
OPYBOOK
2. ALP-NUMERIC -- X(4). -- LIMIT/UNLIMITED - READ -> 88 LEVEL

NUMERIC:
01 VAR1 PIC S9(04). 1. READABLE 2. BYTES = 4 -BYTES

USAGE CLASUE: - WE CAN SECURE THE DATA & SAVE THE MEMORY SPACE.

-> USAGE -> WE CAN TELL THE SYSTEM IN DATA FORMAT WE WANT TO STORE IN MEMORY
3 TYPES OF FORMAT
1. CHARACTER FORMAT --- BY DEFAULT
2. BINARY FORMAT
3. HEX DECIMAL/PACKED DECIMAL FORMAT

>> CHARACTER FORMAT:

1. MEMORY UNIT -> BYTES - FOR EACH DIGIT = 1 BYTES -- 9(04) = 4 BYTES

2. SYNTAX: 03 ACCT-BAL PIC 9(05) USAGE CHARATER.


03 ACCT-BAL PIC 9(05). -- BY DEFAULT CHAR FORMAT

3. DATA STORED IN FILES ARE IN READABLE FORMAT (THIS IS NOT GOOD)

>> BINARY FORMAT: (0,1)

1. MEMORY UNIT -> BITS 1 BYTE = 8 BITS

MEMORY CAL: S9(01) - S9(04) == 2 BYTES


S9(05) - S9(09) == 4 BYTES
S9(10) - S9(18) == 8 BYTES

2. SYNTAX:
03 ACCT-BAL PIC S9(05) COMP.

3. DATA IS SECURE/NON-READABLE FORMAT.

>> PACKED DECIMAL/(HEX DEICMAL): (0,1,...9,A,B...F)

1. MEMORY UNIT --> NIBBLE 1 BYTE = 2 NIBBLE -> STORE 1 DIGIT IN 1 NIBBLE -> 2 DIGIT = 1 B
YTE

MEMORY CAL -> S9(N) - N - EVEN = N/2 + 1


ODD = (N+1)/2

2. SYNTAX:
03 ACCT-BAL PIC S9(05) COMP-3.

3. DATA IS SECURE / NON-READABLE FORMAT

ON MEMORY -CHAR vs COMP vs COMP-3


---
CHAR(BYTES) COMP(BITS) COMP-3(NIBBLE)
S9(10) 10 8 6 - BY USING - COMP OR COMP-3 -> MEMORY SAVING -> 2-4 BYTES PER RE
CORD

DATA SECURITY? -> USING COMP OR COMP-3 -> WE CAN SECURE THE DATA , ITS NOT IN RE
ADABLE FORMAT -WHEN U OPEN THE FILE.

BUT --> USER -- HE WANT TO SEE THE DATA AND ANALYSIS


IT - U WANT TO SEE THE DATA - ANALYSIS

== ANIL -> HOW I CAN READ IT::


COMP-3: 2 WAYS 1. COPYBOOK + FILE TOOL => CAN I BUSINESS USER - LEARN THE TOOL??

2. HEX ON COMMAND ---> 3.4 -> OPEN THE FILE -> HEX ON

12345 -COMP-3 > .... -> HEX ON --> 2 LINE FORMAT - 135
24? C-+ , D>- , F=UNSIGN

COMP 1 WAY 1. COPYBOOK + FILE TOOL

COMP-3 vs COMP = WHICH I SHOULD USE -> COMP-3 IS ONLY ONE WE USE IN THE PROJECT
(DATA VAIRBALE ).
COMP --> LENGTH VARIABLE

==
ALP-NUMERIC: HOW TO SECURE /SAVE MEMORY OF ALP-NUMERIC DATA

1. 2 KIND OF ALP-NUMERIC IN PROJECT

1. LIMITED VALUE TYPE FLD --ALSO THESE CAN BE SECURE/SAVE MEMORY


2. UNLIMITED VALUE TYPE FLD -- UNSECURE...

-> ACCOUNT-TYPE : LIMITED > SAVING , CURRENT , FD , DEMAT , LOAN , CREDIT ..1 OR 2 =>
LIMITED -WE CAN LIST
-> CUST_NAME : UNLIMITED > !!!

--> ACCT-STATUS , CLAIM-STATUS , POLICY-STATUS --> LIMIT


--> ACCT-TYPE , CLAIM-TYPE , POLICY-TYPE --> LIMIT

CITY , CONUNTRY , PINCODE , ADDRESS --> UNLIMIT

HOW TO SECURE THE LIMITED TYPE DATA VARIABLE:

EX: -> AMAZON --> RAKESH - 45K - LAPTOP

AFTER THE ORDER IS PLACED -> RAJESH 1. RELAX LET THE PRODUCT COME
2. TRACK THE ORDER - EVER HOUR

ORDER STATUS: SHIPPED , RECEVIED , IN-TRANSIT , OUT-OF-DELIVERY , DELIVERY


S R I O D

ORDER STATUS ? 1. BUSINESS FLD


2. LIMITED

PGM -> 03 ORDER-STATUS PIC X(15).


OR

03 ORDER-STATUS-CODE PIC X(01). 1. SECURE THE DATA


2. SAVE THE MEMORY
3. DATA LESS READABLE FOR USER AND URSELF..

FILE-F1: ORDER FILE


O1111,ANIL KUMAR,LAPTOP,45000.00,OUT-FOR-DELLIVERY
O1111,ANIL KUMAR,LAPTOP,45000.00,OUT-FOR-DELLIVERY

FILE-F2 : ORDER FILE

O1111,ANIL KUMAR,L001,......,O
O1111,ANIL KUMAR,L001,......,O == THIS IS BETTER 1. SECURING THE DATA
2. SAVING THE MEMORY SPACE.
O3333,ANIL KUMAR,L001,......,X
O1111,ANIL KUMAR,L001,......,1
--> WHAT IS X .. WHAT IS 1??

EX: IN PGMP1 --> IF ORDER-STATUS-CODE = ’2’ --WHAT IS 2 HERE


DO THIS???

HOW TO READ THESE DATA?? -- TO MAKE THE DATA CODE MORE READABLE -> 88 LEVEL NU
MBER

88 LEVEL NUMBER: 1. USED TO MAKE THE DATA MORE READABLE


2. NOT USED FOR MEMORY SPACE**
3. DO NOT USE A PIC (NO PIC - NO MEMORY ALLOCATE -- NO MEMORY SAVING)
4. USED IN PGM AS CONDITION NAME CONDITION (OPTIONAL)

03 ORDER-STATUS-CODE PIC X(1).


88 ORDER-RECEVIED VALUE ’R’.
88 ORDER-CANCALLED VALUE ’X’.
88 ORDER-RETURNED VALUE ’1’.
88 ORDER-MISSING VALUE ’2’.

EX: IN PGMP1 --> IF ORDER-STATUS-CODE = ’2’ -U NEED TO GO OPEN THE COPYBOOK , CHE
CK 88 LEVEL
DO THIS???

EX: IN PGM P2 -> IF ORDER-MISSING -CONDITION NAME


DO THIS

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

COBOL CLASS 13:-


===============================
DATA -> SECURE & SAVE THE MEMORY 1. NUMERIC -> USAGE CLASE > FORMAT > CH , BI , PD
- FILE TOOL / HEX ON
2. ALP-NUM -> LIMITED -> BUSINESS VARIBALE -> CODE - 88 LEVEL

DATE’S -> FORMAT -> 6 DIGIT DDMMYY -- NEVER USE == Y2K 1999 - 99 - 2000 -> 1900
-> 8 DIGIT - YYYYMMDD -- FOR ANY CAL & COMPARSION -> YYYYMMDD FORMAT ONLY
-> 10 DIGIT YYYY-MM-DD -- USED IN DB2 PROCESS

Redefines :- USE TO STORE THE SAME DATA IN MULTIPLE VARIBALE.. WITH SAME MEMORY SP
ACE.

1. USED TO SHARE THE SAME MEMORY SPACE WITH MULTIPLE VARIBALE


2. USED TO SHARE THE SAME DATA WITH MULTIPLE VARIBALE.

EX:1
03 CALIM-STATUS PIC X(10). APPROVED
03 CLAIM-TYPE PIC X(10). MEDICAL
-
SHARE THE MEMORY SPACE -- USE REDEFINES

03 CLAIM-STATUS PIC X(10).


03 CLAIM-TYPE REDEFINES CLAIM-STATUS PIC X(10). Q? VALID EXAMPLE!! --> INVALID - W
E HAVE DIFF DATA VARIBALE..

EX:2
03 MODEL-CODE PIC X(05). M2022
03 MODEL-TYPE PIC X(01). M
03 MODEL-YEAR PIC X(04). 2022.
--- 10 BYTES
FILE -> M2020M2022

-- REDEFINES

03 MODEL-CODE PIC X(05). M2022


03 MODEL-CODE-RED REDEFINES MODEL-CODE.
05 MODEL-TYPE PIC X(01). ?? M
05 MODEL-YEAR PIC X(04). ?? 2022 Q? VALID EXAMPLE -> SAME DATA VARIABLE.
--- 5 BYTES
FILE -> M2022

EX:3:- 03 WS-DATE PIC X(10) VALUE ’2022-01-01’.


03 WS-DATE-RED REDEFINES WS-DATE.
05 YYYY PIC 9(04).
05 FILLER PIC X(01). FILLER - DUMMY VARIABLE , NOT USED IN ANY WHERE.
05 MM PIC 9(02).
05 FILLER PIC X(01).
05 DD PIC 9(02).

EX:4:
03 NUMERIC-VAR PIC 9(03).
03 ALP-NUME-VAR REDEFINES NUMERIC PIC X(03).

66 LEVEL NUMBER: U CAN FORGET THIS ONE.. (ONLY USED IN IMS PROJECT)

66 -- USED REGROUP ELEMENTARY VARIABLE OF DIFF GRP’S IN NEW GROUP..

EX: 01 GROUP-1.
03 A
03 B
03 C
01 GROUP-2.
03 D
03 E
03 F.

66 GROUP-3 RENAMES A THRU F.

===
FILE TOPIC: P1 -> 1 FILE INPUT - 1 FILE OUTPUT 1-1
P2 -> 1 FILE INPUT - 2 FILE OUTPUT 1-MANY
--
P3 -> MANY INPUT FILE - 1 OUTPUT MANY -1
P4 -> MANY INPUT FILE - MANY OUTPUT MANY - MANY.

MANY INPUT FILE -> 1. OUT OF ALL INPUT FILES ONE WILL BE MAIN INPUT FILE -> PROCESSIN
G THIS FILE DATA
REST OF ALL FILES -> REFERENCE FILE -> 1. COMPARE 2. GET MORE INFORMATION.

2 LOGIC -> 1. MATCHING LOGIC -- 1. REFERENCE FILE MAY BE HAVING MILLION RECORDS
2. THEY ARE DYNAMIC IN NATURE (DATA CHANGES)
3. COMMON KEY FIELDS

2. LOOK-UP LOGIC -- 1. COUNTABLE RECORD’S 100, 1500..


2. THE REFERENCE FILE DATA WILL BE STATIC (NO CHANGES ON DAILY ) 3. TH
EY HAVE COMMON KEY FIELDS

MATCHING LOGIC: INPUT FILE DATA > REQUIRED > REFERENCE FILE 1. VARLDATING 2. MOR
E VALUE.

CREDIT CARD (TRANS-FILE) MASTER FILE(ALL CARD DETAILS)


TRANS-KEY MAST-KEY
C1111 C1111
C2222 C2222
C4444 C3333
C5555 C4444
C7777 C5555
C8888 < C6666
C9999 C7777
C9999 <
C9991

1. BEFORE -> SORT THE FILE -> COMMON KEY FIELDS (THRU JCL)
2. IN COBOL PGM

1. READ 1 RECORD FROM BOTH THE FILES


2. 3000-PROCESS-PARA.
C8888 C9999
IF TRANS-KEY = MAST-KEY (C1111=C1111) (C222=C222) (C4444=C3333 -NO) (C444=C4444) (
C5555=C5555) (C7777=C6666)
1. PROCESS THE INPUT RECORD
2. WRITE THE RECORD AS OUTPUT (C1111,C2222,C4444,C5555,C7777
3. CASE-1 - TRANS-FILE -NO DUPLICATE--> READ BOTH FILES
CASE-2- TRANS-FILE - WITH DUPLICATE -> READ ONLY TRANS FILE
ELSE
IF TRANS-KEY > MAST-KEY (C4444>C3333) (C7777>C6666) (C8888 > C9999)
1. READ ONLY MAST FILE
ELSE
?? INVALID 1. IGNORE -FOR NOW -> WRITE THEM TO ERROR FILE
2. ABEND THE PGM -> CHECK -SOLVE IT

END-IF
END-IF.

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

COBOL CLASS 14:-


----------------------------
Array-Occurs table
- Search & Search All - PERFORM VARYING:

OCCURS --- > REPETITION


-- USED FOR VARIABLE DECLARATION
-- VARIBALE -> USED TO STORE SOME DATA WITHIN THE PGM

A1111 - ACCOUNT-NUMBER
ANIL - CUST-NAME
OCCURS VARIABLE ARE USED -WHEN WE HAVE 1. SAME KIND OF DATA
2. REPEATED WITH SAME TYPE & SIZE

OCCURS IN PGM - WE CAN CODE BETTER PGM, REDUCE THE CODING LINES (NOT USED FOR
MEMORY SAVINGS)

DATA REPETITION IN PGM : 2 KINDS

1. FIELD REPETITION -- ON A SINGLE RECORD - U HAVE A FLD HAVING MULTIPLE VALUES T


O STORE
2. RECORD REPETITION -- ON A FILE -> MULTIPLE RECORDS

1. WHEN I NEED TO DEFINE AN OCCURS - HOW TO CODE IT


2. HOW TO ACCESS THE DATA OF OCCURS VARIBALE
3. FIND A VALUE IN OCCURS TABLE USING SEARCH & SEARCH ALL

1. WHEN I NEED TO DEFINE AN OCCURS - HOW TO CODE IT

==> IF THE DATA IN FILE/TABLE - IF WE HAVE SAME KIND OF DATA REPEATED WITH SAME DAT
E-TYPE & SIZE
IN THAT CASE ONLY WE DEFINE OCCURS VARIABLE.

==> 2 SYTAX 1. FIXED OCCURS OF DATA -> 03 OCCURS-VAROBALE-NAME OCCURS N TIMES


. N-2-3-..
2. DYNAMIC OCCURS/VARYING -> 03 OCCURS-VARIABLE-NAME OCCURS 1-N TIMES DEPEN
DING ON COUNTER-VARIBALE.
01 WS-COUNTER-VARIABLE PIC 9(03).
FIXED/STATIC OCCURS -> MEMORY ALLOCATATION WILL BE DONE AS SOON AS THE PGM STA
RTS
-=> HIGHLY USED FOR FILED REPETITION

DYNAMIC OCCURS-DEPEND -> MEMORY WILL ALLOCATED WITHIN THE PGM , BASED ON COU
NTER VARIBALE.
==> USED IN RECORD REPETITION.

NOTE: 01 TEMP-DETAILS-IN. -> TABLE (REPEATING THE TABLE -> OCCURS IS NOT USED ON 0
1 LEVEL)

2. HOW TO ACCESS THE DATA OF OCCURS VARIBALE

3 TYPE VARIABLE: 1. GROUP VARIBALE.. SYNTAX: 01 VAIRBALE-NAME.


2. ELEMENTARY VARIBALE 01 VRAIBALE-NAME PIC
3. OCCURS VARIBALE 03 VARIBALE-NAME OCCURS (PIC-OPTIONAL)

ACCESS THE VARIBALE> GROUP VARIABLE -> MOVE GRP1 TO GRP2.


ELEMENTARY -> ACCEPT ACCT-NUMBER. --- 1 VARIAB-NAME = 1 MEMORY

OCCURS -> 1 VARIBALE = MULTIPLE MEMORY

ACCEPT TEMP-READING -> INVALID SYNTAX


OCCURS ->
VARIBALE-NAME(OCCURANCE-VALUE/SUB-SCRIPT)

--> TO ACCESS THE OCCURS VAIRBALE MEMORY -> WE NEED TO POIVIDE THE MEMORY OCCU
RANCE -> DO USING A ’SUB-SCRIPT’

EX: ACCEPT TEMP-READING(1).


ACCEPT TEMP-READING(2). 1 & 2 - SUB-SCRIPT VALUE.

-> IF I WANT TO ACCESS ALL MEMORY ALLOCATION..

01 WS-I PIC 9(02) VALUE ZERO. --> SUB-SCRPT VARIBALE.

TO LOOP - 2 SYNTAX: 1. PERFORM UNTIL


2. PERFORM VARYING. - BEST

PERFORM VARYING:
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 24 OCCURS -WILL BE RANGE 1 - 24
(0 - 25 - S0C4)
ACCEPT TEMP-READING(WS-I)
END-PERFORM.

INITILAIZING -> FROM 1


INCREMENT -> BY 1
CONDITION > UNTIL WS-I > 24 ALL CAN BE FOUND IN SAME LINE

REVESER -> PERFORM VARYING WS-I FROM 24 BY -1 UNITL WS-I < 0

PERFORM UNTIL: MOVE +1 TO WS-I. -- INITILIZING


PERFORM UNTIL WS-I > 24 -- CONDITION
DISPLAY TEMP-READING(WS-I)
ADD +1 TO WS-I -- INCREMENT
END-PERFORM.

3. SEARCH A VALUE IN OCCURS MEMORY:-

TEMP-READING -24 TIMES -> 10,21,19,18,21,20,18,19,19...24

PRINT/DISPLAY > TEMP AT 2AM DISPLAY TEMP-READING(02)


> TEMP AT 10PM DISPLAY TEMP-READING(22)

> I WANT AT WHAT TIME - WE HAVE TEMP OF 20 VALUE? DISPLAY TEMP-READING(??) - WE


NEED TO FIND THE TEMP -20

==> TO FIND A VALUE IN OCCURS TABLE -> 2 STATEMENT 1. SEARCH & 2. SEARCH ALL

--> TO USE A SEARCH OR SEARCH ALL - THE OCCURS TABLE MUST BE DEFINED WITH AN IND
EX.

03 TEMP-READING OCCURS 24 TIMES INDEXED BY IDX


PIC 9(03).

IN THE ABOVE -> IDX - IS NOT A VAIRABLE.


-> ITS A POINTER WHICH SYSTEM WILL MAINTANE IT.

SEARCH /SEARCH ALL SYNTAX:

SEARCH/SEARCH ALL TEMP-READING


AT END
DISPLAY ’ RECORD NOT FOUND’
WHEN TEMP-READIND(A1) = WS-INPUT-VALUE
DISPLAY ’TIME ’ A1
END-SEARCH.

OCCURS TABLE -> TEMP-READING --. 24 OCCURS -. I HAVE FIND - 20 VALUE*

TEMP-READING -24 TIMES -> 10,21,19,18,21,20,18,19,19...24

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

ACCEPT WS-TEMP-INPUT. << 20

PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 24


IF TEMP-READING(WS-I) = WS-TEMP-INPUT
DISPLAY ’TEMP OF INPUT IS OCCURS AT A TIME ’ WS-I
END-IF.
END-PERFORM.

EX: LET GO TO SCHOOL -- CLASS ROOM --> BENCH - FRDS -> CHAT..
TEACHER COMES TO CLASS -> STUDENT - OPEN UR TEXT BOOK -> GOTO CHAP-10

CLASS - 2 TYPES; 1. OPEN THE BOOK -> TURN PAGE BY PAGE --> CHAP-10 220.
2. OEPN BOOK - INDEX -220 - JUMP 200/210 - TURN -> CHAP-10 220.

PGM: ENV -> DEFINE FILE -SELECT


DATA DIVISION.
FILE SECTION.
FD TEMP-INFILE
LABEL
01 TEMP-DETAILS-IN.
03 TEMP-DATE PIC X(10).
03 TEMP-READING OCCURS 24 TIMES PIC 9(03). -> 1 OCCURS VARIABLE -WITH -24 MEMO
RY ALLOCATION
EX: - TEMP FILE - RECORDING TEMP FOR EACH HOURS
FILE -OPEN"

2022-11-01,20,21,23,23,23,22,19,21,21,24 .. 24 HRS
2022-11-02,20,21,23,23,23,22,19,21,21,24 .. 24 HRS

PGM: ENV -> DEFINE FILE -SELECT


DATA DIVISION.
FILE SECTION.
FD TEMP-INFILE
LABEL
01 TEMP-DETAILS-IN.
03 TEMP-DATE PIC X(10).
03 TEMP1 PIC 9(03).
03 TEMP2 PIC 9(03).
...
..
03 TEMP24 PIC 9(03). --> 24 VARIABLE - 24 MEMORY ALLOCATION

PGM: ENV -> DEFINE FILE -SELECT


DATA DIVISION.
FILE SECTION.
FD TEMP-INFILE
LABEL
01 TEMP-DETAILS-IN.
03 TEMP-DATE PIC X(10).
03 TEMP-READING OCCURS 24 TIMES PIC 9(03). -> 1 OCCURS VARIABLE -WITH -24 MEMO
RY ALLOCATION

EX: - GROCERY: -> BILL ROLL UP PAPER..

01 INVOICE-RECEIPT.
03 INVOICE-DATE PIC
03 GST/TAX PIC
03 ITEM-NUM1 PIC
03 ITEM-NAME1 PIC
03 ITEM-QTY1 PIC
03 ITEM-PRICE1 PIC
03 ITEM-NUM2 PIC
03 ITEM-NAME2 PIC
03 ITEM-QTY2 PIC
03 ITEM-PRICE2 PIC ...
01 INVOICE-RECEIPT.
03 INVOICE-DATE PIC
03 GST/TAX PIC
03 ITEM-LIST OCCURS 1-100 TIMES DEPENDING ON ITEM-COUNT.
05 ITEM-NUM1 PIC
05 ITEM-NAME1 PIC
05 ITEM-QTY1 PIC
05 ITEM-PRICE1 PIC

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

COBOL CLASS 15:-


==================================================
OCCURS - RECORD REPETITION:

--> COBOL PGM -> WE PROCESS ONLY 1 RECORD AT A TIME..


--> DEFINE A RECORD -> 1 MEMORY ALLOCATION..
-> IN COBOL PGM - IF U WANT TO STORE MULTIPLE RECORD
--> DEFINE A RECORD LAYOUT -> OCCURS - MULTIPLE MEMORY ALLOCATION

==> THIS CONCEPT IS USED -IN LOOK-UP TOPIC.

COBOL FILE PGM -> MULTIPLE INPUT FILE 1. MAIN INPUT FILE
2. OTHER REFERENCE FILE

MATCHING LOGIC -> 1. FILE DYNAMIC NATURE OF DATA - MILLION RECORDS


2. COMMON KEY FIELDS

EX:
ACCOUNT FILE: (KEY FIELD - ACCT-NUM) REF FILE - BRANCH DETAILS (B-CODE KEY)
- --
ACCT-NUM ,CUST-NAME , ACCT-BH-CODE BRANCH-CODE , B-NAME
A1111 ANIL B1 B1 HYD
A2222 ARUN B4 B2 BANG
A3333 SUNIL B3 B3
A44444 ,,,,, B2 B4
..
B10...

--> I WANT TO GET, COMPARE MY ACCOUNT DATA WITH BRANCH FILE - GET -B-NAME.

WITHOUT LOOK-UP:
FOR EACH ACCT-RECORD *A11111 -- SEARCH FOR BRACNH CODE IN -BRANCH -> OPEN THE
FILE -> READ EACH RECORD = ACCT-FILE-INPUT
--MATCH- PROCESS

FOR EACH ACCOUNT RECORD --> WE NEED TO OPEN - READ FILE TILL IT FIND MATCH -CLOS
E IT.
LOOK-UP: 1. 2 FILE 1. INPUT - 2. REFERENCE
2. DIFF KEY FILEDS -> ACCT-NUM , BRANCH-CODE
3. REFERE FILE DATA - STATIC - NOT MANY CHANGE -WITH COUNTABLE RECORD.

1. IN THE PGM:
1. CREATE THE OCCURS TABLE FOR ALL BRANCH CODE (2 WAYS)
1. DATA IS IN A FILE**
2. DATA IS IN A COPYBOOK**

DATA IS IN A FILE:
1. 01 BR-DETAILS.
03 BRACH-TABLE OCCURS 1-50 TIMES DEPENDING ON BRANH-COUNT-VAR
INDEXED BY A1.
05 BR-CODE PIC X(02).
05 BR-NAME PIC X(10).

01 BRANH-COUNT-VAR PIC 9(02) VALUE ZERO.


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

2. --> PROCEDURE DIVISION.

--> 1000-INITIAL-PARA.
-> OPEN THE BRACH FILE/ ACCT-FILE
-> PERFORM 150-BUILD-BR-TABLE-PARA THRU 150-EXIT
UNTIL WS-END-OF-B-FILE = ’Y’.

3. --> 150-BUILD-BR-TABLE-PARA.
--> READ BR-FILE
AT END
MOVE ’Y’ TO WS-END-OF-B-FILE
GO TO 150-EXIT.
ADD +1 TO WS-I BRANH-COUNT-VAR.
MOVE BR-CODE-FILE TO BR-CODE(WS-I)
MOVE BR-NAME-FILE TO BR-NAME(WS-I)

4. ---> 300-PROCESS-PARA (ACCT-FILE RECORD - EACH RECORD(


PERFORM 310-FIND-BR-NAME-PARA THRU 310-EXIT.

5. --> 310-FIND-BR-NAME-PARA. (IF DATA IS IN SORTED ORDER)

MOVE BR-CODE-ACCT-FILE TO WS-BR-CODE-INPUT.


SEARCH ALL BR-TABLE
AT END
DISPLAY ’BRACH CODE IS NOT FOUND ’ WS-BR-CODE-INPUT
WHEN BR-CODE(A1) = WS-BR-CODE-INPUT
MOVE BR-NAME(A1) TO WS-BRH-NAME
END-SEARCH.

OR OR OR

5. --> 310-FIND-BR-NAME-PARA. (IF DATA IS NOT IN SORTED ORDER)


SET A1 TO 1. -> REQUIRED -RESET THE INDEX

MOVE BR-CODE-ACCT-FILE TO WS-BR-CODE-INPUT.


SEARCH BR-TABLE
AT END
DISPLAY ’BRACH CODE IS NOT FOUND ’ WS-BR-CODE-INPUT
WHEN BR-CODE(A1) = WS-BR-CODE-INPUT
MOVE BR-NAME(A1) TO WS-BRH-NAME
END-SEARCH.

DATA: IF THE DATA IN OCCURS TABLE IS IN SORT ORDER ? YES -> SEARCH ALL
NO -> SEARCH

SEARCH --> LINER SEARCH

1ST ACCT-RECORD
EX: B1,B2,B3... B10 -FIND => B8

B1=B8? , B2=B8... B8=B8 --> FOUND -> DISPLAY BR-NAME(A1) -> BRANH-NAME
^

2ND ACCT-RECORD -> B3

SEARCH --> B3=B8? , B3=B9 , B3=B10 => NOT FOUND.

SEARCH ALL -> BINARY SEARCH/MID-POS LOGIC

EX: B1,B2,B3... B10 -FIND => B8

> 10/2 5POS -> B5 = B8? NO , B5 < B8!! YES --> SKIP B1,B2,B3,B4,B5

B6,B7,B8,B9,B10

> 5/2 3RD POS -> B8 = B8 -> FOUND -> MOVE BR-NAME(A1) TO WS-BRCH-BAME.

=====

LOOK-UP TABLE - USING COPYBOOK:

IBMUSER.T5.COPYLIB(BRCHCPY1)

01 BRANCH-DETAILS.
03 FILLER PIC X(06) VALUE ’B1,HYD ’.
03 FILLER PIC X(06) VALUE ’B2,HYD ’.
03 FILLER PIC X(06) VALUE ’B3,HYD ’.
03 FILLER PIC X(06) VALUE ’B4,HYD ’.
03 FILLER PIC X(06) VALUE ’B5,HYD ’.
...
01 BRACH-DETAILS-RED REDEFINES BRANCH-DETAILS.
03 BRCH-TABLE OCCURS 10 TIMES.
05 BR-CODE PIC X(02).
05 BR-NAME PIC X(04).
--COPYBOOK CHANGE -> WHAT U WIL DO.. - 1. SCAN 2. PGM NAME 3. CHANGE 4. COMPILE .

COPYBOOK -> LAYOUT OF FILE -> IT WILL NEVER CHANGE

COPYBOOK -> DATA IN IT --> YES..

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

COBOL CLASS 16:-


==========================================================
SUB-PROGRAM ( CALL STATEMENT):-

IN COBOL - WE MOST OF THE TIME , NEED SAME LOGIC REQUIRED IN MANY PGM

--> OPTION-1 -> LET CODE THE SAME LOGIC IN ALL PGM
--> OPTION-2 -> LETS CODE IN PGM , AND USE IT BY ALL OTHER PGM -- BETTER

//STEP1 EXEC PGM=PGMNAME-A (MAINPGM) --> WITHIN THE PGM , IF WE PASS CONTROL T
O ANOTHER PGM -> PGMNAME-B <SUB-PROGRAM

PGMA -- PASS -- PGMB -- PASS -- PGMC


MAINPGM SUBPGM SUBPGM

1. HOW TO PASS THE CONTROL FROM PGM TO ANOTHER (MAINPGM - SUBPGM) --> ANS: 1. CA
LL STATEMENT 2. STATIC CALL (USE THIS) 3. DYNAMIC -DIFF
2. HOW TO PASS THE DATA TO THE SUBPGM.. --> ANS: 1. CALL BY REFERENCE (USE THIS)
2. CALL BY CONTENET - DIFF
3. HOW TO CODE A SUBPGM, HOW TO RECEIVE THE DATA INTO PGM VARIABLE --> ANS: 1. LIN
KAGE SECTION -DEFINE 2. PD. USING CATCH 3. GOBACK
4. HOW TO SEND THE CONTROL AND RESULT/OUTPUT BACK TO MAINPGM --> ANS: 1. GOBACK
/EXIT PROGRAM 2. DATA?? - CALL BY REFENECE -EDIT O/P
---
1. HOW TO PASS THE CONTROL FROM PGM TO ANOTHER (MAINPGM - SUBPGM)

IN COBOL - WE USE A STATEMENT ’CALL STATEMENT’ TO PASS THE CONTROL TO A SUBPGM..

CALL STATEMENT -> TYPES 2 TYPES 1. STATIC CALL -- USED TO PASS THE CONTROL TO A S
UBPGM
2. DYNAMIC CALL -- USED TO PASS THR CONTROL TO A SUBPGM

3 DIFFERENCE:
>> STATIC CALL:

1. SYNTAX: CALL ’SUBPGM-NAME’ PGM NAME AS A CONSTANT

2. COMPILATION: 1. MAINPGM LOAD & SUBPGM LOAD MUST BE COMBINED -CREATE A SING
LE LOAD MODULE

STEPS: 1. ALWAYS COMPILE THE SUBPGM -> SP-LV1


2. WHILE COMPILING THE MAINPGM + INCLUDE SP-LV1 ---> MP-LV1
LINK-EDIT
3. IN CASE OF SUBPGM CHANGES:

1. FIRST SCAN FOR ALL MAINPGM -CALLING THIS SUBPGM IN STATIC.


2. CHANGES TO THE SUBPGM -> COMPILE THE PGM --> SP-LV2
3. WE MUST - RE-COMPILE ALL MAINPGM (MP-LV2) AND ALSO DEPLOY THEM WITH SUBPG
M CHANGES.

IN CASE -IF U CHANGE ANYTHING IN MAINPGM -- SUBPGM HAVE NO IMPACT.(NO NEED TO C


OMPILE , NO TO MOVE TO PROD)

4. USING -COMPILER OPTION ’DYNAM’ -WE CAN CONVERT A STATIC TO DYNAMIC AS WELL...

==> IN PROJECT -> WE NEVER CHANGE ANY COMPILE OPTION - IT WILL BE ’NODYNAM’ O
NLY.

>> DYNAMIC CALL:

1. SYNYAX 01 PGM-VARIBALE-NAME PIC X(08) VALUE ’SUBPGM-NAME’.

CALL PGM-VARIBALE-NAME. PGM NAME AS A VARIBALE.

2. COMPILATION: 1. MAINPGM LOAD & SUBPGM LOAD ARE NOT COMBIINED > MULTIPLE LO
AD MODULE

OPTION-1 => COMPILE MAINPGM AND THEN COMPILE THEN SUBPGM

OPTION-2 -> COMPILE THE SUBPGM AND THEN U CAN COMPILE MAINPGM AS WELL.

3. CHANGES IN SUBPGM -> 1. ONLY CHANGE IN SUBPGM + COMPILE IT --> DEPLOY ON THIS
PGM -- SP-LV2

MAINPGM -> WHILE EXECUTION TIME -> IT WILL PICK LASTEST LOAD ONLY. (SP-LV2)

>> STATIC vs DYNAMIC --> WHICH ONE? --> STATIC ONLY USED.

2. HOW TO PASS THE DATA TO THE SUBPGM..

TO PASS THE DATA - WE HAVE 2 WAYS:

1. CALL BY REFERECNE --> 100% USED IN EVERY PGM


2. CALL BY CONTENT --> NEVER USED.

--> CALL BY REFERENCE -> USING THIS OPTION WE CAN PASS THE DATA TO ANOTHER PGM
-> THE MAINPGM SENDING VARIABLE -- THE SUBPGM RECEVING VARIBALE THEY SHARE T
HE SAME MEMORY.
-> IF WE CHANGE VARIABLE DATA IN SUBPGM, IT WILL EFFECT THE DATA OF MAINPGM VAR
IABLE AS WELL

MAINPGM) VAR1 >> __10__ << VAR1 (SUBPGM)


VAR2 >> __20__ << VAR2

==> IN SUBPGM -> MOVE 30 TO VAR1, VAR2.


MAINPGM) VAR1 >> __30__ << VAR1 (SUBPGM)
VAR2 >> __30__ << VAR2

SYNTAX: CALL ’SUBPGM-NAME’ USING BY REFERENCE VAR1, VAR2.


SYNTAX: CALL ’SUBPGM-NAME’ USING VAR1, VAR2. BY DEFAULT ’REFERENCE’

---> CALL BY CONTENT:


--> USED THIS OPTION ALSO WE CAN PASS THE DATA TO ANOTHER PGM
--> IN HERE, MAINPGM VARIABLE MEMORY & SUBPGM PROGRAM VARIBALE WILL DIFF.
--> IN CASE OF CHANGE IN SUBPGM VARIABLE DATA -- IT WILL NOT EFFECT THE MAINPGM
VARIABLE.

MAINPGM) VAR1 >> __10__ VAR1 >> __10__ (SUBPGM)


VAR2 >> __20__ VAR2 >> __20__

==> IN SUBPGM -> MOVE 30 TO VAR1, VAR2.

MAINPGM) VAR1 >> __10__ VAR1 >> __30__ (SUBPGM)


VAR2 >> __20__ VAR2 >> __30__

SYNTAX: CALL ’SUBPGM-NAME’ USING BY CONTENT VAR1, VAR2.

3. HOW TO CODE SUBPGM AND RECEVIE THE DATA*:-

IF I WANT TO CODE A NEW SUBPGM:

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

ENVIRONMENT DIVISION. WE CAN DEFINE FILE IF REQUIRED, BUT VERY VERY RARE CASES

INPUT-OUTPUT SECTION.
FILE-CONTROL.

DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
1ST CHANGE 1. DEFINE ALL VARIABLE THEY ARE SENT BY MAINPGM.
2. IN GENERAL -PROJECT -> WE USE COPYBOOK TO SEND -RECEIVE DATA B/W PGMS
3. DO NOT USE VALUE CLAUSE.

2ND CHANGE PROCEDURE DIVISION USING VAR1,VAR2. >> VARIBALE SEQ OVER HERE , MU
ST MATCH WILL CALL STATEMENT OF MAINPGM

AFTER THE DATA LOGIC ..

3RD CHANGE GOBACK/EXIT PROGRAM. -- CONTROL SHOULD RETURN TO MAINPGM *DO NO


T CODE A STOP RUN.
COPYBOOK -> 1 - FILE LAYOUT
2 - PREPARE LOOK-UP
3 - DATA PASSING B/W MAINPGM - SUBPGM

==> HOW TO PASS THE CONTROL & DATA BACK TO MAINPGM*:-

CONTROL : 1. GOBACK 2. EXIT PROGRAM


--
DATA BACK TO MAINPGM : - IN COBOL - WE DONT HAVE ANY STATEMENT.
--> HOW TO SEND THE DATA BACK ANILL..
-> 1. USE -CALL BY REFERENCE
-> 2. UPDATE THE RESULT VARIABLE IN SUBPGM ONLY
-> 3. MAINPGM - CAN USE - RESULT VARIBALE AS - OUTPUT OF SUBPGM

==>
MAINPGM:
1. PREPARE ALL REQUIRED INPUT VARIABLE -REQUIED DATA (FILE/TABLE -> MOVE THE DA
TA -> SUBPGM COPYBOOK/VARIABLE)
2.** INTIALIZE ALL REQUIRED OUTPUT VARIABLE. (MOVE ZERO TO WS-COUNT-RED-BALL ,
MOVE ’Y’ TO IS-RED-BALL-PRESENT)
3. CALL ’SUBPGM-NAME’ USING INPUT-VARIABLE , OUTPUT-VARIABLE. ALWAYS SEND INP
UT & OUTPUT VARIABLE.
4. USE THE OUTPUT VARIBALE -TO DEICDE THE NEXT FLOW OF LOGIC..

SUBPGM:
1. USE LINKAGE SECTION , DEFINE ALL VARIBALE AS REQUIRED.
2. ON PROCEDURE DIVISION = CATCH/MAP DATA VARIBALE --> IF U MISS/SUFFLE -> 1. S0C4
2. S0C7 << DEVELOPER MISTAKE
3.** ALWAYS UPDATE ONLY OUTPUT VARIABLE’S (NEVER - EDIT ANY INPUT VARIBALE OF M
AINPGM)
4. GOBACK/EXIT PROGRAM

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

COBOL CLASS 17:-


------------------------------------------------------
CALL STATEMENT -- TYPE 1. STATIC 2. DYNAMIC 3. DIFF 4. BY REFERNECE OR CONTENT 5.
HOW TO CODE SUBPGM LINKAGE SECTION 6. POINTER
---
String Handling Verbs
- String, Unstring, Inspect & Referential
----------------------------------------

DATA IN COBOL - 1. NUEMRIC DATA --> COMPUTE.. ADD..


2. ALP-NUMERIC --> STRING HANDLING STATEMENTS

STRING HANDLING STATEMENT: STRING -> USED TO CONCATNATE THE INDIVIDULE STRING I
NTO 1 STRING
UNSTRING -> SPLIT 1 SINLE STRING INTO MULTIPLE

INSPECT -> 2 CONCEPTS 1. WE CAN COUNT NUMBER OF CHAR IN A GIVEN STRING - TALL
YING
2. WE CAN USE IT TO REPLACE CHAR IN A GIVEN STRING - REPLACING

CONCEPT -> REFERENTIAL MODIFICATION -> KIND OF SUB-STRING (SYNTAX ON ALP-NUM


EIC VARIBALE)

INSPECT -> TALLYING:

FIND THE LENGTH OF THE STRING IN A VARIBALE: WE USE THIS POINT IN COBOL-DB2 PGM ->
DEALING ’VARCHAR’ DATATYPE

HOW TO FIND A LENGTH OF STRING:--

EX: CUST-NAME PIC X(20) VALUE ’ANIL’.

DISPLAY LENGTH OF CUST-NAME. --> 20 -> A-Z/0-9/SPACE/SPECIAL CHAR ARE COUNTABLE

INSPECT CUST-NAME TALLYING STR-LEN FOR CHARACTER. 20

INSPECT CUST-NAME TALLYING STR-LEN FOR CHARACTER BEFORE INITIAL SPACE. == STR
-LEN = 4

ANILbbbbbbbb b -BLANK SPACE

EX: CUST-NAME: ANIL POLSANI

INSPECT CUST-NAME TALLYING STR-LEN FOR CHARACTER BEFORE INITIAL SPACE. == STR
-LEN = 4 - INCORRECT..

TO FIND A STRING LENGTH -> TRICK -> COUNT HOW MANY EXTRA LEFT OVER SPACE ARE PRE
SENT ON RIGHT SIDE::

TO FIND THE STR-LEN: 3 WAYS 1. INSPECT - INTERVIEW


2. OCCURS -PROJECT USED
3. REFERENTIAL - INTERVIEW

--INSPECT: 2STEPS: 1. FIND EXTRA SPACE LENGTH


2. SUBTRACT THE SPACE LEN WITH TOTAL LENGTH .

CUST-NAME; X(20) -> ANIL POLSANI

1.
MOVE ZERO TO WS-SPACE-LEN.
INSPECT FUNCTION REVERSE(CUST-NAME) TALLYING WS-SPACE-LEN FOR LAEDING SPAC
E.

ANIL POLSANIbbbbbbbb reverse - bbbbbbbbINASLOP LINA == WS-SPACE-LEN = 8

2.
MOVE ZERO TO STR-LEN.
COMPUTE STR-LEN = LENGTH OF CUST-NAME - WS-SPACEL-LEN.
12 20 8
-- REFERENTIAL -> SUB-STRING
START-POS:NUM OF CHAR
ACCOUNT-NUMBER: S12222 IF ACCT-NUMBER(1:1) = ’S’ -SAVINGS
C11222 (1:1) = ’C’ -CURRENT

S1111BA888 IF ACCT-NUMBER(6:2) = ’BA’ - THEN DO THIS..

MOVE LENGTH OF CUST-NAME TO STR-LEN. (20)


ANIL POLSANIbbbbbbbb
PERFORM VARYING WS-I FROM STR-LEN BY -1 UNTIL WS-I < 20
IF CUST-NAME(WS-I:1) = SPACE
CONTINUE
ELSE
DISPLAY ’STR-LEN IS ’ WS-I
EXIT THE LOOP
END-IF
END-PERFORM.

==> TRAINER -. TICKY

-> ANY PROJECT PGM -> IF U SEE THE PGM IS GOING WRONG PATH -> ABEND THE PGM

PROJECT -> MOVE 3200 TO ABEND-CODE-VAR.


CALL ’ABENDPGM’ USING ABEND-CODE-VAR. 1. ABENDPGM -WIL BE EXISTING
2. ABEND -> ABCODE - 3200

TRAINING -> 01 WS-ABENDPGM PIC X(8) VALUE ’ANILPGM’.

CALL WS-ABENDPGM. 1. DYNAMIC - SUBPGM LOAD NOT REQUIRED.


2. DURING EXECUTION -> CALL -TO A PGM -WHICH DO NOT HAVE LOAD
--> ABENDING -> S806 -> LOAD NOT FOUND

PROJECT -> JCL JOB -> SOMETIME U NEED ABEND THE UR JOB

//STEPNAME EXEC PGM=ABEND806 --> THIS PGM NEVER EXIST -- EXEUTING -> S806

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

You might also like