Skip to content
PYD ENTERPRISES

Glossary

COBOL to DMN, defined precisely.

The vocabulary of legacy modernization: mainframe constructs, Java EE and .NET frameworks, program analysis, and the open standards PYD ENTERPRISES exports. Link to any term with #slug, or search with ?q=.

56 terms, A to Z

#

88-level condition name

A level-88 entry that associates a name with one or more values or ranges of its parent field, such as 88 TIER-BASIC VALUE 'B'. The name is used as a boolean condition (IF TIER-BASIC) and set with SET TIER-BASIC TO TRUE, which makes it a natural source of DMN input values.

Related:COBOLDecision table

A

Abstract syntax tree (AST)

A tree representation of a program's syntactic structure produced by a parser, with nodes for declarations, statements and expressions and without layout details such as column positions or comments. It is the base structure for symbol resolution and every later analysis.

Related:Symbol tableControl-flow graph (CFG)

Air-gapped deployment

Running software in a network with no route to the internet, so installation, licensing and updates must work from media moved across the gap. For code analysis it means source and results never leave the customer's environment.

Related:z/OS

ALTER

A COBOL statement that changes, at runtime, the target of a GO TO in another paragraph. It was declared obsolete in COBOL-85 and removed from the COBOL 2002 standard, but survives in production code; static analysis has to treat the altered jump as having several possible targets.

Related:PERFORM THRUControl-flow graph (CFG)Dead code

Apache Struts

A Java MVC web framework. Struts 1 routes requests to Action classes with ActionForm beans configured in struts-config.xml and reached end of life in 2013; Struts 2 is a separate design based on WebWork, with actions and interceptor stacks.

Related:EJB (Enterprise JavaBeans)Spring XML configuration

AsyncAPI

A specification for describing message-driven APIs, covering channels, messages and the operations that publish or subscribe to them over protocols such as Kafka, AMQP and MQTT. It is the event-driven counterpart to OpenAPI.

Related:OpenAPIJSON Schema

B

Behavioral equivalence testing

Running the legacy and modern implementations of a behavior on the same inputs and comparing outputs, to show that in-scope behaviors match and that every difference was decided on purpose. Fixtures are most effective when generated from the branch conditions of extracted rules.

Related:Characterization testBusiness rule extraction

BMS

Basic Mapping Support, the CICS facility for 3270 screen layouts. Maps are defined with the DFHMSD, DFHMDI and DFHMDF assembler macros, which generate a physical map and a symbolic map copybook the program uses with SEND MAP and RECEIVE MAP.

Related:CICSPseudo-conversationalCopybook

Business rule extraction

Identifying the statements in legacy code that implement business policy (calculations, eligibility, pricing, validation) and separating them from plumbing such as I/O, logging and error handling. The output is a reviewable inventory of rules, each linked to its source lines.

Related:Program slicingDecision tableDMN (Decision Model and Notation)

C

Characterization test

A test that records what existing code actually does, rather than what it is supposed to do, so that later changes can be checked against current behavior. Michael Feathers popularized the term for working safely with legacy code.

Related:Behavioral equivalence testingContract testing

CICS

Customer Information Control System, IBM's online transaction processing monitor for z/OS. Application programs call it through EXEC CICS commands for terminal I/O, file and queue access, program linking and transaction control.

Related:COMMAREABMSPseudo-conversational

COBOL

Common Business-Oriented Language, a procedural language first specified by CODASYL in 1959 for business data processing. It is built around fixed-point decimal arithmetic, record-oriented file handling and a strict split between the DATA DIVISION and the PROCEDURE DIVISION. Production dialects include IBM Enterprise COBOL for z/OS and Micro Focus COBOL.

Related:CopybookCOMP-3 (packed decimal)z/OS

COMMAREA

The communication area passed between CICS programs on LINK and XCTL, or carried across tasks by RETURN TRANSID. The receiving program addresses it as DFHCOMMAREA in the LINKAGE SECTION, finds its length in EIBCALEN, and is limited to roughly 32 KB; larger payloads use channels and containers.

Related:CICSPseudo-conversationalOpenAPI

COMP-3 (packed decimal)

