MainframeMaster

COBOL Tutorial

COBOL RENAMES Clause - Quick Reference

Progress0 of 0 lessons

Overview

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.

Purpose and Usage

  • Alternative field names - Create convenient names for field groups
  • Logical groupings - Group related fields together
  • No storage overhead - Uses existing storage without allocation
  • Code readability - Improve code clarity and maintainability
  • Interface compatibility - Provide multiple access patterns

RENAMES vs REDEFINES Concept

RENAMES: [Field1][Field2][Field3] → [Group1] (same storage)
REDEFINES: [Storage Area] → [Layout1] OR [Layout2] (different views)
RENAMES creates aliases, REDEFINES creates alternative layouts

RENAMES provides alternative names without changing storage allocation.

Syntax

The RENAMES clause follows specific syntax patterns within data definitions and can be used to create various field groupings.

Basic Syntax

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
* 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.

RENAMES vs REDEFINES Comparison

AspectRENAMESREDEFINES
Storage allocationNo additional storageShares storage area
PurposeAlternative namesAlternative layouts
Level number6601 or higher
Data interpretationSame dataDifferent interpretation
Performance impactNoneNone

Complex RENAMES Examples

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
* 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.

Practical Examples

These examples demonstrate how to use the RENAMES clause effectively in different programming scenarios.

Customer Data Grouping

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
IDENTIFICATION 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.

Financial Record Processing

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
* 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.

Interface Compatibility

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
* 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.

Data Validation Grouping

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
* 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.

Best Practices and Tips

Following these best practices ensures effective use of the RENAMES clause in COBOL applications.

RENAMES Best Practices

  • Use meaningful names - Create descriptive RENAMES names
  • Group related fields - Group fields that are used together
  • Document the purpose - Add comments explaining RENAMES usage
  • Maintain consistency - Use consistent naming conventions
  • Consider maintainability - Make RENAMES easy to understand
  • Test thoroughly - Verify RENAMES work as expected

Common Pitfalls to Avoid

PitfallProblemSolution
Invalid field referencesCompilation errorsEnsure fields exist in structure
Confusing namesCode readability issuesUse clear, descriptive names
Overuse of RENAMESCode complexityUse RENAMES judiciously
Inconsistent namingMaintenance difficultiesFollow naming conventions
Missing documentationUnderstanding difficultiesDocument RENAMES purpose

Performance Considerations

  • No storage overhead - RENAMES doesn't allocate additional memory
  • No runtime impact - Resolved at compile time
  • Efficient access - Same performance as original field names
  • Memory efficient - Particularly useful in memory-constrained environments
  • Compiler optimization - Modern compilers optimize RENAMES efficiently

When to Use RENAMES vs REDEFINES

ScenarioUse RENAMESUse REDEFINES
Alternative namesYesNo
Different data layoutsNoYes
Logical groupingsYesNo
Union-like structuresNoYes
Interface compatibilityYesSometimes

RENAMES Clause Quick Reference

UsageSyntaxExample
Basic RENAMES66 name RENAMES field THRU field66 GROUP RENAMES FIELD1 THRU FIELD3
Single field66 name RENAMES field66 ALIAS RENAMES FIELD1
Multiple RENAMESMultiple 66 level entries66 GROUP1 RENAMES F1 THRU F3
66 GROUP2 RENAMES F4 THRU F6
Nested structures66 name RENAMES group-field66 HEADER RENAMES HEADER-GROUP
Array elements66 name RENAMES array(index)66 FIRST RENAMES ARRAY(1)

Test Your Knowledge

1. What is the primary purpose of the RENAMES clause in COBOL?

  • To rename files
  • To create alternative field groupings
  • To rename programs
  • To rename variables

2. In which section is the RENAMES clause most commonly used?

  • PROCEDURE DIVISION
  • WORKING-STORAGE SECTION
  • FILE SECTION
  • ENVIRONMENT DIVISION

3. What happens when you use RENAMES in a data definition?

  • New storage is allocated
  • Alternative names are created for existing fields
  • Fields are moved to different locations
  • Data is copied to new fields

4. What is the relationship between RENAMES and REDEFINES?

  • They are the same thing
  • RENAMES creates aliases, REDEFINES reuses storage
  • RENAMES is faster than REDEFINES
  • They cannot be used together

5. Which of the following is a valid RENAMES clause usage?

  • RENAMES field-name
  • RENAMES field-name THRU field-name
  • RENAMES field-name TO field-name
  • All of the above

Frequently Asked Questions