0% found this document useful (0 votes)
19 views12 pages

JCL

The document provides a comprehensive guide on SORT operations, including sorting, removing duplicates, formatting records, and conditional processing in JCL. It also covers COBOL programming concepts such as data division, file handling, and string manipulation. Additionally, it discusses various methods for joining datasets and handling arrays in COBOL.

Uploaded by

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

JCL

The document provides a comprehensive guide on SORT operations, including sorting, removing duplicates, formatting records, and conditional processing in JCL. It also covers COBOL programming concepts such as data division, file handling, and string manipulation. Additionally, it discusses various methods for joining datasets and handling arrays in COBOL.

Uploaded by

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

//SORT1 EXEC PGM=SOR

//SYSPRINT DD SYSOUT=*

//SYSOUT DD SYSOUT=*

//SORTIN DD DSN=

//SORTOUT DD DSN=

//SORTWK01 DD SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA

//SORTWK02 DD SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA

//SORTWK03 DD SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA

//SYSIN DD *

SORT BASIC

SORT FIELDS=(starting position, Length, format, order)

SORT FIELDS=(1,10,CH,ASC)

REMOVE DUPLICATE

SORT FIELDS=COPY

SUM FIELDS=NONE TO ERASE DUPLICATES

SUM FIELDS=ALL WITH THE DUPLICATES

SUM FIELDS=(NONE,XSUM) XSUM IS A DATASET CONTAINING DUPLICATE VALUES

REMOVE DUPLICATE AND WRITE FIRST RECORD OF THE DUPLICATE (EQUALS)

SORT FIELDS=(1,80,CH,A),EQUALS

SUM FIELDS=NONE

MULTIPLE SORTS

SORT FIELDS=(1,6,CH,A,9,3,ZD,A)

**********************************************************************************

OUTREC/INREC – TO FORMAT THE RECORDS – UNEDITED, EDITED OR CONVERTED INPUT FIELDS

TO ADD SPECIFIC COLUMNS ALONE

SORT FIELDS=COPY

OUTREC FIELDS=(1,20,25,6)
TO ADD SEQUENCE NUMBER TO THE ROW

SORT FIELDS=(1,3,ZD,A)

INREC FIELDS=(1,20,X,25,6,X,SEQNUM,4,ZD)

X – REPRESENTS SINGLE BLANK SPACE

SEQNUM,4 - REPRESENTS 4 DIGIT SEQUENCE NUMBER

Overwrite input record content – OVERLAYS 1,6 DATA IN 47TH COLUMN

//SORTIN DD DSN=FILE,DISP=SHR

//SORTOUT DD SYSOUT=*

//SYSIN DD *

OPTION COPY

INREC OVERLAY=(47:1,6)

TRAN OPTION

OPTION COPY