A COBOL numeric usage that stores two decimal digits per byte with the sign in the final nibble (C positive, D negative, F unsigned). A field takes (digits + 1) / 2 bytes rounded up, so PIC S9(7)V99 COMP-3 occupies 5 bytes; the implied decimal point V takes no storage.

Related:COBOLREDEFINESEBCDIC

Contract testing

Testing that a service provider and its consumers agree on an interface contract, with each side verified independently against the shared contract rather than in a full end-to-end environment. Consumer-driven contracts are a common variant.

Related:OpenAPIBehavioral equivalence testing

Control-flow graph (CFG)

A directed graph whose nodes are basic blocks (straight-line runs of statements) and whose edges are the possible transfers of control between them. In COBOL it must model PERFORM ranges, fall-through between paragraphs and computed or altered jumps.

Related:Abstract syntax tree (AST)Dataflow analysisPERFORM THRU

Copybook

A source member included into a COBOL program at compile time with the COPY statement, most often holding record layouts shared by every program that reads a file or COMMAREA. The REPLACING phrase can rename text on inclusion, so the same copybook can produce different field names in different programs.

Related:COBOLREDEFINESPDS (partitioned data set)

D

Data lineage

The record of where a data element comes from, which programs, jobs or procedures transform it, and where it ends up. Column- or field-level lineage across COBOL, JCL, stored procedures and triggers shows the true blast radius of changing a field.

Related:Dataflow analysisJCLPL/SQL

Dataflow analysis

A family of static analyses that compute facts about values at each program point by propagating information along the control-flow graph, such as reaching definitions, live variables and constant values. It answers questions like which assignments can supply the value read here.

Related:Control-flow graph (CFG)Program slicingData lineage

DB2 embedded SQL

SQL statements written inside COBOL or PL/I source between EXEC SQL and END-EXEC, translated by a precompiler or the integrated coprocessor into calls to DB2 for z/OS. Host variables are referenced with a leading colon and declared in the DATA DIVISION.

Related:COBOLData lineage

Dead code

Code that can never execute (unreachable code) or whose results never influence any output (useless code). Distinguishing the two matters during modernization: unreachable branches can be dropped, while code that runs but has no visible effect deserves a reviewer's look before removal.

Related:Control-flow graph (CFG)Dataflow analysis

Decision requirements diagram (DRD)

The DMN diagram showing how decisions depend on input data, on other decisions and on business knowledge models, with knowledge sources for authority. A rating or eligibility model is typically a DRD with decision tables at the leaves and a formula at the top.

Related:DMN (Decision Model and Notation)Decision table

Decision table

A tabular representation of a decision in which each row is a rule pairing input conditions with output values, and a hit policy resolves overlaps. It is the most reviewable form for business rules extracted from nested IF and EVALUATE logic.

Related:Hit policyDMN (Decision Model and Notation)88-level condition name

DMN (Decision Model and Notation)

An Object Management Group standard for modeling and executing business decisions, combining decision requirements diagrams, decision tables and the FEEL expression language. Version 1.5 is the current release and is implemented by engines such as Camunda and Drools.

Related:Decision tableFEELHit policyDecision requirements diagram (DRD)

E

EBCDIC

Extended Binary Coded Decimal Interchange Code, the 8-bit character encoding family used on z/OS, with code pages such as 037 and 1140. Its collating order (lowercase, then uppercase, then digits) differs from ASCII, so sorts and range comparisons can change meaning when data moves off the mainframe.

Related:z/OSCOMP-3 (packed decimal)

EJB (Enterprise JavaBeans)

The server-side component model of Java EE. EJB 2.x components require home and remote or local interfaces and use entity beans for persistence; EJB 3.x replaced most of that with annotated plain Java classes and JPA entities.

Related:Apache StrutsSpring XML configuration

Endevor

A mainframe software change and configuration management product, now from Broadcom, that moves source elements through environments and stages and runs processors to compile and link them. Its inventory is often the most reliable record of which source version is in production.

Related:PDS (partitioned data set)z/OS

F

FEEL

