The RENAMES clause creates alternative names for existing fields in COBOL data structures. It provides convenient access to groups of fields without allocating additional storage, making code more readable and maintainable.
RENAMES provides alternative names without changing storage allocation.
The RENAMES clause follows specific syntax patterns within data definitions and can be used to create various field groupings.
1234567891011121314151617181920212223* Basic RENAMES clause syntax 66 new-name RENAMES field-name THRU field-name * Complete example 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(5). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-ADDRESS PIC X(50). 05 CUSTOMER-PHONE PIC X(15). 05 CUSTOMER-EMAIL PIC X(40). 66 CUSTOMER-CONTACT RENAMES CUSTOMER-PHONE THRU CUSTOMER-EMAIL. * Multiple RENAMES in same structure 01 EMPLOYEE-RECORD. 05 EMPLOYEE-ID PIC 9(5). 05 EMPLOYEE-NAME PIC X(30). 05 EMPLOYEE-DEPT PIC X(10). 05 EMPLOYEE-SALARY PIC 9(7)V99. 05 EMPLOYEE-HIRE-DATE PIC 9(8). 66 EMPLOYEE-IDENTITY RENAMES EMPLOYEE-ID THRU EMPLOYEE-NAME. 66 EMPLOYEE-FINANCIAL RENAMES EMPLOYEE-SALARY THRU EMPLOYEE-HIRE-DATE.
RENAMES uses level 66 and creates alternative names for existing fields.
Aspect | RENAMES | REDEFINES |
---|---|---|
Storage allocation | No additional storage | Shares storage area |
Purpose | Alternative names | Alternative layouts |
Level number | 66 | 01 or higher |
Data interpretation | Same data | Different interpretation |
Performance impact | None | None |
12345678910111213141516171819202122232425262728* RENAMES with nested structures 01 COMPLEX-RECORD. 05 HEADER-INFO. 10 RECORD-TYPE PIC X. 10 RECORD-DATE PIC 9(8). 05 DETAIL-INFO. 10 CUSTOMER-DATA. 15 CUST-ID PIC 9(5). 15 CUST-NAME PIC X(30). 10 ORDER-DATA. 15 ORDER-NUM PIC 9(8). 15 ORDER-AMT PIC 9(7)V99. * Multiple RENAMES for different groupings 66 RECORD-HEADER RENAMES HEADER-INFO. 66 CUSTOMER-ORDER RENAMES CUSTOMER-DATA THRU ORDER-DATA. 66 IDENTIFICATION RENAMES CUST-ID THRU CUST-NAME. 66 ORDER-INFORMATION RENAMES ORDER-NUM THRU ORDER-AMT. * RENAMES with arrays 01 ARRAY-RECORD. 05 RECORD-COUNT PIC 9(2). 05 DATA-ARRAY. 10 DATA-ITEM PIC X(20) OCCURS 10 TIMES. 66 ARRAY-DATA RENAMES DATA-ARRAY. 66 FIRST-ITEM RENAMES DATA-ITEM(1). 66 LAST-ITEM RENAMES DATA-ITEM(10).
RENAMES can create complex groupings of nested structures and arrays.
These examples demonstrate how to use the RENAMES clause effectively in different programming scenarios.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556IDENTIFICATION DIVISION. PROGRAM-ID. CUSTOMER-PROCESS. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(5). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-ADDRESS PIC X(50). 05 CUSTOMER-CITY PIC X(20). 05 CUSTOMER-STATE PIC X(2). 05 CUSTOMER-ZIP PIC X(10). 05 CUSTOMER-PHONE PIC X(15). 05 CUSTOMER-EMAIL PIC X(40). 05 CUSTOMER-BALANCE PIC 9(7)V99. 05 CUSTOMER-CREDIT PIC 9(3). * Create logical groupings 66 CUSTOMER-IDENTITY RENAMES CUSTOMER-ID THRU CUSTOMER-NAME. 66 CUSTOMER-LOCATION RENAMES CUSTOMER-ADDRESS THRU CUSTOMER-ZIP. 66 CUSTOMER-CONTACT RENAMES CUSTOMER-PHONE THRU CUSTOMER-EMAIL. 66 CUSTOMER-FINANCIAL RENAMES CUSTOMER-BALANCE THRU CUSTOMER-CREDIT. PROCEDURE DIVISION. MAIN-PROCESS. * Initialize customer data MOVE 12345 TO CUSTOMER-ID MOVE "JOHN DOE" TO CUSTOMER-NAME MOVE "123 MAIN ST" TO CUSTOMER-ADDRESS MOVE "NEW YORK" TO CUSTOMER-CITY MOVE "NY" TO CUSTOMER-STATE MOVE "10001" TO CUSTOMER-ZIP MOVE "555-1234" TO CUSTOMER-PHONE MOVE "john@email.com" TO CUSTOMER-EMAIL MOVE 1000.00 TO CUSTOMER-BALANCE MOVE 750 TO CUSTOMER-CREDIT * Process using RENAMES groupings PERFORM PROCESS-IDENTITY PERFORM PROCESS-LOCATION PERFORM PROCESS-CONTACT PERFORM PROCESS-FINANCIAL STOP RUN. PROCESS-IDENTITY. DISPLAY "Processing Identity: " CUSTOMER-IDENTITY. PROCESS-LOCATION. DISPLAY "Processing Location: " CUSTOMER-LOCATION. PROCESS-CONTACT. DISPLAY "Processing Contact: " CUSTOMER-CONTACT. PROCESS-FINANCIAL. DISPLAY "Processing Financial: " CUSTOMER-FINANCIAL.
RENAMES creates logical groupings for better code organization.
12345678910111213141516171819202122232425262728293031323334353637383940414243* Financial transaction record with RENAMES 01 TRANSACTION-RECORD. 05 TRANS-HEADER. 10 TRANS-DATE PIC 9(8). 10 TRANS-TIME PIC 9(6). 10 TRANS-TYPE PIC X. 05 TRANS-DETAILS. 10 ACCOUNT-NUM PIC 9(10). 10 TRANS-AMOUNT PIC 9(7)V99. 10 TRANS-DESC PIC X(40). 05 TRANS-TRAILER. 10 TRANS-STATUS PIC X. 10 TRANS-REF PIC 9(8). * Create business-oriented groupings 66 TRANSACTION-INFO RENAMES TRANS-HEADER THRU TRANS-TRAILER. 66 TIMESTAMP RENAMES TRANS-DATE THRU TRANS-TIME. 66 ACCOUNT-INFO RENAMES ACCOUNT-NUM THRU TRANS-DESC. 66 TRANSACTION-SUMMARY RENAMES TRANS-AMOUNT THRU TRANS-REF. PROCEDURE DIVISION. PROCESS-TRANSACTION. * Process using different groupings IF TRANS-TYPE = "D" PERFORM PROCESS-DEPOSIT ELSE PERFORM PROCESS-WITHDRAWAL END-IF PERFORM VALIDATE-TIMESTAMP PERFORM UPDATE-ACCOUNT-INFO. PROCESS-DEPOSIT. DISPLAY "Processing deposit: " TRANSACTION-SUMMARY. PROCESS-WITHDRAWAL. DISPLAY "Processing withdrawal: " TRANSACTION-SUMMARY. VALIDATE-TIMESTAMP. DISPLAY "Validating timestamp: " TIMESTAMP. UPDATE-ACCOUNT-INFO. DISPLAY "Updating account: " ACCOUNT-INFO.
RENAMES provides business-oriented groupings for financial data.
123456789101112131415161718192021222324252627282930313233343536373839* Legacy record structure 01 LEGACY-RECORD. 05 L-CUST-ID PIC 9(5). 05 L-CUST-NAME PIC X(30). 05 L-CUST-ADDR PIC X(50). * New record structure 01 NEW-RECORD. 05 CUSTOMER-ID PIC 9(5). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-ADDRESS PIC X(50). 05 CUSTOMER-PHONE PIC X(15). 05 CUSTOMER-EMAIL PIC X(40). * Create compatibility RENAMES 66 LEGACY-COMPATIBLE RENAMES CUSTOMER-ID THRU CUSTOMER-ADDRESS. PROCEDURE DIVISION. MAINTAIN-COMPATIBILITY. * New code can use new field names MOVE 12345 TO CUSTOMER-ID MOVE "JOHN DOE" TO CUSTOMER-NAME MOVE "123 MAIN ST" TO CUSTOMER-ADDRESS MOVE "555-1234" TO CUSTOMER-PHONE MOVE "john@email.com" TO CUSTOMER-EMAIL * Legacy code can still access data using RENAMES PERFORM LEGACY-PROCESSING. LEGACY-PROCESSING. * This procedure expects the old field names DISPLAY "Legacy ID: " L-CUST-ID OF LEGACY-COMPATIBLE DISPLAY "Legacy Name: " L-CUST-NAME OF LEGACY-COMPATIBLE DISPLAY "Legacy Address: " L-CUST-ADDR OF LEGACY-COMPATIBLE. * Alternative: Create multiple interface views 66 IDENTIFICATION-VIEW RENAMES CUSTOMER-ID THRU CUSTOMER-NAME. 66 CONTACT-VIEW RENAMES CUSTOMER-PHONE THRU CUSTOMER-EMAIL. 66 FULL-VIEW RENAMES CUSTOMER-ID THRU CUSTOMER-EMAIL.
RENAMES enables backward compatibility and multiple interface views.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051* Record with validation groupings 01 VALIDATION-RECORD. 05 REQUIRED-FIELDS. 10 CUSTOMER-ID PIC 9(5). 10 CUSTOMER-NAME PIC X(30). 10 CUSTOMER-ADDR PIC X(50). 05 OPTIONAL-FIELDS. 10 CUSTOMER-PHONE PIC X(15). 10 CUSTOMER-EMAIL PIC X(40). 10 CUSTOMER-NOTE PIC X(100). 05 CALCULATED-FIELDS. 10 CUSTOMER-BALANCE PIC 9(7)V99. 10 CUSTOMER-CREDIT PIC 9(3). * Create validation groupings 66 MANDATORY-DATA RENAMES REQUIRED-FIELDS. 66 SUPPLEMENTAL-DATA RENAMES OPTIONAL-FIELDS. 66 COMPUTED-DATA RENAMES CALCULATED-FIELDS. PROCEDURE DIVISION. VALIDATE-RECORD. * Validate required fields PERFORM VALIDATE-MANDATORY * Validate optional fields if present IF CUSTOMER-PHONE NOT = SPACES PERFORM VALIDATE-SUPPLEMENTAL END-IF * Calculate derived fields PERFORM CALCULATE-FIELDS. VALIDATE-MANDATORY. IF CUSTOMER-ID = ZERO DISPLAY "Error: Customer ID required" END-IF IF CUSTOMER-NAME = SPACES DISPLAY "Error: Customer name required" END-IF IF CUSTOMER-ADDR = SPACES DISPLAY "Error: Customer address required" END-IF. VALIDATE-SUPPLEMENTAL. DISPLAY "Validating supplemental data: " SUPPLEMENTAL-DATA. CALCULATE-FIELDS. * Calculate balance and credit based on business rules COMPUTE CUSTOMER-BALANCE = 0 MOVE 500 TO CUSTOMER-CREDIT DISPLAY "Calculated data: " COMPUTED-DATA.
RENAMES creates logical groupings for data validation and processing.
Following these best practices ensures effective use of the RENAMES clause in COBOL applications.
Pitfall | Problem | Solution |
---|---|---|
Invalid field references | Compilation errors | Ensure fields exist in structure |
Confusing names | Code readability issues | Use clear, descriptive names |
Overuse of RENAMES | Code complexity | Use RENAMES judiciously |
Inconsistent naming | Maintenance difficulties | Follow naming conventions |
Missing documentation | Understanding difficulties | Document RENAMES purpose |
Scenario | Use RENAMES | Use REDEFINES |
---|---|---|
Alternative names | Yes | No |
Different data layouts | No | Yes |
Logical groupings | Yes | No |
Union-like structures | No | Yes |
Interface compatibility | Yes | Sometimes |
Usage | Syntax | Example |
---|---|---|
Basic RENAMES | 66 name RENAMES field THRU field | 66 GROUP RENAMES FIELD1 THRU FIELD3 |
Single field | 66 name RENAMES field | 66 ALIAS RENAMES FIELD1 |
Multiple RENAMES | Multiple 66 level entries | 66 GROUP1 RENAMES F1 THRU F3 66 GROUP2 RENAMES F4 THRU F6 |
Nested structures | 66 name RENAMES group-field | 66 HEADER RENAMES HEADER-GROUP |
Array elements | 66 name RENAMES array(index) | 66 FIRST RENAMES ARRAY(1) |
1. What is the primary purpose of the RENAMES clause in COBOL?
2. In which section is the RENAMES clause most commonly used?
3. What happens when you use RENAMES in a data definition?
4. What is the relationship between RENAMES and REDEFINES?
5. Which of the following is a valid RENAMES clause usage?
Understanding the REDEFINES clause for alternative data layouts.
Complete guide to data description entries in COBOL.
Understanding the WORKING-STORAGE SECTION.
Understanding data types in COBOL.
Programming principles and techniques.