joogy06/agent-foundry/cobol-developer

Claude Code and agent skill by joogy06/agent-foundry

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when reading, writing, debugging, or modernizing COBOL programs — divisions and sections, data types (PIC clauses, COMP/COMP-3/DISPLAY), file handling (QSAM/VSAM/KSDS/RRDS), PERFORM and paragraph structure, COPY/REPLACE, embedded SQL (EXEC SQL), CICS programming (EXEC CICS), batch JCL integration, debugging (CEDF/Xpediter), and COBOL modernization patterns. Part of the ibm-mainframe skill family.

Install

npx vskill@latest install joogy06/agent-foundry/cobol-developer

SKILL.md

COBOL Developer Reference

Companion to ibm-mainframe (JCL/VSAM/utilities) and db2-mainframe (DB2 z/OS DBA). For Python mainframe connectivity see python-enterprise-connectors.

<HARD-RULE> Always check SQLCODE after every EXEC SQL statement — unchecked SQLCODEs cause silent data corruption. At minimum check for SQLCODE = 0, +100 (not found), and negative values (errors). </HARD-RULE>

<HARD-RULE> Never use GO TO in new COBOL code — use structured PERFORM THRU patterns for maintainability. GO TO creates spaghetti control flow that is nearly impossible to debug or modify. </HARD-RULE>

<HARD-RULE> Always define numeric fields with explicit COMP-3 or COMP for calculations — DISPLAY numeric fields cause implicit conversions on every arithmetic operation, degrading performance significantly in batch loops. </HARD-RULE>

<HARD-RULE> Always initialize WORKING-STORAGE variables with VALUE clauses or INITIALIZE verb — uninitialized fields contain unpredictable data from previous program executions in CICS or residual memory in batch. </HARD-RULE>


1. Program Structure

cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. ORDPROC.
AUTHOR. MAINTENANCE TEAM.
DATE-WRITTEN. 2026-03-31.
*================================================================*
* ORDER PROCESSING - BATCH PROGRAM *
*================================================================*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ORDER-FILE
ASSIGN TO ORDIN
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-ORDER-FS.
SELECT REPORT-FILE
ASSIGN TO RPTOUT
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-REPORT-FS.
SELECT CUSTOMER-FILE
ASSIGN TO CUSTDB
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS CUST-KEY
FILE STATUS IS WS-CUST-FS.
DATA DIVISION.
FILE SECTION.
FD ORDER-FILE
RECORDING MODE IS F
RECORD CONTAINS 200 CHARACTERS.
01 ORDER-RECORD.
05 ORD-ID PIC 9(10).
05 ORD-CUST-ID PIC 9(8).
05 ORD-DATE PIC X(10).
05 ORD-AMOUNT PIC S9(11)V99 COMP-3.
05 ORD-STATUS PIC X(1).
88 ORD-PENDING VALUE 'P'.
88 ORD-SHIPPED VALUE 'S'.
88 ORD-CANCELLED VALUE 'C'.
05 FILLER PIC X(163).
FD REPORT-FILE
RECORDING MODE IS F
RECORD CONTAINS 132 CHARACTERS.
01 REPORT-RECORD PIC X(132).
WORKING-STORAGE SECTION.
01 WS-FILE-STATUS.
05 WS-ORDER-FS PIC XX VALUE SPACES.
05 WS-REPORT-FS PIC XX VALUE SPACES.
05 WS-CUST-FS PIC XX VALUE SPACES.
01 WS-FLAGS.
05 WS-EOF-FLAG PIC X(1) VALUE 'N'.
88 END-OF-FILE VALUE 'Y'.
88 NOT-END-OF-FILE VALUE 'N'.
01 WS-COUNTERS.
05 WS-READ-COUNT PIC 9(9) COMP VALUE 0.
05 WS-PROC-COUNT PIC 9(9) COMP VALUE 0.
05 WS-ERROR-COUNT PIC 9(9) COMP VALUE 0.
01 WS-TOTALS.
05 WS-TOTAL-AMOUNT PIC S9(15)V99 COMP-3
VALUE ZERO.
PROCEDURE DIVISION.
0000-MAIN.
PERFORM 1000-INITIALIZE
PERFORM 2000-PROCESS UNTIL END-OF-FILE
PERFORM 9000-TERMINATE
GOBACK
.
1000-INITIALIZE.
OPEN INPUT ORDER-FILE
OPEN OUTPUT REPORT-FILE
PERFORM 1100-READ-ORDER
.
1100-READ-ORDER.
READ ORDER-FILE
AT END SET END-OF-FILE TO TRUE
NOT AT END ADD 1 TO WS-READ-COUNT
END-READ
.
2000-PROCESS.
EVALUATE TRUE
WHEN ORD-PENDING
PERFORM 2100-PROCESS-PENDING
WHEN ORD-SHIPPED
PERFORM 2200-PROCESS-SHIPPED
WHEN OTHER
ADD 1 TO WS-ERROR-COUNT
END-EVALUATE
PERFORM 1100-READ-ORDER
.
9000-TERMINATE.
CLOSE ORDER-FILE REPORT-FILE
DISPLAY 'RECORDS READ: ' WS-READ-COUNT
DISPLAY 'RECORDS PROCESSED: ' WS-PROC-COUNT
DISPLAY 'ERRORS: ' WS-ERROR-COUNT
.