Friendly Enough Expression Language, the expression language defined by DMN. It covers unary tests used in decision table cells (< 21, [21..25), "B","P"), arithmetic, contexts, lists, built-in functions and a three-valued logic with null.

Related:DMN (Decision Model and Notation)Decision table

G

GO TO DEPENDING ON

A COBOL computed jump: GO TO P1 P2 P3 DEPENDING ON WS-IDX transfers control to the nth listed paragraph when the index equals n, and falls through to the next statement when the index is out of range.

Related:PERFORM THRUControl-flow graph (CFG)

H

Hit policy

The indicator on a DMN decision table that defines the result when more than one rule matches. Single-hit policies are Unique, Any, Priority and First (U, A, P, F); multiple-hit policies are Collect, Rule order and Output order (C, R, O), and Collect may aggregate with sum, min, max or count.

Related:Decision tableDMN (Decision Model and Notation)

I

IMS DB

IBM's hierarchical database manager. Data is stored as segments arranged in parent-child trees, and programs navigate it with DL/I calls such as GU, GN, GNP, ISRT, REPL and DLET, qualified by segment search arguments.

Related:z/OSData lineage

J

JCL

Job Control Language, the z/OS language that describes batch jobs: which programs run (EXEC steps), which datasets they read and write (DD statements) and under what conditions later steps run (COND parameters or IF/THEN/ELSE on return codes). Cataloged procedures (PROCs) let many jobs share step definitions.

Related:z/OSPDS (partitioned data set)Data lineage

JSON Schema

A vocabulary for describing and validating the structure of JSON documents, with keywords such as type, properties, required, pattern and oneOf. Draft 2020-12 is the version OpenAPI 3.1 builds on.

Related:OpenAPIAsyncAPICopybook

O

OCCURS DEPENDING ON

A COBOL clause declaring a variable-length table whose current number of entries is held in another field at runtime. Because the table's length changes, the offsets of any items that follow it in the record change too, which any byte-level layout analysis must account for.

Related:REDEFINESCopybook

OpenAPI

The OpenAPI Specification, a vendor-neutral format for describing HTTP APIs: paths, operations, parameters, request and response bodies and security. Version 3.1 aligns its schema objects fully with JSON Schema 2020-12.

Related:JSON SchemaAsyncAPIContract testing

P

PDS (partitioned data set)

A z/OS dataset divided into named members, used like a directory for source programs, copybooks, JCL and load modules. PDSE is the extended format with better space management; source exports from PDS libraries are a common input to code analysis.

Related:z/OSEndevorCopybook

PERFORM THRU

A COBOL statement that executes a range of paragraphs in physical source order, from the first named paragraph to the end of the last, then returns to the statement after the PERFORM. Code inside the range can leave it with GO TO, in which case the PERFORM does not return along that path.

Related:Control-flow graph (CFG)GO TO DEPENDING ONALTER

PL/SQL

Oracle's procedural extension to SQL, organized into packages, procedures, functions and triggers stored in the database. Cursors, package-level state, autonomous transactions and EXECUTE IMMEDIATE dynamic SQL are common places for business logic and side effects to hide.

Related:T-SQLData lineageStored procedure

Program slicing

A technique, introduced by Mark Weiser in 1981, that computes the subset of a program's statements that can affect a chosen variable at a chosen point (a backward slice) or be affected by it (a forward slice). Slicing from an output field isolates the code that implements one business calculation.

Related:Dataflow analysisControl-flow graph (CFG)Business rule extraction

Pseudo-conversational

A CICS design in which a program sends a screen and ends its task with RETURN TRANSID, so no resources are held while the user reads. When the user responds, a new task starts and restores its state from the COMMAREA or a temporary storage queue.

Related:CICSCOMMAREABMS

R

REDEFINES

A COBOL DATA DIVISION clause that gives a second description to the same storage as a preceding item at the same level. It is used for alternate record layouts selected by a type code and for reinterpreting bytes, so two names can alias the same memory without any tag recording which view is valid.

Related:CopybookCOMP-3 (packed decimal)Symbol table

Refactoring

Restructuring code without changing its externally observable behavior, to make it easier to understand and modify. In modernization it is usually done in small steps protected by characterization or equivalence tests.

