Cobol Combined
Cobol Combined
----------------------------------------------
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:-
> 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.
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
1. BATCH PROCESSING:
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
2. ONLINE PROCCESING
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..
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
================================================================================
================================================================================
==========
Introduction to COBOL
-----------------
MAINFRAME --> IT IS A BIG COMPUTER -> USED FOR DATA 1. STORE & 2. PROCESSING
--> PGM ARE LENGTHY -> SMALL LOGIC PGM --> 300 LINES OF CODE
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** :-
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)
>> 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 ====
DATA DIVISION.
FILE SECTION. -> FILE VARIBALE.
WORKING-STORAGE SECTION. -> DEVELOPER VARIBALE -> USE FOR BUILDING LOGIC + DB
2
LINKAGE SECTION. -> DIFF STYLE -> LINKING VARIABLE
>> 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
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
--> 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..
--> ANALYS THE PGM: -> FULL PGM - CHECK AND TELL ME -WHAT THE PGM DOING??
---
================================================================================
================================================================================
=================
3. Introduction to JCL
---------------------------------
-> 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
COBOL -ENG -> SRC CODE. -- NOT EXECUTABLE --> CONVERT --> LOAD MODULE -> EXECUTA
BLE
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
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
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
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:-
>> 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 ..
-> 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 .
//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
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? !!
MIND -> 1. BEFORE THE FAILED STEP - HOW MANY STEPS RAN FINE? 14
2. AFTER THE FAILED STEP - HOW MANY ARE WAITING? 15 + 1
==> DEV -> CODE ANYTHING NEW -> CAN IT GO DIRECTLY IN PRODCUTION.. NO
CODE + REVIEWED
==> DD STATEMENT**
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’
--
//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
================================================================================
================================================================================
=============
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)
TSO -> COBOL PGM (ONLINE BATCH) , JCL JOB (TEST , PROD) , LOAD (ONLINE BATCH) , FILE
S (TEST/PROD) , DB2 TABLE(TEST,PROD) -- ALL CODING/DATA
===> TODAY -> WE WANT TO CODE A COBOL PGM , COMPILE -LOAD , USE FOR EXECUTION JCL
, SEE THE OUTPUT.
>> 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
OPTION: ____________0_______________________________________________
0 SETTINGS
1 VIEW
2 EDIT
3 UTILITES*** DATASET
4 FORGROAD
..
..
NAVIGATE IN THE Z/OS -> 1. FORWARD/NEXT SCREEN --> CHOOSE AN OPTION FROM THE ME
MU
2. BACKWARD/EXIT SCREEN/PREVIOUS SCREEN -> FUCNTION F3
==> 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
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)
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
4. ATTRIBUTE:-
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
================================================================================
================================================================================
=======
>> 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.*
>> COBOL COLOR FORMAT -> DEFAULT -> RED -> COBOL KEYWORD
GREEN -> DEVELOPER NAME/WORDS
TO GET THIS COLOR
’HI COB’ (HILIGHT COBOL COLOR)
WE NEED A COMPILER JOB -> PROJECT -> WE EXECUTE THE COMPILER JOB -> THRU TOOLS
2. EDIT THE COMPILER JOB -> WITH UR DATASET NAME * PGM NAME
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)
1. GOTO 3.4 -> IBMUSER.T5.COBOL -> EDIT -> CREATE A RUN JCL JOB ’S CBLPGMJ1’
2. CODE THE RUN JCL JOB -> EXECUTE (SUBMIT)
GOTO SPOOL -> FROM ISPF -> OPTION ’S - SDSF’ --> OPTION ST - STATUS OF THE JOB.. (U W
ILL SEE ALL LIST OF JOB)
===============================================
4. Introduction to Z/OS (TSO-ISPF) - THEORY
---
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)
TSO -> COBOL PGM (ONLINE BATCH) , JCL JOB (TEST , PROD) , LOAD (ONLINE BATCH) , FILE
S (TEST/PROD) , DB2 TABLE(TEST,PROD) -- ALL CODING/DATA
===> TODAY -> WE WANT TO CODE A COBOL PGM , COMPILE -LOAD , USE FOR EXECUTION JCL
, SEE THE OUTPUT.
>> 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
OPTION: ____________0_______________________________________________
0 SETTINGS
1 VIEW
2 EDIT
3 UTILITES*** DATASET
4 FORGROAD
..
..
NAVIGATE IN THE Z/OS -> 1. FORWARD/NEXT SCREEN --> CHOOSE AN OPTION FROM THE ME
MU
2. BACKWARD/EXIT SCREEN/PREVIOUS SCREEN -> FUCNTION F3
==> 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
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)
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
4. ATTRIBUTE:-
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
================================================================================
================================================================================
======
-> PROVIDE THE DATASET NAME: 2 WAYS: FULL NAME > IBMUSER.T5.COBOL -> HIT ENTER
PARTIAL IBMUSER.T5.*
>> COBOL COLOR FORMAT -> DEFAULT -> RED -> COBOL KEYWORD
GREEN -> DEVELOPER NAME/WORDS
TO GET THIS COLOR
’HI COB’ (HILIGHT COBOL COLOR)
WE NEED A COMPILER JOB -> PROJECT -> WE EXECUTE THE COMPILER JOB -> THRU TOOLS
2. EDIT THE COMPILER JOB -> WITH UR DATASET NAME * PGM NAME
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)
1. GOTO 3.4 -> IBMUSER.T5.COBOL -> EDIT -> CREATE A RUN JCL JOB ’S CBLPGMJ1’
2. CODE THE RUN JCL JOB -> EXECUTE (SUBMIT)
GOTO SPOOL -> FROM ISPF -> OPTION ’S - SDSF’ --> OPTION ST - STATUS OF THE JOB.. (U W
ILL SEE ALL LIST OF JOB)
===============================================
4. Introduction to Z/OS (TSO-ISPF) - THEORY
---
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)
TSO -> COBOL PGM (ONLINE BATCH) , JCL JOB (TEST , PROD) , LOAD (ONLINE BATCH) , FILE
S (TEST/PROD) , DB2 TABLE(TEST,PROD) -- ALL CODING/DATA
===> TODAY -> WE WANT TO CODE A COBOL PGM , COMPILE -LOAD , USE FOR EXECUTION JCL
, SEE THE OUTPUT.
>> 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
OPTION: ____________0_______________________________________________
0 SETTINGS
1 VIEW
2 EDIT
3 UTILITES*** DATASET
4 FORGROAD
..
..
NAVIGATE IN THE Z/OS -> 1. FORWARD/NEXT SCREEN --> CHOOSE AN OPTION FROM THE ME
MU
2. BACKWARD/EXIT SCREEN/PREVIOUS SCREEN -> FUCNTION F3
==> 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
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)
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
4. ATTRIBUTE:-
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
================================================================================
======================================================================
>> 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.*
>> COBOL COLOR FORMAT -> DEFAULT -> RED -> COBOL KEYWORD
GREEN -> DEVELOPER NAME/WORDS
TO GET THIS COLOR
’HI COB’ (HILIGHT COBOL COLOR)
================================================================================
================================================================================
=====
Introduction to COBOL
-----------------
MAINFRAME --> IT IS A BIG COMPUTER -> USED FOR DATA 1. STORE & 2. PROCESSING
--> PGM ARE LENGTHY -> SMALL LOGIC PGM --> 300 LINES OF CODE
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** :-
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)
>> 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
DATA DIVISION.
FILE SECTION. -> FILE VARIBALE.
WORKING-STORAGE SECTION. -> DEVELOPER VARIBALE -> USE FOR BUILDING LOGIC + DB
2
LINKAGE SECTION. -> DIFF STYLE -> LINKING VARIABLE
>> 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
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
--> 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..
--> ANALYS THE PGM: -> FULL PGM - CHECK AND TELL ME -WHAT THE PGM DOING??
================================================================================
================================================================================
============
AS DEVELOPER: 3 STEPS 1. CODE THE COBOL PGM 2. COMPILE -LOAD 3. CODE THE RUN JCL -
EXECUTE
VARIABLE -> ITS A TEMP MEMORY SPACE ALLOCATED IN THE PGM , USED TO STORE AND PR
OCESS THE DATA
EX: VARA
VARB
HOW TO TELL THE SYSTEM: IN ANY PROG LANG -> WE FOLLOW ’SYNTAX" => RULE TO CODE
A LINE IN PGM
==> USE THE LEVEL NUMBER - > ODD SERIES , MULTIPLE 5/10 > EX: 01 - 03,05,07.. EX: 01 -0
5,10,15..
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
==> ABOVE IS BOOK POINT <=== ==> BELOW IS THE PROJECT POINT <===
Q? IN PGM P2 -> 01 CLAIM-STATUS PIC... -> ELEMENTARY VARIABLE(PIC) + BUSINESS -> STA
TUS OF CLAIM ,APPROVE/REJECTED
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)
IN THE PGM -> DEFINE THE VAIRBALE MEMORY SPACE -> THEN WE STORE THE DATA
WHEN WE ARE DEVELOPER -> WILL THE CUST/USER -> WILL THEY COME AND TELL THE TYPE
IN THE PGM..
1. IF THE VALUE IS REQUIRED TO BE USED FOR CALCUATION --> MUST DEFINE IT AS NUMERI
C ,, IF NOT - ALP-NUM.
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
================================================================================
================================================================================
===========
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.
2 REASON: 1. WHEN UR PGM STARTS 1ST TIME -> ALLOCATE THE MEMORY SPACE -. WHICH
WILL ALREADY HAVE PREVIOUS PGM DATA
INITILIZING CAN BE DONE IN 2 WAYS: 1. VALUE CLAUSE --> DATA DIVISION -> DECLARING TH
E VARIBALE. <<1ST VALUE
2. MOVE/INITIALIZE KEYWORD --> PROCEDURE DIVISION
>> NUMERIC DATA -> 01 VAR-A PIC 9(03) VALUE ZERO. << FIGURTIVE CONSTANT
01 VAR-B PIC 9(03) VALUE 100. >> NUM CONSTANT.
DISPLAY -- display -> CONVERTING INTO ’DISPLAY’ > OPTION CAPS ON << ALWAYS ACTIVE
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??
==> TODAY:
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
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.
-> ANOTHER USER --> I NEED THE SIMILAR REPORT -> ’INDIA’
DEV-1 --> TOOK THE PGM P1 -> COPIED THE PGM -> P2 -> IN THE PGM -LOGIC
--
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’
DISPLAY ’CUSTOMER NAME IS’ CUST-NAME. O/P -> CUSTOMER NAME IS ANIL KUMAR
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)
IN THE SUPT -> SKILL + TIME -> ABEND -> 2-4HR (SLA-RULES)
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’.
================================================================================
================================================================================
=================
==> 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..
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
=AM I DOING IT CORRECT -> NO --> WE CANNOT EDIT THE PGM , EACH TIME DATA CHANGE
S.
=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
S9(02) -> 20 --DISPLAY -> SPOOL --> NOT SHOW => +20
SHOW -> 2{ { +0
21 2A
22 2B
+33 --> 3C
================================================================================
================================================================================
==========
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
WE HAVE 15 STATEMENT -- HOW TO CODE 1000 LINES OF PGM = REPETITION OF THE STATE
MENT
==>
WHY DO WE USE MOVE IN MY PGM:
INPUT -FILE-> -> GET THE DATA -> PGM (STORE IN INPUT VARIABLE <<APPLY BUSINESS RULE
S>> --> OUTPUT VARIABLE ))SEND -- FILE
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
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
>> 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)
VARA- 9(03).
VARB- X(03). VALID ?
1. MOVE VARA TO VARB. YES
2. MOVE VARB TO VARA. YES
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..
> 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
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
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.
===
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.
================================================================================
==========================================================
==> IF STATEMENT: - CONDITIONAL STATEMENT , CHECK SOME VALUE AND CONTROL THE EX
ECUTION FLOW.
SYNTAX:
IF-ELSE IF CONDITION
T- S1,S2
ELSE
F- S3,S4
END-IF.
->
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’.
==> QUESTION -> IF THIS PGM -CAN I USE THIS PGM FOR MY PRODCUTION: -
-==> 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
CUSTPGM3:
PROCEDURE DIVISION.
000-MAIN-PARA.
DISPLAY ’CUSTPGM1 STARTED’.
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
6 MALE = 6 TIME
4 FEMALE = 8 TIME ==> 14 TIMES
================================================================================
================================================================================
===
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
>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
PERFORM vs GO TO:
>>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.
>> 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.
PERFORM -- LOOP:
INLINE PERFORM:
1. PERFORM
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
X-PARA.
S1
S2
S3.
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
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**
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*
======
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.
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
================================================================================
================================================================================
===========
X-PARA.
S1.
S2.
A-PARA.
S3
S4.
Z-PARA.
S5
S6.
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::
-----------------
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
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
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 ..
---
================================================================================
================================================================================
EX: ACCOUNT FILE --> OPEN - WE CAN ONLY SEE DATA RECORDS
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.
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 )
INPUT FILE**
1. OPEN FILE SYNTAX: OPEN INPUT FILE-NAME. INPUT -CALLED OPENING MODE
2. READ:
READ FILENAME
AT END
-CLOSE THE LOOP
NOT AT END
-PROCESS THIS RECORD
END-IF.
READ FILENAME
AT END
-CLOSE THE LOOP.
OUTPUT FILE**
1.OPEN THE FILE SYNTAX: OPEN OUTPUT FILENAME.
FILE-1 => INPUT -> ONLY READ + COMPUTE UPDATE DATA IN PGM + WRITE --> FILE-2
1000 1200
==
>> 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
-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
>> 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
>> FILE STATUS: THIS IS THE RETURN CODE , WHICH TELL FILE OPERATION RESULT.
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)
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
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
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.
================================================================================
==========================================================
COBOL CLASS 11:-
=============================================
COBOL -> COPYBOOK
COPYBOOK --> PIECE OF COBOL CODE , STORED IN ANOTHER PDS, CAN BE USED IN MANY PG
M.
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.
COPY ACCTCPY1
REPLACING ACCT-DETAILS BY ACCT-DETAILS-OUT.
5- INFORMATION -> WHEN U COMPILE - COMPILER GET SRC CODE + COPYBOOK --> LOAD
MODULES
5. IMPLEMENT /DEPLOY -> THE COPYBOOK & ALSO ALL PGM THAT ARE EFFECT.
====
ACCTPGM1 -- ACCTPGM2 -> RUN JCL**
---
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.
FILE =- DD PARAMETER:
---
LAST POINT -> WE DONT SEE THE DATA IN FILE - USING 3.4 (NOT SO READABLE..)
SOFTWARE -> FILE MANAGER --> ISPF -> OPTION = M , OPTION - 13 =FMN -> OPTION 1 -VIE
W
-> ENTER --
================================================================================
================================================================================
========
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
1. MEMORY UNIT -> BYTES - FOR EACH DIGIT = 1 BYTES -- 9(04) = 4 BYTES
2. SYNTAX:
03 ACCT-BAL PIC S9(05) COMP.
1. MEMORY UNIT --> NIBBLE 1 BYTE = 2 NIBBLE -> STORE 1 DIGIT IN 1 NIBBLE -> 2 DIGIT = 1 B
YTE
2. SYNTAX:
03 ACCT-BAL PIC S9(05) COMP-3.
DATA SECURITY? -> USING COMP OR COMP-3 -> WE CAN SECURE THE DATA , ITS NOT IN RE
ADABLE FORMAT -WHEN U OPEN THE FILE.
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-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
-> ACCOUNT-TYPE : LIMITED > SAVING , CURRENT , FD , DEMAT , LOAN , CREDIT ..1 OR 2 =>
LIMITED -WE CAN LIST
-> CUST_NAME : UNLIMITED > !!!
AFTER THE ORDER IS PLACED -> RAJESH 1. RELAX LET THE PRODUCT COME
2. TRACK THE ORDER - EVER HOUR
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??
HOW TO READ THESE DATA?? -- TO MAKE THE DATA CODE MORE READABLE -> 88 LEVEL NU
MBER
EX: IN PGMP1 --> IF ORDER-STATUS-CODE = ’2’ -U NEED TO GO OPEN THE COPYBOOK , CHE
CK 88 LEVEL
DO THIS???
================================================================================
=========================================================================
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.
EX:1
03 CALIM-STATUS PIC X(10). APPROVED
03 CLAIM-TYPE PIC X(10). MEDICAL
-
SHARE THE MEMORY SPACE -- USE REDEFINES
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
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)
EX: 01 GROUP-1.
03 A
03 B
03 C
01 GROUP-2.
03 D
03 E
03 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
MATCHING LOGIC: INPUT FILE DATA > REQUIRED > REFERENCE FILE 1. VARLDATING 2. MOR
E VALUE.
1. BEFORE -> SORT THE FILE -> COMMON KEY FIELDS (THRU JCL)
2. IN COBOL PGM
END-IF
END-IF.
================================================================================
================================================================================
=================
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)
==> 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.
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)
--> TO ACCESS THE OCCURS VAIRBALE MEMORY -> WE NEED TO POIVIDE THE MEMORY OCCU
RANCE -> DO USING A ’SUB-SCRIPT’
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.
==> 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.
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.
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
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 FILE PGM -> MULTIPLE INPUT FILE 1. MAIN INPUT FILE
2. OTHER REFERENCE FILE
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).
--> 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)
OR OR OR
DATA: IF THE DATA IN OCCURS TABLE IS IN SORT ORDER ? YES -> SEARCH ALL
NO -> SEARCH
1ST ACCT-RECORD
EX: B1,B2,B3... B10 -FIND => B8
B1=B8? , B2=B8... B8=B8 --> FOUND -> DISPLAY BR-NAME(A1) -> BRANH-NAME
^
> 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.
=====
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 .
================================================================================
================================================================================
=============
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
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)
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:
2. COMPILATION: 1. MAINPGM LOAD & SUBPGM LOAD MUST BE COMBINED -CREATE A SING
LE LOAD MODULE
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.
2. COMPILATION: 1. MAINPGM LOAD & SUBPGM LOAD ARE NOT COMBIINED > MULTIPLE LO
AD MODULE
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.
--> 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
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
==>
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
================================================================================
================================================================================
===========
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
FIND THE LENGTH OF THE STRING IN A VARIBALE: WE USE THIS POINT IN COBOL-DB2 PGM ->
DEALING ’VARCHAR’ DATATYPE
INSPECT CUST-NAME TALLYING STR-LEN FOR CHARACTER BEFORE INITIAL SPACE. == STR
-LEN = 4
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::
1.
MOVE ZERO TO WS-SPACE-LEN.
INSPECT FUNCTION REVERSE(CUST-NAME) TALLYING WS-SPACE-LEN FOR LAEDING SPAC
E.
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
-> ANY PROJECT PGM -> IF U SEE THE PGM IS GOING WRONG PATH -> ABEND THE PGM
PROJECT -> JCL JOB -> SOMETIME U NEED ABEND THE UR JOB
//STEPNAME EXEC PGM=ABEND806 --> THIS PGM NEVER EXIST -- EXEUTING -> S806
================================================================================
================================================================================
==================