2. Data Division Deep Dive

PIC Clauses
PICMeaningExample Value
PIC X(20)Alphanumeric, 20 chars"JOHN DOE "
PIC 9(5)Numeric display, 5 digits00123
PIC S9(7)V99Signed, 7 integer + 2 decimal+1234567.89
PIC S9(7)V99 COMP-3Packed decimal (BCD)4 bytes
PIC S9(9) COMPBinary (fullword)4 bytes
PIC S9(18) COMPBinary (doubleword)8 bytes
PIC S9(7)V99 COMP-1Single-precision float4 bytes
PIC S9(18)V99 COMP-2Double-precision float8 bytes
PIC Z(5)9Edited numeric (leading zeros suppressed) 123
PIC $ZZ,ZZ9.99Edited with currency/commas $1,234.56
Storage Formats
UsageStorageWhen to Use
DISPLAY1 byte/digitExternal files, reports
COMP-3 (packed)(n+1)/2 bytesAll calculations and DB2 columns
COMP (binary)2/4/8 bytesSubscripts, counters, indexes
COMP-1 (float)4 bytesScientific calculations (rare)
COMP-2 (double)8 bytesScientific calculations (rare)
REDEFINES
cobol
01 WS-DATE-FIELD.
05 WS-DATE-CCYYMMDD PIC 9(8).
05 WS-DATE-PARTS REDEFINES WS-DATE-CCYYMMDD.
10 WS-DATE-CC PIC 99.
10 WS-DATE-YY PIC 99.
10 WS-DATE-MM PIC 99.
10 WS-DATE-DD PIC 99.
OCCURS (Arrays)
cobol
01 WS-MONTHLY-TOTALS.
05 WS-MONTH-ENTRY OCCURS 12 TIMES
INDEXED BY WS-MONTH-IDX.
10 WS-MONTH-NAME PIC X(10).
10 WS-MONTH-AMT PIC S9(11)V99 COMP-3.
* Variable-length array
01 WS-ORDER-LINES.
05 WS-LINE-COUNT PIC 99 COMP.
05 WS-LINE-ITEM OCCURS 1 TO 50 TIMES
DEPENDING ON WS-LINE-COUNT.
10 WS-ITEM-SKU PIC X(10).
10 WS-ITEM-QTY PIC 9(5) COMP-3.
10 WS-ITEM-PRICE PIC S9(7)V99 COMP-3.
88-Level Condition Names
cobol
01 WS-TRANSACTION-TYPE PIC X(2).
88 TXN-SALE VALUE 'SA'.
88 TXN-RETURN VALUE 'RT'.
88 TXN-EXCHANGE VALUE 'EX'.
88 TXN-VALID VALUE 'SA' 'RT' 'EX'.
* Usage:
IF TXN-VALID
PERFORM 2000-PROCESS-TXN
END-IF
SET TXN-SALE TO TRUE *> Sets WS-TRANSACTION-TYPE to 'SA'

3. File Handling

