A CICS file definition is the contract that maps the symbolic FILE name your application authors type inside EXEC CICS commands to a real cataloged VSAM cluster or path, plus metadata CICS uses to validate I/O. When the contract is wrong, programs fail even if LISTCAT shows a healthy cluster and even if batch COBOL can still open the DSN with JCL. This page walks through the important attributes beginners should recognize on a definition listing: DSNAME, key length and position, record size, status, and optional advanced features such as record-level sharing. It also explains the install lifecycle so you know why a corrected RDO member on disk does not help transactions until someone INSTALLs it into the region. Treat definitions as code: version control them, review them, and test them in a region that mirrors production file options.
| Attribute | Role |
|---|---|
| DSNAME | Catalog name of the VSAM cluster or path opened when the file is used. |
| KEYLENGTH / KEYPOSITION | Describe key length and offset for KSDS-style access; must align with DEFINE KEYS and program RIDFLD layout. |
| RECORDSIZE | Maximum or average record size guidance for CICS validation; must be consistent with VSAM define and program buffers. |
| FILETYPE / DATASET | Marks the backing object as VSAM or other categories per manual; beginners should copy working templates. |
| RLS / LSD / updates | Record-level sharing and journaling-related attributes when used; follow architecture board decisions. |
Installations differ on which optional keywords they set explicitly versus rely on defaults. That is why copying definitions between regions sometimes “almost works” except for one subtle keyword like browse additivity or table status. Diff tool comparisons between golden and sandbox definitions shorten troubleshooting time dramatically.
12345678CEDA DEFINE FILE(CUSTMAS) GROUP(DEMOGRP) DSNAME(PROD.CUST.KSDS) KEYLENGTH(10) KEYPOSITION(0) RECORDSIZE(500) STATUS(ENABLED) USAGE(NORMAL) RLSACCESS(NO)
Keyword spellings and supported values change across CICS releases; treat the fragment as pedagogy. RLSACCESS is shown as NO to remind you that record-level sharing is a deliberate architecture toggle, not something you flip casually because a blog praised it. When architects enable RLS, file definitions and application RESP handling must evolve together under a written design.
When DSNAME names a path object, KEYLENGTH and KEYPOSITION should describe the alternate key layout for that path, not silently reuse the primary key numbers unless your definition genuinely uses the same offsets. Mixed definitions are a top-five root cause of “READ works in batch against base cluster but fails online against path.” Pair any path change with regression tests on both EXEC CICS READ and browse sequences.
Storage might relocate a VSAM cluster to new volumes or SMS classes while keeping the same DSN. CICS definitions referencing DSNAME may not need textual edits, yet you still reinstall or refresh to pick up catalog changes in some procedures. When the DSN itself changes, file definitions, batch JCL, and Db2 STOGROUP references must move in lockstep. Maintain a single change ticket table listing every consumer so nothing calls the retired name at midnight.
Smoke tests should include READ, READ UPDATE, WRITE, DELETE, STARTBR, and READNEXT paths against representative keys including boundary and not-found cases. Automate those smoke tests in a pipeline that provisions disposable clusters so failures do not poison shared sandboxes. Capture RESP histograms so you notice subtle differences when KEYLENGTH tweaks roll out.
Auditors ask who can change a file definition and who approved the last change. Attach RACF profiles, SCM commit hashes, and CAB minutes to the same ticket as the RDO diff. VSAM beginners rarely think about audit, but financial regulators care more about traceability than about whether your READ used INTO or SET pointer style.
RDO GROUP names often encode application or environment (TEST, PROD) while FILE names stay short for COBOL readability. When GROUP names drift between regions, installs target the wrong bucket even though FILE spelled correctly. Standardize GROUP prefixes the same way you standardize high-level qualifiers so diff tools catch mistakes before install. New hires should receive a one-page cheat sheet mapping GROUP to owning team and escalation phone tree.
Keep a living spreadsheet that lists every FILE with DSNAME, owning squad, and last CAB date so architects spot orphans quickly during annual catalog hygiene exercises.
The file definition is the label on a toy bin that tells robots which real bin in the warehouse to open. FILE is the friendly sticker kids read. DSNAME is the warehouse barcode scanner needs. If the sticker says “red blocks” but the barcode points to “blue blocks,” every robot brings the wrong toy even though both bins exist and are full.
1. Programs pass which name on EXEC CICS READ FILE(...)?
2. If DEFINE KEYS(12 0) but KEYLENGTH(10) in CICS, expect:
3. After changing a VSAM cluster name in the catalog, you must: