The OFF keyword in COBOL is used in various contexts to indicate a disabled, inactive, or false state. It's commonly used with switches, debugging controls, special names definitions, and conditional statements. The OFF keyword provides a standard way to represent the negative or inactive state in boolean and control operations.
Setting switches to inactive state
Disabling debugging features
Defining switch states and condition names
Representing false or inactive conditions
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
UPSI-0 ON STATUS IS DEBUG-MODE
OFF STATUS IS PRODUCTION-MODE
UPSI-1 ON STATUS IS TRACE-ENABLED
OFF STATUS IS TRACE-DISABLED
UPSI-2 ON STATUS IS VERBOSE-OUTPUT
OFF STATUS IS QUIET-OUTPUT
UPSI-3 ON STATUS IS VALIDATION-STRICT
OFF STATUS IS VALIDATION-LENIENT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PROCESSING-FLAGS.
05 WS-DEBUG-FLAG PIC X VALUE 'N'.
05 WS-TRACE-FLAG PIC X VALUE 'N'.
05 WS-OUTPUT-FLAG PIC X VALUE 'N'.
PROCEDURE DIVISION.
CHECK-SYSTEM-SWITCHES.
IF DEBUG-MODE
MOVE 'Y' TO WS-DEBUG-FLAG
DISPLAY "DEBUG MODE ENABLED"
ELSE IF PRODUCTION-MODE
MOVE 'N' TO WS-DEBUG-FLAG
DISPLAY "PRODUCTION MODE ACTIVE"
END-IF.
IF TRACE-ENABLED
MOVE 'Y' TO WS-TRACE-FLAG
DISPLAY "TRACING ENABLED"
ELSE IF TRACE-DISABLED
MOVE 'N' TO WS-TRACE-FLAG
DISPLAY "TRACING DISABLED"
END-IF.Using OFF status in SPECIAL-NAMES for switch control.
WORKING-STORAGE SECTION.
01 WS-APPLICATION-SWITCHES.
05 WS-AUTO-COMMIT PIC X VALUE 'Y'.
88 AUTO-COMMIT-ON VALUE 'Y'.
88 AUTO-COMMIT-OFF VALUE 'N'.
05 WS-ERROR-LOGGING PIC X VALUE 'Y'.
88 ERROR-LOG-ON VALUE 'Y'.
88 ERROR-LOG-OFF VALUE 'N'.
05 WS-BACKUP-MODE PIC X VALUE 'N'.
88 BACKUP-ON VALUE 'Y'.
88 BACKUP-OFF VALUE 'N'.
PROCEDURE DIVISION.
CONFIGURE-APPLICATION.
*> Turn OFF auto-commit for batch processing
SET AUTO-COMMIT-OFF TO TRUE.
*> Turn OFF error logging for performance
SET ERROR-LOG-OFF TO TRUE.
*> Keep backup OFF for test environment
SET BACKUP-OFF TO TRUE.
DISPLAY "APPLICATION CONFIGURATION:"
IF AUTO-COMMIT-OFF
DISPLAY " AUTO-COMMIT: OFF"
END-IF.
IF ERROR-LOG-OFF
DISPLAY " ERROR LOGGING: OFF"
END-IF.
IF BACKUP-OFF
DISPLAY " BACKUP MODE: OFF"
END-IF.Setting application features to OFF state.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-PC WITH DEBUGGING MODE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-DEBUG-CONTROLS.
05 WS-DEBUG-LEVEL PIC 9 VALUE 0.
88 DEBUG-OFF VALUE 0.
88 DEBUG-BASIC VALUE 1.
88 DEBUG-DETAILED VALUE 2.
88 DEBUG-VERBOSE VALUE 3.
PROCEDURE DIVISION.
MAIN-PROCESSING.
*> Check if debugging is OFF
IF DEBUG-OFF
DISPLAY "DEBUGGING IS OFF - PRODUCTION MODE"
PERFORM PRODUCTION-PROCESSING
ELSE
DISPLAY "DEBUG LEVEL: " WS-DEBUG-LEVEL
PERFORM DEBUG-PROCESSING
END-IF.
PRODUCTION-PROCESSING.
D DISPLAY "DEBUG: This line only executes when debugging is ON".
DISPLAY "EXECUTING PRODUCTION LOGIC"
PERFORM PROCESS-TRANSACTIONS.
DEBUG-PROCESSING.
DISPLAY "DEBUG MODE ACTIVE"
IF DEBUG-BASIC
DISPLAY " BASIC DEBUGGING ENABLED"
ELSE IF DEBUG-DETAILED
DISPLAY " DETAILED DEBUGGING ENABLED"
ELSE IF DEBUG-VERBOSE
DISPLAY " VERBOSE DEBUGGING ENABLED"
END-IF.Controlling debug features with OFF status.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-FEATURE-FLAGS.
05 WS-NEW-ALGORITHM PIC X VALUE 'N'.
88 NEW-ALGO-ON VALUE 'Y'.
88 NEW-ALGO-OFF VALUE 'N'.
05 WS-ADVANCED-VALIDATION PIC X VALUE 'N'.
88 ADV-VALID-ON VALUE 'Y'.
88 ADV-VALID-OFF VALUE 'N'.
05 WS-PERFORMANCE-MODE PIC X VALUE 'Y'.
88 PERF-MODE-ON VALUE 'Y'.
88 PERF-MODE-OFF VALUE 'N'.
PROCEDURE DIVISION.
PROCESS-CUSTOMER-DATA.
*> Use different processing based on feature flags
IF NEW-ALGO-OFF
DISPLAY "USING LEGACY ALGORITHM"
PERFORM LEGACY-PROCESSING
ELSE
DISPLAY "USING NEW ALGORITHM"
PERFORM ENHANCED-PROCESSING
END-IF.
*> Skip advanced validation if OFF
IF ADV-VALID-OFF
DISPLAY "ADVANCED VALIDATION: OFF"
PERFORM BASIC-VALIDATION
ELSE
DISPLAY "ADVANCED VALIDATION: ON"
PERFORM COMPREHENSIVE-VALIDATION
END-IF.
*> Performance mode affects logging
IF PERF-MODE-ON
*> Minimal logging when performance mode is ON
DISPLAY "PERFORMANCE MODE: ON - MINIMAL LOGGING"
ELSE
*> Full logging when performance mode is OFF
DISPLAY "PERFORMANCE MODE: OFF - FULL LOGGING"
PERFORM DETAILED-LOGGING
END-IF.Using OFF state for feature toggles and conditional processing.
01 WS-SYSTEM-STATUS.
05 WS-MAINTENANCE-MODE PIC X VALUE 'N'.
88 MAINTENANCE-ON VALUE 'Y'.
88 MAINTENANCE-OFF VALUE 'N'.
05 WS-ONLINE-PROCESSING PIC X VALUE 'Y'.
88 ONLINE-ON VALUE 'Y'.
88 ONLINE-OFF VALUE 'N'.
05 WS-BATCH-ALLOWED PIC X VALUE 'Y'.
88 BATCH-ON VALUE 'Y'.
88 BATCH-OFF VALUE 'N'.
PROCEDURE DIVISION.
CHECK-SYSTEM-AVAILABILITY.
*> Check if system is in maintenance mode
IF MAINTENANCE-ON
DISPLAY "SYSTEM IN MAINTENANCE MODE"
SET ONLINE-OFF TO TRUE
SET BATCH-OFF TO TRUE
PERFORM MAINTENANCE-PROCEDURES
EXIT PARAGRAPH
END-IF.
*> Normal operations when maintenance is OFF
IF MAINTENANCE-OFF
DISPLAY "SYSTEM AVAILABLE FOR PROCESSING"
IF ONLINE-OFF
DISPLAY "ONLINE PROCESSING: OFF"
DISPLAY "SYSTEM RUNNING IN BATCH-ONLY MODE"
ELSE
DISPLAY "ONLINE PROCESSING: ON"
END-IF
IF BATCH-OFF
DISPLAY "BATCH PROCESSING: OFF"
DISPLAY "ONLINE-ONLY MODE ACTIVE"
ELSE
DISPLAY "BATCH PROCESSING: ON"
END-IF
END-IF.
SYSTEM-SHUTDOWN-SEQUENCE.
DISPLAY "INITIATING SYSTEM SHUTDOWN"
*> Turn OFF online processing first
SET ONLINE-OFF TO TRUE
DISPLAY "ONLINE PROCESSING: OFF"
PERFORM COMPLETE-ONLINE-TRANSACTIONS
*> Turn OFF batch processing
SET BATCH-OFF TO TRUE
DISPLAY "BATCH PROCESSING: OFF"
PERFORM COMPLETE-BATCH-JOBS
*> Enable maintenance mode
SET MAINTENANCE-ON TO TRUE
DISPLAY "MAINTENANCE MODE: ON"
DISPLAY "SYSTEM READY FOR MAINTENANCE".Managing system states with OFF conditions.
01 WS-FILE-CONTROLS.
05 WS-AUTO-BACKUP PIC X VALUE 'Y'.
88 BACKUP-ON VALUE 'Y'.
88 BACKUP-OFF VALUE 'N'.
05 WS-COMPRESSION PIC X VALUE 'N'.
88 COMPRESS-ON VALUE 'Y'.
88 COMPRESS-OFF VALUE 'N'.
05 WS-ENCRYPTION PIC X VALUE 'Y'.
88 ENCRYPT-ON VALUE 'Y'.
88 ENCRYPT-OFF VALUE 'N'.
PROCEDURE DIVISION.
SETUP-FILE-PROCESSING.
DISPLAY "FILE PROCESSING CONFIGURATION:"
IF BACKUP-OFF
DISPLAY " AUTOMATIC BACKUP: OFF"
DISPLAY " Manual backup required"
ELSE
DISPLAY " AUTOMATIC BACKUP: ON"
END-IF.
IF COMPRESS-OFF
DISPLAY " COMPRESSION: OFF"
DISPLAY " Files will not be compressed"
ELSE
DISPLAY " COMPRESSION: ON"
END-IF.
IF ENCRYPT-OFF
DISPLAY " ENCRYPTION: OFF"
DISPLAY " WARNING: Files will be stored unencrypted"
ELSE
DISPLAY " ENCRYPTION: ON"
END-IF.
PROCESS-FILE-WITH-OPTIONS.
OPEN OUTPUT DATA-FILE.
PERFORM WRITE-FILE-DATA.
*> Post-processing based on flags
IF BACKUP-ON
PERFORM CREATE-BACKUP-COPY
END-IF.
IF COMPRESS-ON
PERFORM COMPRESS-FILE
END-IF.
IF ENCRYPT-ON
PERFORM ENCRYPT-FILE
END-IF.
CLOSE DATA-FILE.File processing options using OFF states.
01 WS-LOGGING-CONTROLS.
05 WS-ERROR-LOGGING PIC X VALUE 'Y'.
88 ERROR-LOG-ON VALUE 'Y'.
88 ERROR-LOG-OFF VALUE 'N'.
05 WS-DEBUG-LOGGING PIC X VALUE 'N'.
88 DEBUG-LOG-ON VALUE 'Y'.
88 DEBUG-LOG-OFF VALUE 'N'.
05 WS-AUDIT-LOGGING PIC X VALUE 'Y'.
88 AUDIT-LOG-ON VALUE 'Y'.
88 AUDIT-LOG-OFF VALUE 'N'.
05 WS-TRACE-LOGGING PIC X VALUE 'N'.
88 TRACE-LOG-ON VALUE 'Y'.
88 TRACE-LOG-OFF VALUE 'N'.
PROCEDURE DIVISION.
LOG-MESSAGE.
*> Error logging (usually always ON in production)
IF ERROR-LOG-ON
PERFORM WRITE-ERROR-LOG
END-IF.
*> Debug logging (usually OFF in production)
IF DEBUG-LOG-OFF
*> Skip debug logging for performance
CONTINUE
ELSE
PERFORM WRITE-DEBUG-LOG
END-IF.
*> Audit logging (required for compliance)
IF AUDIT-LOG-OFF
DISPLAY "WARNING: AUDIT LOGGING IS OFF"
DISPLAY "THIS MAY VIOLATE COMPLIANCE REQUIREMENTS"
ELSE
PERFORM WRITE-AUDIT-LOG
END-IF.
*> Trace logging (very verbose, usually OFF)
IF TRACE-LOG-OFF
CONTINUE
ELSE
PERFORM WRITE-TRACE-LOG
END-IF.
CONFIGURE-PRODUCTION-LOGGING.
*> Production logging configuration
SET ERROR-LOG-ON TO TRUE *> Always log errors
SET DEBUG-LOG-OFF TO TRUE *> Turn OFF debug for performance
SET AUDIT-LOG-ON TO TRUE *> Required for compliance
SET TRACE-LOG-OFF TO TRUE *> Turn OFF trace for performance
DISPLAY "PRODUCTION LOGGING CONFIGURED:"
DISPLAY " ERROR LOGGING: ON"
DISPLAY " DEBUG LOGGING: OFF"
DISPLAY " AUDIT LOGGING: ON"
DISPLAY " TRACE LOGGING: OFF".Controlling different logging levels with OFF settings.
01 WS-PERFORMANCE-FLAGS.
05 WS-DETAILED-VALIDATION PIC X VALUE 'N'.
88 DETAIL-VALID-ON VALUE 'Y'.
88 DETAIL-VALID-OFF VALUE 'N'.
05 WS-STATISTICS-CALC PIC X VALUE 'N'.
88 STATS-CALC-ON VALUE 'Y'.
88 STATS-CALC-OFF VALUE 'N'.
05 WS-REAL-TIME-UPDATES PIC X VALUE 'N'.
88 REALTIME-ON VALUE 'Y'.
88 REALTIME-OFF VALUE 'N'.
PROCEDURE DIVISION.
PROCESS-TRANSACTION-FAST.
*> Core transaction processing (always done)
PERFORM VALIDATE-BASIC-TRANSACTION.
PERFORM UPDATE-ACCOUNT-BALANCE.
*> Optional expensive operations
IF DETAIL-VALID-OFF
*> Skip detailed validation for speed
DISPLAY "DETAILED VALIDATION: OFF (FAST MODE)"
ELSE
PERFORM DETAILED-TRANSACTION-VALIDATION
END-IF.
IF STATS-CALC-OFF
*> Skip statistics calculation for speed
DISPLAY "STATISTICS CALCULATION: OFF (FAST MODE)"
ELSE
PERFORM CALCULATE-TRANSACTION-STATISTICS
END-IF.
IF REALTIME-OFF
*> Batch update mode for better performance
DISPLAY "REAL-TIME UPDATES: OFF (BATCH MODE)"
PERFORM QUEUE-FOR-BATCH-UPDATE
ELSE
PERFORM IMMEDIATE-DATABASE-UPDATE
END-IF.
ENABLE-FAST-MODE.
*> Configure for maximum performance
SET DETAIL-VALID-OFF TO TRUE
SET STATS-CALC-OFF TO TRUE
SET REALTIME-OFF TO TRUE
DISPLAY "FAST MODE ENABLED:"
DISPLAY " DETAILED VALIDATION: OFF"
DISPLAY " STATISTICS CALCULATION: OFF"
DISPLAY " REAL-TIME UPDATES: OFF"
DISPLAY " PERFORMANCE OPTIMIZED FOR HIGH VOLUME".Using OFF settings for performance optimization.
01 WS-ENVIRONMENT-CONFIG.
05 WS-ENVIRONMENT PIC X(10) VALUE "PRODUCTION".
05 WS-CONFIG-FLAGS.
10 WS-VERBOSE-MODE PIC X VALUE 'N'.
88 VERBOSE-ON VALUE 'Y'.
88 VERBOSE-OFF VALUE 'N'.
10 WS-TEST-MODE PIC X VALUE 'N'.
88 TEST-ON VALUE 'Y'.
88 TEST-OFF VALUE 'N'.
10 WS-MOCK-SERVICES PIC X VALUE 'N'.
88 MOCK-ON VALUE 'Y'.
88 MOCK-OFF VALUE 'N'.
PROCEDURE DIVISION.
CONFIGURE-BY-ENVIRONMENT.
EVALUATE WS-ENVIRONMENT
WHEN "DEVELOPMENT"
SET VERBOSE-ON TO TRUE
SET TEST-ON TO TRUE
SET MOCK-ON TO TRUE
WHEN "TESTING"
SET VERBOSE-ON TO TRUE
SET TEST-ON TO TRUE
SET MOCK-OFF TO TRUE
WHEN "STAGING"
SET VERBOSE-OFF TO TRUE
SET TEST-OFF TO TRUE
SET MOCK-OFF TO TRUE
WHEN "PRODUCTION"
SET VERBOSE-OFF TO TRUE
SET TEST-OFF TO TRUE
SET MOCK-OFF TO TRUE
WHEN OTHER
DISPLAY "UNKNOWN ENVIRONMENT: " WS-ENVIRONMENT
DISPLAY "USING SAFE DEFAULTS"
SET VERBOSE-OFF TO TRUE
SET TEST-OFF TO TRUE
SET MOCK-OFF TO TRUE
END-EVALUATE.
DISPLAY "ENVIRONMENT: " WS-ENVIRONMENT
IF VERBOSE-OFF
DISPLAY " VERBOSE MODE: OFF"
END-IF
IF TEST-OFF
DISPLAY " TEST MODE: OFF"
END-IF
IF MOCK-OFF
DISPLAY " MOCK SERVICES: OFF"
END-IF.Environment-specific configuration using OFF states.
| Pattern | Use Case | Example |
|---|---|---|
| Feature Toggle | Enable/disable functionality | 88 FEATURE-OFF VALUE 'N' |
| Debug Control | Control debugging output | 88 DEBUG-OFF VALUE '0' |
| Performance Mode | Optimize for speed | 88 VALIDATION-OFF VALUE 'N' |
| System State | Control system availability | 88 MAINTENANCE-OFF VALUE 'N' |
Complementary keyword for active states
Environment section for switch definitions
88-level items for boolean logic
Setting condition names to ON or OFF