File Status Codes
CodeMeaning
00Success
10End of file (AT END)
22Duplicate key on WRITE
23Record not found (READ/START/DELETE)
35File not found (OPEN)
39File attribute conflict
41File already open
42File already closed
46Sequential READ with no valid next
47READ on file not opened INPUT/I-O
48WRITE on file not opened OUTPUT/I-O/EXTEND
VSAM KSDS (Indexed)
cobol
FILE-CONTROL.
SELECT CUSTOMER-FILE
ASSIGN TO CUSTFILE
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS CUST-ID
ALTERNATE RECORD KEY IS CUST-NAME
WITH DUPLICATES
FILE STATUS IS WS-CUST-FS.
* Random read
MOVE '00012345' TO CUST-ID
READ CUSTOMER-FILE
INVALID KEY
DISPLAY 'CUSTOMER NOT FOUND: ' CUST-ID
NOT INVALID KEY
PERFORM 3000-PROCESS-CUSTOMER
END-READ
* Sequential browse (START + READ NEXT)
MOVE '00010000' TO CUST-ID
START CUSTOMER-FILE KEY >= CUST-ID
INVALID KEY DISPLAY 'START FAILED'
END-START
PERFORM UNTIL WS-CUST-FS NOT = '00'
READ CUSTOMER-FILE NEXT
AT END SET END-OF-FILE TO TRUE
END-READ
IF NOT END-OF-FILE
PERFORM 3000-PROCESS-CUSTOMER
END-IF
END-PERFORM
* Update
READ CUSTOMER-FILE
INVALID KEY DISPLAY 'NOT FOUND'
END-READ
MOVE 'ACTIVE' TO CUST-STATUS
REWRITE CUSTOMER-RECORD
INVALID KEY DISPLAY 'REWRITE FAILED'
END-REWRITE
SORT/MERGE
cobol
SD SORT-FILE.
01 SORT-RECORD.
05 SORT-KEY PIC 9(10).
05 SORT-DATA PIC X(190).
PROCEDURE DIVISION.
* Simple sort
SORT SORT-FILE
ON ASCENDING KEY SORT-KEY
USING INPUT-FILE
GIVING OUTPUT-FILE
* Sort with INPUT/OUTPUT PROCEDURE
SORT SORT-FILE
ON ASCENDING KEY SORT-KEY
INPUT PROCEDURE IS 5000-SELECT-RECORDS
OUTPUT PROCEDURE IS 6000-FORMAT-OUTPUT
5000-SELECT-RECORDS.
OPEN INPUT RAW-FILE
PERFORM UNTIL END-OF-RAW
READ RAW-FILE AT END SET END-OF-RAW TO TRUE
NOT AT END
IF RAW-STATUS = 'A'
MOVE RAW-RECORD TO SORT-RECORD
RELEASE SORT-RECORD
END-IF
END-READ
END-PERFORM
CLOSE RAW-FILE
.
6000-FORMAT-OUTPUT.
OPEN OUTPUT FINAL-FILE
PERFORM UNTIL END-OF-SORT
RETURN SORT-FILE
AT END SET END-OF-SORT TO TRUE
NOT AT END
PERFORM 6100-WRITE-FORMATTED
END-RETURN
END-PERFORM
CLOSE FINAL-FILE
.

4. Procedure Division Patterns

STRING / UNSTRING
cobol
* STRING — concatenate
STRING WS-LAST-NAME DELIMITED BY SPACES
', ' DELIMITED BY SIZE
WS-FIRST-NAME DELIMITED BY SPACES
INTO WS-FULL-NAME
WITH POINTER WS-STR-PTR
ON OVERFLOW DISPLAY 'NAME TOO LONG'
END-STRING
* UNSTRING — split
UNSTRING WS-CSV-LINE DELIMITED BY ','
INTO WS-FIELD1
WS-FIELD2
WS-FIELD3
WITH POINTER WS-UNS-PTR
TALLYING IN WS-FIELD-COUNT
ON OVERFLOW DISPLAY 'TOO MANY FIELDS'
END-UNSTRING
INSPECT
cobol
* Count occurrences
INSPECT WS-INPUT-STRING
TALLYING WS-COUNT FOR ALL 'A'
* Replace characters
INSPECT WS-INPUT-STRING
REPLACING ALL LOW-VALUES BY SPACES
* Convert (translate)
INSPECT WS-INPUT-STRING
CONVERTING 'abcdefghijklmnopqrstuvwxyz'
TO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
Reference Modification
cobol
* Extract substring: identifier(start:length)
MOVE WS-FULL-DATE(1:4) TO WS-YEAR *> First 4 chars
MOVE WS-FULL-DATE(5:2) TO WS-MONTH *> Chars 5-6
MOVE WS-FULL-DATE(7:2) TO WS-DAY *> Chars 7-8
CALL (Subprogram)

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
2
7-day trend score
5

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/joogy06/agent-foundry/cobol-developer/badge)](https://verified-skill.com/skills/joogy06/agent-foundry/cobol-developer)

Something wrong with this skill or its page? Tell us.