Specify a webhook-driven task for OpenClaw
Describe event inputs, validation, deduplication, and intended actions before integration work.
5,410,901 AI resources indexedWorking toward the world’s largest AI resource index.
COBOL for mainframe and legacy business systems. Use for .cob files.
---
name: cobol-0219c9302b86
description: Expert COBOL programming assistance covering enterprise batch processing, divisions, copybooks, and data formatting. Use when maintaining legacy banking, government, or mainframe systems.
---
# COBOL
COBOL runs 70% of the world's business transactions. Modern COBOL (GnuCOBOL 3.2 / IBM Enterprise COBOL) supports **JSON**, XML, and Object-Oriented features.
## When to Use
- **Mainframe Core Banking & Insurance Systems**: Maintaining and extending mission-critical legacy financial ledger engines.
- **High-Volume Fixed-Point Financial Calculations**: Executing exact decimal math without floating-point rounding errors.
- **Batch Processing on IBM z/OS**: Processing millions of nightly accounting records, payroll statements, and clearinghouse transactions.
- **Modernizing Legacy Mainframes via APIs**: Wrapping legacy COBOL subprograms with REST/gRPC interfaces via IBM z/OS Connect.
## Quick Start
```cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello, Enterprise COBOL'.
STOP RUN.
```
## Core Concepts
### Four Classical Divisions Architecture
Every COBOL program is structured strictly across four standard functional divisions:
```cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-BANKING.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TRANSACTION-AMOUNT PIC 9(7)V99 VALUE 1500.50.
01 WS-FORMATTED-OUTPUT PIC $$,$$$,$$9.99.
PROCEDURE DIVISION.
MOVE WS-TRANSACTION-AMOUNT TO WS-FORMATTED-OUTPUT
DISPLAY "Processed Amount: " WS-FORMATTED-OUTPUT
GOBACK.
```
### Picture Clauses (`PIC`) for Fixed-Point Arithmetic
Eliminates floating-point rounding discrepancies by defining exact digit layouts and implied decimals (`V`):
```cobol
01 WS-ACCOUNT-BALANCE PIC S9(9)V99 COMP-3.
*> S: Signed, 9 digits before decimal, V: implied decimal, 2 fractional digits
*> COMP-3: Packed Decimal (2 digits per byte) optimized for mainframe ALU
```
### Structured Paragraphs & PERFORM Loops
Modern COBOL (COBOL 2002/2014) utilizes structured control statements:
```cobol
PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > 10
ADD WS-ITEM-PRICE(WS-IDX) TO WS-ORDER-TOTAL
END-PERFORM.
```
## Common Patterns
### Sequential File Processing Loop
**Problem**: Processing large fixed-width batch files without loading entire file into memory.
**Solution**:
Use structured `READ` loop with `AT END` flag:
```cobol
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE.
01 CUSTOMER-RECORD.
05 CUST-ID PIC 9(5).
05 CUST-NAME PIC X(20).
WORKING-STORAGE SECTION.
01 WS-EOF PIC X VALUE 'N'.
88 END-OF-FILE VALUE 'Y'.
PROCEDURE DIVISION.
100-MAIN-PROCESS.
OPEN INPUT CUSTOMER-FILE
PERFORM UNTIL END-OF-FILE
READ CUSTOMER-FILE
AT END
SET END-OF-FILE TO TRUE
NOT AT END
DISPLAY 'Customer: ' CUST-NAME
END-READ
END-PERFORM
CLOSE CUSTOMER-FILE
STOP RUN.
```
## Best Practices
**Do**:
- Use `COMP-3` (Packed Decimal) for Financial Numbers: Maximize mathematical computation performance on IBM Z enterprise hardware.
- Adopt Modern Free-Format COBOL: Eliminate column 7-72 restrictions when supported by modern compilers (GnuCOBOL, IBM Enterprise COBOL).
- Use Explicit Scope Terminators: Always close control blocks with `END-IF`, `END-PERFORM`, and `END-READ` rather than terminal periods.
- Validate Input Data with `NUMERIC` Tests: Run `IF WS-INPUT-VAL IS NUMERIC` to prevent data exception abends (`0C7`).
**Don't**:
- Use `GO TO` statements: Eliminate unstructured `GO TO` jumps; use modern structured `PERFORM` paragraphs.
- Rely on terminal periods for logic flow: Stray periods terminate all nested `IF` conditions prematurely.
- Neglect binary fields initialization: Always initialize working-storage variables with `VALUE` clauses to prevent garbage data.
## Troubleshooting
| Error | Cause | Solution |
| :----------------------------------------- | :------------------------------------------------------------------- | :-------------------------------------------------------------------- |
| `FILE STATUS 35: File not found` | Physical file path not mapped in JCL or environment. | Verify `ASSIGN TO` clause and dataset DD statement. |
| `DATA DIVISION syntax error in Area A` | Division, Section, or 01 level headers not starting in columns 8-11. | Align level-01 and division headers in Area A (columns 8-11). |
| `FILE STATUS 39: File attributes mismatch` | Record length in program differs from cataloged physical file. | Ensure `RECORD CONTAINS` clause matches the actual file block length. |
## References
- [GnuCOBOL FAQ](https://gnucobol.sourceforge.io/faq/)
---
name: cobol-0219c9302b86
description: Expert COBOL programming assistance covering enterprise batch processing, divisions, copybooks, and data formatting. Use when maintaining legacy banking, government, or mainframe systems.
---
# COBOL
COBOL runs 70% of the world's business transactions. Modern COBOL (GnuCOBOL 3.2 / IBM Enterprise COBOL) supports **JSON**, XML, and Object-Oriented features.
## When to Use
- **Mainframe Core Banking & Insurance Systems**: Maintaining and extending mission-critical legacy financial ledger engines.
- **High-Volume Fixed-Point Financial Calculations**: Executing exact decimal math without floating-point rounding errors.
- **Batch Processing on IBM z/OS**: Processing millions of nightly accounting records, payroll statements, and clearinghouse transactions.
- **Modernizing Legacy Mainframes via APIs**: Wrapping legacy COBOL subprograms with REST/gRPC interfaces via IBM z/OS Connect.
## Quick Start
```cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello, Enterprise COBOL'.
STOP RUN.
```
## Core Concepts
### Four Classical Divisions Architecture
Every COBOL program is structured strictly across four standard functional divisions:
```cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-BANKING.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TRANSACTION-AMOUNT PIC 9(7)V99 VALUE 1500.50.
01 WS-FORMATTED-OUTPUT PIC $$,$$$,$$9.99.
PROCEDURE DIVISION.
MOVE WS-TRANSACTION-AMOUNT TO WS-FORMATTED-OUTPUT
DISPLAY "Processed Amount: " WS-FORMATTED-OUTPUT
GOBACK.
```
### Picture Clauses (`PIC`) for Fixed-Point Arithmetic
Eliminates floating-point rounding discrepancies by defining exact digit layouts and implied decimals (`V`):
```cobol
01 WS-ACCOUNT-BALANCE PIC S9(9)V99 COMP-3.
*> S: Signed, 9 digits before decimal, V: implied decimal, 2 fractional digits
*> COMP-3: Packed Decimal (2 digits per byte) optimized for mainframe ALU
```
### Structured Paragraphs & PERFORM Loops
Modern COBOL (COBOL 2002/2014) utilizes structured control statements:
```cobol
PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > 10
ADD WS-ITEM-PRICE(WS-IDX) TO WS-ORDER-TOTAL
END-PERFORM.
```
## Common Patterns
### Sequential File Processing Loop
**Problem**: Processing large fixed-width batch files without loading entire file into memory.
**Solution**:
Use structured `READ` loop with `AT END` flag:
```cobol
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE.
01 CUSTOMER-RECORD.
05 CUST-ID PIC 9(5).
05 CUST-NAME PIC X(20).
WORKING-STORAGE SECTION.
01 WS-EOF PIC X VALUE 'N'.
88 END-OF-FILE VALUE 'Y'.
PROCEDURE DIVISION.
100-MAIN-PROCESS.
OPEN INPUT CUSTOMER-FILE
PERFORM UNTIL END-OF-FILE
READ CUSTOMER-FILE
AT END
SET END-OF-FILE TO TRUE
NOT AT END
DISPLAY 'Customer: ' CUST-NAME
END-READ
END-PERFORM
CLOSE CUSTOMER-FILE
STOP RUN.
```
## Best Practices
**Do**:
- Use `COMP-3` (Packed Decimal) for Financial Numbers: Maximize mathematical computation performance on IBM Z enterprise hardware.
- Adopt Modern Free-Format COBOL: Eliminate column 7-72 restrictions when supported by modern compilers (GnuCOBOL, IBM Enterprise COBOL).
- Use Explicit Scope Terminators: Always close control blocks with `END-IF`, `END-PERFORM`, and `END-READ` rather than terminal periods.
- Validate Input Data with `NUMERIC` Tests: Run `IF WS-INPUT-VAL IS NUMERIC` to prevent data exception abends (`0C7`).
**Don't**:
- Use `GO TO` statements: Eliminate unstructured `GO TO` jumps; use modern structured `PERFORM` paragraphs.
- Rely on terminal periods for logic flow: Stray periods terminate all nested `IF` conditions prematurely.
- Neglect binary fields initialization: Always initialize working-storage variables with `VALUE` clauses to prevent garbage data.
## Troubleshooting
| Error | Cause | Solution |
| :----------------------------------------- | :------------------------------------------------------------------- | :-------------------------------------------------------------------- |
| `FILE STATUS 35: File not found` | Physical file path not mapped in JCL or environment. | Verify `ASSIGN TO` clause and dataset DD statement. |
| `DATA DIVISION syntax error in Area A` | Division, Section, or 01 level headers not starting in columns 8-11. | Align level-01 and division headers in Area A (columns 8-11). |
| `FILE STATUS 39: File attributes mismatch` | Record length in program differs from cataloged physical file. | Ensure `RECORD CONTAINS` clause matches the actual file block length. |
## References
- [GnuCOBOL FAQ](https://gnucobol.sourceforge.io/faq/)
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.