Glossary

617 terms from Learning COBOL Programming: From Beginners to Experts

# A B C D E F G H I J K L M N O P Q R S T U V W X Z

#

$50,000.00
the exact total of the subledger detail. → Chapter 36 Exercises: Accounting and General Ledger Systems
(+1)
The next generation to be created. This reference creates a new generation dataset. Within a single job, each (+1) reference to the same GDG base creates the same new generation. The generation is cataloged at end-of-step. → Case Study 2: GDG Management for Daily Batch Processing
(-1)
One generation back from current. After (+1) is cataloged, (-1) refers to what was previously (0). → Case Study 2: GDG Management for Daily Batch Processing
(0)
The current (most recent) generation. Before any (+1) is cataloged in the current job, (0) refers to the most recently cataloged generation from a previous job. After a (+1) is cataloged (at end-of-step), the reference shifts: (0) now refers to the generation just created. → Case Study 2: GDG Management for Daily Batch Processing
(a) Transform
build new functionality that replaces a specific piece of the old system. **(b) Coexist** -- run both old and new simultaneously, routing traffic to the appropriate system. **(c) Eliminate** -- once the new component is proven, decommission the corresponding old component. 3. It is preferred over bi → Chapter 39 Exercises: Legacy System Maintenance and Modernization
(B) Forward branch
This is an early-exit pattern. It can be restructured with a PERFORM-through or by wrapping the remaining logic in an IF condition. 2. **(C) Backward branch** -- The `GO TO 1000-LOOP` creates a loop. This should become `PERFORM 1000-LOOP UNTIL WS-EOF-FLAG = 1` with the read and process logic inside. → Chapter 39 Exercises: Legacy System Maintenance and Modernization
10
This is the AT END condition. It means no more records are available to read. This is a normal condition, not an error. → Chapter 11 Quiz: Sequential File Processing
2. Efficient Map Handling
Use `DATAONLY` instead of sending the full map when only data changes - Minimize the number of fields sent by initializing the symbolic map to LOW-VALUES (only non-low-value fields are transmitted) - Use `ACCUM` with `PAGING` for multi-page reports instead of multiple SEND MAPs → Chapter 25: Advanced CICS Programming
20
the defined length of the PIC X(20) field, regardless of its content. The field contains "HELLO WORLD" followed by 9 spaces. - `FUNCTION LENGTH(FUNCTION TRIM(WS-TEXT))` returns **11** -- TRIM removes the 9 trailing spaces, leaving "HELLO WORLD" (11 characters), and LENGTH returns the length of that → Chapter 19 Quiz: Intrinsic Functions Reference
200
Successful inquiry - **400** -- Client error (missing account ID) - **401** -- Authentication failure (invalid API key) - **404** -- Account not found - **405** -- Wrong HTTP method - **500** -- Internal server error → Case Study 2: CICS-to-Web Service Bridge
200 (OK)
The request was processed successfully and the response contains the requested data. → Chapter 25 Quiz: Advanced CICS Programming
200 OK
The COBOL program executed successfully and returned valid data. Triggered by normal program completion with a valid response structure. 2. **400 Bad Request** -- The incoming request data failed validation. Triggered when z/OS Connect mapping detects invalid JSON format or when the COBOL program se → Chapter 38 Exercises: Modern COBOL Integrations
3. Avoid Common Bottlenecks
**Enqueue contention**: Keep exclusive locks on shared resources for the minimum time - **File I/O contention**: Use VSAM LSR (Local Shared Resources) buffer pools - **DB2 thread waits**: Monitor thread pool utilization and increase limits if needed - **TSQ contention**: Use unique TSQ names per ter → Chapter 25: Advanced CICS Programming
3.33
the digits beyond the second decimal place are discarded. → Chapter 6: Arithmetic Operations and Numeric Processing
4. Storage Optimization
Keep COMMAREA as small as possible - Release unused storage promptly using `EXEC CICS FREEMAIN` - Use `EXEC CICS GETMAIN SHARED` only when truly needed → Chapter 25: Advanced CICS Programming
400 (Bad Request)
The client sent a request that the server cannot process due to malformed syntax. → Chapter 25 Quiz: Advanced CICS Programming
404 (Not Found)
The requested resource (account) does not exist. This maps directly to the CICS DFHRESP(NOTFND) condition. → Chapter 25 Quiz: Advanced CICS Programming
500 (Internal Server Error)
An unexpected error occurred on the server side. The client's request was valid, but the server encountered an internal problem. → Chapter 25 Quiz: Advanced CICS Programming
[GnuCOBOL]
Information specific to the GnuCOBOL open-source compiler running on Windows, macOS, or Linux. → How to Use This Book
[IBM Enterprise COBOL]
Information specific to the IBM Enterprise COBOL compiler running on z/OS. → How to Use This Book
| Addition | A + B | |
** | Subtraction | A - B | | Unary **+** / **-** | Sign | -A | → Appendix C: COBOL Language Quick Reference

A

ABEND
Abnormal end. The termination of a program or task due to an unrecoverable error. ABENDs are identified by system codes (e.g., *S0C7*, *S0C4*) or user-defined codes. See also *ABEND code*. → Appendix E: Glossary
ABEND code
A hexadecimal or decimal code that identifies the cause of an *ABEND*. System ABEND codes begin with "S" (e.g., S0C7 for a data exception); user ABEND codes begin with "U" (e.g., U4038). See *Appendix I* for a complete reference. → Appendix E: Glossary
Abnormal disposition (third subparameter)
what to do if the step abends: → Chapter 27: JCL Essentials for COBOL Programmers
ACCESS MODE
A FILE-CONTROL clause that specifies how records in a file are retrieved: SEQUENTIAL (one after another), RANDOM (by key), or DYNAMIC (both sequential and random in the same program). → Appendix E: Glossary
ACCESS MODE IS SEQUENTIAL
Specifies that records are read or written one after another. For sequential files, this is the only valid access mode and can be omitted. → Chapter 11: Sequential File Processing
Account Balance
Signed monetary amount up to $999,999,999.99. Must be stored in packed decimal (COMP-3) for efficient arithmetic and minimal storage. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Account Balance: DISPLAY vs. COMP-3
`PIC S9(9)V99 DISPLAY` = 12 bytes (one byte per digit, including sign as overpunch) - `PIC S9(9)V99 COMP-3` = 7 bytes (two digits per byte, plus half byte for sign) → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Account Number
A 10-digit numeric identifier. Must support direct comparison and sorting. Leading zeros are significant (account 0000000001 is valid and distinct from account 0000000010). → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Account opening
Validate customer, create account record, set initial balance, create audit trail, send welcome notification 2. **End-of-day settlement** -- Aggregate all branch transactions, compute net positions, update GL entries, generate reports 3. **Balance inquiry** -- Look up account, return current balance → Chapter 23 Exercises: Advanced DB2 Programming
Account test data:
Accounts of every type (checking, savings, money market, CD, loan). - Accounts in every status (active, closed, frozen, dormant, pending). - Checking accounts with balances above and below the minimum balance threshold. - A CD account with a maturity date in the past (to test maturity processing). - → Chapter 41: Capstone Project -- Building a Complete Banking Application
Account Type
A single-character code: C (checking), S (savings), M (money market), D (certificate of deposit), L (loan). Must support condition-name testing. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Accrued Interest Calculation
Given a bond's last coupon date, next coupon date, settlement date, face value, and coupon rate, calculate the accrued interest using the 30/360 day-count convention. → Case Study 1: Financial Date Processing Utility
Accumulators (running totals):
Total amount requested, approved, denied - Total fees generated - Average loan amount, average credit score → Case Study 1: Designing Working Storage for a Loan Processing System
ACH
Automated Clearing House. An electronic funds transfer network used for direct deposits, bill payments, and interbank transfers in the United States. → Appendix E: Glossary
ADATA
Associated data. A compiler output dataset containing detailed symbol, cross-reference, and diagnostic information used by analysis tools. → Appendix E: Glossary
Add
Insert a new record - **Change** -- Modify fields of an existing record - **Delete** -- Remove a record (logically or physically) → Chapter 13: Relative File Processing and Advanced File Techniques
Added comprehensive error handling
the 9000-ERROR-HANDLING section handled file errors, data validation errors, and unexpected conditions with meaningful diagnostic messages. → Case Study 1: Restructuring Legacy Spaghetti Code at Metro Transit Authority
Address
Street (up to 30 characters), city (up to 20 characters), state (2-character code), ZIP code (5-digit base plus optional 4-digit extension). → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Aging Report
Given a list of outstanding invoices with due dates, categorize each into aging buckets (current, 1-30, 31-60, 61-90, over 90 days past due) and compute totals. → Case Study 1: Financial Date Processing Utility
ALC
Assembler Language Coding. Low-level programming on IBM mainframes, sometimes used for performance-critical modules called by COBOL programs. → Appendix E: Glossary
ALL literal
Repeats a literal pattern to fill the field. Used for decorative lines (`ALL "*"`), test patterns, and custom fill characters. → Chapter 3 Quiz: Data Types, Variables, and the PICTURE Clause
ALLOCATE CURSOR
Allocates a cursor based on the result set locator. This gives the calling program a cursor it can FETCH from. → Chapter 23 Quiz: Advanced DB2 Programming
ALPHABET clause
A SPECIAL-NAMES paragraph clause that defines a custom collating sequence or maps between character sets (e.g., EBCDIC to ASCII ordering). → Appendix E: Glossary
Alphanumeric
A data category in COBOL for items that can contain any character. Defined with *PICTURE* symbol X. → Appendix E: Glossary
ALTER
Full control. The user can read, write, delete, rename, move, and modify the security profile of the dataset. This is the highest level of access. → Chapter 31: Exercises – COBOL and the z/OS Security Model
Always use FILE STATUS
Define a status field and check it after every I/O operation. 2. **Use INVALID KEY for expected conditions** -- Record not found, duplicate key, etc. 3. **Use FILE STATUS for unexpected conditions** -- I/O errors, file not open, etc. 4. **Log all errors** -- Write error details to an error file or l → Chapter 12: Indexed File Processing (VSAM KSDS)
Amortization
The process of spreading a loan's principal repayment over scheduled periodic payments. Each payment includes both interest and principal components, with the interest portion decreasing over time. → Appendix E: Glossary
ANSI
American National Standards Institute. The organization that standardized COBOL as ANSI X3.23 in 1968, 1974, and 1985. → Appendix E: Glossary
Answer:
**Access speed:** RRDS is faster for random access (O(1) direct calculation vs. index traversal for KSDS). However, the difference is small for typical file sizes due to VSAM buffering. - **Storage efficiency:** KSDS is more storage-efficient because it only allocates space for records that exist. R → Chapter 13 Exercises: Relative File Processing and Advanced File Techniques
any column
There is no sequence number area, indicator area, or identification area - Lines can be up to **255 characters** (compiler-dependent; some allow more) - There is no Area A / Area B distinction - Comments begin with `*>` and can appear anywhere on a line (including inline) - Debugging lines use `>>D` → Chapter 2: COBOL Program Structure -- Divisions, Sections, and Paragraphs
API
Application Programming Interface. A defined set of protocols and tools that allows software components to communicate. Modern COBOL programs can expose or consume APIs through *z/OS Connect* or *CICS web services*. → Appendix E: Glossary
Approach A -- Automated COBOL-to-Java conversion:
Pros: Fast initial conversion; all code on a single platform; reduced mainframe costs. - Cons: Produces unmaintainable "COBOL in Java"; does not improve code quality; Java developers cannot maintain it without COBOL knowledge; testing burden is enormous (every line changed); performance characterist → Chapter 39 Quiz: Legacy System Maintenance and Modernization
Approach B (SEARCH ALL) is dramatically faster.
**Sequential SEARCH (A):** Average comparisons per lookup = 100,000 / 2 = 50,000. Total comparisons = 5,000,000 x 50,000 = 250 billion comparisons. → Chapter 32: Quiz – Performance Tuning for COBOL Programs
Approach B -- Keep COBOL, expose via APIs:
Pros: Lowest risk (existing code unchanged); fastest time to value; COBOL performance retained; proven business logic preserved; incremental approach. - Cons: Mainframe costs continue; still dependent on COBOL skills; does not address code quality issues; limited by legacy architecture for new featu → Chapter 39 Quiz: Legacy System Maintenance and Modernization
Approach C -- Hybrid rewrite with MQ integration:
Pros: Most critical/complex modules get true modernization; less risky than full rewrite; allows best technology for each component; MQ provides reliable async communication. - Cons: Two technology stacks to maintain; data consistency between systems is complex; requires both COBOL and Java expertis → Chapter 39 Quiz: Legacy System Maintenance and Modernization
APR
Annual Percentage Rate. The annualized interest rate charged on a loan or earned on an investment, including fees, expressed as a percentage. → Appendix E: Glossary
Area A
In fixed-format COBOL, columns 8 through 11. Division headers, section headers, paragraph names, FD entries, and 01-level data items must begin in Area A. → Appendix E: Glossary
Area B
In fixed-format COBOL, columns 12 through 72. Most COBOL statements and data definitions at levels other than 01 are coded in Area B. → Appendix E: Glossary
ASCII (Unix, Windows, GnuCOBOL):
Digits: 0-9 (hex 30-39) - Uppercase letters: A-Z (hex 41-5A) - Lowercase letters: a-z (hex 61-7A) - Sort order: spaces < digits < uppercase < lowercase → Chapter 13: Relative File Processing and Advanced File Techniques
ASSIGN TO external-name
Maps the internal file name to an external resource. On z/OS, `EMPFILE` maps to the DD statement `//EMPFILE DD ...` in the JCL. In GnuCOBOL, the behavior depends on the implementation; typically it maps to an environment variable or a file name. → Chapter 11: Sequential File Processing
ASSOCIATE LOCATORS
Associates result set locators with the procedure call. A locator is a handle that references the result set returned by the procedure. → Chapter 23 Quiz: Advanced DB2 Programming
AT END
Executes when there are no more records (end-of-file). This is file status code 10. → Chapter 11: Sequential File Processing
Automatic Class Selection (ACS) routines
installation-written programs that examine dataset characteristics (name, owner, type, etc.) and assign the appropriate SMS classes. For example, an ACS routine might implement rules like: → Chapter 30: z/OS Dataset Concepts and Storage Management

B

