The RIGHT clause is used to right-align data within a field during MOVE and STRING operations. It positions data at the right end of the target field, with spaces (or padding characters) filling the left side.
RIGHT aligns data to the right side with left padding.
The RIGHT clause follows specific syntax patterns in MOVE and STRING operations.
123456789101112131415161718192021222324252627282930* Basic RIGHT clause syntax MOVE source-data TO target-field RIGHT * With STRING operation STRING source1 DELIMITED BY SIZE source2 DELIMITED BY SIZE INTO target-field RIGHT * Complete example IDENTIFICATION DIVISION. PROGRAM-ID. RIGHT-ALIGNMENT-EXAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 SOURCE-DATA PIC X(5) VALUE "ABC". 01 TARGET-FIELD PIC X(10). 01 CURRENCY-AMOUNT PIC 9(6)V99 VALUE 123456. 01 FORMATTED-AMOUNT PIC X(12). PROCEDURE DIVISION. MAIN-LOGIC. * Right-align text data MOVE SOURCE-DATA TO TARGET-FIELD RIGHT DISPLAY "Right-aligned: [" TARGET-FIELD "]" * Right-align currency amount MOVE CURRENCY-AMOUNT TO FORMATTED-AMOUNT RIGHT DISPLAY "Currency: [" FORMATTED-AMOUNT "]" STOP RUN.
RIGHT can be used with MOVE and STRING operations for alignment.
Alignment | Position | Padding |
---|---|---|
RIGHT | Right end | Left side |
LEFT | Left end | Right side |
Default | Left end | Right side |
These examples demonstrate how to use the RIGHT clause effectively in different formatting scenarios.
12345678910111213141516171819202122232425262728293031323334353637IDENTIFICATION DIVISION. PROGRAM-ID. CURRENCY-FORMATTING. DATA DIVISION. WORKING-STORAGE SECTION. 01 AMOUNT PIC 9(6)V99 VALUE 123456. 01 FORMATTED-AMOUNT PIC X(12). 01 DISPLAY-AMOUNT PIC X(15). PROCEDURE DIVISION. MAIN-LOGIC. * Right-align the amount MOVE AMOUNT TO FORMATTED-AMOUNT RIGHT * Create display with currency symbol STRING "$" DELIMITED BY SIZE FORMATTED-AMOUNT DELIMITED BY SIZE INTO DISPLAY-AMOUNT RIGHT DISPLAY "Amount: [" DISPLAY-AMOUNT "]" * Format multiple amounts PERFORM FORMAT-AMOUNTS STOP RUN. FORMAT-AMOUNTS. MOVE 100 TO AMOUNT MOVE AMOUNT TO FORMATTED-AMOUNT RIGHT DISPLAY "Small amount: [" FORMATTED-AMOUNT "]" MOVE 999999 TO AMOUNT MOVE AMOUNT TO FORMATTED-AMOUNT RIGHT DISPLAY "Large amount: [" FORMATTED-AMOUNT "]" MOVE 0 TO AMOUNT MOVE AMOUNT TO FORMATTED-AMOUNT RIGHT DISPLAY "Zero amount: [" FORMATTED-AMOUNT "]".
RIGHT alignment creates professional currency formatting.
12345678910111213141516171819202122232425262728293031323334353637* Report formatting with RIGHT alignment DATA DIVISION. WORKING-STORAGE SECTION. 01 REPORT-LINE PIC X(80). 01 ITEM-NAME PIC X(20) VALUE "Product A". 01 QUANTITY PIC 9(4) VALUE 123. 01 PRICE PIC 9(6)V99 VALUE 456789. 01 TOTAL PIC 9(8)V99. PROCEDURE DIVISION. GENERATE-REPORT. * Calculate total MULTIPLY QUANTITY BY PRICE GIVING TOTAL * Create formatted report line STRING ITEM-NAME DELIMITED BY SIZE SPACES DELIMITED BY SIZE QUANTITY DELIMITED BY SIZE SPACES DELIMITED BY SIZE PRICE DELIMITED BY SIZE SPACES DELIMITED BY SIZE TOTAL DELIMITED BY SIZE INTO REPORT-LINE RIGHT DISPLAY REPORT-LINE * Alternative: Format each field separately PERFORM FORMAT-REPORT-LINE. FORMAT-REPORT-LINE. * Right-align each column MOVE ITEM-NAME TO REPORT-LINE(1:20) RIGHT MOVE QUANTITY TO REPORT-LINE(25:4) RIGHT MOVE PRICE TO REPORT-LINE(35:8) RIGHT MOVE TOTAL TO REPORT-LINE(50:10) RIGHT DISPLAY "Formatted: [" REPORT-LINE "]".
RIGHT alignment creates properly aligned report columns.
123456789101112131415161718192021222324252627282930313233* Percentage formatting with RIGHT DATA DIVISION. WORKING-STORAGE SECTION. 01 PERCENTAGE PIC 9(3)V99 VALUE 12345. 01 FORMATTED-PCT PIC X(8). 01 DISPLAY-PCT PIC X(10). PROCEDURE DIVISION. FORMAT-PERCENTAGES. * Right-align percentage MOVE PERCENTAGE TO FORMATTED-PCT RIGHT * Add percent symbol STRING FORMATTED-PCT DELIMITED BY SIZE "%" DELIMITED BY SIZE INTO DISPLAY-PCT RIGHT DISPLAY "Percentage: [" DISPLAY-PCT "]" * Format different percentages MOVE 50 TO PERCENTAGE MOVE PERCENTAGE TO FORMATTED-PCT RIGHT STRING FORMATTED-PCT DELIMITED BY SIZE "%" DELIMITED BY SIZE INTO DISPLAY-PCT RIGHT DISPLAY "50%: [" DISPLAY-PCT "]" MOVE 999 TO PERCENTAGE MOVE PERCENTAGE TO FORMATTED-PCT RIGHT STRING FORMATTED-PCT DELIMITED BY SIZE "%" DELIMITED BY SIZE INTO DISPLAY-PCT RIGHT DISPLAY "999%: [" DISPLAY-PCT "]".
RIGHT alignment formats percentages consistently.
123456789101112131415161718192021222324252627282930313233343536373839* Date and time formatting with RIGHT DATA DIVISION. WORKING-STORAGE SECTION. 01 CURRENT-DATE PIC X(8). 01 CURRENT-TIME PIC X(6). 01 FORMATTED-DATE PIC X(12). 01 FORMATTED-TIME PIC X(10). PROCEDURE DIVISION. FORMAT-DATE-TIME. * Get current date and time MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE MOVE FUNCTION CURRENT-TIME TO CURRENT-TIME * Right-align date components STRING CURRENT-DATE(1:4) DELIMITED BY SIZE "-" DELIMITED BY SIZE CURRENT-DATE(5:2) DELIMITED BY SIZE "-" DELIMITED BY SIZE CURRENT-DATE(7:2) DELIMITED BY SIZE INTO FORMATTED-DATE RIGHT * Right-align time components STRING CURRENT-TIME(1:2) DELIMITED BY SIZE ":" DELIMITED BY SIZE CURRENT-TIME(3:2) DELIMITED BY SIZE ":" DELIMITED BY SIZE CURRENT-TIME(5:2) DELIMITED BY SIZE INTO FORMATTED-TIME RIGHT DISPLAY "Date: [" FORMATTED-DATE "]" DISPLAY "Time: [" FORMATTED-TIME "]" * Create timestamp STRING FORMATTED-DATE DELIMITED BY SIZE " " DELIMITED BY SIZE FORMATTED-TIME DELIMITED BY SIZE INTO FORMATTED-DATE RIGHT DISPLAY "Timestamp: [" FORMATTED-DATE "]".
RIGHT alignment creates consistent date/time formatting.
Understanding best practices ensures effective use of the RIGHT clause.
Use Case | Description | Example |
---|---|---|
Currency Amounts | Right-align monetary values | $1,234.56 |
Percentages | Right-align percentage values | 25.5% |
Report Columns | Align numeric columns in reports | Quantity: 123 |
Dates and Times | Format date/time displays | 2023-12-25 |
Account Numbers | Right-align account identifiers | Account: 123456 |
Usage | Syntax | Example |
---|---|---|
Basic RIGHT | MOVE source TO target RIGHT | MOVE AMOUNT TO FIELD RIGHT |
With STRING | STRING data INTO target RIGHT | STRING A B INTO C RIGHT |
Currency formatting | MOVE amount TO field RIGHT | MOVE 123456 TO CURRENCY RIGHT |
Report alignment | MOVE data TO column RIGHT | MOVE QUANTITY TO COLUMN RIGHT |
Percentage | MOVE pct TO field RIGHT | MOVE 25.5 TO PERCENT RIGHT |
1. What is the primary purpose of the RIGHT clause in COBOL?
2. In which COBOL statements is the RIGHT clause commonly used?
3. What happens when you use RIGHT with a MOVE operation?
4. How does RIGHT differ from LEFT alignment?
5. What is the default alignment when RIGHT is not specified?