Related:Characterization testTechnical debt

Rehosting

Moving an application to new infrastructure with minimal code change, often called lift and shift, for example recompiling COBOL to run on a mainframe emulation platform in a cloud. It lowers infrastructure cost without making the business logic easier to understand or change.

Related:ReplatformingRefactoringTranspilation

Replatforming

Moving an application to a new platform with targeted changes, such as a different database or a managed runtime, while keeping its overall architecture. It sits between rehosting and a full rewrite in cost and risk.

Related:RehostingRefactoring

S

Spring XML configuration

The original way of wiring Spring applications, declaring beans, dependencies, transactions and AOP advice in XML files. Behavior configured there, such as an interceptor applied by pointcut, is invisible when reading the Java classes alone.

Related:EJB (Enterprise JavaBeans)Apache Struts

Stored procedure

A named program stored and executed inside a database server. In many legacy estates stored procedures and the triggers they fire hold core business rules, so replacing only the application tier leaves those rules behind.

Related:PL/SQLT-SQLData lineage

Strangler fig pattern

An incremental replacement strategy, named by Martin Fowler, in which new components take over functionality piece by piece behind a routing facade until the old system can be retired. It depends on knowing the legacy system's interfaces and data ownership well enough to cut it at clean seams.

Related:RefactoringRehostingOpenAPI

Symbol table

The structure that maps every declared name to its declaration, scope, type and storage. For COBOL it also records qualification (OF and IN), the copybook each name came from and byte offsets, so aliases created by REDEFINES can be detected.

Related:Abstract syntax tree (AST)REDEFINESCopybook

T

T-SQL

Transact-SQL, the SQL dialect of Microsoft SQL Server (and, historically, Sybase). It adds variables, control flow, temporary tables, TRY...CATCH and dynamic SQL through sp_executesql to standard SQL.

Related:PL/SQLStored procedure

Technical debt

The future cost of rework created by expedient design and implementation choices, a metaphor introduced by Ward Cunningham in 1992. In legacy estates it accumulates as undocumented rules, duplicated logic across copybooks and programs, and knowledge held by a shrinking number of people.

Related:RefactoringDead code

Transpilation

Automated source-to-source translation, for example converting COBOL to Java statement by statement. It preserves the original structure, including GO TO logic and packed-decimal emulation, so the output usually runs but remains hard for engineers in the target language to maintain.

Related:RehostingBusiness rule extraction

V

VB6

Visual Basic 6.0, Microsoft's 1998 COM-based language and IDE for Windows desktop applications. Error handling with On Error Resume Next and shared state in global modules make its control and data flow hard to follow without analysis.

Related:ViewStateWCF

ViewState

The ASP.NET WebForms mechanism that serializes page and control state into a hidden __VIEWSTATE form field and restores it on postback. Business state stored there survives between requests without appearing in any database or service contract.

Related:WCFVB6

VSAM

Virtual Storage Access Method, IBM's record-level file access method on z/OS. Its dataset types are key-sequenced (KSDS), entry-sequenced (ESDS), relative-record (RRDS) and linear (LDS); alternate indexes add secondary keys over a KSDS or ESDS.

Related:COBOLCopybookData lineage

W

WCF

Windows Communication Foundation, the .NET Framework service framework. Contracts are declared with [ServiceContract], [OperationContract] and [DataContract] attributes and exposed through bindings such as basicHttpBinding and netTcpBinding; server-side WCF was not carried into .NET Core, where the community CoreWCF project continues it.

Related:ViewStateOpenAPI

Z

z/OS

IBM's 64-bit operating system for IBM Z mainframes. It hosts CICS and IMS transaction workloads, DB2 for z/OS and batch processing scheduled through JES and described in JCL.

Related:CICSJCLPDS (partitioned data set)

Looking for how a construct behaves during migration rather than what it means? The anti-patterns catalog covers detection and modern mappings, and the DMN guide goes deeper on hit policies and FEEL.

Stop spending six months reading legacy code by hand.

Run PYD ENTERPRISES on 100,000 lines of COBOL or Java in your private VPC and review OpenAPI specs and DMN tables tomorrow.