Balance Inquiry
Display the current account balance in currency-formatted output with the account number and timestamp. → Case Study 1: Building an ATM Interface Prototype
Balance Sheet Accounts (Permanent):
**Assets (1000-1999)**: Resources owned by the organization. Examples: Cash (1010), Accounts Receivable (1200), Equipment (1500), Accumulated Depreciation (1510). - **Liabilities (2000-2999)**: Obligations owed to others. Examples: Accounts Payable (2100), Accrued Expenses (2200), Long-term Debt (25 → Chapter 36: Accounting and General Ledger Systems
Banking and Financial Services
COBOL's exact decimal arithmetic (COMP-3) prevents the rounding errors that floating-point languages introduce, which is critical when computing interest, balances, and regulatory calculations across millions of accounts. → Appendix G: Answers to Selected Exercises
Base rate by dwelling amount:
$0 - $200,000: $4.50 per $1,000 - $200,001 - $400,000: $3.80 per $1,000 - $400,001 - $750,000: $3.20 per $1,000 - Over $750,000: $2.75 per $1,000 → Chapter 35 Exercises: Insurance and Government Systems
Batch
High volume (5 million accounts), periodic (daily), sequential processing of every account, no user interaction needed. This is a classic batch workload. → Chapter 28 Exercises: Batch Processing Patterns and Design
Batch (JCL):
DISPLAY outputs to the SYSOUT DD statement - ACCEPT reads from the SYSIN DD statement - No terminal interaction is possible - Operator console messages use DISPLAY UPON CONSOLE → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
Batch processing
A mode of program execution where jobs are submitted for unattended processing, typically through *JCL*. Batch programs process large volumes of data without user interaction, often scheduled to run during overnight processing windows. → Appendix E: Glossary
Berkeley DB (BDB)
The default on many GnuCOBOL installations. Provides full indexed file support. - **VBISAM** -- An open-source ISAM implementation that emulates mainframe-style indexed files. - **Lightning Memory-Mapped Database (LMDB)** -- A high-performance alternative. → Chapter 12: Indexed File Processing (VSAM KSDS)
Best practices for COMP-3 declarations:
Always include the **S** (signed) in the PIC clause for arithmetic fields - Use an **odd** total digit count for optimal alignment (COMP-3 always uses `(digits + 1) / 2` bytes; an odd digit count wastes no space) - Size the field to accommodate the largest expected value plus overflow margin → Chapter 6: Arithmetic Operations and Numeric Processing
A search technique that repeatedly divides a sorted table in half to locate a target value. Implemented in COBOL with SEARCH ALL on a table with an ASCENDING or DESCENDING KEY. → Appendix E: Glossary
BKMU
Main menu (account inquiry, transfer, history, logout) 2. **BKIN** -- Account inquiry (display balance, account type, last transaction) 3. **BKTR** -- Fund transfer (between two accounts with validation) 4. **BKHI** -- Transaction history (multi-page browse using TSQ) → Chapter 25 Exercises: Advanced CICS Programming
BLL cell
Base Locator for Linkage. An internal pointer used by CICS to address data in the *LINKAGE SECTION* of a COBOL program. In modern CICS, BLL cells are managed automatically. → Appendix E: Glossary
BLOCK CONTAINS 0 RECORDS
Tells the system to determine the optimal block size. On z/OS, `BLOCK CONTAINS 0` defers to the JCL DCB parameter or system-managed blocking. Specifying 0 is a best practice because it allows the system to optimize I/O performance. You can also specify an explicit number (e.g., `BLOCK CONTAINS 100 R → Chapter 11: Sequential File Processing
Blocking factor
The number of logical records grouped into a single physical block on a storage device. Specified in COBOL with the BLOCK CONTAINS clause. Proper blocking improves I/O performance. → Appendix E: Glossary
BMS
Basic Mapping Support. A CICS facility for defining and managing terminal screen layouts (maps). BMS maps define the position, attributes, and data fields displayed on 3270 terminal screens. → Appendix E: Glossary
BMS map
A screen layout definition created with BMS macros (DFHMSD, DFHMDI, DFHMDF) that describes the fields, positions, and attributes of a CICS terminal screen. → Appendix E: Glossary
Boolean condition
See *condition name*. → Appendix E: Glossary
Buffering
QSAM reads entire blocks of records into memory buffers, so individual READ operations return records from the buffer without physical disk I/O. 2. **Look-ahead buffering** -- While the program processes records from one buffer, QSAM reads the next block into a second buffer in parallel. 3. **Write- → Chapter 11 Quiz: Sequential File Processing
Business Day Calculation
Given a start date and a number of business days, calculate the resulting date, skipping weekends and holidays from a configurable holiday calendar. → Case Study 1: Financial Date Processing Utility
By range
A branch manager requests all accounts in a specific account number range to generate a branch-specific report. → Case Study 1: Customer Account Lookup System at Atlantic Commerce Bank

C

c) Use existing FILLER space
if the original record has 20+ bytes of FILLER, the new field can replace part of the FILLER without changing the record length. All programs continue to work because the record is still 80 bytes. Programs that need the email field must be recompiled, but programs that do not need it continue workin → Chapter 18 Quiz: COPY, REPLACE, and Copybook Management
CA
Control Area. In *VSAM*, a group of *control intervals* that forms the unit of space allocation. A VSAM dataset is composed of one or more control areas. → Appendix E: Glossary
Calculation work fields:
DTI ratio, monthly payment, total interest, total repayment - Origination fee, insurance cost - Interest rate (annual and monthly) - Loan-to-value ratio - Power factor and temporary calculation fields - Error message accumulation → Case Study 1: Designing Working Storage for a Loan Processing System
CALL statement
A COBOL statement that transfers control to another program (subprogram), optionally passing parameters BY REFERENCE, BY CONTENT, or BY VALUE. → Appendix E: Glossary
Candidate A's issues:
Uses `DISPLAY` for error reporting (DISPLAY goes to SYSOUT, not to an error log that can be reviewed) - Uses `STOP RUN` on the first error, which is almost never appropriate in a production program -- it prevents any cleanup, file closing, or return code setting - Does not check FILE STATUS, relying → Chapter 42 Quiz: COBOL Career Guide and the Path Forward
Candidate B's strengths:
Checks FILE STATUS after the READ, which catches all possible outcomes (not just INVALID KEY) - Uses 88-level conditions (WS-ACCT-FOUND, WS-ACCT-NOT-FOUND, WS-ACCT-IO-ERROR) to communicate the result to the calling paragraph - Distinguishes between file status '23' (record not found -- a business co → Chapter 42 Quiz: COBOL Career Guide and the Path Forward
Card Entry
Accept a 16-digit card number. Validate it against a stored list of valid cards. Display an error and return to the welcome screen if invalid. → Case Study 1: Building an ATM Interface Prototype
Card Status Check
Is the card active? Cards that are blocked, stolen, lost, or frozen must be declined immediately. 2. **Available Credit Check** -- Does the cardholder have sufficient available credit for the transaction amount? 3. **Transaction Velocity Check** -- Has this card been used an abnormal number of times → Case Study 2: Credit Card Authorization System
Card Status Validation
Is the card active, suspended, lost, or stolen? 2. **Expiration Date Check** -- Has the card's validity period passed? 3. **Currency Support** -- Is the transaction currency one that the system supports? 4. **Credit Limit Verification** -- Does the cardholder have sufficient available credit? 5. **T → Case Study 1: Credit Card Authorization at Global Payments Inc.
Catalog
The z/OS master catalog or user catalog that maps dataset names to their physical locations on storage volumes. VSAM datasets must be defined in a catalog using *IDCAMS*. → Appendix E: Glossary
Catalog location
the HLQ maps to a user catalog through the master catalog 2. **Security** -- RACF rules are typically based on HLQ patterns 3. **Storage management** -- SMS ACS routines use the HLQ to assign storage classes → Chapter 30: z/OS Dataset Concepts and Storage Management
CCSID
Coded Character Set Identifier. A number that identifies a specific character encoding scheme. EBCDIC on z/OS commonly uses CCSID 037 (US English) or 1140 (US English with Euro sign). → Appendix E: Glossary
CECI (Command-Level Interpreter):
Executes individual CICS commands typed by the user - Does not require a running program - Used for ad-hoc testing of individual commands - Can test file reads, queue writes, program links, etc. - Results are displayed immediately - Useful for verifying resource definitions and data → Chapter 25 Quiz: Advanced CICS Programming
CEDF (Execution Diagnostic Facility):
Intercepts CICS API commands during actual program execution - Shows each command before and after execution with parameter values - Displays EIBRESP and EIBRESP2 after each command - Works with running programs -- you start CEDF, then run your transaction - Used for step-through debugging of existi → Chapter 25 Quiz: Advanced CICS Programming
Characteristics:
Defined as a regular data item (`PIC 9`, `PIC 99`, etc.) - Contains the occurrence number (1, 2, 3, ...) - Can be used in any arithmetic statement: `ADD 1 TO WS-SUB` - Can be displayed: `DISPLAY WS-SUB` - At runtime, the compiler must multiply: `offset = (subscript - 1) * entry_size` → Chapter 10: Tables and Arrays -- OCCURS, SEARCH, and Multi-Dimensional Data
Checkpoint/restart
The program periodically saves its state to enable restart from the last checkpoint rather than from the beginning. → Chapter 28 Exercises: Batch Processing Patterns and Design
Checkpoint/Restart:
CHKP commits database changes and saves application state for recovery. - XRST at program start checks for a prior checkpoint and restores state on restart. - Checkpoint intervals of 500-5,000 records balance recovery time and overhead. - Restart resubmits the same JCL; IMS and XRST handle repositio → Chapter 26: IMS Database and Transaction Management
CI
Control Interval. In *VSAM*, the smallest unit of data transfer between a storage device and memory. A CI contains one or more logical records plus control information. → Appendix E: Glossary
CI free space
Percentage of each CI left empty during initial load. This space accommodates future inserts without immediately causing CI splits. - **CA free space** -- Percentage of CAs left entirely empty. When a CI split requires space beyond the current CA, VSAM uses these reserved CAs. → Chapter 12: Indexed File Processing (VSAM KSDS)
CI split
A VSAM operation that occurs when a new record must be inserted into a full *control interval*. VSAM moves approximately half the records to a new CI and adjusts the index. → Appendix E: Glossary
CICS
Customer Information Control System. IBM's online transaction processing system that manages terminal interactions, program execution, data access, and recovery for real-time mainframe applications. → Appendix E: Glossary
CICS (Online):
DISPLAY and ACCEPT should **not** be used for user communication - Screen I/O uses **BMS maps** with EXEC CICS SEND MAP and EXEC CICS RECEIVE MAP - Programs are **pseudo-conversational** (they terminate after each screen send and are reinvoked when the user presses a key) - We cover CICS programming → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
CICS region
An instance of the CICS transaction server running as a z/OS address space. Production environments typically have multiple regions for development, testing, and production workloads. → Appendix E: Glossary
CICS web services
A CICS capability that allows COBOL programs to provide or consume web services using SOAP or REST protocols. Enables modern clients to invoke CICS transactions through standard HTTP interfaces. → Appendix E: Glossary
CLASS-ID
A COBOL 2002 paragraph in the IDENTIFICATION DIVISION that defines an object-oriented class, specifying the class name, inheritance, and interface implementation. → Appendix E: Glossary
CLOSE statement
A COBOL statement that terminates access to a file and releases associated system resources. Every file opened with OPEN must be closed with CLOSE. → Appendix E: Glossary
COBOL
Common Business-Oriented Language. A programming language created in 1959 by the *CODASYL* committee, designed for business data processing. Standardized by ANSI/ISO in 1968, 1974, 1985, 2002, and 2014. → Appendix E: Glossary
COBOL-85
The 1985 ANSI/ISO COBOL standard (ANSI X3.23-1985) that introduced structured programming constructs including scope terminators, inline PERFORM, and the EVALUATE statement. The most widely implemented standard in production systems. → Appendix E: Glossary
CODASYL
Conference on Data Systems Languages. The committee of government and industry representatives that designed the original COBOL language in 1959--1960. → Appendix E: Glossary
Coding standards
Define COBOL coding standards with at least 15 specific rules covering naming conventions, paragraph structure, error handling, data definitions, and documentation. 2. **Peer review process** — Design a code review workflow including review checklists, minimum review criteria, and turnaround time SL → Chapter 40 Exercises: Testing, Quality Assurance, and Deployment
Collating sequence
The order in which characters are sorted. *EBCDIC* and *ASCII* have different collating sequences: in EBCDIC, lowercase letters sort before uppercase and digits sort after letters; in ASCII, digits sort before letters and uppercase sorts before lowercase. → Appendix E: Glossary
COMMAREA
Communication Area. A block of data passed between CICS programs or preserved across pseudo-conversational transactions via EXEC CICS LINK, EXEC CICS XCTL, or EXEC CICS RETURN TRANSID. → Appendix E: Glossary
Common causes:
An uninitialized WORKING-STORAGE variable used in arithmetic - A file record containing corrupt data - A MOVE of alphanumeric data into a numeric field without validation - A REDEFINES that overlays a numeric field with incompatible data - Reading past the end of a file without checking file status → Chapter 16: Declaratives and Exception Handling
Common scenarios:
COBOL FD says `RECORD CONTAINS 200 CHARACTERS` but the dataset was created with LRECL=150 - JCL specifies `DCB=(RECFM=FB,LRECL=200)` but the existing dataset has LRECL=250 - Attempting to read a variable-length dataset with a fixed-length FD → Chapter 30: z/OS Dataset Concepts and Storage Management
COMP
A USAGE clause value specifying binary (fixed-point) storage. On IBM mainframes, COMP items occupy 2, 4, or 8 bytes depending on the PICTURE clause size. → Appendix E: Glossary
COMP-3
A USAGE clause value specifying packed decimal storage. Each byte stores two decimal digits (one in each nibble), with the sign in the last nibble. COMP-3 provides exact decimal arithmetic essential for financial calculations. → Appendix E: Glossary
COMP-5
An IBM extension specifying native binary storage where the data item can hold any value that fits in the allocated bytes, regardless of the PICTURE clause. Often used for system interface fields. → Appendix E: Glossary
Compile unit
A single COBOL source program that is compiled independently to produce an object module. → Appendix E: Glossary
Compiler directive
An instruction to the COBOL compiler that controls compilation behavior (e.g., COPY, REPLACE, BASIS). Not executable statements. → Appendix E: Glossary
Compound interest
Interest calculated on both the initial principal and the accumulated interest from previous periods. Contrast with *simple interest*. → Appendix E: Glossary
Condition code
A numeric value (0--4095) set by a program or utility upon completion, indicating success or failure. Tested in *JCL* with COND or IF/THEN/ELSE parameters to control subsequent job step execution. → Appendix E: Glossary
Condition name
A level 88 data item that defines a named boolean condition associated with specific values of its parent data item. Provides readable tests in the PROCEDURE DIVISION (e.g., IF ACCOUNT-IS-ACTIVE). → Appendix E: Glossary
CONFIGURATION SECTION
A section of the ENVIRONMENT DIVISION that specifies the source and object computer and the SPECIAL-NAMES paragraph for environment-specific customization. → Appendix E: Glossary
Consolidated duplicate code
the five copies of the fare-table read logic became a single paragraph `8100-READ-FARE-TABLE` called from five places. → Case Study 1: Restructuring Legacy Spaghetti Code at Metro Transit Authority
Constants
values that never change during execution (tax rates, maximum limits, program identifiers) - **Flags and switches** -- single-character fields that control program logic ("are we at end of file?") - **Counters** -- numeric fields that count events (records read, errors found) - **Accumulators** -- n → Chapter 4: The WORKING-STORAGE and LOCAL-STORAGE Sections
Constants (things that never change during a run):
Program identification (name, version) - Loan product limits (maximum amounts per type) - Interest rate ranges (minimum and maximum APR per type) - Fee rates (origination fee, late penalty, insurance) - Credit score thresholds (excellent, good, fair, poor) - Debt-to-income ratio limits (different by → Case Study 1: Designing Working Storage for a Loan Processing System
Content:
`VALUE "text"` -- displays a literal string (output only, not editable) - `PIC ... FROM identifier` -- displays the value of identifier (output only) - `PIC ... TO identifier` -- creates an input field that stores the entered value - `PIC ... USING identifier` -- creates a field that is both display → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
Continuation area
In fixed-format COBOL, column 7, used for continuation of non-numeric literals (indicated by a hyphen) or for comment lines (indicated by an asterisk). → Appendix E: Glossary
CONTROL
The user has UPDATE access plus VSAM control-level processing capabilities (such as control interval access). For non-VSAM datasets, CONTROL is equivalent to UPDATE. → Chapter 31: Exercises – COBOL and the z/OS Security Model
Control Area (CA)
A group of control intervals. A CA typically corresponds to one track or one cylinder of disk space. When VSAM needs to split a CI that is full (to insert a new record), it redistributes records within the CA. → Chapter 12: Indexed File Processing (VSAM KSDS)
Control break
A batch processing pattern where records are grouped by a control field (e.g., department, region) and summary processing occurs when the control field value changes. → Appendix E: Glossary
Control break processing
The program detects changes in the department field and prints subtotals at each break level. → Chapter 28 Exercises: Batch Processing Patterns and Design
Control Interval (CI)
The unit of data transfer between disk and memory. A CI contains one or more records plus control information. Think of it as VSAM's equivalent of a block, but more sophisticated. Typical CI sizes range from 2,048 to 32,768 bytes. → Chapter 12: Indexed File Processing (VSAM KSDS)
COPY statement
A compiler directive that includes the contents of a *copybook* member into the source program at compile time, optionally with text replacement using the REPLACING phrase. → Appendix E: Glossary
Copybook
A reusable source code member containing data definitions or procedure code that is included in COBOL programs at compile time using the COPY statement. Copybooks ensure consistent data definitions across multiple programs. → Appendix E: Glossary
core banking system
the software that manages customer accounts, processes transactions, and maintains the authoritative record of every dollar the bank holds. The core banking system is the system of record: when any other system needs to know a customer's balance, account status, or transaction history, it queries th → Chapter 34: Banking and Payment Systems in COBOL
correct
there is no error. The replacement of `:PFX:` by `TOTAL` produces valid field names. The replacement correctly applies to both occurrences. → Chapter 18 Quiz: COPY, REPLACE, and Copybook Management
Counters (things we count):
Applications read, processed, approved, denied, sent to review, in error - Applications by type (personal, auto, home, business) → Case Study 1: Designing Working Storage for a Loan Processing System
CURSOR
In *DB2*, a mechanism for processing a result set row by row. A COBOL program declares a cursor, opens it, fetches rows in a loop, and closes it. → Appendix E: Glossary
Customer Name
Last name (up to 25 characters), first name (up to 20 characters), middle initial (1 character). Must be stored in a way that supports both individual field access and full-name display. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Customer Record
personal information, identification, contact details, and customer classification 2. **Account Record** -- account type, status, balances, interest rates, and date fields 3. **Transaction Record** -- transaction codes, amounts, timestamps, and audit fields → Case Study 1: Enterprise Copybook Library for a Banking System
Customer test data:
At least 10 customer records covering all customer types (individual, business, trust) and all statuses (active, inactive, deceased, closed). - Customers with varying numbers of accounts (0, 1, 5, maximum). - Customers with addresses that test formatting edge cases (long names, blank address line 2, → Chapter 41: Capstone Project -- Building a Complete Banking Application

D

d) Separate file
adding a companion file avoids any change to the existing record. This is the safest approach when no FILLER space is available and when simultaneous recompilation of 100 programs is not feasible. → Chapter 18 Quiz: COPY, REPLACE, and Copybook Management
Daily Transaction Input
Sequential file, fixed-length 200-byte records, expected volume 2 million records per day. 2. **Account Master** — VSAM KSDS, variable records 100–500 bytes, 10 million accounts, 12-byte key starting at offset 0. 3. **Report Output** — Sequential print file, FBA records 133 bytes, approximately 50,0 → Chapter 30: Exercises – z/OS Dataset Concepts and Storage Management
DASD
Direct Access Storage Device. A disk storage device on a mainframe, such as an IBM 3390. DASD volumes store datasets, VSAM files, and database data. → Appendix E: Glossary
DASD architecture
volumes, VTOCs, and the two-level catalog structure (master catalog and user catalogs) -- provides the infrastructure that maps dataset names to physical locations. → Chapter 30: z/OS Dataset Concepts and Storage Management
Data Class
defines the default physical attributes of a dataset (RECFM, LRECL, BLKSIZE, SPACE, and DSNTYPE). If a data class is assigned to a dataset, you can omit these attributes from the JCL, and the data class defaults will be used. → Chapter 30: z/OS Dataset Concepts and Storage Management
Data component
Contains the actual records, stored in key sequence within control intervals. - **Index component** -- Contains the index structure that maps key values to record locations. The index has multiple levels (sequence set and index set) for efficient lookup. → Chapter 12: Indexed File Processing (VSAM KSDS)
DATA DIVISION
The third of COBOL's four divisions, containing all data definitions used by the program: FILE SECTION, WORKING-STORAGE SECTION, LOCAL-STORAGE SECTION, and LINKAGE SECTION. → Appendix E: Glossary
Data Division checks:
Are all data items properly initialized (or explicitly initialized in the PROCEDURE DIVISION before first use)? - Are numeric field sizes sufficient for the maximum expected values? - Are signed fields used wherever negative values are possible? - Are COMP-3 fields used for decimal arithmetic in fin → Chapter 40: Testing, Quality Assurance, and Deployment
DATA RECORD IS record-name
Names the 01-level record description that follows. Like LABEL RECORDS, this clause is informational and can be omitted in modern COBOL, but is commonly seen in legacy code. → Chapter 11: Sequential File Processing
Database Calls:
**GU** (Get Unique): Direct access by key -- random access to any segment. - **GN** (Get Next): Sequential forward retrieval in hierarchical sequence. - **GNP** (Get Next within Parent): Retrieves children within a parent scope. - **GHU/GHN/GHNP**: Hold variants that lock the segment for subsequent → Chapter 26: IMS Database and Transaction Management
Dataset
A named collection of data on a z/OS system, analogous to a file on other operating systems. Datasets have specific organizations (sequential, partitioned, VSAM) and attributes (record format, record length, block size). → Appendix E: Glossary
Date Fields
Account open date, last transaction date, and last statement date. All dates must include full four-digit year, two-digit month, and two-digit day. Must support both numeric comparison and formatted display. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
DB2
IBM's relational database management system for z/OS. COBOL programs access DB2 data using *embedded SQL* statements (EXEC SQL ... END-EXEC). → Appendix E: Glossary
DBRM
Database Request Module. The output of the DB2 precompiler containing the SQL statements extracted from a COBOL source program. The DBRM is bound into a *plan* or *package* for execution. → Appendix E: Glossary
DCB
Data Control Block. A z/OS data management structure containing file attributes (RECFM, LRECL, BLKSIZE). In JCL, DCB parameters override or supplement the attributes defined in the COBOL program. → Appendix E: Glossary
Deadlock
A situation where two or more tasks each hold a resource needed by the other, causing all to wait indefinitely. DB2 detects deadlocks and rolls back one of the participating transactions. → Appendix E: Glossary
Debugging
The process of finding and correcting errors in a program. COBOL debugging tools include the DISPLAY statement, the USE FOR DEBUGGING declarative, IBM Debug Tool, and compiler listing analysis. → Appendix E: Glossary
Decimal point, implied
A logical decimal point position in a numeric data item, specified by the V symbol in a PICTURE clause. The decimal point is not stored in memory but is used by the compiler for alignment during arithmetic. → Appendix E: Glossary
decimal scaling position
a digit position that is NOT stored but is assumed to be zero. In `PIC 9(3)P(4)`: → Chapter 3 Quiz: Data Types, Variables, and the PICTURE Clause
Decision output record:
Application ID, decision status, approved amount, rate, term - Monthly payment, risk rating, conditions, officer, timestamp → Case Study 1: Designing Working Storage for a Loan Processing System
DECLARATIVES
A section of the PROCEDURE DIVISION that contains USE statements for exception handling, such as file error procedures (USE AFTER ERROR PROCEDURE ON filename). → Appendix E: Glossary
Defensive programming
validating input, initializing variables, checking boundaries, guarding against division by zero, and checking file status after every I/O operation -- prevents the majority of production errors. - A **production error handling framework** combines all these techniques into a cohesive program struct → Chapter 16: Declaratives and Exception Handling
DEFINE ALTERNATEINDEX
Creates the AIX structure 2. **DEFINE PATH** -- Creates a logical connection between the AIX and the base cluster 3. **BLDINDEX** -- Builds the AIX from existing base cluster data → Chapter 12: Indexed File Processing (VSAM KSDS)
DEFINE CLUSTER
Creates a VSAM dataset (KSDS, ESDS, RRDS, or LDS) along with its DATA and INDEX components. 2. **REPRO** — Copies records from one dataset to another, commonly used to load data into VSAM files or to back them up. 3. **DELETE** — Removes a VSAM cluster, alternate index, or non-VSAM dataset from the → Chapter 29: Exercises – Mainframe Utilities for COBOL Developers
DELETE
Abnormal disposition: **DELETE** → Chapter 27 Quiz: JCL Essentials for COBOL Programmers
DELETE statement
A COBOL statement that removes a record from a relative or indexed file, or (in embedded SQL) a DB2 row. → Appendix E: Glossary
Deposit
Accept a deposit amount. Add to the balance and confirm. → Case Study 1: Building an ATM Interface Prototype
Deprecated features
ALTER, NEXT SENTENCE, GO TO -- are identified and replaced with modern structured alternatives. - **Code review** is supported by a comprehensive checklist covering structure, data, files, errors, defense, performance, and documentation. → Chapter 21: COBOL Coding Standards and Best Practices
Discrete Profile:
Protects a single, specific dataset by exact name. - The profile name exactly matches the dataset name. - Example: A discrete profile for `BANK.PROD.ACCTMSTR` protects only that one dataset. - Created with: `ADDSD 'BANK.PROD.ACCTMSTR'` → Chapter 31: Exercises – COBOL and the z/OS Security Model
DISP=SHR
Shared access. Multiple jobs can read the data set simultaneously. Used for input files that are not being modified. - **DISP=OLD** -- Exclusive access. Only one job can access the data set at a time. Other jobs requesting the same data set will wait in the queue. Used when a job needs to ensure no → Chapter 11 Quiz: Sequential File Processing
Displacement
The offset of a data item from the beginning of its containing record or group item, measured in bytes. → Appendix E: Glossary
Display/report fields:
Header lines, detail lines, separator lines - Formatted amounts, rates, percentages, counts → Case Study 1: Designing Working Storage for a Loan Processing System
Do not treat it as an unexpected error
this is a predictable business condition (e.g., a duplicate transaction ID). 2. **Check SQLERRM** to identify which index caused the violation (SQLERRM contains the index name). 3. **Take appropriate business action**: generate a new unique key and retry, reject the transaction with a user-friendly → Chapter 23 Quiz: Advanced DB2 Programming
Double-entry bookkeeping
An accounting system where every transaction is recorded as both a debit and a credit of equal amounts, ensuring that the accounting equation (Assets = Liabilities + Equity) always balances. → Appendix E: Glossary
DSNAME
Dataset Name. The fully qualified name of a z/OS dataset, consisting of one or more qualifiers separated by periods (e.g., PROD.PAYROLL.MASTER). Maximum 44 characters. → Appendix E: Glossary
Dynamic Report Generator
a single COBOL/DB2 program that constructs SQL statements at runtime based on a report definition file. Instead of writing new COBOL programs for each report, analysts define report specifications in a control file, and the generator does the rest. → Case Study 1: Dynamic Report Generator
Dynamic SQL
SQL statements that are constructed and prepared at runtime rather than embedded in the source code at compile time. Contrast with *static SQL*. → Appendix E: Glossary

E

EBCDIC
Extended Binary Coded Decimal Interchange Code. The character encoding system used on IBM mainframes. Each character occupies one byte. EBCDIC differs from *ASCII* in character ordering and code point assignments. → Appendix E: Glossary
EBCDIC (z/OS mainframe):
Lowercase letters: a-z (hex 81-A9) - Uppercase letters: A-Z (hex C1-E9) - Digits: 0-9 (hex F0-F9) - Sort order: spaces < lowercase < uppercase < digits → Chapter 13: Relative File Processing and Advanced File Techniques
Elementary item
A data item that has no subordinate items; it is defined with a PICTURE clause. Contrast with *group item*. → Appendix E: Glossary
Embedded SQL
SQL statements coded directly within a COBOL program, delimited by EXEC SQL and END-EXEC. Processed by the DB2 precompiler before COBOL compilation. → Appendix E: Glossary
END-READ
The explicit scope terminator. Always use it. → Chapter 11: Sequential File Processing
Endevor
IBM's software configuration management system for mainframe applications. Manages source code versions, promotion through environments, and audit trails. → Appendix E: Glossary
entire run unit
which in CICS means the **entire CICS region**, not just the current task. This would abort all active transactions for all users. → Chapter 24 Quiz: CICS Transaction Processing Fundamentals
Entry-level (0-2 years experience):
Financial services: $70,000 - $95,000 - Government: $55,000 - $75,000 - Insurance: $65,000 - $85,000 - Consulting: $75,000 - $100,000 → Chapter 42: COBOL Career Guide and the Path Forward
ENVIRONMENT DIVISION
The second of COBOL's four divisions. Contains the CONFIGURATION SECTION and INPUT-OUTPUT SECTION, which specify hardware and file assignments. → Appendix E: Glossary
EOD020 - Transaction Processing (3h 15m):
Application Performance Analyzer shows 62% of CPU time in DB2 calls. - DB2 EXPLAIN reveals a tablespace scan on the account master for each transaction lookup (the index on ACCT_NUMBER was inadvertently dropped during a recent DB2 migration). - VSAM LISTCAT shows 47,000 CI splits on the account mast → Chapter 32: Performance Tuning for COBOL Programs
EOD030 - Interest Calculation (2h 30m):
The program uses DISPLAY numeric fields for all interest rate calculations, causing constant pack/unpack conversions. - The program is compiled with OPTIMIZE(0) and NUMPROC(NOPFD). - Each account is read individually with random VSAM I/O rather than sequential browse. → Chapter 32: Performance Tuning for COBOL Programs
EOD040 - Statement Generation (1h 45m):
The output file has BLKSIZE=133 (unblocked), causing one I/O per line of output. - The program reads the entire 200-byte customer record to extract just the name and address. → Chapter 32: Performance Tuning for COBOL Programs
ESDS
Entry-Sequenced Data Set. A *VSAM* file organization where records are stored in the order they are written, with no key-based access. Analogous to a sequential file with VSAM management. → Appendix E: Glossary
ESDS (Entry-Sequenced Data Set)
Records are stored in the order they are written, similar to sequential files. Records are accessed by their relative byte address (RBA). → Chapter 12: Indexed File Processing (VSAM KSDS)
EVALUATE statement
A COBOL-85 structured conditional statement that provides multi-way branching, similar to a switch/case statement in other languages. Supports WHEN, WHEN OTHER, and complex condition combinations with ALSO. → Appendix E: Glossary
exactly one period per paragraph
at the very end of the paragraph. Use explicit scope terminators for all conditional and I/O statements within the paragraph. → Chapter 2: COBOL Program Structure -- Divisions, Sections, and Paragraphs
exceptionally long lifespans
often 20, 30, or even 40+ years in production. During that time, the original programmer retires or moves on, and dozens of other programmers will maintain the code. Standards ensure that any competent COBOL programmer can understand, modify, and debug the program without deciphering the original au → Chapter 21 Quiz: COBOL Coding Standards and Best Practices
Excessive GO TO statements
Creates spaghetti control flow that is difficult to trace, test, and modify. A single change can have unpredictable effects on distant parts of the program. 2. **Monolithic paragraph structure** -- Programs with a few enormous paragraphs (500+ lines each) instead of small, focused paragraphs. Makes → Chapter 39 Exercises: Legacy System Maintenance and Modernization
EXCP count
The number of Execute Channel Programs issued, representing physical I/O operations. - **Connect time** --- The time the channel is connected to the device performing the I/O. - **Disconnect time** --- The time waiting for the device to position (seek time, rotational delay). → Chapter 32: Performance Tuning for COBOL Programs
EXEC CICS
The delimiter that begins a CICS command embedded in a COBOL program, terminated by END-EXEC. The CICS translator converts these commands into COBOL CALL statements before compilation. → Appendix E: Glossary
EXEC SQL
The delimiter that begins an embedded SQL statement in a COBOL program, terminated by END-EXEC. The DB2 precompiler processes these statements before COBOL compilation. → Appendix E: Glossary
Exercise 1 Solution:
a) VSAM (KSDS for keyed access to customer records) - b) CICS (BMS maps define screen layouts for online transactions) - c) Batch COBOL (overnight interest runs as a batch program) - d) Copybook (shared data definition included via COPY statement) - e) JCL (job control language orchestrates batch st → Chapter 41 Exercises: Capstone Project -- Building a Complete Banking Application
Exercise 2 Solution:
a) PIC S9(11)V99 COMP-3 (signed packed decimal, 11 integer digits, 2 decimal) - b) 'A' = Active, 'C' = Closed, 'F' = Frozen, 'D' = Dormant, 'P' = Pending - c) ACCT-CUST-NUMBER at positions 11-20, non-unique (one customer can have multiple accounts) - d) 400 bytes (as stated in the copybook header) - → Chapter 41 Exercises: Capstone Project -- Building a Complete Banking Application
Exercise 3 Solution:
a) IBM offers the most widely recognized mainframe certifications relevant to COBOL. - b) IBM Certified Application Developer - COBOL, and IBM Certified System Administrator - z/OS (or IBM Certified Database Administrator - DB2). - c) A certification typically requires passing a standardized exam an → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
Exercise 4 Solution:
a) RC = 0. All records processed without errors. - b) RC = 4. A small number of records failed but the program completed and wrote them to an error file. This is a warning condition. - c) RC = 16. Inability to open a critical resource is fatal; the program cannot continue. - d) RC = 4. Duplicates ar → Chapter 41 Exercises: Capstone Project -- Building a Complete Banking Application
Exercise 5 Solution:
a) Essential -- this is the core skill - b) Essential -- fundamental to mainframe development - c) Essential -- nearly all mainframe applications use DB2 - d) Essential or Preferred -- depends on the specific role - e) Preferred -- IMS is less common than DB2 but still used in insurance and manufact → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
Exercise 6 Solution:
a) COMM-FUNCTION is a 4-byte field with 11 defined 88-level conditions: OPEN, CLOS, MODI, DEPT, WITH, XFER, INQR, HIST, INTR, STMT, REPT. - b) COMM-TARGET-ACCT is needed for transfer operations (TXN-TYPE-TRANSFER) where money moves from one account to another. COMM-ACCT-NUMBER is the source account. → Chapter 41 Exercises: Capstone Project -- Building a Complete Banking Application
Exercise 7 Solution:
a) **Legacy modernization**: The process of updating older systems to meet current business needs, which may involve API enablement, UI modernization, cloud integration, or code refactoring -- not necessarily replacement. - b) **Staff augmentation**: Hiring contractors or consultants to supplement a → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
Exit
Thank the customer, remind them to take their card, and return to the welcome screen. → Case Study 1: Building an ATM Interface Prototype
EXIT PROGRAM:
In a **called program**: Returns control to the caller (same as GOBACK) - In a **main program**: Has no effect; execution continues to the next statement - This is an older construct from COBOL-74/85 → Chapter 17 Quiz: Subprograms and the CALL Statement
Expected outcome:
Unqualified: `ACCOUNT` (padded to 9 bytes) - Qualified: `ACCOUNT (ACCT-NO = 1001000123)` with correct spacing and parentheses. → Chapter 26 Exercises: IMS Database and Transaction Management
Extended sequential (DSNTYPE=LARGE)
allows sequential datasets larger than 65,535 tracks per volume - **Extended format VSAM** -- supports striping (data distributed across multiple volumes for parallel I/O) and data compression → Chapter 30: z/OS Dataset Concepts and Storage Management
Extract-Transform-Load (ETL)
Data is extracted from a source (DB2), transformed (validated and reformatted), and loaded into a target (sequential file). → Chapter 28 Exercises: Batch Processing Patterns and Design

F

FACTORY
Instance count is class-level data shared across all instances. 2. **OBJECT** -- Individual data retrieval is an instance method. 3. **FACTORY** -- Object creation (constructors) are factory methods. 4. **OBJECT** -- A specific customer's address is instance-level data. 5. **FACTORY** -- The maximum → Chapter 37 Exercises: Object-Oriented COBOL
FD
File Description. A DATA DIVISION entry that describes the attributes and record layout of a file defined in the FILE-CONTROL paragraph. → Appendix E: Glossary
FETCH
Uses the allocated cursor to retrieve rows from the result set. → Chapter 23 Quiz: Advanced DB2 Programming
Field naming inconsistencies eliminated
every program now uses the same field names (modulo prefix), making cross-program debugging and impact analysis straightforward - **New program development time reduced by 40%** -- developers no longer spend time reverse-engineering record layouts from existing programs - **Copybook change propagati → Case Study 1: Enterprise Copybook Library for a Banking System
Figurative constant
A COBOL reserved word representing a specific value: ZERO/ZEROS/ZEROES (numeric or character zero), SPACE/SPACES (blank), HIGH-VALUE/HIGH-VALUES (highest value in collating sequence), LOW-VALUE/LOW-VALUES (lowest value), QUOTE/QUOTES (quotation mark), ALL literal (repeating pattern). → Appendix E: Glossary
File Description (FD) entries
**WORKING-STORAGE data definitions** - **LINKAGE SECTION parameters** (for subprogram interfaces) - **Constant definitions** (VALUE clauses for error messages, codes, and configuration) - **88-level condition names** - **PROCEDURE DIVISION paragraphs** (less common, but valid) - **Screen Section lay → Chapter 18: COPY, REPLACE, and Copybook Management
File matching/merging
Two sorted files are interleaved to produce a single sorted output. → Chapter 28 Exercises: Batch Processing Patterns and Design
FILE SECTION
The section of the DATA DIVISION that contains FD entries and their associated record descriptions for files used by the program. → Appendix E: Glossary
FILE STATUS
A two-byte data item that receives a status code after each file I/O operation, indicating success or the type of error. Checking FILE STATUS after every I/O operation is a fundamental COBOL best practice. → Appendix E: Glossary
FILE STATUS IS ws-variable
This is the most important clause for production-quality code. It tells COBOL to store a two-character status code in the specified WORKING-STORAGE variable after every I/O operation on this file. **Always use it.** We will discuss file status codes in detail in Section 11.8. → Chapter 11: Sequential File Processing
FILE-CONTROL
A paragraph in the INPUT-OUTPUT SECTION of the ENVIRONMENT DIVISION that associates internal file names (used in FD entries) with external file references (DD names in JCL). → Appendix E: Glossary
FILLER
A keyword used in data definitions for positions in a record that are not referenced individually. FILLER items occupy space but cannot be referenced by name in the PROCEDURE DIVISION. → Appendix E: Glossary
Financial calculation checks:
Are all monetary calculations performed in COMP-3 (packed decimal)? - Are rounding rules applied consistently (ROUNDED phrase where required)? - Do accumulated totals use fields large enough to avoid overflow? - Are tax and fee calculations applied in the correct sequence? → Chapter 40: Testing, Quality Assurance, and Deployment
Financial functions
ANNUITY and PRESENT-VALUE -- replace complex formulas with single function calls for loan payment and investment analysis calculations. → Chapter 19: Intrinsic Functions Reference
First Edition � 2026
*Covering GnuCOBOL 3.x and IBM Enterprise COBOL 6.x* → Learning COBOL Programming
Fixed-format
The traditional COBOL source format where specific columns have designated purposes: 1--6 (sequence number), 7 (indicator), 8--11 (Area A), 12--72 (Area B), 73--80 (identification). Inherited from 80-column punch cards. → Appendix E: Glossary
flag (include debug information) and optionally
debug** (enable runtime checks) or **-fdebugging-line** (compile D-lines): → Chapter 20 Quiz: Debugging Techniques and Tools
FLAG(I)
show all messages (Informational and above) - **FLAG(W)** -- show Warnings and above - **FLAG(E)** -- show Errors and above - **FLAG(S)** -- show only Severe errors → Chapter 20 Quiz: Debugging Techniques and Tools
Flags (on/off indicators):
End-of-file indicator - First-record indicator - Application-valid indicator - Individual validation results (credit OK, DTI OK, income verified, collateral OK) - Final decision indicator (approve/deny/review/pending) → Case Study 1: Designing Working Storage for a Loan Processing System
For the 23 programs with inline definitions:
Each of the 23 programs must be individually edited to add the new field - Each edit must be reviewed to ensure the field name, PIC clause, position, and USAGE match exactly - Risk of human error: a typo in even one program creates a data mismatch - Testing must cover all 23 programs individually be → Chapter 18 Quiz: COPY, REPLACE, and Copybook Management
For the 62 programs using the copybook:
Update the CUSTOMER-RECORD copybook once - Recompile all 62 programs (the new field is automatically picked up) - If the record length changed, update all FD entries (or ensure FD is also in a copybook) - Test a representative sample; all programs get the identical change → Chapter 18 Quiz: COPY, REPLACE, and Copybook Management
Free-format
A COBOL 2002 source format that removes column restrictions, allowing code to start in any column. Indicated by the >>SOURCE FORMAT IS FREE directive or compiler option. → Appendix E: Glossary
FUNCTION ACOS(argument)
Returns the arc cosine (in radians). Argument must be between -1 and 1. → Chapter 19: Intrinsic Functions Reference
FUNCTION ASIN(argument)
Returns the arc sine (in radians). Argument must be between -1 and 1. → Chapter 19: Intrinsic Functions Reference
FUNCTION ATAN(argument)
Returns the arc tangent (in radians). → Chapter 19: Intrinsic Functions Reference
FUNCTION COS(argument)
Returns the cosine of the argument (in radians). → Chapter 19: Intrinsic Functions Reference
FUNCTION DATE-OF-INTEGER-PART
wait, the correct function is **FUNCTION YEAR-TO-YYYY** (available in some implementations) or the more standard approach using a **windowing** technique with basic arithmetic. → Chapter 19 Quiz: Intrinsic Functions Reference
FUNCTION SIN(argument)
Returns the sine of the argument (in radians). → Chapter 19: Intrinsic Functions Reference
FUNCTION TAN(argument)
Returns the tangent of the argument (in radians). → Chapter 19: Intrinsic Functions Reference

G

GDG
Generation Data Group. A z/OS dataset organization that maintains multiple versions (generations) of a dataset under a single base name. Each generation is identified by a relative number (0 for current, -1 for previous, +1 for new). → Appendix E: Glossary
General guidance:
Use **COMP-3** for all monetary amounts and financial calculations - Use **COMP** for counters, subscripts, and loop variables - Use **DISPLAY** for fields that will be directly output or are part of flat-file records - **Never** use COMP-1 or COMP-2 for financial calculations → Chapter 6: Arithmetic Operations and Numeric Processing
General ledger
The master accounting record that contains all financial transactions of an organization, organized by account number. The GL is the authoritative source for financial statements. → Appendix E: Glossary
Generic Profile:
Protects multiple datasets matching a pattern using wildcard characters (`*` and `**`). - Example: A generic profile `BANK.PROD.**` protects all datasets whose names begin with `BANK.PROD.`. - Created with: `ADDSD 'BANK.PROD.**' GENERIC` → Chapter 31: Exercises – COBOL and the z/OS Security Model
GIVING clause
An optional phrase in arithmetic statements (ADD, SUBTRACT, MULTIPLY, DIVIDE) and SORT/MERGE that directs the result to a specified data item. → Appendix E: Glossary
GnuCOBOL
An open-source COBOL compiler that translates COBOL source code to C, then compiles the C code with GCC. Supports COBOL-85 and most COBOL 2002/2014 features. Used throughout this textbook for practice exercises. → Appendix E: Glossary
GO is skipped.
### Exercise 5: DD Statement Matching A COBOL program has the following FILE-CONTROL paragraph: → Chapter 27 Exercises: JCL Essentials for COBOL Programmers
GO TO loop
The backward GO TO to 2100-X creates an implicit loop that should be PERFORM UNTIL. 3. **Inline READ with GO TO** -- AT END with GO TO is the pre-structured programming pattern. Should use PERFORM with EOF flag. 4. **No END-IF terminators** -- The cascading IF statements without END-IF are fragile a → Chapter 39 Exercises: Legacy System Maintenance and Modernization
GO TO statement
A COBOL statement that transfers control unconditionally to a named paragraph or section. Considered poor practice in structured programming; use PERFORM instead. → Appendix E: Glossary
GOBACK:
In a **called program**: Returns control to the caller - In a **main program**: Terminates the run unit (same as STOP RUN) - Works correctly in both contexts - Introduced in COBOL-85 and is the recommended modern practice → Chapter 17 Quiz: Subprograms and the CALL Statement
Government
Government systems (tax processing, Social Security, veterans' benefits) process enormous volumes of records in batch and must operate reliably for decades. COBOL's stability, portability across standard revisions, and batch processing efficiency make it ideal. → Appendix G: Answers to Selected Exercises
Gross pay
regular hours times hourly rate, plus overtime at 1.5x 2. **Federal tax withholding** -- using progressive tax brackets for the employee's filing status 3. **State tax withholding** -- Ohio's progressive income tax schedule 4. **FICA taxes** -- Social Security (6.2%) and Medicare (1.45%), with the S → Case Study 2: Payroll Calculation System
Group item
A data item that contains one or more subordinate items. Defined without a PICTURE clause; its size is the sum of its subordinate items. When used in operations, treated as alphanumeric regardless of subordinate types. → Appendix E: Glossary

H

HANDLE CONDITION
A CICS command that establishes error handling routines for specific CICS exception conditions. Replaced in modern CICS by the RESP option on individual commands. → Appendix E: Glossary
Healthcare
Claims processing, eligibility determination, and billing systems handle complex rule sets and large transaction volumes. COBOL's structured data definitions (level numbers, copybooks) model hierarchical healthcare records naturally. → Appendix G: Answers to Selected Exercises
Hexadecimal
A base-16 numbering system using digits 0--9 and letters A--F. Used extensively in mainframe computing for memory addresses, EBCDIC character codes, and ABEND code interpretation. → Appendix E: Glossary
hierarchical sequence
a depth-first, left-to-right traversal of the tree. For the banking hierarchy above, the hierarchical sequence visits: → Chapter 26: IMS Database and Transaction Management
HIGH-VALUE
A figurative constant representing the highest value in the current collating sequence. In EBCDIC, HIGH-VALUE is X'FF'. Commonly used to mark end-of-data conditions in processing logic. → Appendix E: Glossary
HIGH-VALUE / HIGH-VALUES
Represents the highest character in the collating sequence (X"FF"). Used as a sentinel value in sorting (sorts after everything) and sequential processing. → Chapter 3 Quiz: Data Types, Variables, and the PICTURE Clause
hook method pattern
the base class defines extension points that subclasses can customize. → Case Study 1: Banking Account Class Hierarchy
Host variable
A COBOL data item used in embedded SQL statements to exchange data between the COBOL program and DB2. Host variables are prefixed with a colon in SQL statements. → Appendix E: Glossary

I

I/O characteristics of batch programs:
Input comes from files (sequential, VSAM, DB2 tables), not from the keyboard. - Output goes to files, spool datasets, or databases, not to the screen. - DISPLAY is used primarily for logging and operator messages, not for user communication. - ACCEPT reads from SYSIN (a JCL DD), not from the keyboar → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
I/O characteristics of interactive programs:
Input comes from the keyboard (ACCEPT from CONSOLE or SCREEN SECTION). - Output goes to the screen (DISPLAY or SCREEN SECTION). - Programs use menus, prompts, and data entry forms. - Programs loop until the user chooses to exit. - Input validation is critical (users make mistakes). - Response time m → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
IBM Compiler Options for OO COBOL:
`THREAD` - Required for OO COBOL programs that use Java interoperability - `RENT` - Reentrant code, required for OO COBOL - `DLL` - Dynamic link library support, needed for class loading → Chapter 37: Object-Oriented COBOL
IBM Skills Academy
Structured learning paths for IBM certifications. - **Coursera / edX** -- Several universities offer mainframe-related courses through these platforms. - **Open Mainframe Project COBOL Programming Course** (free) -- A GitHub-based course with exercises that can be completed using GnuCOBOL or IBM Z X → Chapter 42: COBOL Career Guide and the Path Forward
IBM Z Open Editor
Advanced COBOL editing, includes copybook support - **COBOL Lint** — Basic static analysis → Compiler Setup Guide
IBM-specific details:
`DISPLAY UPON SYSOUT` sends output to the SYSOUT DD statement in the JCL, which typically goes to a spool dataset that the programmer can review after the job completes. - `DISPLAY UPON CONSOLE` sends a Write-To-Operator (WTO) message to the z/OS system console. This is used for operator communicati → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
ICF catalog
Integrated Catalog Facility. The z/OS catalog structure that maps dataset names to physical volume locations. VSAM datasets are always cataloged in an ICF catalog. → Appendix E: Glossary
IDCAMS
The z/OS utility program (Access Method Services) used to define, alter, delete, print, copy, and manage VSAM datasets and catalog entries. → Appendix E: Glossary
Identification
Every user and process must have a verifiable identity. 2. **Authentication** --- That identity must be proven, typically through a password, passphrase, certificate, or multi-factor authentication token. 3. **Authorization** --- Once identified and authenticated, access to every resource is checked → Chapter 31: COBOL and the z/OS Security Model
IDENTIFICATION DIVISION
The first of COBOL's four divisions. Contains the PROGRAM-ID paragraph (required) and optional informational paragraphs (AUTHOR, DATE-WRITTEN, etc.). → Appendix E: Glossary
Identify the components of the mainframe ecosystem
z/OS, JCL, CICS, DB2, VSAM -- and explain how COBOL programs interact with each component → Part I: COBOL Foundations and the Mainframe World
Impact on file processing:
Files sorted on one platform may not be correctly sorted on another - The balanced line algorithm assumes both files are sorted in the same order - MERGE operations require consistent collating sequences - When migrating files between platforms, re-sort after transfer → Chapter 13: Relative File Processing and Advanced File Techniques
implementation-dependent
the sort utility may place them in any order. The `WITH DUPLICATES IN ORDER` clause guarantees that records with identical keys appear in the output in the same order they appeared in the input. This is known as a **stable sort**. → Chapter 14: Sort and Merge Operations
Important considerations:
HANDLE ABEND LABEL is preferred for application-level recovery because it keeps the recovery logic within the program that understands the context. - HANDLE ABEND PROGRAM is preferred for generic error handling (logging, notification). - After an abend is handled, the program can continue processing → Chapter 25: Advanced CICS Programming
Important notes about class conditions:
The NUMERIC test on a `PIC X` field checks that every character is a digit (0-9). Spaces, decimal points, signs, and commas are NOT numeric in a PIC X field. - Spaces pass the ALPHABETIC, ALPHABETIC-LOWER, and ALPHABETIC-UPPER tests. - Class conditions apply to the entire field. You cannot test a su → Chapter 7: Conditional Logic -- IF, EVALUATE, and Condition Names
Improvement from Run A to Run C:
Reduction: 10,000,000 - 71,943 = 9,928,057 fewer EXCPs - Percentage improvement: (9,928,057 / 10,000,000) x 100 = 99.3% → Chapter 32: Exercises – Performance Tuning for COBOL Programs
IMS
Information Management System. IBM's hierarchical database and transaction management system for z/OS. COBOL programs access IMS databases through DL/I calls. → Appendix E: Glossary
IMS DB
The database component of *IMS*, providing hierarchical data storage organized as segment types within a hierarchy. → Appendix E: Glossary
IMS TM
The transaction management component of *IMS*, providing online transaction processing similar to *CICS* but using a different architecture (message-driven). → Appendix E: Glossary
IMS Transaction Manager (IMS TM):
IMS TM manages online transaction processing with terminals, message queues, and program scheduling. - MPP (Message Processing Program) processes messages from the queue. - GU IO-PCB reads input messages. ISRT IO-PCB sends output messages. - MPPs loop until status code QC indicates no more messages. → Chapter 26: IMS Database and Transaction Management
IMS-COBOL Integration Patterns:
Sequential batch processing: XRST, GN loop, periodic CHKP, final CHKP. - Online inquiry: GU IO-PCB, GU DB-PCB, GNP loop, ISRT IO-PCB. - Online update: GU IO-PCB, GHU DB-PCB, modify, REPL, ISRT IO-PCB. - Cross-database operations use separate PCBs with independent positions. → Chapter 26: IMS Database and Transaction Management
Income Statement Accounts (Temporary):
**Revenue (4000-4999)**: Income earned. Examples: Product Sales (4100), Service Revenue (4200), Interest Income (4500). - **Expenses (5000-9999)**: Costs incurred. Examples: Salaries (5100), Rent (5200), Depreciation (5300), Cost of Goods Sold (6000). → Chapter 36: Accounting and General Ledger Systems
independent elementary items
data items that stand alone and are not part of any group hierarchy. They must have a PICTURE clause and cannot be subdivided. → Chapter 3: Data Types, Variables, and the PICTURE Clause
Index
(1) A data item defined with USAGE INDEX for use with SEARCH and SET statements on *OCCURS* tables. (2) In VSAM, the component of a *KSDS* that maps key values to data record locations. → Appendix E: Glossary
Indicator area
Column 7 in fixed-format COBOL. An asterisk (*) marks a comment line, a hyphen (-) marks a continuation line, a D marks a debugging line, and a slash (/) forces a page eject in the listing. → Appendix E: Glossary
Inheritance
SavingsAccount IS-A Account. It shares all Account behavior and adds interest-specific behavior. 2. **Composition** -- Customer HAS-A Address. The address is a separate entity that can exist and change independently. 3. **Inheritance** -- CheckingAccount IS-A Account. It shares Account behavior and → Chapter 37 Exercises: Object-Oriented COBOL
Initial runs calculation:
Input file: 10 GB = 10,240 MB - Memory available: 256 MB - Initial runs = 10,240 / 256 = 40 runs → Chapter 14 Quiz: Sort and Merge Operations
INITIALIZE statement
A COBOL statement that sets data items to default values: alphanumeric items to spaces, numeric items to zeros. Can selectively initialize categories with the REPLACING phrase. → Appendix E: Glossary
Inline PERFORM
A COBOL-85 construct (PERFORM ... END-PERFORM) that executes statements between PERFORM and END-PERFORM without requiring a separate paragraph. Supports TIMES, UNTIL, and VARYING phrases. → Appendix E: Glossary
INPUT
handles errors on all files opened for input - **OUTPUT** -- handles errors on all files opened for output - **I-O** -- handles errors on all files opened for I-O (update) - **EXTEND** -- handles errors on all files opened for extend → Chapter 16 Quiz: Declaratives and Exception Handling
INPUT PROCEDURE section executes completely
all OPEN, READ, RELEASE, and CLOSE operations happen here 3. After the INPUT PROCEDURE finishes, the **sort utility sorts all released records** in memory/work files 4. After sorting completes, the **OUTPUT PROCEDURE section executes completely** -- all OPEN, RETURN, WRITE, and CLOSE operations happ → Chapter 14 Quiz: Sort and Merge Operations
Input record layout:
Application header (ID, date, branch, loan officer) - Customer information (name, SSN, DOB, address, phone, email) - Financial information (income, debts, credit score, employment) - Loan request (type, amount, term, purpose, collateral value) → Case Study 1: Designing Working Storage for a Loan Processing System
INSPECT statement
A COBOL statement for counting and replacing characters within a data item. Supports TALLYING (counting), REPLACING (substituting), and CONVERTING (translating) operations. → Appendix E: Glossary
INSPECT TALLYING
Counts occurrences of characters or strings 2. **INSPECT REPLACING** -- Substitutes characters or strings in place 3. **INSPECT CONVERTING** -- Translates characters using a mapping table (similar to Unix `tr`) → Chapter 9 Quiz: String Handling and Character Manipulation
Insurance
Insurance applications require complex rate calculations, actuarial computations, and policy administration with precise currency handling. COBOL's PICTURE clause and arithmetic verbs provide the deterministic precision that regulators require. → Appendix G: Answers to Selected Exercises
Interest Rate
Annual percentage rate from 0.000% to 99.999%. Three decimal places required for precision. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Interest Rate: DISPLAY vs. COMP-3
`PIC 9(2)V9(3) DISPLAY` = 5 bytes - `PIC 9(2)V9(3) COMP-3` = 3 bytes → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Intrinsic function
A built-in function invoked with the FUNCTION keyword. Examples include FUNCTION CURRENT-DATE, FUNCTION LENGTH, FUNCTION UPPER-CASE, FUNCTION NUMVAL, FUNCTION ANNUITY. → Appendix E: Glossary
INVOKE statement
A COBOL 2002 statement that calls a method on an object in object-oriented COBOL programs. → Appendix E: Glossary
Isolating the program from terminal details
The MPP works with logical message fields rather than screen positions or control characters. 2. **Enabling format changes without program changes** — Screen layouts can be modified by changing MFS definitions without recompiling the application program. 3. **Supporting multiple terminal types** — T → Chapter 26 Quiz: IMS Database and Transaction Management
ISPF
Interactive System Productivity Facility. A full-screen editor and dialog manager used on z/OS for editing datasets, browsing output, submitting jobs, and navigating the mainframe environment. → Appendix E: Glossary

J

JCL
Job Control Language. The command language used on z/OS to define jobs, specify programs to execute, allocate datasets, and control job flow. JCL statements begin with // in columns 1--2. → Appendix E: Glossary
JCL for IMS Batch:
DFSRRC00 is the IMS region controller invoked by JCL. - The PARM field specifies region type, program name, PSB name, and processing options. - DD statements include STEPLIB, DFSRESLB, IMS (DBDLIB/PSBLIB), IEFRDER (log), DFSVSAMP (buffers), and database datasets. → Chapter 26: IMS Database and Transaction Management
JES2/JES3
Job Entry Subsystem. The z/OS component that receives jobs, schedules them for execution, and manages their output. JES2 is the more commonly used variant. → Appendix E: Glossary
Job
A unit of work submitted to z/OS for execution, defined by JCL statements. A job consists of one or more *job steps*. → Appendix E: Glossary
Job step
A single program execution within a *job*, defined by an EXEC statement in JCL. Each step can execute a different program and access different datasets. → Appendix E: Glossary
Journal entry
An accounting record that documents a financial transaction, specifying the accounts debited and credited, the amounts, the date, and a description. → Appendix E: Glossary
JSON
JavaScript Object Notation. A lightweight data interchange format supported natively in COBOL 2014 through the JSON GENERATE and JSON PARSE statements. → Appendix E: Glossary
JSON GENERATE
A COBOL 2014 statement that converts a COBOL data structure to a JSON text string. → Appendix E: Glossary
JSON PARSE
A COBOL 2014 statement that parses a JSON text string and populates a COBOL data structure with the extracted values. → Appendix E: Glossary

K

Key points:
Both `01` items must be the same total length. - The `REDEFINES` item must immediately follow the item it redefines. - Data alignment is critical -- each `FILLER` entry must match the table entry size exactly. → Chapter 10: Tables and Arrays -- OCCURS, SEARCH, and Multi-Dimensional Data
Key rules for JSON GENERATE:
The JSON field names are derived from the COBOL data-name identifiers. For this reason, use mixed-case or camelCase names in your COBOL data definitions when you know they will be used for JSON generation. - FILLER items are excluded from the generated JSON. - The SUPPRESS phrase allows you to omit → Chapter 38: Modern COBOL Integrations -- APIs, Web Services, and Microservices
Key rules:
Adding a negative number subtracts - Subtracting a negative number adds - The sign of the result follows standard mathematical rules - An unsigned field receiving a negative result triggers a size error (with ON SIZE ERROR) or produces undefined results (without it) → Chapter 6: Arithmetic Operations and Numeric Processing
KSDS
Key-Sequenced Data Set. A *VSAM* file organization where records are stored in order of a primary key and accessed by that key. Supports sequential, random, and dynamic access. The most commonly used VSAM organization. → Appendix E: Glossary
KSDS (Key-Sequenced Data Set)
Records are stored and retrieved by a primary key field. This is the indexed file organization. Records are maintained in key sequence. → Chapter 12: Indexed File Processing (VSAM KSDS)

L

LABEL RECORDS ARE STANDARD
Indicates that standard header and trailer labels are present on the file. This is the norm for disk files on z/OS. While this clause is considered obsolete in the 2014 COBOL standard and can be omitted, you will see it in virtually every existing COBOL program. → Chapter 11: Sequential File Processing
Learning Objectives for Part I:
Explain COBOL's historical significance and its ongoing role in enterprise computing - Identify and describe the four divisions of a COBOL program and their purposes - Define data items using PICTURE clauses with correct numeric, alphanumeric, and edited formats - Distinguish between WORKING-STORAGE → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part II:
Construct conditional logic using IF/ELSE, nested IF, EVALUATE, and condition names - Use PERFORM in inline, out-of-line, TIMES, UNTIL, VARYING, and nested forms - Manipulate strings with STRING, UNSTRING, INSPECT, and reference modification - Define single and multi-dimensional tables with OCCURS a → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part III:
Implement complete sequential file read, write, update, and copy programs - Build indexed file (VSAM KSDS) programs with primary and alternate key access - Use relative file organization for direct-access scenarios - Write SORT and MERGE operations with input/output procedures - Generate formatted r → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part IV:
Write and call subprograms using static and dynamic CALL with BY REFERENCE, BY CONTENT, and BY VALUE - Create and manage copybooks with COPY and REPLACE for shared data definitions - Apply COBOL intrinsic functions for mathematical, string, date, and financial operations - Use debugging tools and te → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part IX:
Design, implement, test, and deploy a multi-program COBOL application with file processing, DB2 access, and CICS transactions - Identify career paths, certification options, and continuing education resources for COBOL professionals → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part V:
Write COBOL programs with embedded SQL for DB2 database operations (SELECT, INSERT, UPDATE, DELETE, cursors) - Implement advanced DB2 techniques including dynamic SQL, stored procedures, and performance optimization - Build CICS online transaction programs with BMS maps, pseudo-conversational design → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part VI:
Write JCL to compile, link-edit, and execute COBOL programs with proper DD statements - Design batch processing systems with restart/recovery, checkpointing, and error handling - Use IBM mainframe utilities (IDCAMS, IEBGENER, DFSORT, ICETOOL, FILEAID) in COBOL job streams - Manage z/OS datasets incl → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part VII:
Implement precise financial calculations including interest, amortization, and present value using COBOL's decimal arithmetic - Describe the architecture of core banking systems and payment processing platforms built in COBOL - Understand the COBOL application patterns used in insurance policy manag → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Learning Objectives for Part VIII:
Write object-oriented COBOL programs using classes, methods, interfaces, and inheritance - Integrate COBOL programs with modern systems via JSON, XML, REST APIs, and message queues - Apply strategies for legacy system assessment, refactoring, and incremental modernization - Implement comprehensive t → Learning COBOL Programming: From Beginners to Experts -- Complete Outline
Ledger
A book or system of accounts that records financial transactions. See *general ledger*. → Appendix E: Glossary
leftmost-character-position
Integer starting position (1-based) - **length** — Number of characters to reference (optional; defaults to remainder) → Appendix C: COBOL Language Quick Reference
Level number
A two-digit number (01--49, 66, 77, 88) that indicates the hierarchical position of a data item in a record structure. 01 is the highest level; higher numbers indicate subordinate items. Special levels: 66 (RENAMES), 77 (independent item), 88 (condition name). → Appendix E: Glossary
The calling program needs the DB2 result to continue processing. LINK returns control to the caller. → Chapter 25 Exercises: Advanced CICS Programming
LINKAGE SECTION
A section of the DATA DIVISION that describes data items passed to the program from a calling program or from CICS. Linkage items do not occupy storage in the called program. → Appendix E: Glossary
LISTCAT
display catalog information: → Chapter 27: JCL Essentials for COBOL Programmers
Literal
A constant value coded directly in a COBOL statement. Numeric literals contain digits and optionally a sign and decimal point. Alphanumeric literals are enclosed in quotation marks. → Appendix E: Glossary
Loan payment
given principal, rate, and term, calculate payment (ANNUITY) 2. **Future value** -- given payment, rate, and term, calculate the future value of an annuity 3. **Present value** -- given payment, rate, and term, calculate present value (PRESENT-VALUE) 4. **Interest rate solver** -- given principal, p → Chapter 19 Exercises: Intrinsic Functions Reference
Loan Payment Calculation
Given a principal amount, annual interest rate, and term in months, compute the monthly payment using `FUNCTION ANNUITY`, and generate a complete amortization schedule with principal and interest breakdown. → Case Study 1: Financial Date Processing Utility
LOAN-FILE-CONTROL.cpy
SELECT clause for the loan master file with a :PREFIX: tag for the file status field → Chapter 18 Exercises: COPY, REPLACE, and Copybook Management
LOAN-RECORD.cpy
The loan account master record (80 bytes): - Loan Number (10), Borrower Name (30), Loan Type (2), Original Amount (9V99 COMP-3), Current Balance (9V99 COMP-3), Interest Rate (2V999 COMP-3), Origination Date (8), Status (1), Filler → Chapter 18 Exercises: COPY, REPLACE, and Copybook Management
LOAN-STATUS-CODES.cpy
88-level condition names for loan status → Chapter 18 Exercises: COPY, REPLACE, and Copybook Management
LOCAL-STORAGE SECTION
A DATA DIVISION section (COBOL 2002) where items are allocated fresh for each invocation of the program. Unlike WORKING-STORAGE, LOCAL-STORAGE is reinitialized each time the program is called. → Appendix E: Glossary
LOCK
A mechanism used by DB2 and CICS to prevent concurrent access conflicts. Row locks, page locks, and table locks control concurrent updates. → Appendix E: Glossary
Lock management
without periodic commits, the program accumulates locks on every accessed row, which can exhaust the lock table and escalate to table-level locks, blocking other applications. (2) **Recovery** — if the program fails, DB2 must roll back all uncommitted work; a long-running unit of work leads to prolo → Chapter 22 Quiz: Embedded SQL and DB2 Fundamentals
LOW-VALUE
A figurative constant representing the lowest value in the current collating sequence. In EBCDIC, LOW-VALUE is X'00'. → Appendix E: Glossary
LOW-VALUE / LOW-VALUES
Represents the lowest character (X"00", null). Used as end-of-data markers and for initializing buffers. → Chapter 3 Quiz: Data Types, Variables, and the PICTURE Clause
LPAR
Logical Partition. A division of a physical mainframe into multiple independent logical systems, each running its own copy of z/OS. LPARs allow a single physical machine to function as several separate systems. → Appendix E: Glossary
LRECL
Logical Record Length. The length in bytes of a single logical record in a dataset, specified in JCL DCB parameters or COBOL FD entries. → Appendix E: Glossary

M

Main Menu
Display transaction options: Balance Inquiry, Withdrawal, Deposit, Another Transaction, and Exit/Remove Card. → Case Study 1: Building an ATM Interface Prototype
Mainframe
A large, high-performance computer system designed for high-volume transaction processing, bulk data handling, and enterprise-critical applications. IBM Z series mainframes are the primary platform for COBOL production systems. → Appendix E: Glossary
Management Class
defines the lifecycle of a dataset. It controls how long a dataset is retained, when it is eligible for migration to cheaper storage, how often it is backed up, and whether it has an expiration date. → Chapter 30: z/OS Dataset Concepts and Storage Management
MAPATTS
it sends everything. → Chapter 24 Quiz: CICS Transaction Processing Fundamentals
Master catalog
one per z/OS system. Contains entries for system datasets (SYS1.*, etc.) and **aliases** that point to user catalogs. → Chapter 30: z/OS Dataset Concepts and Storage Management
master files
the central repositories of business data such as customer records, account balances, product catalogs, and employee information. → Chapter 12: Indexed File Processing (VSAM KSDS)
Maturity Date Schedule
Given an origination date and a term in months, generate a schedule of monthly maturity dates, adjusting for month-end conventions. → Case Study 1: Financial Date Processing Utility
Merge passes calculation:
Merge order = 6 (number of SORTWK files that can be merged simultaneously) - After pass 1: 40 runs merged 6 at a time = ceil(40/6) = 7 runs - After pass 2: 7 runs merged 6 at a time = ceil(7/6) = 2 runs - After pass 3: 2 runs merged = 1 final sorted output - Total merge passes = **3** → Chapter 14 Quiz: Sort and Merge Operations
MERGE statement
A COBOL statement that combines two or more sorted files into a single sorted output file. → Appendix E: Glossary
METHOD-ID
A COBOL 2002 paragraph in the IDENTIFICATION DIVISION that defines a method within an object-oriented class. → Appendix E: Glossary
Microservices
An architectural style where applications are composed of small, independently deployable services that communicate through APIs. COBOL programs can participate as backend services in microservices architectures. → Appendix E: Glossary
Mid-level (3-7 years experience):
Financial services: $95,000 - $130,000 - Government: $75,000 - $100,000 - Insurance: $85,000 - $115,000 - Consulting: $100,000 - $145,000 → Chapter 42: COBOL Career Guide and the Path Forward
MOVE statement
A COBOL statement that copies data from a source to one or more destinations, applying type conversion and PICTURE editing rules as needed. → Appendix E: Glossary
MPP vs. BMP Regions:
MPP: Online, short-running, processes messages from the queue. - BMP: Batch, long-running, accesses IMS databases while the online system runs. - Batch DL/I: Batch with exclusive database access (online system not running). → Chapter 26: IMS Database and Transaction Management
MQCONN
Establishes a connection to the queue manager named in `WS-QM-NAME`. Returns a connection handle (`WS-HCONN`) used by all subsequent MQ calls. The completion code and reason code indicate success or failure. 2. **MQOPEN** -- Opens a specific queue (identified in `WS-OBJDESC`) for output (MQOO-OUTPUT → Chapter 38 Exercises: Modern COBOL Integrations
MQGET/MQPUT
IBM MQ API calls for receiving and sending messages on message queues. COBOL programs use these calls (via CALL or CICS MQ commands) for asynchronous communication. → Appendix E: Glossary
multi-level control break report
the kind of report that Report Writer was specifically designed to handle. The data is sorted by region, then by branch within each region. As the program reads through the data, it must detect when the branch changes (minor control break) and when the region changes (major control break), printing → Case Study 2: Branch Performance Summary Report
Must begin in Area A (columns 8-11):
Division headers (`IDENTIFICATION DIVISION.`) - Section headers (`WORKING-STORAGE SECTION.`) - Paragraph names (`0000-MAIN.`) - Level indicators: `FD`, `SD`, `01`, `77` - `END PROGRAM` header → Chapter 2: COBOL Program Structure -- Divisions, Sections, and Paragraphs
Must begin in Area B (columns 12-72):
Statements and sentences (`DISPLAY "HELLO"`, `MOVE X TO Y`) - Clauses and entries within a statement - Level numbers 02 through 49, 66, 88 - Continuation text → Chapter 2: COBOL Program Structure -- Divisions, Sections, and Paragraphs

N

Name
The user's real name - **Default group** --- The primary group association - **Owner** --- Who administers this user profile - **Password/passphrase** --- Authentication credentials - **Attributes** --- Special privileges (SPECIAL, OPERATIONS, AUDITOR, etc.) → Chapter 31: COBOL and the z/OS Security Model
Negatives:
"Not interested in learning new technologies" is a disqualifying statement for most employers. Even positions focused on COBOL maintenance increasingly require interaction with modern systems (API endpoints, CI/CD pipelines, cloud-hosted services). - "Until I retire in 5 years" signals that the orga → Chapter 42 Quiz: COBOL Career Guide and the Path Forward
nested OCCURS clauses
an `OCCURS` within an `OCCURS`. → Chapter 10: Tables and Arrays -- OCCURS, SEARCH, and Multi-Dimensional Data
Nested program
A COBOL program defined within another COBOL program (between PROGRAM-ID and END PROGRAM). Nested programs can access the containing program's data if declared GLOBAL. → Appendix E: Glossary
NEW
The initial status. The data set does not exist yet; create it. 2. **CATLG** -- The normal disposition. If the step completes successfully, catalog the data set (make it permanently accessible by name). 3. **DELETE** -- The abnormal disposition. If the step ABENDs (terminates abnormally), delete the → Chapter 11 Quiz: Sequential File Processing
NEXT SENTENCE
An obsolete COBOL statement that transfers control to the first statement after the next period. Replaced by CONTINUE in COBOL-85 structured code. Avoid use in new programs. → Appendix E: Glossary
No
MERGE always uses USING | | OUTPUT PROCEDURE | Yes | Yes | | USING clause | One or more files | **Two or more** files (minimum 2) | | Input files | Can be unsorted | **Must be pre-sorted** on merge keys | | Re-sorting | Yes | No -- only interleaves | → Chapter 14: Sort and Merge Operations
no error is raised
the program continues silently with bad data. This is one of the most dangerous behaviors in COBOL and a leading cause of subtle financial bugs. → Chapter 6: Arithmetic Operations and Numeric Processing
No IDCAMS
Files are created automatically when opened for OUTPUT. No separate definition step is needed. 2. **No JCL** -- File assignments use environment variables or command-line parameters. 3. **No CI/CA concepts** -- The backend handles storage internally. 4. **Alternate keys** -- Support varies by backen → Chapter 12: Indexed File Processing (VSAM KSDS)
No JOBLIB
each step uses STEPLIB, risking inconsistency. - **Generic step names** (STEP1, STEP2) provide no operational context. - **No COND or IF/THEN/ELSE** for conditional execution. - **No DCB parameters** on output datasets. - **SYSOUT=\*** uses the default class rather than an explicit class. - **No res → Case Study 2: Production JCL Standards and Error Recovery
no-operation
it does nothing. It provides a paragraph that contains no executable code. It is typically used as the endpoint paragraph in a `PERFORM THRU` range: → Chapter 8 Quiz: Iteration -- The PERFORM Statement
NONE
No access permitted. The user cannot read, write, or even determine that the dataset exists. → Chapter 31: Exercises – COBOL and the z/OS Security Model
Normal disposition (second subparameter)
what to do if the step completes successfully: → Chapter 27: JCL Essentials for COBOL Programmers
NOT AT END
Executes when a record is successfully read. → Chapter 11: Sequential File Processing
not recoverable
you want to preserve the audit trail even if the transaction fails. For transactional queues (where queue writes should be atomic with other operations), the TDQ should be recoverable. → Chapter 25 Quiz: Advanced CICS Programming
NUMBERED
This keyword makes it an RRDS (as opposed to INDEXED for KSDS or NONINDEXED for ESDS) - **RECORDS(9999)** -- Allocates space for 9,999 record slots - **RECORDSIZE(80 80)** -- Fixed-length records of 80 bytes (average and maximum must be equal for RRDS) - **CONTROLINTERVALSIZE** -- The CI size affect → Chapter 13: Relative File Processing and Advanced File Techniques
Numeric edited
A data category for numeric items formatted for display, using PICTURE editing symbols such as Z (zero suppress), * (check protect), $ (currency), and comma/period (insertion). → Appendix E: Glossary
NUMPROC(NOPFD)
The compiler generates code to "fix" the sign on every numeric operation, converting any valid sign representation to the preferred sign. This is the safest but slowest option. - **NUMPROC(PFD)** --- The compiler assumes all numeric data already has preferred signs. No sign-fixing instructions are g → Chapter 32: Performance Tuning for COBOL Programs

O

OBJECT-COMPUTER
A CONFIGURATION SECTION paragraph that specifies the computer on which the compiled program will run. → Appendix E: Glossary
OCCURS clause
A DATA DIVISION clause that defines a table (array) by specifying the number of times a data item is repeated. Supports fixed occurrences, DEPENDING ON for variable-length tables, and KEY IS for ordered tables. → Appendix E: Glossary
OCCURS DEPENDING ON
The variable-length table construct. The number of occurrences of ORD-LINE-ITEMS depends on the value of ORD-LINE-COUNT. If ORD-LINE-COUNT is 3, only 3 line items are stored in the record. → Chapter 11: Sequential File Processing
Online
Single transaction, real-time response required (customer is waiting at the ATM), random access to one account. → Chapter 28 Exercises: Batch Processing Patterns and Design
OPEN EXTEND
Append-only access. Adds records after the highest existing key. Rarely used with indexed files since random WRITE under I-O mode is more flexible. → Chapter 12: Indexed File Processing (VSAM KSDS)
OPEN I-O
Full read/write access. Required for master file maintenance (adding, updating, deleting records). → Chapter 12: Indexed File Processing (VSAM KSDS)
OPEN INPUT
Read-only access. Use for reports and inquiries. → Chapter 12: Indexed File Processing (VSAM KSDS)
OPEN OUTPUT
Write-only access. Creates a new file or replaces all existing data. Used for initial loading. → Chapter 12: Indexed File Processing (VSAM KSDS)
OPEN statement
A COBOL statement that makes a file available for processing. Modes include INPUT (read only), OUTPUT (write new), I-O (read and update), and EXTEND (append). → Appendix E: Glossary
OPTIMIZE(0)
No optimization (default). The compiler generates straightforward code that is easy to debug but not optimized for performance. - **OPTIMIZE(1)** --- Standard optimization. The compiler performs local optimizations within each paragraph, including common subexpression elimination, strength reduction → Chapter 32: Performance Tuning for COBOL Programs
Optional paragraphs (for documentation):
`AUTHOR`: The programmer's name - `INSTALLATION`: The computing environment - `DATE-WRITTEN`: When the program was created - `DATE-COMPILED`: Automatically filled in by the compiler → Chapter 1: The World of COBOL -- History, Relevance, and the Mainframe Ecosystem
ORGANIZATION IS RELATIVE
Declares this as a relative file (as opposed to SEQUENTIAL or INDEXED). - **RELATIVE KEY IS data-name** -- Identifies the working-storage field that holds the relative record number. This field must be an unsigned integer defined in WORKING-STORAGE (not in the file's record description). The system → Chapter 13: Relative File Processing and Advanced File Techniques
ORGANIZATION IS SEQUENTIAL
Specifies that records are stored and accessed in sequence. This is the default and can be omitted, but experienced programmers include it for clarity. Other organizations (INDEXED, RELATIVE) are covered in later chapters. → Chapter 11: Sequential File Processing
Overflow
A condition where an arithmetic result exceeds the capacity of the receiving data item. Detected by the ON SIZE ERROR phrase in COBOL arithmetic statements. → Appendix E: Glossary

P

Package
In DB2, a bound collection of optimized SQL statements from a single *DBRM*. Packages provide better performance isolation than plans for applications with many programs. → Appendix E: Glossary
Paragraph
A named unit of the PROCEDURE DIVISION consisting of a paragraph name followed by one or more sentences. Paragraphs can be invoked with PERFORM. → Appendix E: Glossary
parallel partitioning
splitting the 5 million accounts into multiple partitions and processing them simultaneously: → Chapter 28 Quiz: Batch Processing Patterns and Design
PASS
The transaction clears this check and proceeds to the next - **WARN** -- The transaction is flagged for post-authorization review but continues - **FAIL** -- The transaction is immediately declined with a specific reason code → Case Study 1: Credit Card Authorization at Global Payments Inc.
PCBs and PSBs:
The PSB defines a program's authorized view of IMS databases. - Each PCB represents one database view or the IO PCB for message/system calls. - PCBs are received through the PROCEDURE DIVISION USING clause, with the IO PCB always first. - The status code in the PCB tells you the result of every DL/I → Chapter 26: IMS Database and Transaction Management
PDS
Partitioned Data Set. A z/OS dataset organized as a directory of members, similar to a folder containing files. Source code, copybooks, JCL, and load modules are commonly stored in PDS or PDSE members. → Appendix E: Glossary
PDSE
Partitioned Data Set Extended. An enhanced version of *PDS* that supports dynamic directory expansion, member-level sharing, and program objects. → Appendix E: Glossary
PERFORM statement
A COBOL statement that transfers control to a paragraph, section, or inline code block, with optional looping (TIMES, UNTIL, VARYING). The primary structured programming construct in COBOL. → Appendix E: Glossary
Performance fundamentals
CPU time, elapsed time, I/O counts, and memory usage as the four pillars of mainframe performance measurement. - **Compiler optimization** --- OPTIMIZE(2), TRUNC(OPT), NUMPROC(PFD), and FASTSRT as the most impactful compiler options for performance. - **Efficient coding techniques** --- SEARCH ALL f → Chapter 32: Performance Tuning for COBOL Programs
permanent accounts
their balances carry forward from one year to the next. Cash does not reset to zero on January 1; accounts payable obligations do not disappear; retained earnings accumulates over the life of the company. → Chapter 36 Quiz: Accounting and General Ledger Systems
Persist across records (never INITIALIZE):
Counters (they accumulate) - Running total accumulators (they accumulate) - Constants (they never change) - The EOF flag (it changes once) → Case Study 1: Designing Working Storage for a Loan Processing System
Personal loans
up to $50,000, terms of 12-60 months 2. **Auto loans** -- up to $100,000, terms of 12-60 months 3. **Home loans** -- up to $750,000, terms of 120-360 months 4. **Business loans** -- up to $500,000, terms of 12-240 months → Case Study 1: Designing Working Storage for a Loan Processing System
Personal unsecured loans
$1,000 to $25,000, terms of 12 to 60 months 2. **Auto loans (new vehicles)** -- $5,000 to $75,000, terms of 24 to 72 months 3. **Auto loans (used vehicles)** -- $3,000 to $50,000, terms of 24 to 60 months 4. **Home equity loans** -- $10,000 to $250,000, terms of 60 to 240 months 5. **Share-secured l → Case Study 2: Designing a Loan Application Data Structure
PICTURE clause
The COBOL data definition clause that specifies the size, type, and format of an elementary data item using symbolic characters (9, A, X, S, V, P, Z, *, $, +, -, etc.). See *Appendix F* for a detailed reference. → Appendix E: Glossary
PIN Entry
Accept a 4-digit PIN. Allow up to 3 attempts. Lock the card after 3 failures. Display masked card number (only last 4 digits visible) for security. → Case Study 1: Building an ATM Interface Prototype
Plan
In DB2, a bound collection of one or more *packages* or *DBRMs* that authorizes a COBOL program to execute its embedded SQL statements. → Appendix E: Glossary
Positioning:
`LINE n` -- places the field at row n (1 = top of screen) - `COLUMN n` (or `COL n`) -- places the field at column n (1 = leftmost) - `BLANK SCREEN` -- clears the entire screen before displaying - `BLANK LINE` -- clears the current line → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
Positives:
30+ years of deep domain expertise is genuinely valuable - Intimate knowledge of a production banking system is extremely rare and valuable - Clear and honest about career intentions → Chapter 42 Quiz: COBOL Career Guide and the Path Forward
Precompile
The DB2 precompiler processes the COBOL source, replacing `EXEC SQL` statements with CALL statements and extracting SQL into a DBRM. 2. **Compile** — The standard COBOL compiler compiles the modified source into an object module. 3. **Link-edit** — The linkage editor combines the object module with → Chapter 22 Quiz: Embedded SQL and DB2 Fundamentals
Precompiler
A processor that translates embedded non-COBOL statements (such as EXEC SQL or EXEC CICS) into standard COBOL CALL statements before the COBOL compiler processes the source. → Appendix E: Glossary
Prevention strategies:
Define adequate free space with FREESPACE parameter - Reorganize periodically (REPRO out and back in) - Monitor split counts with LISTCAT → Chapter 12: Indexed File Processing (VSAM KSDS)
primary key
a field within each record that uniquely identifies it. A KSDS consists of two components: an **index component** that maps keys to physical locations, and a **data component** that holds the actual records. → Chapter 30: z/OS Dataset Concepts and Storage Management
priming read
reading the first record before entering the loop: → Chapter 8: Iteration -- The PERFORM Statement in All Its Forms
Principal / Architect (15+ years experience):
Financial services: $170,000 - $220,000 - Government: $130,000 - $170,000 (GS-15 / SES equivalent) - Insurance: $150,000 - $195,000 - Consulting: $180,000 - $300,000+ → Chapter 42: COBOL Career Guide and the Path Forward
PRINT
display dataset contents: → Chapter 27: JCL Essentials for COBOL Programmers
PROCEDURE DIVISION
The fourth of COBOL's four divisions, containing the executable logic of the program organized into sections and paragraphs. → Appendix E: Glossary
Procedure Division checks:
Does every paragraph have exactly one entry point and one exit point? - Are all file operations checked for status codes? - Are all CALL statements checked for return codes? - Do all arithmetic operations have ON SIZE ERROR clauses where overflow is possible? - Are STRING and UNSTRING operations pro → Chapter 40: Testing, Quality Assurance, and Deployment
Program-ID
The required paragraph in the IDENTIFICATION DIVISION that specifies the name of the COBOL program. → Appendix E: Glossary
Pseudo-conversational
A CICS programming technique where a transaction ends after sending a screen to the user and restarts when the user responds. This frees CICS resources between user interactions, dramatically improving scalability. → Appendix E: Glossary
Purpose:
A few errors (0.01%) in a 10 million record file are normal (bad data in individual records) - A large number of errors (5%) usually indicates a systemic problem (wrong file format, corrupted input, incorrect processing logic) - Processing millions of additional records when the input is fundamental → Chapter 28 Quiz: Batch Processing Patterns and Design

Q

QSAM
Queued Sequential Access Method. A z/OS access method for sequential datasets that uses buffering to overlap I/O with processing, improving throughput for sequential file operations. → Appendix E: Glossary
QUOTE / QUOTES
Represents the quotation mark character. Used when you need to embed a quote character that would otherwise terminate a literal. → Chapter 3 Quiz: Data Types, Variables, and the PICTURE Clause

R

RACF
Resource Access Control Facility. IBM's z/OS security system that controls access to datasets, transactions, and system resources through user IDs, groups, and permission profiles. → Appendix E: Glossary
Random read
set the key and read: → Chapter 13: Relative File Processing and Advanced File Techniques
Rating factors (all multiplicative):
Construction type: Frame (1.00), Masonry (0.85), Fire-resistive (0.70) - Protection class (fire dept proximity): 1-3 (0.90), 4-6 (1.00), 7-8 (1.25), 9-10 (1.60) - Age of dwelling: 0-5 years (0.90), 6-15 (1.00), 16-30 (1.10), 31+ (1.25) - Claims history: 0 claims (0.95), 1 claim (1.00), 2 claims (1.1 → Chapter 35 Exercises: Insurance and Government Systems
READ
The user can read the dataset contents but cannot modify, rename, delete, or scratch it. → Chapter 31: Exercises – COBOL and the z/OS Security Model
READ statement
A COBOL statement that retrieves the next sequential record or a record by key from a file. → Appendix E: Glossary
Readability guidelines for nested IFs:
Indent each level consistently (4 spaces is standard) - Ensure each IF has a matching END-IF at the same indentation level - Add comments at the END-IF to indicate which IF it closes when nesting is deep - Consider whether EVALUATE would express the logic more clearly → Chapter 7: Conditional Logic -- IF, EVALUATE, and Condition Names
Receipt
After each transaction, ask if the customer wants a receipt. If yes, display a formatted receipt with date, time, card (masked), account, transaction type, amount, and new balance. → Case Study 1: Building an ATM Interface Prototype
RECFM
Record Format. A z/OS dataset attribute specifying how records are organized: F (fixed), V (variable), FB (fixed blocked), VB (variable blocked), U (undefined). → Appendix E: Glossary
RECFM=FB (Fixed Blocked):
Every record is the exact same length (specified by LRECL) - Records are grouped into blocks for efficient I/O - No record length information is stored with each record - This is the most common format for COBOL batch files - Example: LRECL=200 means every record is exactly 200 bytes → Chapter 27 Quiz: JCL Essentials for COBOL Programmers
RECFM=VB (Variable Blocked):
Records can have different lengths (up to the maximum specified by LRECL) - Each record has a 4-byte **Record Descriptor Word (RDW)** prefix containing the record length - Each block has a 4-byte **Block Descriptor Word (BDW)** prefix - LRECL specifies the maximum record length **including** the 4-b → Chapter 27 Quiz: JCL Essentials for COBOL Programmers
RECORD CONTAINS
An FD clause that specifies the length or length range of records in a file. → Appendix E: Glossary
RECORD CONTAINS n CHARACTERS
Specifies the fixed record length. For the example above, every record is exactly 80 bytes. The total of all field sizes in the 01-level record must equal this value (6 + 20 + 15 + 4 + 20 + 9 + 6 = 80). → Chapter 11: Sequential File Processing
RECORD CONTAINS n TO m CHARACTERS
Specifies the minimum and maximum record sizes. The actual size of each record varies based on the data. → Chapter 11: Sequential File Processing
Recursive programs
where a subprogram calls itself, each invocation needs its own copy of work fields 2. **Reentrant programs** -- where the same program might be executing simultaneously in multiple threads 3. **Fresh-start semantics** -- when you need work fields guaranteed to be clean on every call → Chapter 4: The WORKING-STORAGE and LOCAL-STORAGE Sections
REDEFINES clause
A DATA DIVISION clause that allows two or more data items to occupy the same storage location, enabling different interpretations of the same bytes. → Appendix E: Glossary
Reference modification
A COBOL technique for accessing a substring of a data item using the syntax data-name(start:length). For example, WS-NAME(1:5) accesses the first five characters. → Appendix E: Glossary
Referential integrity
A database constraint ensuring that foreign key values in one table correspond to primary key values in a related table. Enforced by DB2 to prevent orphaned records. → Appendix E: Glossary
relative record number
its ordinal position within the file. The first record is at position 1, the second at position 2, and so on. Unlike indexed files, there is no embedded key field in the record itself; the record's identity is entirely determined by its position. → Chapter 13: Relative File Processing and Advanced File Techniques
Relative Record Number (RRN)
a positive integer starting at 1. Slots can be empty, allowing records to be inserted at specific positions and deleted without affecting other records. → Chapter 30: z/OS Dataset Concepts and Storage Management
RENAMES clause
A level 66 clause that provides an alternative grouping of elementary items within a record, allowing a contiguous range of items to be referenced by a single name. → Appendix E: Glossary
REPLACING phrase
A phrase used with COPY (to substitute text in a copybook), INITIALIZE (to set specific data categories to specified values), and INSPECT (to replace characters). → Appendix E: Glossary
report formatting logic
the part of the program that takes processed data and produces neatly formatted output. We simulate this using DISPLAY statements and hardcoded data, demonstrating the patterns that production batch report programs use to generate thousands of pages of formatted output. → Case Study 2: Batch Report Generation at County Tax Office
REPORT HEADING
presented before the first GENERATE (triggered by the first GENERATE or INITIATE, depending on implementation) 2. **PAGE HEADING** -- presented at the top of the first page 3. **CONTROL HEADING for BRANCH (NYC)** -- the first GENERATE detects a new branch value 4. **DETAIL line** (record 1) -- first → Chapter 15 Quiz: Report Writer Module
REPRO
copy data into or out of a VSAM dataset: → Chapter 27: JCL Essentials for COBOL Programmers
Required paragraph:
`PROGRAM-ID`: Names the program. This is the only required element. → Chapter 1: The World of COBOL -- History, Relevance, and the Mainframe Ecosystem
Requirements for CORRESPONDING:
Both operands must be group items - Elementary items are matched by name (qualified names must match) - Only numeric items are processed - Non-matching items are ignored → Chapter 6: Arithmetic Operations and Numeric Processing
Requirements:
Use `WITH NO ADVANCING` for the prompts - Use an edited picture (zero-suppressed) to display the age without leading zeros → Chapter 5 Exercises: Basic Input/Output and DISPLAY/ACCEPT Statements
Requires relearning:
Data definition model (COBOL's PIC/USAGE system vs. type declarations) - File-oriented processing (sequential, indexed, relative vs. database-centric) - JCL and batch scheduling (no equivalent in the distributed world) - EBCDIC character encoding and packed decimal arithmetic - The ISPF editing envi → Chapter 42: COBOL Career Guide and the Path Forward
Reserved Space
20 bytes reserved for future expansion, initialized to spaces. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Reset between records (INITIALIZE each iteration):
The input record layout - All calculation work fields - The error message table - Validation flags - The decision result → Case Study 1: Designing Working Storage for a Loan Processing System
Resources to Protect:
VSAM datasets: `BANK.PROD.LOANMSTR`, `BANK.PROD.LOANTRAN`, `BANK.PROD.LOANRPT` - Batch programs: `LOANUPD`, `LOANRPT`, `LOANPURG` - CICS transactions: `LKUP`, `LUPD`, `LRPT`, `LADM` → Chapter 31: Exercises – COBOL and the z/OS Security Model
RESP
A CICS option that receives the response code from a CICS command, enabling inline error handling without HANDLE CONDITION. → Appendix E: Glossary
REST
Representational State Transfer. An architectural style for web services that uses HTTP methods (GET, POST, PUT, DELETE) and standard data formats (JSON, XML). COBOL programs can provide REST services through *z/OS Connect*. → Appendix E: Glossary
REST API via z/OS Connect
Mobile apps typically consume RESTful APIs with JSON payloads. z/OS Connect exposes COBOL programs as REST endpoints. 2. **XML GENERATE** -- Government agencies often require XML-formatted submissions with strict schema compliance. 3. **IBM MQ** -- Message queuing provides asynchronous, guaranteed d → Chapter 38 Exercises: Modern COBOL Integrations
Restrictions on BY VALUE:
The data item should be a binary integer type (COMP, COMP-5, BINARY) - Group items cannot be passed BY VALUE - BY VALUE is primarily used when calling C functions or other non-COBOL programs - Not all COBOL compilers support BY VALUE for COBOL-to-COBOL calls → Chapter 17: Subprograms and the CALL Statement
Retail and Supply Chain
Inventory management, point-of-sale transaction processing, and supply chain logistics involve high-volume batch processing and real-time transaction processing, both areas where COBOL and CICS excel. → Appendix G: Answers to Selected Exercises
RETURN-CODE
A special register that contains the value returned to the operating system or calling program when a COBOL program terminates. Corresponds to the *condition code* tested in JCL. → Appendix E: Glossary
REWRITE statement
A COBOL statement that replaces an existing record in a file. The record must have been previously read (for sequential files) or located by key (for indexed files). → Appendix E: Glossary
ROLLBACK
A DB2 operation that reverses all database changes made since the last *COMMIT*, restoring the database to its previous consistent state. → Appendix E: Glossary
ROUNDED phrase
An option on COBOL arithmetic statements that rounds the result to the precision of the receiving data item instead of truncating. → Appendix E: Glossary
RRDS
Relative Record Data Set. A *VSAM* file organization where records are accessed by their relative record number (position) within the file. → Appendix E: Glossary
RRDS (Relative Record Data Set)
Records are accessed by relative record number, similar to COBOL relative file organization. → Chapter 12: Indexed File Processing (VSAM KSDS)
Rules for concatenation:
All datasets must be sequential (or PDS members) - The dataset with the largest block size should be listed first (or code `BLKSIZE=` on the first DD to accommodate the largest) - Record formats should be compatible - Maximum 255 datasets in a concatenation → Chapter 30: z/OS Dataset Concepts and Storage Management
Rules for PROCEDURE DIVISION USING:
Each item named in USING must be defined in the LINKAGE SECTION (01 or 77 level). - The order of parameters must match the order in the caller's `CALL ... USING`. - The number of parameters must match between caller and callee. - If any parameter is BY VALUE, it must be specified in the PROCEDURE DI → Chapter 17: Subprograms and the CALL Statement
Rules for program names:
1 to 30 characters (8 in older standards) - Must begin with a letter - Can contain letters, digits, and hyphens - Cannot end with a hyphen - Cannot be a COBOL reserved word - Case sensitivity depends on the compiler → Chapter 2: COBOL Program Structure -- Divisions, Sections, and Paragraphs
Rules for RENAMES:
Level 66 entries must immediately follow the last data item in the 01-level record. - The items being renamed must be contiguous in storage. - RENAMES cannot rename level 01, level 66, level 77, or level 88 items. - A single item can be renamed using just `RENAMES item-name` (without THRU). → Chapter 3: Data Types, Variables, and the PICTURE Clause
Run A (BLKSIZE=200, 1 record/block):
EXCPs = 10,000,000 / 1 = 10,000,000 → Chapter 32: Exercises – Performance Tuning for COBOL Programs
Run B (BLKSIZE=6000, 30 records/block):
EXCPs = 10,000,000 / 30 = 333,334 (rounded up) → Chapter 32: Exercises – Performance Tuning for COBOL Programs
Run C (BLKSIZE=27800, 139 records/block):
EXCPs = 10,000,000 / 139 = 71,943 (rounded up) → Chapter 32: Exercises – Performance Tuning for COBOL Programs
run unit
the main program and all subprograms. If a subprogram executes STOP RUN, the calling program does not get control back. The entire application ends. → Chapter 17: Subprograms and the CALL Statement

S

SALFMT
Currency formatting subprogram - Accepts numeric amount and format code - Returns formatted string with currency symbol, commas, and sign - Demonstrates CALL interface with USING clause → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
SALPOST
Batch posting program - Reads validated sales file (sorted by region/salesperson) - Updates DB2 SALES_SUMMARY table with daily totals - Inserts detail rows into DB2 SALES_DETAIL table - Uses cursor processing to check for duplicate postings - Commits every 500 records → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
SALRPT
Report generation program - Reads DB2 SALES_DETAIL with SALESPERSON and REGION joins - Produces 132-column report with: - Detail lines per salesperson per product - Salesperson subtotals - Region subtotals - National grand totals - Calls subprogram SALFMT for currency formatting → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
SALVALID
Batch validation program - Reads sequential daily sales file - Validates: salesperson ID against VSAM reference file, region code, product code, amount ranges - Writes valid records to output file, invalid to error file - Produces validation summary statistics → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
SCLM
Software Configuration and Library Manager. An older IBM mainframe source code management system, largely replaced by *Endevor* and Git-based systems. → Appendix E: Glossary
Scope terminator
A COBOL-85 keyword that explicitly ends a statement: END-IF, END-PERFORM, END-READ, END-EVALUATE, END-COMPUTE, END-CALL, etc. Scope terminators replaced the implicit period termination of earlier COBOL standards. → Appendix E: Glossary
SEARCH statement
A COBOL statement for searching a table defined with OCCURS. SEARCH performs a sequential search; SEARCH ALL performs a binary search on a sorted table. → Appendix E: Glossary
Section
A named unit of the PROCEDURE DIVISION or DATA DIVISION. In the PROCEDURE DIVISION, a section consists of one or more paragraphs. Sections can be invoked with PERFORM. → Appendix E: Glossary
Section 404 --- Assessment of Internal Controls:
Access controls around financial data must be documented and tested. - Audit trails must be maintained for all changes to financial data. - Segregation of duties must be enforced (developers cannot have production access). → Chapter 31: COBOL and the z/OS Security Model
Segment Search Arguments (SSAs):
Unqualified SSAs specify a segment type name only (9 bytes). - Qualified SSAs add search conditions with field names, operators, and values. - Boolean SSAs combine conditions with AND (*) or OR (+). - Command codes (D, F, L, N, P, U) modify call behavior for path calls, first/last access, and positi → Chapter 26: IMS Database and Transaction Management
SELECT file-name
Declares the internal name you will use in your FD entry and all I/O statements. This name follows standard COBOL naming rules (up to 30 characters, letters, digits, and hyphens). → Chapter 11: Sequential File Processing
Senior (8-15 years experience):
Financial services: $130,000 - $175,000 - Government: $100,000 - $135,000 - Insurance: $115,000 - $155,000 - Consulting: $145,000 - $200,000 → Chapter 42: COBOL Career Guide and the Path Forward
Sequential file
A file organization where records are stored and accessed in the order they were written. The simplest and most common file organization in COBOL batch processing. → Appendix E: Glossary
Sequential Files:
**TXNINPUT** -- Daily transaction input file (input to batch processing). - **STMTFILE** -- Statement output file (produced by CAPSTMNT). - **RPTFILE** -- Report output file (produced by CAPRPORT). - **ERRFILE** -- Error/reject file for transactions that fail validation. → Chapter 41: Capstone Project -- Building a Complete Banking Application
Sequential read
read the next occupied record: → Chapter 13: Relative File Processing and Advanced File Techniques
Settlement Date Determination
Given a trade date and a settlement convention (T+1, T+2, T+3), compute the settlement date using business day rules. → Case Study 1: Financial Date Processing Utility
Sign overpunch
An *EBCDIC* convention where the sign of a numeric display item is stored in the high nibble of the last byte, sharing the byte with the last digit. See *Appendix J*. → Appendix E: Glossary
Simple interest
Interest calculated only on the original principal amount. Contrast with *compound interest*. → Appendix E: Glossary
Size receiving fields appropriately:
For addition/subtraction: the result needs one more integer digit than the larger operand - For multiplication: the result needs the sum of the operands' integer digits and decimal places - For division: the result may need many decimal places → Chapter 6: Arithmetic Operations and Numeric Processing
SMF
System Management Facility. A z/OS component that collects system and application performance data in SMF records, used for accounting, capacity planning, and performance analysis. → Appendix E: Glossary
Solution:
a) AT END -- 2) READ (sequential) - b) INVALID KEY -- 3) READ, WRITE, REWRITE, DELETE, START (indexed/relative) - c) ON SIZE ERROR -- 1) COMPUTE, ADD, SUBTRACT, MULTIPLY, DIVIDE - d) ON OVERFLOW -- 4) STRING, UNSTRING - e) NOT AT END -- 6) READ (sequential) -- success path - f) ON EXCEPTION -- 5) CA → Chapter 16 Exercises: Declaratives and Exception Handling
SORT statement
A COBOL statement that sorts records from one or more input files and writes the sorted records to an output file. Supports ascending/descending key fields and input/output procedures. → Appendix E: Glossary
Source libraries
COBOL, JCL, copybooks, and procedure libraries - **Load libraries** -- compiled and link-edited programs - **Control card libraries** -- SYSIN data, utility control statements - **Copybook libraries** -- COBOL COPY members referenced during compilation → Chapter 30: z/OS Dataset Concepts and Storage Management
SOURCE-COMPUTER
A CONFIGURATION SECTION paragraph that specifies the computer on which the program is compiled. → Appendix E: Glossary
SPACE
A figurative constant representing one or more blank (space) characters. → Appendix E: Glossary
SPACE / SPACES
Represents the space character. Used to clear alphanumeric fields and test for blank fields. → Chapter 3 Quiz: Data Types, Variables, and the PICTURE Clause
SPACES
**Numeric** (PIC 9) fields are set to **ZEROS** - **Alphanumeric-edited** fields are set to SPACES - **Numeric-edited** fields are set to ZEROS → Chapter 4: The WORKING-STORAGE and LOCAL-STORAGE Sections
Sparse key values
Employee numbers may not be contiguous (1001, 1003, 1007...) 2. **Deleted records** -- Slots that once held data are now marked empty 3. **Intentional gaps** -- Space reserved for future records → Chapter 13: Relative File Processing and Advanced File Techniques
SPOOL
Simultaneous Peripheral Operations Online. The *JES2/JES3* mechanism that manages print and punch output by directing it to a spool dataset rather than directly to a printer, allowing deferred and controlled output processing. → Appendix E: Glossary
SQL
Structured Query Language. The standard language for relational database access. COBOL programs use *embedded SQL* to access *DB2* data. → Appendix E: Glossary
SQLCA
SQL Communication Area. A data structure included in COBOL programs (via EXEC SQL INCLUDE SQLCA) that receives status information after each SQL statement. The SQLCODE field indicates success (0), not found (100), or error (negative). → Appendix E: Glossary
SQLCODE
A field in the *SQLCA* that contains the return code from the most recent SQL statement: 0 (success), 100 (no data found), negative value (error). → Appendix E: Glossary
START statement
A COBOL statement that positions the file pointer for subsequent sequential READ operations on an indexed or relative file. → Appendix E: Glossary
Static SQL
SQL statements embedded in source code at compile time and bound into a *plan* or *package*. The SQL text is fixed; only host variable values change at runtime. → Appendix E: Glossary
Statistical functions
MEAN, MEDIAN, STANDARD-DEVIATION, VARIANCE, and RANGE -- provide built-in data analysis capabilities suitable for reporting and business intelligence applications. → Chapter 19: Intrinsic Functions Reference
Status (first subparameter)
the initial state of the dataset: → Chapter 27: JCL Essentials for COBOL Programmers
Status 21
Records are not in ascending key order - **Status 22** -- A record with the same primary key already exists → Chapter 12: Indexed File Processing (VSAM KSDS)
Status Codes:
Spaces = success. GE = not found. GB = end of database. II = duplicate on insert. - DA = key field changed. DJ = no prior hold call. QC = no more messages. - Always check the status code after every DL/I call. → Chapter 26: IMS Database and Transaction Management
Status Flags
Account active/inactive, overdraft protection enrolled, paperless statement preference, foreign national indicator. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Storage Class
defines where and how data is stored from a performance perspective. A storage class named `HIGHPERF` might direct data to the fastest DASD volumes; `STANDARD` would use normal volumes; `ARCHIVE` might allow migration to tape or lower-tier storage. → Chapter 30: z/OS Dataset Concepts and Storage Management
STRING
Concatenates multiple source fields into a single destination field 2. **UNSTRING** -- Splits a single source field into multiple destination fields 3. **INSPECT** -- Counts, replaces, or translates characters within a field 4. **Reference Modification** -- Extracts or modifies substrings by positio → Chapter 9: String Handling and Character Manipulation
String functions
especially TRIM, UPPER-CASE, LOWER-CASE, and CONCATENATE -- dramatically simplify text processing tasks that previously required complex INSPECT and STRING logic. → Chapter 19: Intrinsic Functions Reference
STRING statement
A COBOL statement that concatenates partial or complete contents of multiple data items into a single data item, with delimiter control and pointer tracking. → Appendix E: Glossary
Subprogram
A COBOL program designed to be invoked by other programs using the CALL statement. Subprograms receive parameters through the LINKAGE SECTION and the USING phrase. → Appendix E: Glossary
Summary Report
Total count and total amount for each transaction type 2. **Error Report** -- All records that fail validation, with reason codes 3. **Control Totals** -- Grand total count, debit total, and credit total for reconciliation 4. An exit with return code 0 if processing completes normally, return code 4 → Case Study 1: Daily Transaction Processing at Pioneer National Bank
SYSOUT
A JCL DD parameter that directs output to the JES spool for printing or viewing, rather than to a dataset. → Appendix E: Glossary

T

Table
In COBOL, a data structure defined with the OCCURS clause, analogous to an array. Tables can be one-dimensional, two-dimensional, or three-dimensional. → Appendix E: Glossary
TCB time
Time spent executing your application code under the Task Control Block. This is the time your COBOL program is actually running instructions on the processor. - **SRB time** --- Time spent executing system services on behalf of your task under the Service Request Block. This includes I/O completion → Chapter 32: Performance Tuning for COBOL Programs
TCPIPSERVICE
Defines the TCP/IP listener: → Case Study 2: CICS-to-Web Service Bridge
TDQ (Extrapartition)
Extrapartition TDQs map to external sequential datasets and are ideal for print/spool output. → Chapter 25 Exercises: Advanced CICS Programming
TDQ (Intrapartition)
Trigger-level processing is only available with intrapartition TDQs. The trigger level would be set to 200. → Chapter 25 Exercises: Advanced CICS Programming
template method pattern
the month-end processing loop in the main program calls `ProcessMonthEnd` on every account without knowing the specific type. The correct behavior is selected at runtime through dynamic dispatch. → Case Study 1: Banking Account Class Hierarchy
The DL/I Call Interface:
COBOL programs communicate with IMS through `CALL 'CBLTDLI'` -- the DL/I call interface. - Every call takes a function code, a PCB mask, an I/O area, and optional Segment Search Arguments (SSAs). - Function codes are 4-byte values: GU, GN, GNP, GHU, GHN, GHNP, ISRT, REPL, DLET, CHKP, XRST. → Chapter 26: IMS Database and Transaction Management
the exact rules vary by compiler:
**IBM Enterprise COBOL:** Uses a well-documented algorithm for intermediate result sizing. The ARITH(EXTEND) compiler option provides up to 31-digit intermediate precision. - **GnuCOBOL:** Typically uses sufficient precision for intermediate calculations, with behavior controlled by compiler setting → Chapter 6: Arithmetic Operations and Numeric Processing
The Hierarchical Data Model:
IMS stores data in tree structures (hierarchies) where each segment has one parent and may have multiple children. - The root segment sits at the top. Child segments depend on their parents and cannot exist independently. - A database record is one root segment together with all its descendants. - I → Chapter 26: IMS Database and Transaction Management
The IF statement
the workhorse of decision-making, supporting simple, nested, and compound conditions 2. **The EVALUATE statement** -- COBOL's powerful multi-way branching construct, far more capable than the SWITCH/CASE of other languages 3. **Condition names (88-levels)** -- a uniquely COBOL feature that transform → Chapter 7: Conditional Logic -- IF, EVALUATE, and Condition Names
Three access modes
SEQUENTIAL for batch processing, RANDOM for direct access, and DYNAMIC for mixed operations. - **I/O statements** -- READ, WRITE, REWRITE, DELETE, and START each have specific rules and behaviors depending on access mode and open mode. - **Alternate keys** provide multiple access paths to the same f → Chapter 12: Indexed File Processing (VSAM KSDS)
Total I/O estimate:
Initial sort: Read 10 GB + Write 10 GB = 20 GB - Each merge pass: Read 10 GB + Write 10 GB = 20 GB - 3 merge passes: 60 GB - Total I/O: ~80 GB → Chapter 14 Quiz: Sort and Merge Operations
Transaction
(1) In CICS, a unit of work identified by a four-character transaction ID (TRANSID). (2) In DB2, a logical unit of work bounded by COMMIT and ROLLBACK operations. → Appendix E: Glossary
Transaction Counters
Number of deposits and withdrawals in the current month. Maximum 9,999 transactions per counter. → Case Study 1: Designing a Customer Account Record at Continental Savings Bank
Transaction files
daily batches of deposits, withdrawals, and transfers - **Report output** -- printed statements, regulatory filings, audit trails - **Extract files** -- data extracted from a database for downstream processing - **Sort work files** -- intermediate files used during sort operations - **Log files** -- → Chapter 30: z/OS Dataset Concepts and Storage Management
Transaction test data:
Deposits of varying amounts including exactly $10,000 and $10,000.01 (to test the CTR threshold). - A withdrawal that exceeds the daily maximum ($10,000 limit from the constants copybook). - A withdrawal that would overdraw the account (to test overdraft logic). - A transfer where the target account → Chapter 41: Capstone Project -- Building a Complete Banking Application
Transfers well:
Problem decomposition and modular design - Debugging methodology (reproduce, isolate, fix, verify) - SQL and relational database concepts - Version control and team development practices - Testing discipline (unit, integration, system) - Communication and documentation habits → Chapter 42: COBOL Career Guide and the Path Forward
TRANSID
Transaction Identifier. A four-character code that identifies a CICS transaction. When a user enters a TRANSID, CICS loads and executes the associated program. → Appendix E: Glossary
Trial balance
An accounting report that lists all general ledger accounts with their debit or credit balances, verifying that total debits equal total credits. → Appendix E: Glossary
TRUNC(STD)
Truncates binary values to the number of digits in the PIC clause. This generates extra instructions for every binary arithmetic operation to ensure truncation. - **TRUNC(OPT)** --- Assumes the programmer ensures values do not exceed the PIC size. No truncation instructions are generated, resulting → Chapter 32: Performance Tuning for COBOL Programs
truncates
it simply drops the excess digits. The ROUNDED phrase changes this behavior to perform standard rounding. → Chapter 6: Arithmetic Operations and Numeric Processing
TSO
Time Sharing Option. A z/OS component that provides interactive command-line access to the mainframe. TSO is the underlying environment for *ISPF*. → Appendix E: Glossary
TSO/ISPF:
Interactive programs can use DISPLAY and ACCEPT - More commonly, panels are built with ISPF Dialog Manager → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
TSQ
Random access by item number is needed for paging forward and backward. → Chapter 25 Exercises: Advanced CICS Programming
TWA
Transaction Work Area. A CICS area allocated for the duration of a task, available to all programs within that task. → Appendix E: Glossary
TXNVAL
Validates transactions and writes valid records to an output file. 2. **TXNPOST** — Reads validated transactions and updates DB2 account balances. 3. **TXNRPT** — Reads the DB2 tables and produces a daily transaction report. → Chapter 40 Exercises: Testing, Quality Assurance, and Deployment

U

Uncommitted Read (UR)
What risks exist? 2. **Cursor Stability (CS)** -- What protection does it provide? What gap remains? 3. **Read Stability (RS)** -- How does it differ from CS for this scenario? 4. **Repeatable Read (RR)** -- What does it guarantee? What is the performance cost? → Chapter 23 Exercises: Advanced DB2 Programming
Understand your rounding requirements
banker's rounding (NEAREST-EVEN) is often mandatory for financial applications. → Chapter 6: Arithmetic Operations and Numeric Processing
unit
TRK, CYL, or block size in bytes - **primary** -- initial space allocation (required) - **secondary** -- additional space allocated when primary fills up (up to 15 secondary extents per volume) - **directory** -- number of 256-byte directory blocks (for PDS only) - **RLSE** -- release unused space w → Chapter 30: z/OS Dataset Concepts and Storage Management
UNSTRING statement
A COBOL statement that splits a data item into multiple receiving fields based on delimiter characters, with optional counting and pointer tracking. → Appendix E: Glossary
UPDATE
The user can read and write to the dataset (update existing records, add records) but cannot delete or rename the dataset itself. → Chapter 31: Exercises – COBOL and the z/OS Security Model
UPPERCASE
COBOL reserved words (must appear as shown) - **lowercase-italic** — User-supplied names or values - **[ ]** — Optional element; may be omitted - **{ }** — Required choice; exactly one alternative must be selected - **|** — Separates alternatives within braces or brackets - **...** — Preceding eleme → Appendix C: COBOL Language Quick Reference
URIMAP
Maps the URL pattern to the COBOL program: → Case Study 2: CICS-to-Web Service Bridge
USAGE clause
A DATA DIVISION clause that specifies the internal storage format of a data item: DISPLAY (character), COMP/BINARY (binary), COMP-3/PACKED-DECIMAL (packed decimal), COMP-5 (native binary), INDEX, POINTER. → Appendix E: Glossary
Use dynamic calls when:
The subprogram may or may not be needed at runtime - You want to replace subprograms without re-linking the main program - Memory conservation is important (load on demand) - You need to CANCEL and reinitialize subprograms - The system uses a plugin or strategy pattern where different subprograms ar → Chapter 17: Subprograms and the CALL Statement
Use Indexed Files (VSAM KSDS) When:
The key is alphanumeric (names, mixed codes) - The key space is sparse or unpredictable (e.g., Social Security numbers where only a tiny fraction of possible values exist) - You need alternate keys for multiple access paths - You require sequential processing in key order with no empty slots → Chapter 13: Relative File Processing and Advanced File Techniques
Use manual coding when:
The report requires highly dynamic layout (e.g., variable column positions). - Output goes to a non-print destination (database, API, web service). - The compiler does not support Report Writer. - The report requires complex conditional formatting that exceeds Report Writer capabilities. - Team expe → Chapter 15: Report Writer Module
Use MERGE when:
Input files are already sorted on the merge keys - You want to combine multiple sorted sources into a single sorted output - You do not need an INPUT PROCEDURE (MERGE does not support INPUT PROCEDURE) - The combined output should preserve the sort order of the inputs → Case Study 2: Merging Branch Transaction Files
Use Relative Files When:
The key is numeric and falls within a predictable, bounded range - You need the fastest possible direct access (O(1) per lookup) - The key can serve directly as the record number (e.g., employee numbers 1001-9999) - You can tolerate wasted space for gaps in the key range - You are implementing a has → Chapter 13: Relative File Processing and Advanced File Techniques
Use Report Writer when:
The report has control breaks with subtotals at one or more levels. - Page layout and overflow handling are important. - The report format is well-defined and relatively static. - Reduced maintenance effort is a priority. - The report is a standard listing, summary, or financial statement. → Chapter 15: Report Writer Module
Use Sequential Files When:
Records are always processed in order (beginning to end) - Batch processing reads every record (reports, end-of-day processing) - The file is used as input to SORT utility - Simplicity and portability are paramount - No direct access by key is required → Chapter 13: Relative File Processing and Advanced File Techniques
Use SORT when:
Input data is unsorted or needs reordering - You need INPUT PROCEDURE to filter or transform records before sorting - You have a single input source (or want to treat multiple sources as one via concatenation in JCL) → Case Study 2: Merging Branch Transaction Files
Use static calls when:
The subprogram is always needed and will always be present - Maximum runtime performance is critical - You want the simplest compile-link-go process - The subprogram is small and the load module size increase is acceptable → Chapter 17: Subprograms and the CALL Statement
User ABEND
An ABEND initiated by a program through a z/OS or CICS call, using an application-defined code (0--4095) to indicate a specific error condition. → Appendix E: Glossary
User catalogs
contain the actual dataset-to-volume mappings for application datasets. Each HLQ (or group of HLQs) is associated with a specific user catalog through an alias in the master catalog. → Chapter 30: z/OS Dataset Concepts and Storage Management
Users and Roles:
Loan Officers (25 users) — read/update loan application data - Underwriters (10 users) — read loan data, update approval status - Managers (5 users) — read all data, run reports - System Administrators (3 users) — full access for maintenance → Chapter 31: Exercises – COBOL and the z/OS Security Model

V

Validation functions
TEST-DATE-YYYYMMDD and NUMVAL/NUMVAL-C -- should be used to validate data before processing, catching errors early. → Chapter 19: Intrinsic Functions Reference
VALIDEMP
Validates employee input data (checks for required fields, valid ranges) 2. **CALCGROS** - Calculates gross pay from hours worked and hourly rate (including overtime at 1.5x for hours over 40) 3. **CALCTAX** - Calculates federal tax based on a progressive tax bracket table 4. **CALCNET** - Calculate → Chapter 17 Exercises: Subprograms and the CALL Statement
VALUE clause
A DATA DIVISION clause that specifies the initial value of a data item in WORKING-STORAGE or LOCAL-STORAGE. VALUE cannot be used with items in the FILE SECTION (except for level 88 condition names). → Appendix E: Glossary
Variable-length record
A record whose length varies from record to record. Defined in COBOL with RECORD IS VARYING or RECORD CONTAINS min TO max, and in JCL with RECFM=V or RECFM=VB. → Appendix E: Glossary
Visual attributes:
`FOREGROUND-COLOR n` -- sets the text color (0-7) - `BACKGROUND-COLOR n` -- sets the background color (0-7) - `HIGHLIGHT` -- displays text in bright/bold intensity - `LOWLIGHT` -- displays text in dim intensity - `UNDERLINE` -- underlines the field - `REVERSE-VIDEO` -- swaps foreground and backgroun → Chapter 5: Basic Input/Output and DISPLAY/ACCEPT Statements
VSAM
Virtual Storage Access Method. An IBM z/OS file management system that provides three organizations: *KSDS* (key-sequenced), *ESDS* (entry-sequenced), and *RRDS* (relative record). VSAM offers superior performance and flexibility compared to non-VSAM access methods. → Appendix E: Glossary
VSAM KSDS Files:
**CUSTFILE** -- Customer master file. Primary key: CUST-NUMBER (10 bytes). Record length: 500 bytes. Layout defined in `capstone-customer.cpy`. - **ACCTFILE** -- Account master file. Primary key: ACCT-NUMBER (10 bytes). Alternate key: ACCT-CUST-NUMBER (non-unique, with duplicates). Record length: 40 → Chapter 41: Capstone Project -- Building a Complete Banking Application
VSAM to DB2 migration
Moving data from VSAM file structures (KSDS, ESDS, RRDS) to DB2 relational database tables. This enables SQL access, better data sharing, and integration with modern analytics tools. 2. **EBCDIC to ASCII conversion** -- Converting character data from EBCDIC encoding (used on IBM mainframes) to ASCII → Chapter 39 Exercises: Legacy System Maintenance and Modernization
VTOC
a special area that describes all datasets residing on that volume. The VTOC contains: → Chapter 30: z/OS Dataset Concepts and Storage Management

W

Wave 1 (Week 1-2): Critical path programs
The file conversion utility and the six programs that must populate or validate the new regulatory fields. → Case Study 2: Copybook Versioning and Migration
Wave 2 (Week 3-4): High-frequency programs
The twenty programs that process the account file daily. These are recompiled with V5.0 but do not yet use the new fields. → Case Study 2: Copybook Versioning and Migration
Wave 3 (Week 5-6): Remaining programs
The twenty-seven programs that run weekly, monthly, or on-demand. These are the lowest risk and are migrated last. → Case Study 2: Copybook Versioning and Migration
Weeks 1-3: Core Language Reinforcement
2 hours/day, 5 days/week - Week 1: Review COBOL fundamentals (Chapters 1-10). Write 3 small programs from scratch without referring to examples. Milestone: Complete a sequential file processing program with control breaks. - Week 2: File processing deep dive (Chapters 11-16). Practice VSAM KSDS crea → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
Weeks 10-12: Portfolio and Interview Prep
3 hours/day, 5 days/week (increased intensity) - Week 10: Build a portfolio project: a small but complete application (e.g., an inventory management system) with VSAM files, a batch processing cycle, and report generation. Milestone: Working programs with documentation. - Week 11: Practice interview → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
Weeks 4-6: Platform Technologies
2 hours/day, 5 days/week - Week 4: DB2 embedded SQL (Chapter 22-23). Practice cursor processing, singleton SELECTs, error handling with SQLCA. Milestone: Write a program that joins 3 tables and produces a report. - Week 5: CICS fundamentals (Chapter 24-25). Study BMS maps, pseudo-conversational prog → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
Weeks 7-9: Domain Knowledge and Integration
2 hours/day, 5 days/week - Week 7: Financial calculations (Chapters 33-35). Practice interest computation, amortization, and decimal arithmetic. Milestone: Build a loan payment calculator program. - Week 8: Modern COBOL (Chapters 37-40). Practice JSON GENERATE, XML processing, and unit testing. Mile → Chapter 42 Exercises: COBOL Career Guide and the Path Forward
Welcome Screen
Display the bank branding, current date and time, and prompt the customer to insert their card (simulated by pressing Enter). → Case Study 1: Building an ATM Interface Prototype
When functions are faster than manual code:
Date arithmetic: INTEGER-OF-DATE/DATE-OF-INTEGER is faster and more reliable than manual leap-year calculations - String case conversion: UPPER-CASE/LOWER-CASE is typically faster than INSPECT CONVERTING - Statistical functions: MEAN, VARIANCE, etc., are optimized for multiple arguments → Chapter 19: Intrinsic Functions Reference
When manual code may be faster:
Simple operations like absolute value, where `IF X < 0 COMPUTE X = X * -1` may be marginally faster than FUNCTION ABS(X) in some compilers - When the function result is used repeatedly -- store it in a variable rather than calling the function multiple times → Chapter 19: Intrinsic Functions Reference
WHEN phrase
A clause used in the EVALUATE statement to specify a condition and the actions to take when that condition is true. Multiple WHEN phrases provide multi-way branching. → Appendix E: Glossary
When to use BY CONTENT:
When you want to protect the caller's data from modification - When passing literals or expressions that cannot be modified - When you need read-only semantics for safety → Chapter 17: Subprograms and the CALL Statement
When to use BY REFERENCE:
When the subprogram needs to return data to the caller through the parameter - When you want maximum efficiency (no data copying) - For large data structures where copying would be expensive → Chapter 17: Subprograms and the CALL Statement
When to use each:
**Discrete profiles** are used when a specific dataset requires unique security rules different from other datasets in its name space. Common for critical master files (e.g., the main account master). - **Generic profiles** are used for broad coverage of many datasets sharing a naming convention. Th → Chapter 31: Exercises – COBOL and the z/OS Security Model
When to use IS INITIAL:
When the subprogram must have no "memory" of previous calls - When persistent state would cause bugs (e.g., accumulator that should be fresh each time) - When you want guaranteed predictable behavior regardless of calling sequence → Chapter 17: Subprograms and the CALL Statement
When to write checkpoints:
At regular intervals (every N records, such as every 100,000 records) - At natural break points (after completing a logical group of records) - Before and after critical operations → Chapter 28 Quiz: Batch Processing Patterns and Design
WITH DUPLICATES
A phrase on the ALTERNATE KEY clause that allows an alternate index to have duplicate key values. → Appendix E: Glossary
Withdrawal
Offer quick-amount buttons ($20, $40, $60, $100, $200) and a custom amount option. Validate that the withdrawal does not exceed the available balance. Deduct from the balance and confirm. → Case Study 1: Building an ATM Interface Prototype
WORKING-STORAGE SECTION
A section of the DATA DIVISION where program variables, constants, switches, and work areas are defined. Items in WORKING-STORAGE retain their values across multiple invocations of the program (in CICS or subprogram contexts). → Appendix E: Glossary
Write about your experiences
blog posts about COBOL techniques, lessons learned, or career transitions attract attention. 4. **Mentor others.** The mainframe community has a strong mentoring tradition. As you gain experience, help newcomers. This builds your reputation and deepens your own understanding. 5. **Engage on social m → Chapter 42: COBOL Career Guide and the Path Forward
WRITE statement
A COBOL statement that outputs a record to a file. For sequential files, records are written at the end of the file. For indexed and relative files, records are inserted by key or relative number. → Appendix E: Glossary
WTO
Write To Operator. A z/OS system service that sends a message to the operator console, commonly used for monitoring and alerting. → Appendix E: Glossary

X

XCTL
The menu program has completed its work and should free its storage. Control transfers to the detail program without return. → Chapter 25 Exercises: Advanced CICS Programming
XML
Extensible Markup Language. A data interchange format supported natively in COBOL 2014 through the XML GENERATE and XML PARSE statements. Widely used in enterprise integrations. → Appendix E: Glossary
XML GENERATE
A COBOL 2014 statement that converts a COBOL data structure into an XML document. → Appendix E: Glossary
XML PARSE
A COBOL 2014 statement that processes an XML document and invokes a processing procedure for each XML event encountered. → Appendix E: Glossary

Z

z/Architecture
The 64-bit instruction set architecture used by IBM Z series mainframes. Provides hardware support for packed decimal arithmetic, cryptographic operations, and other enterprise features. → Appendix E: Glossary
z/OS
IBM's flagship mainframe operating system. Provides batch processing, online transaction management, database services, security, and workload management for enterprise applications. → Appendix E: Glossary
z/OS Connect EE
z/OS Connect Enterprise Edition. An IBM product that enables RESTful API access to z/OS subsystems including CICS, IMS, and DB2, allowing COBOL programs to participate in API-driven architectures. → Appendix E: Glossary
z/OS security architecture
The layered approach of SAF, ESMs (RACF, ACF2, Top Secret), and how they interact with COBOL programs. - **RACF fundamentals** --- Users, groups, profiles, and the five access levels (NONE, READ, UPDATE, CONTROL, ALTER) that control resource access. - **Dataset security** --- Discrete and generic pr → Chapter 31: COBOL and the z/OS Security Model
ZERO
A figurative constant representing the value zero. ZEROS and ZEROES are synonyms. When moved to a numeric item, produces a numeric zero; when moved to an alphanumeric item, fills with the character "0". → Appendix E: Glossary
ZERO / ZEROS / ZEROES
Represents numeric zero for numeric fields, character "0" for alphanumeric fields. Used to initialize counters and clear numeric fields. → Chapter 3 Quiz: Data Types, Variables, and the PICTURE Clause
Zoned decimal
The default DISPLAY format for numeric data in EBCDIC, where each digit occupies one byte. The high nibble of each byte contains a zone portion (F for most digits), and the last byte's zone nibble contains the sign (C for positive, D for negative). See *sign overpunch*. → Appendix E: Glossary