MainframeMaster

COBOL Tutorial

COBOL SYSTEM-DEFAULT - Quick Reference

Progress0 of 0 lessons

Overview

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.

Purpose and Usage

  • System configuration access - Retrieve system configuration values
  • Default settings - Access system default parameters
  • Environment variables - Read system environment settings
  • System limits - Access system-imposed limits and boundaries
  • Portability - Improve program portability across systems

SYSTEM-DEFAULT vs Hardcoded Values

Hardcoded: BUFFER-SIZE = 4096
SYSTEM-DEFAULT: BUFFER-SIZE = SYSTEM-DEFAULT-BUFFER
Result: Adaptable to different system configurations

SYSTEM-DEFAULT provides system-specific values instead of hardcoded constants.

Syntax and Usage

SYSTEM-DEFAULT is used in the PROCEDURE DIVISION to access system-provided default values and configuration parameters.

Basic SYSTEM-DEFAULT Syntax

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
* 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.

Complete SYSTEM-DEFAULT Program Example

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
* 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.

Advanced SYSTEM-DEFAULT Usage

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
* 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.

Common Use Cases

SYSTEM-DEFAULT is essential in various scenarios where programs need to adapt to different system configurations and use system-provided values.

System Configuration Management

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
* 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.

Cross-Platform Compatibility

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
* 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.

Environment Adaptation

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
* 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.

Best Practices and Tips

Following these best practices ensures effective use of SYSTEM-DEFAULT in COBOL applications for better portability and adaptability.

SYSTEM-DEFAULT Best Practices

  • Always provide fallback values - Handle cases where system defaults are unavailable
  • Test on different systems - Verify behavior across different system configurations
  • Document system dependencies - Clearly document which system defaults are used
  • Handle missing defaults - Provide appropriate error handling for missing defaults
  • Use meaningful fallbacks - Choose sensible fallback values when defaults are unavailable
  • Validate system values - Verify that system defaults are within expected ranges

Common SYSTEM-DEFAULT Values

System DefaultDescriptionCommon Values
BUFFER-SIZEDefault buffer size for I/O operations4096, 8192, 16384
TIMEOUTDefault timeout for operations30, 60, 300 seconds
CURRENCYDefault currency codeUSD, EUR, GBP
LANGUAGEDefault language codeEN, ES, FR, DE
DATE-FORMATDefault date formatMM/DD/YYYY, DD/MM/YYYY
TIME-FORMATDefault time formatHH:MM:SS, HH:MM

Portability Considerations

  • System differences - Different systems may provide different default values
  • Version variations - System defaults may change between versions
  • Environment factors - Defaults may vary based on environment configuration
  • Fallback strategy - Always have a fallback strategy for missing defaults
  • Testing strategy - Test on multiple system configurations
  • Documentation - Document system dependencies and fallback values

SYSTEM-DEFAULT Quick Reference

AspectDescriptionExample
LocationPROCEDURE DIVISIONDuring program execution
Basic SyntaxMOVE SYSTEM-DEFAULT-[TYPE] TO variableMOVE SYSTEM-DEFAULT-BUFFER-SIZE TO BUFFER
Error HandlingCheck for valid values and provide fallbacksIF SYSTEM-DEFAULT-BUFFER > 0
TypesConfiguration, limits, settingsBUFFER-SIZE, TIMEOUT, CURRENCY
BenefitsPortability, adaptabilitySystem-independent code

Test Your Knowledge

1. What is the primary purpose of SYSTEM-DEFAULT in COBOL?

  • To define arithmetic operations
  • To access system default values, settings, and configuration parameters
  • To control file operations
  • To define data types

2. Where is SYSTEM-DEFAULT typically used in a COBOL program?

  • In the DATA DIVISION for system data definitions
  • In the PROCEDURE DIVISION to access system defaults
  • In the ENVIRONMENT DIVISION for system configuration
  • In the IDENTIFICATION DIVISION

3. What types of values can SYSTEM-DEFAULT provide?

  • Only numeric constants
  • Only alphanumeric constants
  • System settings, configuration values, and default parameters
  • Only file status codes

4. How does SYSTEM-DEFAULT improve program portability?

  • It has no effect on portability
  • By using system-provided defaults instead of hardcoded values
  • By reducing program size
  • By improving compilation speed

5. Which of the following is a common use of SYSTEM-DEFAULT?

  • File sorting operations
  • Accessing system configuration values, default settings, and environment parameters
  • Database operations
  • Mathematical calculations

Frequently Asked Questions