Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to String Handling
String Handling | Intermediate | COBOL

Palindrome Checker

Problem Description

Check if a string is a palindrome (same forward and backward).

Expected Output

IS PALINDROME or NOT PALINDROME

Hints

Compare first with last, second with second-last, etc.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. PALINDROME. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-INPUT PIC X(50). 01 WS-CLEAN PIC X(50). 01 WS-LEN PIC 9(2). 01 WS-I PIC 9(2). 01 WS-J PIC 9(2). 01 WS-MID PIC 9(2). 01 WS-IS-PAL PIC 9 VALUE 1. PROCEDURE DIVISION. DISPLAY "ENTER STRING: ". ACCEPT WS-INPUT. * Convert to uppercase for comparison MOVE WS-INPUT TO WS-CLEAN. INSPECT WS-CLEAN CONVERTING "abcdefghijklmnopqrstuvwxyz" TO "ABCDEFGHIJKLMNOPQRSTUVWXYZ". MOVE FUNCTION LENGTH(FUNCTION TRIM(WS-CLEAN)) TO WS-LEN. COMPUTE WS-MID = WS-LEN / 2. MOVE 1 TO WS-IS-PAL. PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-MID COMPUTE WS-J = WS-LEN - WS-I + 1 IF WS-CLEAN(WS-I:1) NOT = WS-CLEAN(WS-J:1) MOVE 0 TO WS-IS-PAL END-IF END-PERFORM. IF WS-IS-PAL = 1 DISPLAY WS-INPUT " IS A PALINDROME" ELSE DISPLAY WS-INPUT " IS NOT A PALINDROME" END-IF. STOP RUN.

Explanation:

Compare character i with character (length-i+1) for all i up to middle.