INREC OVERLAY=(45:45,8,TRAN=LTOU CHANGE LOWER CASE TO UPPER CASE

TRAN=ETOA – CONVERTS EBCDIC TO ASCII

TRAN=ATOE – CONVERTS ASCII TO EBCDIC

FIND REPLACE

OPTION COPY

INREC FINDREP=(IN=C’Mr.’,OUT=C’Mister’)

OPTION COPY

OUTREC FINDREP=(IN=C’TML’,OUT=C’TPL’)

OR

OUTREC FINDREP=(INOUT=(C’TML’,C’TPL’))

Adding sequence number to the output file & INCREMENT THE NUMBER WITH 2

OPTION COPY

BUILD=(1:1,5,10:SEQNUM,4,ZD,START=1000,INCR=2)

Adding Header/Trailer rec

SORT FIELDS=COPY

OUTFIL REMOVECC,

HEADER1=(1:C’HDR’,10:X’020110131C’),
TRAILER1=(1:C’TRLR’,TOT=(10,9,PD,TO=PD,LENGTH=9))

OUTFIL & INCLUDE (DDNAMES – SORTIN,SORTOF01, SORTOF02,SORTOF03)

SORT FIELDS=COPY

OUTFIL FILES=01,INCLUDE=(1,6,CH,EQ,C’JCL ‘)

OUTFIL FILES=02,INCLUDE=(1,6,CH,EQ,C’VSAM ‘)

OUTFIL FILES=04,INCLUDE=(1,6,CH,EQ,C’COBOL ‘)

STARTREC, ENDREC (DDNAMES – SORTIN ,OUTPUT1,OUTPUT2,OUTPUT3)


SORT FIELDS=COPY
OUTFIL FNAMES=OUTPUT1,ENDREC=200
OUTFIL FNAMES=OUTPUT2,STARTREC=201,ENDREC=400
OUTFIL FNAMES=OUTPUT3,STARTREC=401,ENDREC=600

STOPAFT – TO STOP COPYING RECORDS BASED ON REQUIREMENT

OPTION COPY, STOPAFT=50

CONDITIONAL processing (IF THEN)

OPTION COPY

INREC IFTHEN=(WHEN=(6,1,CH,NE,C’ ‘),BUILD=(1:1,15),

IFTHEN=(WHEN=(6,1,CH,EQ,C’ ‘),BUILD=(1:1,5,7:C’EMPTY ‘)

JOINKEYS UNPAIRED – FULL OUTER JOIN

//MAIN DD DSN=

//LOOKUP DD DSN=

//MATCH DD DSN=OUTPUT1

//NOMATCH1 DD DSN=OUTPUT2

//NOMATCH2 DD DSN=OUTPUT3

//SYSIN DD *

JOINKEYS F1=MAIN,FIELDS=(1,4,A)

JOINKEYS F2=LOOKUP,FIELDS=(1,4,A)

JOIN UNPAIRED,F1,F2 (UNPAIRED IS FULL OUTER JOIN)

REFORMAT FIELDS=(?,F1:1,4,F2:1,4)

OPTION COPY

OUTFIL FNAMES=MATCH,INCLUDE=(1,1,CH,EQ,C’B’),BUILD=(1:2,4)
OUTFIL FNAMES=NOMATCH1,INCLUDE=(1,1,CH,EQ,C’1’),BUILD=(1:2,4)

OUTFIL FNAMES=NOMATCH2,INCLUDE=(1,1,CH,EQ,C’2’),BUILD=(1:2,4)

B – MATCHED RECORDS

1 – PRESENT IN FILE1 BUT NOT IN FILE2

2 – PRESENT IN FILE2 BUT NOT IN FILE1

UNPAIRED F1 (LEFT OUTER JOIN) – MATCH RECORDS AND F1 UNMATCHED RECORDS

UNPAIRED F2 (RIGHT OUTER JOIN) – MATCH RECORDS AND F2 UNMATCHED RECORDS

UNPAIRED F1 AND F2 (FULL OUTER JOIN) – MATCHED RECORDS & UNMATCHED RECORDS

ONLY UNPAIRED F1 – UNMATCHED F1 RECORDS

ONLY UNPAIRED F2 – UNMATCHED F2 RECORDS

ONLY UNPAIRED F1 & F2 / UNPAIRED, ONLY– UNMATCHED F1 & F2 RECORDS

REFORMAT is not required if ONLY is mentioned

Inner join

SORT FIELDS=COPY

JOINKEYS FILES=F1,FIELDS=(1,10,A) KEY VALUE – 1 TO 10, MATCHING RECORDS WILL BE WRITTEN


IN OUTPUT FILE

JOINKEYS FILES=F2,FIELDS=(1,10,A)

REFORMAT FIELDS=(F1,1:70,F2,1:10)

Non matching records from f1

JOINKEYS FILES=F1,FIELDS=(1,10,A)

JOINKEYS FILES=F1,FIELDS=(1,10,A)

JOIN UNPAIRED,F1,ONLY

REFORMAT FIELDS=(F1:1,71)

INCLUDE / OMIT

SORT FIELDS=COPY

INCLUDE COND=(1,6,CH,EQ,C’COBOL’)
SORT FIELDS=COPY

OMIT COND=(1,6,CH,EQ,C’COBOL’)

CONVERT

BINARY TO ZONE DECIMAL(DISPLAYABLE FORMAT)

OPTION COPY
OUTREC FIELDS=(1,4,BI,TO=ZD,LENGTH=6)

PACKED DECIMAL TO ZONE DECIMALS

OPTION COPY
OUTREC FIELDS=(1,4,PD,TO=ZD,LENGTH=6)

COND

COND=(RC-USER,OPERATOR,STEP-RC)

COND=(5,LE,4) – CONDITION IS FALSE , SO DOWNSTREAM STEP EXECUTES

COND=(4,GT,2) – CONDITION IS TRUE, SO STEP GETS BYPASSED

COBOL

PROGRAM

DIVISIONS

1-6 ID PROGRAM-ID. PROGRAM-NAME.

7-12 ED

CONFIGURATION SECTION. SOURCE COMPUTER. OBJ COMPUTER

INPUT-OUTPUT SECTION. FILE-CONTROL.

SELECT FILE ASSIGN TO DDNAME

ORGANIZATION IS SEQUENTIAL
FILE STATUS IS FS.

INPUT-OUTPUT CONTROL

13-15 DD

FILE SECTION.

FD filename

01 record name

Nn … fieldlength type.

Nn … fieldlength type.

WORKING-STORAGE SECTION.

01 ws-variable1 PIC 99.

LINKAGE SECTION. (USED FOR DATA PASSED BY EXTERNAL PROGRAMS)

01 LS-ID PIC 9(5).

16+ PD

SECTIONS

PARAGRAPHS

SENTENCES

STATEMENTS

CHARACTERS

FIELDS

1-6 SEQUENCE FIELD

7 INDICATOR FIELD

8-11 AREA A

12-72 AREA B

73-80 IDENTIFICATION FIELD

LEVELS

01 Record description entry

02-49 Group and elementary items

66 Rename clause items

77 Items which cannot be sub-divided

88 condition name entries


CLAUSE

REDEFINES used to define a storage with different data description. Redefined & redefining level
number should be same. 66 & 88 cannot be redefined.

RENAMES used to give different names to the existing data items. Used to regroup the data
items & give a new name to them.66 level

01 WS-OLD.
10 WS-A PIC 9(12).
10 WS-B PIC X(20).
10 WS-C PIC A(25).
10 WS-D PIC X(12).
66 WS-NEW RENAMES WS-A THRU WS-C.

USAGE - Specifies OS in which format the data is stored. cannot be used in 66 88 levels

Display - stored in ASCII format as (1 byte for each letter) default usage.

Computational - stored in Binary format. Data item must be integer

01 WS-NUM PIC S9(n) USAGE IS COMP.

If 'n' = 1 to 4, it takes 2 bytes.


If 'n' = 5 to 9, it takes 4 bytes.
If 'n' = 10 to 18, it takes 8 bytes.

COMP-1 HEXADECIMAL FORMAT, NO PIC CLAUSE, 1 WORD = 4BYTES

COMP-2 HEXADECIMAL FORMAT, 2 WORDS=8 BYTES

COMP-3 PACKED DECIMAL FORMAT,EACH DIGIT=1/2 BYTE(NIBBLE), SIGN – RIGHT


MOSTNIBBLE

COPYBOOK -DATA STRUCTURE

PERFORM

PERFORM THRU PERFORM PARA1 THRU PARAN.

PERFORM UNTIL

PERFORM PARA1 UNTIL COUNT=5

PERFORM PARA1 WITH TEST BEFORE UNTIL COUNT=5 (DEFAULT)

PERFORM PARA1 WITH TEST AFTER UNTIL COUNT=5

PERFORM TIMES PERFORM PARA1 5 TIMES.

PERFORM VARYING PERFORM PARA1 VARYING A FROM 1 BY 1 UNTIL A=5.


STRING HANDLING

INSPECT

Count a particular character in a string

INSPECT WS-A TALLYING WS-CNT FOR ALL ‘-‘.

Convert LC to UC
01 wp-char-case.
05 wp-upper-case pic x(26) value "ABCD ... Z"
05 WP-LOWER-CASE PIC X(26) VALUE ' abcd... z'

INSPECT WR-IN-STRNG5
converting WW-LOWER-CASE to ww-upper-case

Replace particular character to another character in a string

INSPECT WS-A REPLACING ALL ‘-‘ BY ‘/’.

FIRST OCCURRENCE REPLACEMENT


INSPECT WR-IN-STRN
REPLACING FIRST 'R' BY 'G'

Replace a set of characters to another set of characters in a string

STRING & UNSTRING to format or split the string as per the need.

CONTINUE NEXT SENTENCE


Continue gives the control after It gives control to the next implicit scope
terminator which is a period.

the next explicit scope terminator.

Explicit Scope terminators are END-IF,

END-PERFORM, END-EVALUATE, etc.

OPEN INPUT FILE1


IF WW-FILE-STATUS = ‘00’
CONTINUE
ELSE
DISPLAY ‘ FILE OPEN FAILED’
END-IF
READ FILE1
IF WW-VAR1 = WW-VAR2
NEXT SENTENCE
ELSE
MOVE WW-VAR-3 TO WW-VAR1
END-IF
IF WW-VAR1 = WW-VAR4
DISPLAY 'MATCHED'
ELSE
MOVE WW-VAR4 TO WW-VAR1
END-IF. -----> Implicit Scope terminator.
PERFORM P100-BUSINESS-LOGIC

MOVE

SIMPLE MOVE

MOVE “HELLOW WORLD” TO WS-VARIABLE

GROUP VARIABLE MOVE

MOVE WS-GRP1 TO WS-GRP2

CORRESSPONDING MOVE

MOVE CORRESSPONDING GRP1-VAR TO GRP2-VAR

DATAITEM-1 IN GRP1 TO DATAITEM-1 IN GRP2

REFERENCE MODIFICATION MOVE

MOVE DATAITEM-1(6,5) TO DATAITEM-2

ARRAY

Occurs – 02 thru 49 level number

2 WAYS TO REFER THE ELEMENTS

INDEX offset or number of displacement position. INDEX BY clause, must not be


defined in working storage section.

SUBSCRIPT An integer data item which describes the number of occurrences. Not an
actual memory location rather refers to a position of data item. Subscript should be
declared in working storage section

INDEX SUBSCRIPT
Offset or displacement from the beginning Number of occurrences of the array element
INDEXED BY clause is used INDEXED BY clause not used
INDEX is faster as it refers to the memory SUBSCRIPT is slower compared to INDEX as it
location so has comparatively better doesnot refer memory location
performance
INDEX is not defined in working storage SUBSCRIPT has to be defined in working storage
Initialized by SET operations Initialized by VALUE or MOVE statement
SEARCH SEARCH ALL
Used to find an element/record in linear Used to find an element/record in binary
manner – sequential search manner – binary search
Can use for the table which has records either Can be used for the table which has records
in sorted or unsorted manner only in sorted manner
INDEX must be initialized INDEX need not be initialized
Condition can’t be compound condition (i.e. Only ‘EQUAL TO’ comparison is possible.
you cannot concatenate multiple conditions Compound condition is allowed
using AND/OR)
No concept of ASCENDING or DESCENDING key ASCENDING or DESCENDING Key must be
defined in Array
Applied for 1/2/any dimensional array Applied only for 1 dimensional array
Access is slower Access is faster
We can use multiple WHEN conditions We can use only one WHEN condition
SET verb is used to increase or decrease the NO SET Verb is required
offset value
LOGIC LOGIC
Index should be initialized. SEARCH statement
Binary search works like this:-
auto-increments index S1 by 1 after each single
element’s look up. First of all array on which search is to be made
should be in ascending order
Element to be searched is compared with
middle element of array
If matches, search process ends.
If search element is less than middle element,
array is divided into two halves considering
middle element, and search will be done only in
first half
If search element is greater than middle
element, only second half will be searched
further
The search operation continues same way in
selected half until either element is found or
there are no more element to search.

Example Example
Data division
01 NAME PIC A(15). 77 ID PIC 9(4).
01 STUDENT-DATA. 01 STUDENT-DATA.
05 STUDENT-ARRAY OCCURS 500 TIMES INDEXED 05 STUDENT-ARRAY OCCURS 500 TIMES
BY S1. ASCENDING KEY IS
10 STUDENT-ID PIC 9(04). STUDENT-ID
10 STUDENT-NAME PIC A(15). INDEXED BY S1.
10 STUDENT-MARKS PIC 9(03). 10 STUDENT-ID PIC 9(04).
10 STUDENT-NAME PIC A(15).
Procedure Divison 10 STUDENT-MARKS PIC 9(03).
SET S1 TO 1.
SEARCH STUDENT-ARRAY
SEARCH STUDENT-ARRAY
AT END
AT END
DISPLAY ‘STUDENT NOT FOUND’.
DISPLAY ‘STUDENT NOT FOUND’.
WHEN ID = STUDENT-ID(S1)
WHEN NAME = STUDENT-NAME(S1)
DISPLAY ‘STUDENT-NAME:’ STUDENT-
DISPLAY ‘STUDENT-ID:’ STUDENT-ID(S1)
NAME(S1)
DISPLAY ‘STUDENT-MARKS:’ STUDENT-
DISPLAY ‘STUDENT-MARKS:’ STUDENT-
MARKS(S1)
MARKS(S1)
Preferred when: Preferred when:-
 Array size is small  Array size is large

 Array contains duplicates  Array contains no duplicates

 Array loaded in such way that most  Array contains unique key
frequently accessing element can be  There is no track of frequently accessed
loaded in the first few occurrences elements

ON SIZE ERROR

Occurs during arithmetic operation when result value exceeds the size of the PIC clause specified in
the receiving field.

DATA-A = 60 (PIC 99) and DATA-B = 60 (PIC 99). Now, arithmetic operation “ADD DATA-A TO DATA-
B” will result DATA-B =20 even though the expected value is 120, but due to PIC specification of
DATA-B, truncation occurred.
ADD A B C GIVING TOTAL
ON SIZER ERROR
MOVE ZERO TO TOTAL.

COBOL DB2 process

SOURCE CODE
(COBOL + DB2)

Precompilation (DSNHPC)

Timestamp t1 Timestamp t2

COBOL SOURCE CODE DB2 SOURCE CODE


(DBRM)

Cobol compilation process Bind process


(IGYCRCTL) (IKJEFT01)

OBJECT CODE PACKAGE (Nonexecutable)

Cobol Linkedit process


IEWL

Cobol Load Module Plan (Executable)

Plan (Executable) &


Cobol Load Module
Isolation levels
Cursor Stability
Repeatable Read
Read Stability
Uncommitted Read (UR) / Dirty Read

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy