OFF

Overview

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.

Primary Uses

Switch Control

Setting switches to inactive state

Debug Controls

Disabling debugging features

SPECIAL-NAMES

Defining switch states and condition names

Boolean Logic

Representing false or inactive conditions

Switch and UPSI Usage

SPECIAL-NAMES with Switches

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.

Runtime 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.

Debugging Controls

Debug Mode Control

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.

Conditional Processing

Feature Toggle Implementation

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.

System State Management

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.

File and I/O Controls

File Processing Flags

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.

Error Handling and Logging

Logging Level Control

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.

Performance Optimization

Optional Processing Control

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.

Configuration Management

Environment-Based Configuration

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.

Best Practices

  • Use descriptive condition names with clear ON/OFF states
  • Document the meaning and impact of each OFF setting
  • Set safe defaults for production environments
  • Use OFF states for performance optimization in high-volume processing
  • Validate configuration settings at program startup

Common Patterns

PatternUse CaseExample
Feature ToggleEnable/disable functionality88 FEATURE-OFF VALUE 'N'
Debug ControlControl debugging output88 DEBUG-OFF VALUE '0'
Performance ModeOptimize for speed88 VALIDATION-OFF VALUE 'N'
System StateControl system availability88 MAINTENANCE-OFF VALUE 'N'

Related Concepts

ON Keyword

Complementary keyword for active states

SPECIAL-NAMES

Environment section for switch definitions

Condition Names

88-level items for boolean logic

SET Statement

Setting condition names to ON or OFF