The IS keyword represents a fundamental readability enhancement and syntactic component within COBOL conditional expressions, serving as an optional but highly recommended element that improves code clarity and standardization across comparison operations, class test conditions, and logical evaluations. This keyword embodies COBOL's commitment to English-like syntax by providing natural language flow in conditional statements, enabling more intuitive code construction, enhancing maintainability through improved readability, and supporting comprehensive data validation patterns while maintaining compatibility with legacy systems and ensuring consistent coding standards across enterprise applications requiring robust conditional logic and sophisticated data validation mechanisms.
123456789101112131415161718192021222324252627282930313233*> Basic comparison syntax IF field-name IS [NOT] comparison-operator value IF field-name IS [NOT] condition-name *> Class test conditions IF field-name IS [NOT] NUMERIC IF field-name IS [NOT] ALPHABETIC IF field-name IS [NOT] ALPHABETIC-LOWER IF field-name IS [NOT] ALPHABETIC-UPPER IF field-name IS [NOT] ALPHANUMERIC *> Comparison operators with IS IF field-name IS EQUAL TO value IF field-name IS GREATER THAN value IF field-name IS LESS THAN value IF field-name IS GREATER THAN OR EQUAL TO value IF field-name IS LESS THAN OR EQUAL TO value *> Special conditions IF field-name IS ZERO IF field-name IS POSITIVE IF field-name IS NEGATIVE IF field-name IS SPACES *> Examples without and with IS (both valid) IF WS-AMOUNT GREATER THAN 1000 *> Without IS IF WS-AMOUNT IS GREATER THAN 1000 *> With IS (preferred) IF WS-NAME ALPHABETIC *> Without IS IF WS-NAME IS ALPHABETIC *> With IS (preferred) IF WS-CODE = "A" *> Without IS IF WS-CODE IS EQUAL TO "A" *> With IS (more readable)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527IDENTIFICATION DIVISION. PROGRAM-ID. IS-KEYWORD-DEMONSTRATION. DATA DIVISION. WORKING-STORAGE SECTION. *> Test data for IS keyword demonstrations 01 WS-TEST-DATA. 05 WS-EMPLOYEE-ID PIC 9(6). 05 WS-EMPLOYEE-NAME PIC X(30). 05 WS-SALARY PIC 9(7)V99. 05 WS-HIRE-DATE PIC 9(8). 05 WS-DEPARTMENT-CODE PIC X(3). 05 WS-STATUS PIC X(10). 05 WS-GRADE PIC X(1). 05 WS-PHONE-NUMBER PIC X(12). 05 WS-EMAIL PIC X(50). 01 WS-VALIDATION-FLAGS. 05 WS-ID-VALID PIC X VALUE 'N'. 05 WS-NAME-VALID PIC X VALUE 'N'. 05 WS-SALARY-VALID PIC X VALUE 'N'. 05 WS-DATE-VALID PIC X VALUE 'N'. 05 WS-EMAIL-VALID PIC X VALUE 'N'. 01 WS-COUNTERS. 05 WS-VALIDATION-COUNT PIC 9(3) VALUE 0. 05 WS-ERROR-COUNT PIC 9(3) VALUE 0. 05 WS-WARNING-COUNT PIC 9(3) VALUE 0. 01 WS-CONSTANTS. 05 WS-MIN-SALARY PIC 9(7)V99 VALUE 30000.00. 05 WS-MAX-SALARY PIC 9(7)V99 VALUE 200000.00. 05 WS-CURRENT-YEAR PIC 9(4) VALUE 2024. 01 WS-WORK-FIELDS. 05 WS-YEAR PIC 9(4). 05 WS-TEMP-FIELD PIC X(50). 05 WS-POSITION PIC 9(2). 05 WS-LENGTH PIC 9(2). PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM INITIALIZE-TEST-DATA PERFORM DEMONSTRATE-BASIC-IS-CONDITIONS PERFORM DEMONSTRATE-CLASS-TESTS PERFORM DEMONSTRATE-COMPARISON-OPERATORS PERFORM DEMONSTRATE-COMPOUND-CONDITIONS PERFORM DEMONSTRATE-DATA-VALIDATION PERFORM DEMONSTRATE-BUSINESS-RULES PERFORM DISPLAY-VALIDATION-SUMMARY STOP RUN. INITIALIZE-TEST-DATA. DISPLAY "=== INITIALIZING TEST DATA ===" MOVE 123456 TO WS-EMPLOYEE-ID MOVE "JOHN SMITH" TO WS-EMPLOYEE-NAME MOVE 75000.00 TO WS-SALARY MOVE 20220315 TO WS-HIRE-DATE MOVE "IT" TO WS-DEPARTMENT-CODE MOVE "ACTIVE" TO WS-STATUS MOVE "A" TO WS-GRADE MOVE "555-123-4567" TO WS-PHONE-NUMBER MOVE "john.smith@company.com" TO WS-EMAIL DISPLAY "Test data initialized successfully" DISPLAY SPACES. DEMONSTRATE-BASIC-IS-CONDITIONS. DISPLAY "=== BASIC IS CONDITIONS ===" *> Test employee ID validity IF WS-EMPLOYEE-ID IS NUMERIC DISPLAY "Employee ID is numeric: " WS-EMPLOYEE-ID ADD 1 TO WS-VALIDATION-COUNT ELSE DISPLAY "ERROR: Employee ID is not numeric" ADD 1 TO WS-ERROR-COUNT END-IF *> Test employee name format IF WS-EMPLOYEE-NAME IS ALPHABETIC OR WS-EMPLOYEE-NAME IS SPACES DISPLAY "Employee name format is valid: " WS-EMPLOYEE-NAME ADD 1 TO WS-VALIDATION-COUNT ELSE DISPLAY "WARNING: Employee name contains non-alphabetic characters" ADD 1 TO WS-WARNING-COUNT END-IF *> Test department code IF WS-DEPARTMENT-CODE IS ALPHABETIC-UPPER DISPLAY "Department code format is valid: " WS-DEPARTMENT-CODE ADD 1 TO WS-VALIDATION-COUNT ELSE DISPLAY "WARNING: Department code should be uppercase letters" ADD 1 TO WS-WARNING-COUNT END-IF *> Test status field IF WS-STATUS IS NOT SPACES DISPLAY "Status field is populated: " WS-STATUS ADD 1 TO WS-VALIDATION-COUNT ELSE DISPLAY "ERROR: Status field is empty" ADD 1 TO WS-ERROR-COUNT END-IF DISPLAY SPACES. DEMONSTRATE-CLASS-TESTS. DISPLAY "=== CLASS TEST CONDITIONS ===" *> Test various class conditions IF WS-EMPLOYEE-ID IS NUMERIC DISPLAY "✓ Employee ID passes numeric test" IF WS-EMPLOYEE-ID IS POSITIVE DISPLAY "✓ Employee ID is positive" ELSE DISPLAY "✗ Employee ID is not positive" END-IF IF WS-EMPLOYEE-ID IS NOT ZERO DISPLAY "✓ Employee ID is not zero" ELSE DISPLAY "✗ Employee ID is zero" END-IF END-IF *> Test alphabetic conditions IF WS-EMPLOYEE-NAME IS ALPHABETIC DISPLAY "✓ Employee name is purely alphabetic" ELSE IF WS-EMPLOYEE-NAME IS ALPHANUMERIC DISPLAY "✓ Employee name is alphanumeric (may contain spaces)" ELSE DISPLAY "✗ Employee name contains invalid characters" END-IF END-IF *> Test phone number format IF WS-PHONE-NUMBER IS NUMERIC DISPLAY "✓ Phone number is purely numeric" ELSE IF WS-PHONE-NUMBER IS ALPHANUMERIC DISPLAY "✓ Phone number is alphanumeric (formatted)" ELSE DISPLAY "✗ Phone number format is invalid" END-IF END-IF *> Test grade field IF WS-GRADE IS ALPHABETIC-UPPER DISPLAY "✓ Grade is uppercase letter: " WS-GRADE ELSE IF WS-GRADE IS ALPHABETIC-LOWER DISPLAY "WARNING: Grade should be uppercase: " WS-GRADE ELSE DISPLAY "✗ Grade is not alphabetic: " WS-GRADE END-IF END-IF DISPLAY SPACES. DEMONSTRATE-COMPARISON-OPERATORS. DISPLAY "=== COMPARISON OPERATORS WITH IS ===" *> Salary range validation IF WS-SALARY IS GREATER THAN WS-MIN-SALARY DISPLAY "✓ Salary meets minimum requirement: $" WS-SALARY IF WS-SALARY IS LESS THAN OR EQUAL TO WS-MAX-SALARY DISPLAY "✓ Salary is within maximum limit" MOVE "Y" TO WS-SALARY-VALID ELSE DISPLAY "WARNING: Salary exceeds maximum limit: $" WS-MAX-SALARY ADD 1 TO WS-WARNING-COUNT END-IF ELSE DISPLAY "ERROR: Salary below minimum requirement: $" WS-MIN-SALARY ADD 1 TO WS-ERROR-COUNT END-IF *> Status validation IF WS-STATUS IS EQUAL TO "ACTIVE" DISPLAY "✓ Employee status is ACTIVE" ELSE IF WS-STATUS IS EQUAL TO "INACTIVE" DISPLAY "WARNING: Employee status is INACTIVE" ADD 1 TO WS-WARNING-COUNT ELSE IF WS-STATUS IS EQUAL TO "TERMINATED" DISPLAY "INFO: Employee status is TERMINATED" ELSE DISPLAY "ERROR: Unknown employee status: " WS-STATUS ADD 1 TO WS-ERROR-COUNT END-IF END-IF END-IF *> Department code validation IF WS-DEPARTMENT-CODE IS EQUAL TO "IT" OR WS-DEPARTMENT-CODE IS EQUAL TO "HR" OR WS-DEPARTMENT-CODE IS EQUAL TO "FIN" OR WS-DEPARTMENT-CODE IS EQUAL TO "MKT" DISPLAY "✓ Valid department code: " WS-DEPARTMENT-CODE ELSE DISPLAY "ERROR: Invalid department code: " WS-DEPARTMENT-CODE ADD 1 TO WS-ERROR-COUNT END-IF *> Grade validation IF WS-GRADE IS GREATER THAN OR EQUAL TO "A" AND WS-GRADE IS LESS THAN OR EQUAL TO "E" DISPLAY "✓ Valid performance grade: " WS-GRADE ELSE DISPLAY "ERROR: Invalid performance grade: " WS-GRADE ADD 1 TO WS-ERROR-COUNT END-IF DISPLAY SPACES. DEMONSTRATE-COMPOUND-CONDITIONS. DISPLAY "=== COMPOUND CONDITIONS WITH IS ===" *> Complex employee validation IF WS-EMPLOYEE-ID IS NUMERIC AND WS-EMPLOYEE-ID IS GREATER THAN 100000 AND WS-EMPLOYEE-ID IS LESS THAN 999999 DISPLAY "✓ Employee ID format and range valid" MOVE "Y" TO WS-ID-VALID ELSE DISPLAY "ERROR: Employee ID format or range invalid" ADD 1 TO WS-ERROR-COUNT END-IF *> Salary and grade correlation IF WS-GRADE IS EQUAL TO "A" AND WS-SALARY IS GREATER THAN 70000 DISPLAY "✓ Grade A employee with appropriate salary" ELSE IF WS-GRADE IS EQUAL TO "A" AND WS-SALARY IS LESS THAN OR EQUAL TO 70000 DISPLAY "WARNING: Grade A employee with low salary" ADD 1 TO WS-WARNING-COUNT END-IF END-IF *> Hire date validation MOVE WS-HIRE-DATE(1:4) TO WS-YEAR IF WS-YEAR IS NUMERIC AND WS-YEAR IS GREATER THAN 1990 AND WS-YEAR IS LESS THAN OR EQUAL TO WS-CURRENT-YEAR DISPLAY "✓ Hire date year is valid: " WS-YEAR MOVE "Y" TO WS-DATE-VALID ELSE DISPLAY "ERROR: Invalid hire date year: " WS-YEAR ADD 1 TO WS-ERROR-COUNT END-IF *> Name and email consistency check IF WS-EMPLOYEE-NAME IS NOT SPACES AND WS-EMAIL IS NOT SPACES DISPLAY "✓ Both name and email are provided" MOVE "Y" TO WS-NAME-VALID MOVE "Y" TO WS-EMAIL-VALID ELSE DISPLAY "WARNING: Missing name or email information" ADD 1 TO WS-WARNING-COUNT END-IF DISPLAY SPACES. DEMONSTRATE-DATA-VALIDATION. DISPLAY "=== DATA VALIDATION WITH IS ===" *> Phone number validation PERFORM VALIDATE-PHONE-NUMBER *> Email format validation PERFORM VALIDATE-EMAIL-FORMAT *> Comprehensive record validation PERFORM VALIDATE-COMPLETE-RECORD. VALIDATE-PHONE-NUMBER. DISPLAY "Validating phone number format..." *> Check if phone number has proper length MOVE FUNCTION LENGTH(FUNCTION TRIM(WS-PHONE-NUMBER)) TO WS-LENGTH IF WS-LENGTH IS EQUAL TO 12 DISPLAY "✓ Phone number length is correct" *> Check for dash positions (XXX-XXX-XXXX format) IF WS-PHONE-NUMBER(4:1) IS EQUAL TO "-" AND WS-PHONE-NUMBER(8:1) IS EQUAL TO "-" DISPLAY "✓ Phone number format is correct" ELSE DISPLAY "WARNING: Phone number format should be XXX-XXX-XXXX" ADD 1 TO WS-WARNING-COUNT END-IF ELSE IF WS-LENGTH IS EQUAL TO 10 IF WS-PHONE-NUMBER IS NUMERIC DISPLAY "✓ Phone number is 10-digit numeric" ELSE DISPLAY "ERROR: 10-character phone should be numeric" ADD 1 TO WS-ERROR-COUNT END-IF ELSE DISPLAY "ERROR: Phone number length is invalid: " WS-LENGTH ADD 1 TO WS-ERROR-COUNT END-IF END-IF. VALIDATE-EMAIL-FORMAT. DISPLAY "Validating email format..." *> Check for @ symbol INSPECT WS-EMAIL TALLYING WS-POSITION FOR ALL "@" IF WS-POSITION IS EQUAL TO 1 DISPLAY "✓ Email contains exactly one @ symbol" *> Check for dot after @ UNSTRING WS-EMAIL DELIMITED BY "@" INTO WS-TEMP-FIELD WS-TEMP-FIELD INSPECT WS-TEMP-FIELD TALLYING WS-POSITION FOR ALL "." IF WS-POSITION IS GREATER THAN 0 DISPLAY "✓ Email domain contains dot" ELSE DISPLAY "WARNING: Email domain should contain dot" ADD 1 TO WS-WARNING-COUNT END-IF ELSE IF WS-POSITION IS EQUAL TO 0 DISPLAY "ERROR: Email missing @ symbol" ADD 1 TO WS-ERROR-COUNT ELSE DISPLAY "ERROR: Email contains multiple @ symbols" ADD 1 TO WS-ERROR-COUNT END-IF END-IF. VALIDATE-COMPLETE-RECORD. DISPLAY "Performing complete record validation..." *> Check all validation flags IF WS-ID-VALID IS EQUAL TO "Y" AND WS-NAME-VALID IS EQUAL TO "Y" AND WS-SALARY-VALID IS EQUAL TO "Y" AND WS-DATE-VALID IS EQUAL TO "Y" AND WS-EMAIL-VALID IS EQUAL TO "Y" DISPLAY "✓ Complete employee record is valid" ELSE DISPLAY "WARNING: Employee record has validation issues" IF WS-ID-VALID IS NOT EQUAL TO "Y" DISPLAY " - Employee ID validation failed" END-IF IF WS-NAME-VALID IS NOT EQUAL TO "Y" DISPLAY " - Employee name validation failed" END-IF IF WS-SALARY-VALID IS NOT EQUAL TO "Y" DISPLAY " - Salary validation failed" END-IF IF WS-DATE-VALID IS NOT EQUAL TO "Y" DISPLAY " - Hire date validation failed" END-IF IF WS-EMAIL-VALID IS NOT EQUAL TO "Y" DISPLAY " - Email validation failed" END-IF END-IF. DEMONSTRATE-BUSINESS-RULES. DISPLAY "=== BUSINESS RULE VALIDATION WITH IS ===" *> Promotion eligibility rules PERFORM CHECK-PROMOTION-ELIGIBILITY *> Bonus calculation rules PERFORM CHECK-BONUS-ELIGIBILITY *> Performance review requirements PERFORM CHECK-REVIEW-REQUIREMENTS. CHECK-PROMOTION-ELIGIBILITY. DISPLAY "Checking promotion eligibility..." MOVE WS-HIRE-DATE(1:4) TO WS-YEAR IF WS-CURRENT-YEAR - WS-YEAR IS GREATER THAN OR EQUAL TO 2 AND WS-GRADE IS EQUAL TO "A" OR WS-GRADE IS EQUAL TO "B" AND WS-STATUS IS EQUAL TO "ACTIVE" DISPLAY "✓ Employee is eligible for promotion" ELSE DISPLAY "✗ Employee is not eligible for promotion" IF WS-CURRENT-YEAR - WS-YEAR IS LESS THAN 2 DISPLAY " Reason: Less than 2 years of service" END-IF IF WS-GRADE IS NOT EQUAL TO "A" AND WS-GRADE IS NOT EQUAL TO "B" DISPLAY " Reason: Performance grade below B" END-IF IF WS-STATUS IS NOT EQUAL TO "ACTIVE" DISPLAY " Reason: Employee status is not ACTIVE" END-IF END-IF. CHECK-BONUS-ELIGIBILITY. DISPLAY "Checking bonus eligibility..." IF WS-GRADE IS EQUAL TO "A" AND WS-SALARY IS LESS THAN 100000 DISPLAY "✓ Eligible for performance bonus (Grade A, Salary < $100K)" ELSE IF WS-GRADE IS EQUAL TO "B" AND WS-SALARY IS LESS THAN 80000 DISPLAY "✓ Eligible for standard bonus (Grade B, Salary < $80K)" ELSE DISPLAY "✗ Not eligible for bonus" END-IF END-IF. CHECK-REVIEW-REQUIREMENTS. DISPLAY "Checking performance review requirements..." MOVE WS-HIRE-DATE(1:4) TO WS-YEAR IF WS-CURRENT-YEAR - WS-YEAR IS GREATER THAN OR EQUAL TO 1 AND WS-STATUS IS EQUAL TO "ACTIVE" DISPLAY "✓ Employee requires annual performance review" ELSE IF WS-CURRENT-YEAR - WS-YEAR IS LESS THAN 1 DISPLAY "✗ Employee hired less than 1 year ago" ELSE DISPLAY "✗ Employee status does not require review" END-IF END-IF. DISPLAY-VALIDATION-SUMMARY. DISPLAY "=== VALIDATION SUMMARY ===" DISPLAY "Total validations performed: " WS-VALIDATION-COUNT DISPLAY "Total errors found: " WS-ERROR-COUNT DISPLAY "Total warnings issued: " WS-WARNING-COUNT IF WS-ERROR-COUNT IS EQUAL TO ZERO DISPLAY "✓ No critical errors found" ELSE DISPLAY "✗ Critical errors require attention" END-IF IF WS-WARNING-COUNT IS EQUAL TO ZERO DISPLAY "✓ No warnings issued" ELSE DISPLAY "⚠ Warnings should be reviewed" END-IF. *> Additional IS keyword patterns and advanced usage ADVANCED-IS-PATTERNS. DISPLAY "=== ADVANCED IS PATTERNS ===" PERFORM DEMONSTRATE-SPECIAL-CONDITIONS PERFORM DEMONSTRATE-NESTED-CONDITIONS PERFORM DEMONSTRATE-CONDITION-NAMES. DEMONSTRATE-SPECIAL-CONDITIONS. DISPLAY "Special IS conditions:" 01 WS-TEST-VALUES. 05 WS-ZERO-VALUE PIC 9(5) VALUE 0. 05 WS-POSITIVE-VALUE PIC S9(5) VALUE 12345. 05 WS-NEGATIVE-VALUE PIC S9(5) VALUE -12345. 05 WS-SPACE-VALUE PIC X(10) VALUE SPACES. IF WS-ZERO-VALUE IS ZERO DISPLAY "✓ Value is zero" END-IF IF WS-POSITIVE-VALUE IS POSITIVE DISPLAY "✓ Value is positive" END-IF IF WS-NEGATIVE-VALUE IS NEGATIVE DISPLAY "✓ Value is negative" END-IF IF WS-SPACE-VALUE IS SPACES DISPLAY "✓ Value contains only spaces" END-IF. DEMONSTRATE-NESTED-CONDITIONS. DISPLAY "Nested IS conditions:" IF WS-EMPLOYEE-ID IS NUMERIC IF WS-EMPLOYEE-ID IS GREATER THAN 100000 IF WS-EMPLOYEE-ID IS LESS THAN 200000 DISPLAY "✓ Employee ID is in valid range 100001-199999" ELSE DISPLAY "Employee ID is too high" END-IF ELSE DISPLAY "Employee ID is too low" END-IF ELSE DISPLAY "Employee ID is not numeric" END-IF. DEMONSTRATE-CONDITION-NAMES. 01 WS-STATUS-FLAGS. 05 WS-RECORD-STATUS PIC X. 88 RECORD-IS-VALID VALUE "Y". 88 RECORD-IS-INVALID VALUE "N". 88 RECORD-IS-PENDING VALUE "P". MOVE "Y" TO WS-RECORD-STATUS IF RECORD-IS-VALID DISPLAY "✓ Record status is valid" END-IF *> This is equivalent to using IS with condition names IF WS-RECORD-STATUS IS EQUAL TO "Y" DISPLAY "✓ Status check using IS EQUAL TO" END-IF.
12345678910111213141516171819202122232425262728293001 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(8). 05 CUSTOMER-NAME PIC X(50). 05 PHONE-NUMBER PIC X(12). 05 EMAIL-ADDRESS PIC X(100). 05 CREDIT-SCORE PIC 9(3). 05 ACCOUNT-STATUS PIC X(10). PROCEDURE DIVISION. VALIDATE-CUSTOMER. *> ID validation IF CUSTOMER-ID IS NUMERIC AND CUSTOMER-ID IS GREATER THAN 10000000 DISPLAY "Valid customer ID" ELSE DISPLAY "Invalid customer ID" END-IF *> Name validation IF CUSTOMER-NAME IS NOT SPACES AND CUSTOMER-NAME IS ALPHABETIC DISPLAY "Valid customer name" END-IF *> Credit score validation IF CREDIT-SCORE IS NUMERIC AND CREDIT-SCORE IS GREATER THAN OR EQUAL TO 300 AND CREDIT-SCORE IS LESS THAN OR EQUAL TO 850 DISPLAY "Valid credit score range" END-IF.
12345678910111213141516171819202122232425262728293001 PRODUCT-RECORD. 05 PRODUCT-CODE PIC X(10). 05 PRODUCT-NAME PIC X(40). 05 QUANTITY PIC 9(6). 05 UNIT-PRICE PIC 9(6)V99. 05 CATEGORY PIC X(20). PROCEDURE DIVISION. VALIDATE-PRODUCT. *> Product code format IF PRODUCT-CODE IS ALPHANUMERIC AND PRODUCT-CODE IS NOT SPACES DISPLAY "Product code format valid" END-IF *> Quantity validation IF QUANTITY IS NUMERIC AND QUANTITY IS NOT NEGATIVE IF QUANTITY IS ZERO DISPLAY "Warning: Zero inventory" ELSE DISPLAY "Inventory level valid" END-IF END-IF *> Price validation IF UNIT-PRICE IS NUMERIC AND UNIT-PRICE IS POSITIVE DISPLAY "Unit price is valid" END-IF.
What is the main purpose of the IS keyword in COBOL?
Answer: The IS keyword improves code readability by making conditional expressions more English-like. While optional in most cases, it makes conditions clearer and follows COBOL's philosophy of readable, business-oriented syntax.
How do you test if a field contains only numeric data?
Answer: Use "IF field-name IS NUMERIC" to test if a field contains only numeric characters (0-9). This is essential for data validation before performing arithmetic operations.
How do you create negative conditions with IS?
Answer: Use "IS NOT" to create negative conditions, such as "IF field IS NOT ZERO" or "IF field IS NOT SPACES". This provides clear, readable negative logic.