Redefinition is used to change the format of a field, or to divide a single field into segments.
This document covers the following topics:
The REDEFINE option of the
                  			 DEFINE DATA
                  			 statement can be used to redefine a single field - either a user-defined
                  			 variable or a database field - as one or more new fields. A group can also be
                  			 redefined.
               
Important:
Dynamic variables are not allowed in a
                     			 redefinition.
                  
The REDEFINE option redefines byte positions of a field
                  			 from left to right, regardless of the format. Byte positions must match between
                  			 original field and redefined field(s).
               
The redefinition must be specified immediately after the definition of the original field.
In the following example, the database field BIRTH is
                  			 redefined as three new user-defined variables:
               
DEFINE DATA LOCAL                 
01 EMPLOY-VIEW VIEW OF STAFFDDM  
  02 NAME                        
  02 BIRTH                       
  02 REDEFINE BIRTH              
     03 #BIRTH-YEAR  (N4)          
     03 #BIRTH-MONTH (N2)         
     03 #BIRTH-DAY   (N2)           
END-DEFINE 
   ... 
               		  In the following example, the group #VAR2, which
                  			 consists of two user-defined variables of format N and P respectively, is
                  			 redefined as a variable of format A:
               
DEFINE DATA LOCAL 01 #VAR1 (A15) 01 #VAR2 02 #VAR2A (N4.1) 02 #VAR2B (P6.2) 01 REDEFINE #VAR2 02 #VAR2RD (A10) END-DEFINE ...
With the notation FILLER
                        			 nX you can define
                  			 n filler bytes - that is, segments which are not to
                  			 be used - in the field that is being redefined. (The definition of trailing
                  			 filler bytes is optional.)
               
In the following example, the user-defined variable
                  			 #FIELD is redefined as three new user-defined variables, each of
                  			 format/length A2. The FILLER notations indicate that the 3rd and
                  			 4th and 7th to 10th bytes of the original field are not be used.
               
DEFINE DATA LOCAL 1 #FIELD (A12) 1 REDEFINE #FIELD 2 #RFIELD1 (A2) 2 FILLER 2X 2 #RFIELD2 (A2) 2 FILLER 4X 2 #RFIELD3 (A2) END-DEFINE ...
The following program illustrates the use of a redefinition:
** Example 'DDATAX01': DEFINE DATA ************************************************************************ DEFINE DATA LOCAL 01 VIEWEMP VIEW OF EMPLOYEES 02 NAME 02 FIRST-NAME 02 SALARY (1:1) * 01 #PAY (N9) 01 REDEFINE #PAY 02 FILLER 3X 02 #USD (N3) 02 #OOO (N3) END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' MOVE SALARY (1) TO #PAY DISPLAY NAME FIRST-NAME #PAY #USD #OOO END-READ END
Output of Program DDATAX01:
               
Note how #PAY and the fields resulting from its
                  			 definition are displayed:
               
Page      1                                                  04-11-11  14:15:54
 
        NAME              FIRST-NAME         #PAY    #USD #OOO
-------------------- -------------------- ---------- ---- ----
 
JONES                VIRGINIA                  46000   46    0
JONES                MARSHA                    50000   50    0
JONES                ROBERT                    31000   31    0