Professional Documents
Culture Documents
Day 06 Redefines Renames Arrays Search
Day 06 Redefines Renames Arrays Search
REDEFINES
y REDEFINED ITEMS DONT OCCUPY ADDITIONAL MEMORY y REDEFINED ITEM MAY HAVE A DIFFERENT PICTURE CLAUSE
AND SIZE
Rules: Redefines can be used for items at levels 01 49 in WS Section and at levels 02 49 in File Section Redefined item should immediately follow the original item and be of same level Redefined items can be equal/shorter than the original Item At 01 level the size of redefining data name can be greater than the size of the redefined data name Redefined data names can have different PIC clauses A data item can be redefined any number of times Redefined item cannot be further redefined
Redefines
y y y y y y y y y y y y y y
X(10).
01 WS-TELEPHONE-NUMBER
PIC
01 WS-R-TEL-NUMBER REDEFINES WSTELEPHONE-NUMBER. 05 WS-AREA-CODE PIC X(3). 05 WS-CODE1 PIC X(4). 05 WS-CODE2 PIC X(3). 01 PRODUCT-CODE. 05 PLANT-CODE PIC 9(3). 05 MATL-CODE PIC X(4). 05 SIZE-CODE PIC 99. 01 PRODUCT-INFO REDEFINES PRODUCTCODE. 05 PLANT-LOCN PIC X(2). 05 PLANT-NUM PIC 9. 05 MATL-TYPE PIC X(2). 05 MATL-CAT PIC 99. 05 PRODUCT-PACK PIC XX.
If you want to redefine the above into two elementary items with pic 9(5) and 9(3) OR differently in some other way, 02 AMT2 REDEFINES AMT1. 05 A PIC 9(5). 12345 05 B PIC 9(3). 678 02 AMT3 REDEFINES AMT1. 05 A PIC 999 05 FILLER PIC X. 05 B PIC 99. 02 AMT4 REDEFINES AMT1 PIC X(5).
RENAMES
y RENAMES
y RENAMED ITEM WILL NOT HAVE PICTURE CLAUSE y ONLY CONSECUTIVE ELEMENTARY ITEMS CAN BE GROUPED y RENAMED ITEM
SHOULD BE AT LEVEL 66
y 66 LEVEL ITEMS MUST APPEAR AT THE END OF 01 LEVEL y RENAMED ITEMS CANNOT BE FURTHER RENAMED
EX: 01 WS-REC. 02 A PIC X(10). 02 B PIC X(12). 02 C PIC X(10). 02 D PIC X(8). 02 TEL PIC 9(6). 02 BASIC PIC 9(5). 66 GRP1 RENAMES FN THRU LN. 66 GRP2 RENAMES LN THRU TEL. 66 GRP3 RENAMES FN THRU TEL.
CONDITION NAMES
y CONDITION NAME IS
POSSIBLE VALUES
y ONLY VALUE CLAUSE IS GIVEN FOR THE 88 LEVEL ITEM y PURPOSE OF VALUE CLAUSE FOR THE DATA ITEM AND
CONDITION NAME IS DIFFERENT
EXAMPLE
M-STAT PIC X. 88 MARRIED VALUE 'M'. 88 SINGLE VALUE 'S'. 05 AGE PIC 99. 88 SR VALUE 60 THRU 99. 88 ADULT VALUE 18 THRU 59. 88 BOY VALUE 07 THRU 17. 88 CHILD VALUE 00 THRU 06. PROCEDURE DIVISION. ACCEPT M-STAT IF MARRIED THEN ===instead of IF M-STAT = 'M' DISPLAY 'MARRIED PERSON' ELSE IF SINGLE THEN .. ELSE DISPLAY ' WRONG STATUS'. COND 05
EXAMPLE
ACCEPT AGE IF SR THEN .. ELSE IF ADULT THEN .. ELSE IF BOY THEN ELSE IF CHILD THEN ELSE DISPLAY ' WRONG AGE'.
ARRAY CONCEPT
IS
y OCCURS CLAUSE IS USED TO DECLARE AN ARRAY y VALUE CLAUSE IS NOT PERMITTED WITH OCCURS CLAUSE y OCCURS CLAUSE IS NOT PERMITTED IN 01
ONLY IN 02-49 LEVEL,
EXAMPLE
Assume given a month code I want to access the month name
One way to code is ACCEPT M-CODE IF M-CODE = 01 DISPLAY 'JAN' ELSE IF M-CODE = 01 DISPLAY 'FEB' ELSE INSTEAD IF I DECLARE AN ARRAY LIKE 01 WS-REC VALUE 'JAN FEB MAR APR MAY..'. 02 MTBL OCCURS 12 TIMES. 05 M-NAME PIC X(3). 05 F PIC X. IT IS EASY TO ACCESS USING OCCURRENCE NUMBER AS FOLLOWS DISPLAY M-NAME(M-CODE) because the month code being numeric, can be used as occurrence number
FOR EX: 01 WS-REC1. 02 F PIC X(10) VALUE 'MONDAY'. 02 F PIC X(10) VALUE 'TUESDAY'. 02 F PIC X(10) VALUE 'WEDNESDAY'. 02 F PIC X(10) VALUE 'THURSDAY'. 02 F PIC X(10) VALUE 'FRIDAY'. 02 F PIC X(10) VALUE 'SATURDAY'. 02 F PIC X(10) VALUE 'SUNDAY'. 01 WS-REC2 REDEFINES WS-REC1. 02 D-NAME PIC X(10) OCCURS 7 TIMES.
PROGRAMS USING ARRAY WILL HAVE TO FIRST LOAD DATA INTO THE ARRAY AND THEN ACCESS FROM THE ARRAY DECLARATION OF A SINGLE DIMESNION ARRAY 01 WS-REC. 02 WS-STN 05 STNC 05 STNM
PERFORM LOAD-RTN until I > 100 ACCEPT WS-STN(I) END-PERFORM SEARCHING A SINGLE DIMENSION TABLE ACCEPT WS-SC PERFORM UNTIL I > 100 IF WS-SC = STNC(I) DISPLAY STNM(I) END-IF END-PERFORM
SEARCH COMMAND SYNTAX: SEARCH [ALL ] table-name AT END DISPLAY 'NOT FOUND' WHEN condition STATEMENTS . END-SEARCH.
IF YOU WANT TO USE SEARCH COMMAND YOU HAVE TO DECLARE OCCURS WITH INDEXED BY CLAUSE
OCCURS 100 TIMES INDEXED BY K ASCENDING KEY IS STNC. 05 STNC PIC X(3). 05 STNM PIC X(20).
NOTE: The Index variable K need not be declared in working-storage Just the indexed by clause with a variable name is enough
ACCEPT WS-SC. SET K TO 1 SEARCH WS-TBL AT END DISPLAY NOT FOUND WHEN WS-SC = STNC(K) DISPLAY WS-SC(K) END-SEARCH
01
WS-REC. 10 DAYNAME PIC X(10). 10 SD-ARRAY OCCURS 10 TIMES 15 MAXTEMPR PIC 99V9. 15 MINTEMPR PIC 99V9. 15 FILLER PIC X ..IS A LOGICAL REPRESENTATION OF EXAMPLE:
SUNDAY
THE ELEMENTARY ITEMS CAN BE ACCESSED USING THE ITEM-NAME WITH A SUBSCRIPT LIKE MAXTEMPR(1) OR MINTEMPR(N) WHERE N IS A NUMERIC VARIABLE
01
WS-REC. 10 DAYNAME PIC X(12). 10 SD-ARRAY OCCURS 10 TIMES. 15 MAXTEMPR PIC 99V9. 15 MINTEMPR PIC 99V9. 15 FILLER PIC X
ACCEPT WS-REC. PERFORM VARYING N FROM 1 BY 1 UNTIL N > 10 DISPLAY MAXTEMPR(N) DISPLAY MINTEMPR(N) END-PERFORM
SUNDAY 350360 380390 360390 345365 390400 .. MONDAY 350360 380390 360390 345365 390400 .. TUESDAY 350360 380390 360390 345365 390400 .. WEDNESDAY 350360 380390 360390 345365 390400 .. THURSDAY 350360 380390 360390 345365 390400 .. FRIDAY 350360 380390 360390 345365 390400 .. SATURDAY 350360 380390 360390 345365 390400 .. DAYNAME MUST BE ACCESSED AS A SINGLE DIMESION TEMPRS MUST BE ACCESSED AS A TWO D USING TWO SUBSCRIPTS
2 D CONCEPT
REPETITION OF COLUMNS IS SINGLE DIMENSION REPETITION OF ROWS IS TWO DIMENSION This is a table having columns and rows SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY 350360 380390 360390 345365 390400 .. 350360 380390 360390 345365 390400 .. 350360 380390 360390 345365 390400 .. 350360 380390 360390 345365 390400 .. 350360 380390 360390 345365 390400 .. 350360 380390 360390 345365 390400 .. 350360 380390 360390 345365 390400 ..
The individual items can be accessed using two subscripts ACCEPT M INDICATING ROW NO ACCEPT N COL NO EX1: DISPLAY MAXTEMPR( M N ) DISPLAY MINTEMPR ( M N )
EX:
PERFORM VARYING M FROM 1 BY 1 UNTIL M > 7 PERFORM VARYING N FROM 1 BY 1 UNTIL N > 24 IF MAXTEMPR( M N ) > 40.0 DISPLAY dayname (m) N END-IF END-PERFORM END-PERFORM.
Note: The total number of occurrences of days is 4 x 7 = 28 times The total number of occurrences of cols. Is 4 x 7 x 24 = 672 times. The table contains 4 weeks as a single dimension 4 x 7 days as a two dimension and 4 x 7 x 24 cols as a three dimension array.