The SYSTEM-DEFAULT feature in COBOL provides access to system-provided default values, settings, and configuration parameters. It allows programs to retrieve and use system defaults, making them more portable and adaptable to different system configurations.
SYSTEM-DEFAULT provides system-specific values instead of hardcoded constants.
SYSTEM-DEFAULT is used in the PROCEDURE DIVISION to access system-provided default values and configuration parameters.
1234567891011121314151617181920* Basic SYSTEM-DEFAULT syntax examples PROCEDURE DIVISION. * Access system default buffer size MOVE SYSTEM-DEFAULT-BUFFER-SIZE TO BUFFER-SIZE * Access system default timeout MOVE SYSTEM-DEFAULT-TIMEOUT TO TIMEOUT-VALUE * Access system default currency MOVE SYSTEM-DEFAULT-CURRENCY TO CURRENCY-CODE * Access system default language MOVE SYSTEM-DEFAULT-LANGUAGE TO LANGUAGE-CODE * Access system default date format MOVE SYSTEM-DEFAULT-DATE-FORMAT TO DATE-FORMAT * Access system default time format MOVE SYSTEM-DEFAULT-TIME-FORMAT TO TIME-FORMAT
Basic SYSTEM-DEFAULT operations for accessing system values.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768* Complete COBOL program demonstrating SYSTEM-DEFAULT usage IDENTIFICATION DIVISION. PROGRAM-ID. SYSTEM-DEFAULT-DEMO. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 SYSTEM-CONFIG. 05 BUFFER-SIZE PIC 9(6). 05 TIMEOUT-VALUE PIC 9(4). 05 CURRENCY-CODE PIC X(3). 05 LANGUAGE-CODE PIC X(2). 05 DATE-FORMAT PIC X(10). 05 TIME-FORMAT PIC X(10). 01 SYSTEM-LIMITS. 05 MAX-FILES PIC 9(3). 05 MAX-RECORDS PIC 9(8). 05 MAX-MEMORY PIC 9(10). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM LOAD-SYSTEM-DEFAULTS PERFORM DISPLAY-SYSTEM-CONFIG PERFORM USE-SYSTEM-DEFAULTS STOP RUN. LOAD-SYSTEM-DEFAULTS. * Load system default configuration values MOVE SYSTEM-DEFAULT-BUFFER-SIZE TO BUFFER-SIZE MOVE SYSTEM-DEFAULT-TIMEOUT TO TIMEOUT-VALUE MOVE SYSTEM-DEFAULT-CURRENCY TO CURRENCY-CODE MOVE SYSTEM-DEFAULT-LANGUAGE TO LANGUAGE-CODE MOVE SYSTEM-DEFAULT-DATE-FORMAT TO DATE-FORMAT MOVE SYSTEM-DEFAULT-TIME-FORMAT TO TIME-FORMAT. DISPLAY-SYSTEM-CONFIG. DISPLAY "System Configuration:" DISPLAY "Buffer Size: " BUFFER-SIZE DISPLAY "Timeout: " TIMEOUT-VALUE DISPLAY "Currency: " CURRENCY-CODE DISPLAY "Language: " LANGUAGE-CODE DISPLAY "Date Format: " DATE-FORMAT DISPLAY "Time Format: " TIME-FORMAT. USE-SYSTEM-DEFAULTS. * Use system defaults in program logic IF BUFFER-SIZE > 0 PERFORM CONFIGURE-BUFFER END-IF IF TIMEOUT-VALUE > 0 PERFORM SET-TIMEOUT END-IF * Use system currency for financial calculations PERFORM FORMAT-CURRENCY. CONFIGURE-BUFFER. DISPLAY "Configuring buffer with size: " BUFFER-SIZE. SET-TIMEOUT. DISPLAY "Setting timeout to: " TIMEOUT-VALUE " seconds". FORMAT-CURRENCY. DISPLAY "Using currency format: " CURRENCY-CODE.
The program demonstrates loading and using system default values.
123456789101112131415161718192021222324252627282930313233343536373839404142* Advanced SYSTEM-DEFAULT usage with error handling PROCEDURE DIVISION. LOAD-SYSTEM-CONFIGURATION. * Load system defaults with fallback values PERFORM GET-SYSTEM-BUFFER-SIZE PERFORM GET-SYSTEM-TIMEOUT PERFORM GET-SYSTEM-CURRENCY PERFORM GET-SYSTEM-LANGUAGE. GET-SYSTEM-BUFFER-SIZE. * Try to get system default, use fallback if not available IF SYSTEM-DEFAULT-BUFFER-SIZE > 0 MOVE SYSTEM-DEFAULT-BUFFER-SIZE TO BUFFER-SIZE ELSE MOVE 4096 TO BUFFER-SIZE * Fallback value DISPLAY "Using fallback buffer size: " BUFFER-SIZE END-IF. GET-SYSTEM-TIMEOUT. IF SYSTEM-DEFAULT-TIMEOUT > 0 MOVE SYSTEM-DEFAULT-TIMEOUT TO TIMEOUT-VALUE ELSE MOVE 30 TO TIMEOUT-VALUE * Fallback value DISPLAY "Using fallback timeout: " TIMEOUT-VALUE END-IF. GET-SYSTEM-CURRENCY. IF SYSTEM-DEFAULT-CURRENCY NOT = SPACES MOVE SYSTEM-DEFAULT-CURRENCY TO CURRENCY-CODE ELSE MOVE "USD" TO CURRENCY-CODE * Fallback value DISPLAY "Using fallback currency: " CURRENCY-CODE END-IF. GET-SYSTEM-LANGUAGE. IF SYSTEM-DEFAULT-LANGUAGE NOT = SPACES MOVE SYSTEM-DEFAULT-LANGUAGE TO LANGUAGE-CODE ELSE MOVE "EN" TO LANGUAGE-CODE * Fallback value DISPLAY "Using fallback language: " LANGUAGE-CODE END-IF.
Advanced SYSTEM-DEFAULT usage with error handling and fallback values.
SYSTEM-DEFAULT is essential in various scenarios where programs need to adapt to different system configurations and use system-provided values.
1234567891011121314151617181920212223242526272829303132333435363738394041424344* System configuration management using SYSTEM-DEFAULT IDENTIFICATION DIVISION. PROGRAM-ID. SYSTEM-CONFIG-MANAGER. DATA DIVISION. WORKING-STORAGE SECTION. 01 SYSTEM-SETTINGS. 05 DEFAULT-BUFFER PIC 9(6). 05 DEFAULT-TIMEOUT PIC 9(4). 05 DEFAULT-CURRENCY PIC X(3). 05 DEFAULT-LANGUAGE PIC X(2). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM LOAD-SYSTEM-SETTINGS PERFORM CONFIGURE-APPLICATION PERFORM START-APPLICATION STOP RUN. LOAD-SYSTEM-SETTINGS. * Load all system default settings MOVE SYSTEM-DEFAULT-BUFFER-SIZE TO DEFAULT-BUFFER MOVE SYSTEM-DEFAULT-TIMEOUT TO DEFAULT-TIMEOUT MOVE SYSTEM-DEFAULT-CURRENCY TO DEFAULT-CURRENCY MOVE SYSTEM-DEFAULT-LANGUAGE TO DEFAULT-LANGUAGE DISPLAY "System settings loaded:" DISPLAY "Buffer: " DEFAULT-BUFFER DISPLAY "Timeout: " DEFAULT-TIMEOUT DISPLAY "Currency: " DEFAULT-CURRENCY DISPLAY "Language: " DEFAULT-LANGUAGE. CONFIGURE-APPLICATION. * Configure application using system defaults PERFORM SET-BUFFER-CONFIGURATION PERFORM SET-TIMEOUT-CONFIGURATION PERFORM SET-CURRENCY-CONFIGURATION PERFORM SET-LANGUAGE-CONFIGURATION. SET-BUFFER-CONFIGURATION. IF DEFAULT-BUFFER > 0 MOVE DEFAULT-BUFFER TO APPLICATION-BUFFER-SIZE DISPLAY "Buffer configured: " APPLICATION-BUFFER-SIZE END-IF.
System configuration management using SYSTEM-DEFAULT values.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748* Cross-platform compatibility using SYSTEM-DEFAULT IDENTIFICATION DIVISION. PROGRAM-ID. CROSS-PLATFORM-APP. DATA DIVISION. WORKING-STORAGE SECTION. 01 PLATFORM-CONFIG. 05 PLATFORM-TYPE PIC X(10). 05 PLATFORM-VERSION PIC X(10). 05 PLATFORM-ARCH PIC X(10). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM DETECT-PLATFORM PERFORM LOAD-PLATFORM-DEFAULTS PERFORM ADAPT-TO-PLATFORM STOP RUN. DETECT-PLATFORM. * Detect platform and load appropriate defaults MOVE SYSTEM-DEFAULT-PLATFORM TO PLATFORM-TYPE MOVE SYSTEM-DEFAULT-VERSION TO PLATFORM-VERSION MOVE SYSTEM-DEFAULT-ARCHITECTURE TO PLATFORM-ARCH DISPLAY "Platform detected:" DISPLAY "Type: " PLATFORM-TYPE DISPLAY "Version: " PLATFORM-VERSION DISPLAY "Architecture: " PLATFORM-ARCH. LOAD-PLATFORM-DEFAULTS. * Load platform-specific default values IF PLATFORM-TYPE = "WINDOWS" PERFORM LOAD-WINDOWS-DEFAULTS ELSE IF PLATFORM-TYPE = "UNIX" PERFORM LOAD-UNIX-DEFAULTS ELSE IF PLATFORM-TYPE = "MAINFRAME" PERFORM LOAD-MAINFRAME-DEFAULTS ELSE PERFORM LOAD-GENERIC-DEFAULTS END-IF. LOAD-WINDOWS-DEFAULTS. MOVE SYSTEM-DEFAULT-WINDOWS-BUFFER TO BUFFER-SIZE MOVE SYSTEM-DEFAULT-WINDOWS-TIMEOUT TO TIMEOUT-VALUE. LOAD-UNIX-DEFAULTS. MOVE SYSTEM-DEFAULT-UNIX-BUFFER TO BUFFER-SIZE MOVE SYSTEM-DEFAULT-UNIX-TIMEOUT TO TIMEOUT-VALUE.
Cross-platform compatibility using SYSTEM-DEFAULT for different platforms.
12345678910111213141516171819202122232425262728293031323334353637383940414243* Environment adaptation using SYSTEM-DEFAULT IDENTIFICATION DIVISION. PROGRAM-ID. ENVIRONMENT-ADAPTER. DATA DIVISION. WORKING-STORAGE SECTION. 01 ENVIRONMENT-CONFIG. 05 ENV-TYPE PIC X(10). 05 ENV-LEVEL PIC X(10). 05 ENV-SECURITY PIC X(10). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM DETECT-ENVIRONMENT PERFORM LOAD-ENVIRONMENT-DEFAULTS PERFORM ADAPT-TO-ENVIRONMENT STOP RUN. DETECT-ENVIRONMENT. * Detect environment and load appropriate defaults MOVE SYSTEM-DEFAULT-ENVIRONMENT TO ENV-TYPE MOVE SYSTEM-DEFAULT-ENVIRONMENT-LEVEL TO ENV-LEVEL MOVE SYSTEM-DEFAULT-SECURITY-LEVEL TO ENV-SECURITY. LOAD-ENVIRONMENT-DEFAULTS. * Load environment-specific default values IF ENV-TYPE = "DEVELOPMENT" PERFORM LOAD-DEV-DEFAULTS ELSE IF ENV-TYPE = "TESTING" PERFORM LOAD-TEST-DEFAULTS ELSE IF ENV-TYPE = "PRODUCTION" PERFORM LOAD-PROD-DEFAULTS END-IF. LOAD-DEV-DEFAULTS. MOVE SYSTEM-DEFAULT-DEV-BUFFER TO BUFFER-SIZE MOVE SYSTEM-DEFAULT-DEV-TIMEOUT TO TIMEOUT-VALUE MOVE SYSTEM-DEFAULT-DEV-LOG-LEVEL TO LOG-LEVEL. LOAD-PROD-DEFAULTS. MOVE SYSTEM-DEFAULT-PROD-BUFFER TO BUFFER-SIZE MOVE SYSTEM-DEFAULT-PROD-TIMEOUT TO TIMEOUT-VALUE MOVE SYSTEM-DEFAULT-PROD-LOG-LEVEL TO LOG-LEVEL.
Environment adaptation using SYSTEM-DEFAULT for different environments.
Following these best practices ensures effective use of SYSTEM-DEFAULT in COBOL applications for better portability and adaptability.
System Default | Description | Common Values |
---|---|---|
BUFFER-SIZE | Default buffer size for I/O operations | 4096, 8192, 16384 |
TIMEOUT | Default timeout for operations | 30, 60, 300 seconds |
CURRENCY | Default currency code | USD, EUR, GBP |
LANGUAGE | Default language code | EN, ES, FR, DE |
DATE-FORMAT | Default date format | MM/DD/YYYY, DD/MM/YYYY |
TIME-FORMAT | Default time format | HH:MM:SS, HH:MM |
Aspect | Description | Example |
---|---|---|
Location | PROCEDURE DIVISION | During program execution |
Basic Syntax | MOVE SYSTEM-DEFAULT-[TYPE] TO variable | MOVE SYSTEM-DEFAULT-BUFFER-SIZE TO BUFFER |
Error Handling | Check for valid values and provide fallbacks | IF SYSTEM-DEFAULT-BUFFER > 0 |
Types | Configuration, limits, settings | BUFFER-SIZE, TIMEOUT, CURRENCY |
Benefits | Portability, adaptability | System-independent code |
1. What is the primary purpose of SYSTEM-DEFAULT in COBOL?
2. Where is SYSTEM-DEFAULT typically used in a COBOL program?
3. What types of values can SYSTEM-DEFAULT provide?
4. How does SYSTEM-DEFAULT improve program portability?
5. Which of the following is a common use of SYSTEM-DEFAULT?
Understanding system configuration in COBOL.
Working with environment variables in COBOL.
Developing portable COBOL applications.
Integrating COBOL with system components.
Managing program configuration effectively.