<?xml version="1.0" encoding="UTF-8"?>
<!--
  MAGEC RAD - Insertion Points Reference for AI Consumption
  Source: https://magec.com/DOC/insert_main.htm (Insertion Points Reference)
  Cross-referenced with: masteridx.htm, cstm_main.htm, diags_main.htm
  Generated: 2026-06-02
  Version: CICS/z-OS COBOL mainframe edition

  USAGE NOTES FOR AI:
  - Each <insertionPoint> maps to a percent-sign marker (e.g., %ADDINIT) embedded
    in the MAGEC-generated MMP or MBP source code.
  - MMPCREAT (online programs) and MBPCREAT (batch programs) substitute the
    developer's custom COBOL code stored in the ALG (Library) file at these points.
  - The @anchor attribute is the HTML anchor in insert_main.htm
    (https://magec.com/DOC/insert_main.htm#insertNNNNNN).
  - @mmpType: MMP=online program, MBP=batch program, BOTH=applies to both
  - @section: broad category (DATA_DIVISION / INITIALIZATION / SCREEN_HANDLING /
               DATABASE_COMMANDS / NAVIGATION / BATCH_REPORT / BATCH_MISC)
  - Insertion points whose names contain no leading percent-sign are COBOL
    paragraph/section names in the generated program; these are the points at
    which the developer may insert custom code before/after the paragraph.
-->

<magecInsertionPoints
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  docSource="https://magec.com/DOC/insert_main.htm"
  masterIndex="https://magec.com/DOC/masteridx.htm"
  lastUpdated="2026-06-02">

  <!-- ============================================================
       SECTION A: DATA DIVISION  (MMP online programs)
       ============================================================ -->

  <insertionPoint
    name="%DATADEF"
    anchor="insert001006"
    mmpType="MMP"
    section="DATA_DIVISION">
    <description>
      Inserted in the DATA DIVISION's LINKAGE SECTION for user-defined data that
      must PERSIST across pseudo-conversational task invocations (i.e., survive
      sending the screen and receiving the next operator response). Fields defined
      here are saved and restored by MAGECCP between tasks. Use for cross-task
      communication or for data to be passed to another program. Do NOT put
      variables here that are only needed within a single task execution — use
      %VARSTOR for those. Corresponds to the TWA user area.
    </description>
    <cobolLocation>LINKAGE SECTION — DATA-DEF area of TWA</cobolLocation>
    <altAnchor>insert001051</altAnchor>
    <seealso>%VARSTOR %USRAREA</seealso>
    <diagrams>cstm_main.htm#cstm025002 app_main.htm#app008001</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%VARSTOR"
    anchor="insert001046"
    mmpType="MMP"
    section="DATA_DIVISION">
    <description>
      Inserted in the LINKAGE SECTION's VARIABLE-STORAGE area. Use for work
      fields needed only within the current task execution (they are re-initialized
      to LOW-VALUES on each invocation). Do NOT use the VALUE clause here (illegal
      in LINKAGE SECTION). For reentrancy on mainframe CICS, ALL variables must go
      here, never in WORKING-STORAGE. WORKING-STORAGE is for constants/literals
      only (%LITERAL). In PC/Network environments, WORKING-STORAGE is acceptable
      for variables, but data there reverts to initialized values when the program
      is swapped out.
    </description>
    <cobolLocation>LINKAGE SECTION — VARIABLE-STORAGE</cobolLocation>
    <seealso>%DATADEF %LITERAL</seealso>
    <diagrams>cstm_main.htm#cstm002003 cstm_main.htm#cstm002009</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%LITERAL"
    anchor="insert001019"
    mmpType="MMP"
    section="DATA_DIVISION">
    <description>
      Inserted in WORKING-STORAGE for constants and literals ONLY. On mainframe
      CICS, WORKING-STORAGE is NOT reentrant — never MOVE to fields defined here.
      Use %VARSTOR for all variables. Typical content: 88-level condition names,
      figurative constants, literal strings used in comparisons or MOVE
      CORRESPONDING. Also used for CUSTOM-ALGORITHM-LITERALS.
    </description>
    <cobolLocation>WORKING-STORAGE SECTION</cobolLocation>
    <seealso>%VARSTOR %DATADEF</seealso>
    <diagrams>cstm_main.htm#cstm027001 cstm_main.htm#cstm025002</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%SCHEMA"
    anchor="insert001036"
    mmpType="MMP"
    section="DATA_DIVISION">
    <description>
      Special SECTION-NAME insertion point used for IDMS (and similar network
      DBMS) schema declarations. Inserts the SCHEMA SECTION or sub-schema
      definitions required by IDMS DML before the PROCEDURE DIVISION. Not used
      in VSAM/KSDS or DB2 environments.
    </description>
    <cobolLocation>Between DATA DIVISION sections, above PROCEDURE DIVISION</cobolLocation>
    <seealso>%FILEFD %FILES</seealso>
  </insertionPoint>

  <insertionPoint
    name="%FILEFD"
    anchor="insert001053"
    mmpType="MMP"
    section="DATA_DIVISION">
    <description>
      File Description (FD) entries in the DATA DIVISION for any additional files
      the developer needs to access directly. MAGEC-managed files are automatically
      defined; this point is for supplemental file access not handled by MAGECIO.
    </description>
    <cobolLocation>DATA DIVISION — FILE SECTION</cobolLocation>
    <seealso>%FILES %SCHEMA</seealso>
  </insertionPoint>

  <insertionPoint
    name="%FILES"
    anchor="insert001054"
    mmpType="MMP"
    section="DATA_DIVISION">
    <description>
      PROCEDURE DIVISION OPEN/CLOSE logic for any additional files declared via
      %FILEFD. Developer-coded OPEN statements for supplemental files go here so
      they are opened before the MMP's main logic begins.
    </description>
    <cobolLocation>PROCEDURE DIVISION — file open/close area</cobolLocation>
    <seealso>%FILEFD</seealso>
  </insertionPoint>

  <insertionPoint
    name="%USRAREA"
    anchor="insert001045"
    mmpType="MMP"
    section="DATA_DIVISION">
    <description>
      Define a user work area (sub-area within the TWA). Used to define a named
      group item within DATADEF for convenient reference or for passing a block of
      data between programs through the TWA.
    </description>
    <cobolLocation>LINKAGE SECTION — within TWA user area</cobolLocation>
    <seealso>%DATADEF</seealso>
    <diagrams>cstm_main.htm#cstm013002</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%REMARKS"
    anchor="insert001035"
    mmpType="BOTH"
    section="DATA_DIVISION">
    <description>
      Identification Division REMARKS (or PROGRAM-ID comment area). Developer may
      insert commentary or program-level documentation text that will appear in the
      generated program's identification area. Also used for batch programs (%REMARKS
      anchor insert001064 for batch version).
    </description>
    <cobolLocation>IDENTIFICATION DIVISION</cobolLocation>
    <altAnchor>insert001064</altAnchor>
  </insertionPoint>

  <!-- ============================================================
       SECTION B: INITIALIZATION  (MMP online programs)
       ============================================================ -->

  <insertionPoint
    name="%INIT"
    anchor="insert001016"
    mmpType="MMP"
    section="INITIALIZATION">
    <description>
      Maintenance Function Initialization. Executed once per task invocation at
      the beginning of the MAINTENANCE MAINLINE (AAM200-MAINTENANCE-MAINLINE),
      before any function-specific logic. Use here for code that must run for
      every maintenance function (ADD, CHG, DEL, SEE) regardless of which one
      the operator has entered. Initialize work fields, move default values,
      etc. Also called at the start of the overall MMP initialization
      (AA000-BEGIN) path.
    </description>
    <cobolLocation>BA150-MAINT-INIT paragraph (paragraph-level insertion)</cobolLocation>
    <paragraphRef>BA150-MAINT-INIT</paragraphRef>
    <seealso>%INITATB %LOCINIT %PREINIT</seealso>
    <diagrams>diags_main.htm#diags008000 diags_main.htm#diags002000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%INITATB"
    anchor="insert001017"
    mmpType="MMP"
    section="INITIALIZATION">
    <description>
      Attribute Initialization. Called after %INIT, used to initialize 3270 screen
      field attributes (color, intensity, protection) to their default state for
      the current function being processed. Typical use: reset all fields to
      unprotected/normal before then selectively protecting/highlighting specific
      ones. Corresponds to BA200-INIT-ATTRIBUTES paragraph.
    </description>
    <cobolLocation>BA200-INIT-ATTRIBUTES paragraph</cobolLocation>
    <paragraphRef>BA200-INIT-ATTRIBUTES</paragraphRef>
    <seealso>%INIT %COMP</seealso>
    <diagrams>diags_main.htm#diags002000 diags_main.htm#diags010000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%LOCINIT"
    anchor="insert001020"
    mmpType="MMP"
    section="INITIALIZATION">
    <description>
      Browse Function Initialization. Executed at the very start of the Browse
      Mainline logic (AAL200-BROWSE-MAINLINE / BA105-LOCAT-INIT / BA100-INIT-STORAGE),
      before the MMP has done much standard logic. The prime interception point
      for browse customization: validate operator's entry, pre-set starting
      position, redirect to a different function, or perform security checks
      specific to browse. Also used for sub-tasks sharing the browse entry path.
    </description>
    <cobolLocation>BA100-INIT-STORAGE and BA105-LOCAT-INIT paragraphs</cobolLocation>
    <paragraphRef>BA100-INIT-STORAGE BA105-LOCAT-INIT</paragraphRef>
    <seealso>%INIT %NORMKEY %LOCKY</seealso>
    <diagrams>diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%PREINIT"
    anchor="insert001029"
    mmpType="MMP"
    section="INITIALIZATION">
    <description>
      Pre-Initialization Routine. Executed very early in the MMP's task cycle,
      before function-specific initialization. The earliest available hook for
      any custom logic; runs before %INIT and %LOCINIT. Often used to intercept
      a function request and redirect, to set up environment-specific options,
      or to establish pop-up window color attributes. Also contains the
      AA100-CHECK-FUNCTION logic entry.
    </description>
    <cobolLocation>AA100-CHECK-FUNCTION / early AA000-BEGIN path</cobolLocation>
    <paragraphRef>AA100-CHECK-FUNCTION</paragraphRef>
    <seealso>%FUNCT %INIT %LOCINIT</seealso>
    <diagrams>diags_main.htm#diags002000 diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <!-- ============================================================
       SECTION C: SCREEN HANDLING  (MMP online programs)
       ============================================================ -->

  <insertionPoint
    name="%BLNKSCR"
    anchor="insert001003"
    mmpType="MMP"
    section="SCREEN_HANDLING">
    <description>
      Initialize Screen (Blank Screen). Executed in the BB100-BLANK-SCREEN
      paragraph, which clears/initializes the screen map before filling it with
      data. Use here to force specific fields blank, override MAGEC's default
      blanking logic, or pre-fill certain fields before the standard FILL SCREEN
      logic runs. Appears in multiple processing flows (maintenance, browse,
      display, add, delete, locate).
    </description>
    <cobolLocation>BB100-BLANK-SCREEN paragraph</cobolLocation>
    <paragraphRef>BB100-BLANK-SCREEN</paragraphRef>
    <seealso>%COMP %SNDSCRN</seealso>
    <diagrams>diags_main.htm#diags004000 diags_main.htm#diags002000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%COMP"
    anchor="insert001005"
    mmpType="MMP"
    section="SCREEN_HANDLING">
    <description>
      Computations for Screen Display. Executed in BB200-FILL-SCREEN after MAGEC
      has moved the standard database fields to the screen map but before sending
      the screen. Use here for: computed/derived fields to display, field
      reformatting, code-to-description translation, and conditional field
      highlighting. This is one of the most commonly used insertion points.
    </description>
    <cobolLocation>BB200-FILL-SCREEN paragraph (after standard MOVE statements)</cobolLocation>
    <paragraphRef>BB200-FILL-SCREEN</paragraphRef>
    <seealso>%BLNKSCR %SNDSCRN %LOCMOV</seealso>
    <diagrams>diags_main.htm#diags002000 diags_main.htm#diags005000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%EDIT"
    anchor="insert001009"
    mmpType="MMP"
    section="SCREEN_HANDLING">
    <description>
      Screen Field Edit(s) — Phase 1. Located in BB500-SCREEN-EDIT, executed after
      MAGEC's automatic edits (dictionary-driven) have been applied. Use for
      cross-field validations, conditional required-field checks, range checks,
      or any edit that cannot be expressed in the dictionary. If errors are found,
      move text to the SERRMSG area and MOVE 'Y' to an error flag to suppress the
      database update. Both %EDIT and %EDIT2 anchors reference this area.
    </description>
    <cobolLocation>BB500-SCREEN-EDIT paragraph (post-dictionary edits)</cobolLocation>
    <paragraphRef>BB500-SCREEN-EDIT</paragraphRef>
    <seealso>%EDIT2 %UPDERR %ADDINIT</seealso>
    <diagrams>diags_main.htm#diags009000 diags_main.htm#diags011000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%EDIT2"
    anchor="insert001010"
    mmpType="MMP"
    section="SCREEN_HANDLING">
    <description>
      Screen Field Edit(s) — Phase 2. A second edit insertion point within
      BB500-SCREEN-EDIT, executed after %EDIT. Allows two separate "layers" of
      custom validation, useful when a modular separation of edit groups is
      desired (e.g., Phase 1 edits individual fields; Phase 2 performs
      cross-field or cross-file edits that depend on Phase 1 results).
    </description>
    <cobolLocation>BB500-SCREEN-EDIT paragraph (second custom edit slot)</cobolLocation>
    <paragraphRef>BB500-SCREEN-EDIT</paragraphRef>
    <seealso>%EDIT %UPDERR</seealso>
    <diagrams>diags_main.htm#diags009000 diags_main.htm#diags011000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%LOCMOV"
    anchor="insert001023"
    mmpType="MMP"
    section="SCREEN_HANDLING">
    <description>
      Additional Data to Browse Screen. Executed in CA700-MOVE-TO-WORK-AREA
      during browse processing, after MAGEC has moved standard fields into the
      browse display line. Use to compute or move additional data items into
      browse line fields, override display values, or conditionally suppress
      a browse line. Corresponds to the browse screen's per-line fill logic.
    </description>
    <cobolLocation>CA700-MOVE-TO-WORK-AREA paragraph</cobolLocation>
    <paragraphRef>CA700-MOVE-TO-WORK-AREA</paragraphRef>
    <seealso>%COMP %SELECT %SKEYBLD</seealso>
    <diagrams>diags_main.htm#diags003000</diagrams>
    <altAnchor>insert001037</altAnchor>
  </insertionPoint>

  <insertionPoint
    name="%SNDSCRN"
    anchor="insert001039"
    mmpType="MMP"
    section="SCREEN_HANDLING">
    <description>
      Send Screen. Immediately before MAGEC issues the CICS SEND MAP command
      (AA800-SEND-SCREEN). Last opportunity to manipulate the screen map buffer
      (BMS map) before it is transmitted to the terminal. Use for final attribute
      overrides, dynamic title changes, or inserting special control characters.
    </description>
    <cobolLocation>AA800-SEND-SCREEN paragraph</cobolLocation>
    <paragraphRef>AA800-SEND-SCREEN</paragraphRef>
    <seealso>%COMP %BLNKSCR</seealso>
    <diagrams>diags_main.htm#diags002000 diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%SPOOL"
    anchor="insert001040"
    mmpType="MMP"
    section="SCREEN_HANDLING">
    <description>
      Spool. Located in CB900-SPOOL. Called when the MMP needs to spool output
      to the MAGEC TP Spooler (SPLR). Developer code here can format or
      supplement the spool record before it is written. Used in conjunction with
      the MAGEC TP Spooler subsystem.
    </description>
    <cobolLocation>CB900-SPOOL paragraph</cobolLocation>
    <paragraphRef>CB900-SPOOL</paragraphRef>
    <seealso>%SUBRTNL %SUBRTNM</seealso>
  </insertionPoint>

  <!-- ============================================================
       SECTION D: DATABASE COMMANDS  (MMP online programs)
       ============================================================ -->

  <insertionPoint
    name="%ADDINIT"
    anchor="insert001001"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Initialize Record for ADD. Located in BB600-BUILD-REC, executed when the
      operator has entered data for an ADD function and after edits have passed.
      MAGEC has moved screen fields to the record buffer; this point is BEFORE
      MAGECIO is called to write the record. Use here to: set system-generated
      key values (e.g., assign the next sequence number), override or supplement
      fields that should not come directly from the screen, set default values for
      fields not on the screen. Corresponds to the ADDINIT processing step in the
      ADD flow diagram.
    </description>
    <cobolLocation>BB600-BUILD-REC paragraph (pre-ADDIT call)</cobolLocation>
    <paragraphRef>BB600-BUILD-REC</paragraphRef>
    <seealso>%ADDIT %GOODADD %EDIT</seealso>
    <diagrams>diags_main.htm#diags011000 cstm_main.htm#cstm029003</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%ADDIT"
    anchor="insert001002"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to ADD to Database. Located in AAM710-ADD-TO-DATABASE. MAGEC has
      built the record and is about to call MAGECIO with the ADDIT command.
      Insert custom pre-add logic here: last-chance validation, supplemental
      record writes to other files, setting additional fields. After %ADDIT,
      MAGECIO performs the actual physical write.
    </description>
    <cobolLocation>AAM710-ADD-TO-DATABASE paragraph</cobolLocation>
    <paragraphRef>AAM710-ADD-TO-DATABASE</paragraphRef>
    <seealso>%ADDINIT %GOODADD %UPDERR</seealso>
    <diagrams>diags_main.htm#diags011000 cstm_main.htm#cstm027001</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%DELEDIT"
    anchor="insert001007"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Edit for Delete. Located in BB400-EDIT-FOR-DELETE. Before MAGEC performs
      a physical delete, this point allows custom validation: referential
      integrity checks (are there subordinate records?), business-rule-level
      deletion restrictions, operator confirmation prompts. If the delete should
      be disallowed, set an error message and flag here.
    </description>
    <cobolLocation>BB400-EDIT-FOR-DELETE paragraph</cobolLocation>
    <paragraphRef>BB400-EDIT-FOR-DELETE</paragraphRef>
    <seealso>%DELET %GOODDEL %UPDERR</seealso>
    <diagrams>diags_main.htm#diags007000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%DELET"
    anchor="insert001008"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to DELETE from Database. Located in AAM730-DELETE-FROM-DATABASE.
      Immediately before (or wrapping) the MAGECIO DELET call. Use for cascading
      delete of related records in other files, writing audit/history records
      before the deletion, or any final pre-delete action. After this point,
      MAGECIO performs the physical delete (or pseudodelete if configured).
    </description>
    <cobolLocation>AAM730-DELETE-FROM-DATABASE paragraph</cobolLocation>
    <paragraphRef>AAM730-DELETE-FROM-DATABASE</paragraphRef>
    <seealso>%DELEDIT %GOODDEL %UPDERR</seealso>
    <diagrams>diags_main.htm#diags007000 cstm_main.htm#cstm027001</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%JOIN"
    anchor="insert001018"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to JOIN Secondary Files (Logical Join). Located in the JA100-LOGICAL-JOIN
      paragraph (or BB100-LOGICAL-JOIN). Performed after every READ of the primary
      data class. Use to read related records from secondary files using foreign
      key values from the primary record, then move the joined data to the TWA or
      screen buffer. MAGEC's Automatic Logical Join feature generates an initial
      piece of code here automatically; the developer can add to or modify it.
      This is where computed display fields dependent on secondary file data are
      also calculated (see Customization Tutorial Project 1).
    </description>
    <cobolLocation>JA100-LOGICAL-JOIN paragraph (BB100-LOGICAL-JOIN for browse)</cobolLocation>
    <paragraphRef>JA100-LOGICAL-JOIN BB100-LOGICAL-JOIN</paragraphRef>
    <seealso>%REDKY %RDUKY %COMP</seealso>
    <diagrams>diags_main.htm#diags005000 diags_main.htm#diags006000</diagrams>
    <altAnchor>insert001057</altAnchor>
  </insertionPoint>

  <insertionPoint
    name="%LOCKY"
    anchor="insert001021"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to SETL on Database (Set Lower Limit / Start Browse). Located in
      AAL410-SET-STARTING-POSITION. Used to establish the starting position for
      a browse (keyed sequential read). Custom code here may modify the starting
      key before MAGECIO's LOCKY command is issued, implement alternate browse
      sequences, or pre-position to a calculated starting key. Also applies to
      LOCNX/exclusive lock path.
    </description>
    <cobolLocation>AAL410-SET-STARTING-POSITION paragraph</cobolLocation>
    <paragraphRef>AAL410-SET-STARTING-POSITION</paragraphRef>
    <seealso>%LOCINIT %NKLOC %REDLE %REDNX</seealso>
    <diagrams>diags_main.htm#diags003000 cstm_main.htm#cstm027001</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%LOCLITS"
    anchor="insert001022"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Locate Literals. Working-Storage/Linkage area for literal values specifically
      used in the browse LOCATE function logic. A specialized companion to %LITERAL
      scoped to the locate (browse) processing path. Use for constants referenced
      only within browse customization code.
    </description>
    <cobolLocation>Data area used within locate/browse paragraph</cobolLocation>
    <seealso>%LOCKY %LOCINIT %LITERAL</seealso>
  </insertionPoint>

  <insertionPoint
    name="%LOCVARS"
    anchor="insert001024"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Locate Variables. Variable-storage items scoped to the browse locate function.
      Companion to %VARSTOR for browse-specific work fields. Use when the developer
      needs browse-local variables that do not need to persist outside the browse
      processing flow.
    </description>
    <cobolLocation>Variable storage area within locate/browse processing</cobolLocation>
    <seealso>%LOCKY %LOCLITS %VARSTOR</seealso>
  </insertionPoint>

  <insertionPoint
    name="%NKLOC"
    anchor="insert001025"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Normalize Key for Locate (Browse). Located in BA300-NORMALIZE-KEY.
      Executed when normalizing (transforming) the browse starting key entered
      by the operator before it is used to position the file. Use to pad, reformat,
      or translate the key value into the exact format required for the KSDS index
      (e.g., zero-fill numeric portions, convert case).
    </description>
    <cobolLocation>BA300-NORMALIZE-KEY paragraph</cobolLocation>
    <paragraphRef>BA300-NORMALIZE-KEY</paragraphRef>
    <seealso>%NORMKEY %LOCKY</seealso>
    <diagrams>diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%NORMKEY"
    anchor="insert001026"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Normalize Key for Maintenance (ADD/CHG/DEL/SEE). Located in
      BA400-NORMALIZE-MAINT-KEY. Validates and transforms the key entered by the
      operator on a maintenance screen before MAGEC uses it for database access.
      Use to ensure the key is in the correct internal format (e.g., strip spaces,
      zero-fill, convert separators). Also provides an edit point — if the key is
      invalid, set an error message to reject it before any I/O.
    </description>
    <cobolLocation>BA400-NORMALIZE-MAINT-KEY paragraph</cobolLocation>
    <paragraphRef>BA400-NORMALIZE-MAINT-KEY</paragraphRef>
    <seealso>%NKLOC %PREINIT</seealso>
    <diagrams>diags_main.htm#diags004000 diags_main.htm#diags008000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%RDUKY"
    anchor="insert001030"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Read for Update Routine (CHG function). Located in AAM420-READ-BY-KEY-FOR-UPDATE.
      Executed when MAGEC is about to issue a MAGECIO RDUKY (Read for Update,
      sets exclusive control / LOCKY) command. Custom code before the call may
      modify which record is to be read. Custom code after the call may react to
      results (record not found, locked, etc.). Exclusive control established here
      is released via %RELES.
    </description>
    <cobolLocation>AAM420-READ-BY-KEY-FOR-UPDATE paragraph</cobolLocation>
    <paragraphRef>AAM420-READ-BY-KEY-FOR-UPDATE</paragraphRef>
    <seealso>%REDKY %RELES %UPDAT %EDIT</seealso>
    <diagrams>diags_main.htm#diags008000 diags_main.htm#diags006000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%REDKY"
    anchor="insert001031"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Read for Display Routine. Located in AAM410-READ-BY-KEY. Executed when
      MAGEC issues a MAGECIO REDKY (Read by Key, display-only, no lock) command.
      Used for SEE (display) and as the read preceding %COMP. Custom code here
      may redirect to read a different key or element, or react to not-found
      conditions.
    </description>
    <cobolLocation>AAM410-READ-BY-KEY paragraph</cobolLocation>
    <paragraphRef>AAM410-READ-BY-KEY</paragraphRef>
    <seealso>%RDUKY %JOIN %COMP</seealso>
    <diagrams>diags_main.htm#diags002000 diags_main.htm#diags010000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%REDLE"
    anchor="insert001032"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to Read First Record (Browse). Located in AAL420-READ-FIRST-RECORD.
      Executed when MAGEC performs the initial MAGECIO REDLE (Read First / Read
      Less-than-or-Equal) to retrieve the first browse record. Custom code here
      may modify which record is first retrieved, skip certain records, or handle
      end-of-file conditions.
    </description>
    <cobolLocation>AAL420-READ-FIRST-RECORD paragraph</cobolLocation>
    <paragraphRef>AAL420-READ-FIRST-RECORD</paragraphRef>
    <seealso>%REDNX %LOCKY %SELECT</seealso>
    <diagrams>diags_main.htm#diags005000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%REDNX"
    anchor="insert001033"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to Read-Next Record (Browse). Located in AAL430-READ-NEXT-RECORD /
      AAM430-READ-NEXT-RECORD. Executed for each subsequent MAGECIO REDNX
      (Read Next) call in a browse loop. Use here to skip records matching
      filter criteria, accumulate running totals across the browse page, or
      react to end-of-file.
    </description>
    <cobolLocation>AAL430-READ-NEXT-RECORD paragraph</cobolLocation>
    <paragraphRef>AAL430-READ-NEXT-RECORD AAM430-READ-NEXT-RECORD</paragraphRef>
    <seealso>%REDLE %SELECT %LOCMOV</seealso>
    <diagrams>diags_main.htm#diags005000 diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%RELES"
    anchor="insert001034"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to Drop Exclusive Control (RELES). Located in AAM740-RELEASE-EXCL-CONTROL.
      Issued after an update (or when an update is abandoned) to release the
      MAGECIO exclusive lock (LOCKY/RDUKY). Custom code here may perform clean-up
      actions after a successful or failed update before the lock is released.
    </description>
    <cobolLocation>AAM740-RELEASE-EXCL-CONTROL paragraph</cobolLocation>
    <paragraphRef>AAM740-RELEASE-EXCL-CONTROL</paragraphRef>
    <seealso>%RDUKY %UPDAT %GOODCHG</seealso>
    <diagrams>diags_main.htm#diags009000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%UPDAT"
    anchor="insert001043"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Logic to UPDATE the Database. Located in AAM720-UPDATE-DATABASE. MAGEC has
      built the updated record image; this insertion point is executed immediately
      before the MAGECIO UPDAT call. Use for: pre-update field overrides, writing
      change-log/history records, cascading updates to related files, or final
      business-rule enforcement.
    </description>
    <cobolLocation>AAM720-UPDATE-DATABASE paragraph</cobolLocation>
    <paragraphRef>AAM720-UPDATE-DATABASE</paragraphRef>
    <seealso>%RDUKY %GOODCHG %UPDERR %RELES</seealso>
    <diagrams>diags_main.htm#diags009000 cstm_main.htm#cstm027001</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%UPDERR"
    anchor="insert001044"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Update Error handler. Located in AAM751-UPDERR. Executed when MAGECIO
      returns a non-zero (error) status from an ADD, CHG, or DEL operation.
      MAGEC's default logic displays a standard error message; custom code here
      can provide more specific error messages, log the error, attempt retry
      logic, or take corrective action based on the specific MAGECIO return code
      in TWA-DB-RETURN-CODE.
    </description>
    <cobolLocation>AAM751-UPDERR paragraph</cobolLocation>
    <paragraphRef>AAM751-UPDERR</paragraphRef>
    <seealso>%ADDIT %UPDAT %DELET %GOODADD %GOODCHG %GOODDEL</seealso>
    <diagrams>diags_main.htm#diags007000 diags_main.htm#diags009000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%GOODADD"
    anchor="insert001013"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Post-successful ADD. Located in AAM753-GOODADD. Executed after a record
      has been successfully added to the database. Use for: sending confirmation
      messages, chaining to another function, writing to related files that depend
      on successful addition, clearing screen fields for next entry. This is the
      "happy path" completion point for the ADD function.
    </description>
    <cobolLocation>AAM753-GOODADD paragraph</cobolLocation>
    <paragraphRef>AAM753-GOODADD</paragraphRef>
    <seealso>%ADDIT %ADDINIT %UPDERR</seealso>
    <diagrams>diags_main.htm#diags011000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%GOODCHG"
    anchor="insert001014"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Post-successful CHG (Change/Update). Located in AAM755-GOODCHG. Executed
      after a record has been successfully updated. Use for: confirmation messages,
      chaining to a related function, writing audit records after the successful
      change, cascading updates triggered by the change.
    </description>
    <cobolLocation>AAM755-GOODCHG paragraph</cobolLocation>
    <paragraphRef>AAM755-GOODCHG</paragraphRef>
    <seealso>%UPDAT %RDUKY %UPDERR</seealso>
    <diagrams>diags_main.htm#diags009000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%GOODDEL"
    anchor="insert001015"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Post-successful DEL (Delete). Located in AAM757-GOODDEL. Executed after a
      record has been successfully deleted (or pseudodeleted). Use for:
      confirmation messages, cascading deletes of related records that should only
      happen AFTER the primary delete succeeds, chaining to a browse to show
      remaining records.
    </description>
    <cobolLocation>AAM757-GOODDEL paragraph</cobolLocation>
    <paragraphRef>AAM757-GOODDEL</paragraphRef>
    <seealso>%DELET %DELEDIT %UPDERR</seealso>
    <diagrams>diags_main.htm#diags007000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%SELECT"
    anchor="insert001037"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Browse Record Selection Filter. Located in BA115-SELECT (and CA700 path).
      Executed for each record retrieved during a browse, allowing the developer
      to programmatically INCLUDE or EXCLUDE it from the browse display based on
      field values. Set a flag to suppress the current record from the page.
      Equivalent to a "WHERE clause" filter applied record-by-record during the
      browse loop.
    </description>
    <cobolLocation>BA115-SELECT paragraph</cobolLocation>
    <paragraphRef>BA115-SELECT</paragraphRef>
    <seealso>%REDLE %REDNX %LOCMOV</seealso>
    <diagrams>diags_main.htm#diags003000 diags_main.htm#diags012000</diagrams>
    <altAnchor>insert001067</altAnchor>
  </insertionPoint>

  <insertionPoint
    name="%SKEYBLD"
    anchor="insert001038"
    mmpType="MMP"
    section="DATABASE_COMMANDS">
    <description>
      Build Secondary Key. Located in CA800-BUILD-SKEY. Used when MAGEC constructs
      the composite secondary (subordinate) key for a browse on a non-primary key.
      Custom code here can override or supplement the automatic key-building logic,
      for example when the secondary key is composite or requires transformation
      of the operator's entry.
    </description>
    <cobolLocation>CA800-BUILD-SKEY paragraph</cobolLocation>
    <paragraphRef>CA800-BUILD-SKEY</paragraphRef>
    <seealso>%LOCKY %NKLOC %LOCINIT</seealso>
    <diagrams>diags_main.htm#diags005000 diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <!-- ============================================================
       SECTION E: NAVIGATION  (MMP online programs)
       ============================================================ -->

  <insertionPoint
    name="%FUNCT"
    anchor="insert001011"
    mmpType="MMP"
    section="NAVIGATION">
    <description>
      Add/Modify Function Codes. Used to define NEW custom function codes (beyond
      the standard nine) or modify the routing logic for existing ones. Custom
      function codes are defined via the FUNCT specification in the dictionary and
      then handled here in the PROCEDURE DIVISION. The developer's code performs
      whatever action is required for the custom function and then branches
      appropriately. See also the Security chapter for authorizing custom functions.
    </description>
    <cobolLocation>Function dispatch area (post CHECK-FUNCTION)</cobolLocation>
    <seealso>%PREINIT %LOCINIT %PFKEYM</seealso>
    <diagrams>cstm_main.htm#cstm007004 cstm_main.htm#cstm007002</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%GOBACK"
    anchor="insert001012"
    mmpType="MMP"
    section="NAVIGATION">
    <description>
      MMP Exit Logic. Located in AA900-GOBACK paragraph. Executed just before
      MAGEC returns control (CICS RETURN) to the MAGECCP control program or
      issues an XCTL to chain to another program. Use for cleanup, writing a
      final record, or passing data via COMMAREA before the program ends. This
      runs at the end of every task execution path.
    </description>
    <cobolLocation>AA900-GOBACK paragraph</cobolLocation>
    <paragraphRef>AA900-GOBACK</paragraphRef>
    <seealso>%SNDSCRN %FUNCT</seealso>
    <diagrams>diags_main.htm#diags002000 diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%PFKEYL"
    anchor="insert001027"
    mmpType="MMP"
    section="NAVIGATION">
    <description>
      PF Key Logic — Browse (Locate) Functions. Located in AAL200-BROWSE-MAINLINE.
      Handles PF key actions specific to browse screens. Custom code here responds
      to PF keys not handled by standard MAGEC logic (e.g., PF3=Exit, PF5=Print,
      custom PF keys). Each PF key's AID byte is tested and the corresponding
      action is performed.
    </description>
    <cobolLocation>AAL200-BROWSE-MAINLINE paragraph</cobolLocation>
    <paragraphRef>AAL200-BROWSE-MAINLINE</paragraphRef>
    <seealso>%PFKEYM %FUNCT</seealso>
    <diagrams>diags_main.htm#diags003000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%PFKEYM"
    anchor="insert001028"
    mmpType="MMP"
    section="NAVIGATION">
    <description>
      PF Key Logic — Maintenance Functions. Located in AAM200-MAINTENANCE-MAINLINE.
      Handles PF key actions specific to maintenance screens (ADD, CHG, DEL, SEE).
      Custom code here interprets PF keys to trigger custom actions (e.g., PF5=Help,
      PF9=Chain to related screen, PF10=Print). Checked after MAGEC's standard PF
      key handling.
    </description>
    <cobolLocation>AAM200-MAINTENANCE-MAINLINE paragraph</cobolLocation>
    <paragraphRef>AAM200-MAINTENANCE-MAINLINE</paragraphRef>
    <seealso>%PFKEYL %FUNCT %PREINIT</seealso>
    <diagrams>diags_main.htm#diags008000 diags_main.htm#diags004000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%SUBRTNL"
    anchor="insert001041"
    mmpType="MMP"
    section="NAVIGATION">
    <description>
      Subroutine Definitions — Local (within MMP). Paragraph-level subroutine code
      defined within the generated MMP's PROCEDURE DIVISION. Developer writes
      COBOL paragraphs here that can be PERFORMed from other insertion points
      within the same MMP. Scoped to the local (single) MMP.
    </description>
    <cobolLocation>PROCEDURE DIVISION — subroutine paragraph area</cobolLocation>
    <seealso>%SUBRTNM %SPOOL</seealso>
  </insertionPoint>

  <insertionPoint
    name="%SUBRTNM"
    anchor="insert001042"
    mmpType="MMP"
    section="NAVIGATION">
    <description>
      Subroutine Definitions — Module-level (shareable). Like %SUBRTNL but
      intended for subroutine code shared across multiple MMPs by inclusion via
      -MAGECINC. Developer writes COBOL paragraphs into a shared library member
      that is included at this point in each MMP that needs it.
    </description>
    <cobolLocation>PROCEDURE DIVISION — module-level subroutine area</cobolLocation>
    <altAnchor>insert001068</altAnchor>
    <seealso>%SUBRTNL</seealso>
    <diagrams>cstm_main.htm#cstm027001</diagrams>
  </insertionPoint>

  <!-- ============================================================
       SECTION F: BATCH REPORT PROGRAMS  (MBP programs)
       Anchors in the insert001047–insert001069 range apply to MBPs.
       ============================================================ -->

  <insertionPoint
    name="%ACCUMS"
    anchor="insert001047"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Accumulators Area. Data definition area within the batch report MBP for
      declaring numeric accumulator fields (totals, counts, averages). Corresponds
      to the ACCUMULATORS-AREA data group in the LINKAGE SECTION of the MBP.
      Define all running totals and counters here.
    </description>
    <cobolLocation>LINKAGE SECTION — ACCUMULATORS-AREA group</cobolLocation>
    <paragraphRef>ACCUMULATORS-AREA</paragraphRef>
    <seealso>%ADDTOT %BREAKS %BRKPRT</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%ADDTOT"
    anchor="insert001048"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Add to Totals. Located in CA130-ADD-TOTALS. Executed once per qualifying
      detail record to accumulate running totals. Developer adds the detail field
      values to the accumulator fields defined in %ACCUMS. MAGEC may generate
      some default accumulator logic here for numeric fields marked for totaling;
      the developer can add to or replace it.
    </description>
    <cobolLocation>CA130-ADD-TOTALS paragraph</cobolLocation>
    <paragraphRef>CA130-ADD-TOTALS</paragraphRef>
    <seealso>%ACCUMS %BREAKS %ROLLAC</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%BREAKS"
    anchor="insert001049"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Control Break Detection. Located in CA115-CHECK-FOR-BREAKS. Executed for
      each record to detect when a control-break field changes value (e.g., when
      the department number changes). Developer compares current key values to
      saved prior key values. When a break is detected, MAGEC triggers %BRKPRT
      to print the break totals.
    </description>
    <cobolLocation>CA115-CHECK-FOR-BREAKS paragraph</cobolLocation>
    <paragraphRef>CA115-CHECK-FOR-BREAKS</paragraphRef>
    <seealso>%BRKPRT %ADDTOT %ROLLAC %SVPREV</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%BRKPRT"
    anchor="insert001050"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Break Print. Located in DC200-BREAK-PRINT. Executed when a control break
      has been detected (%BREAKS). Developer writes the accumulated totals for the
      just-completed group to the output report and then resets the accumulators
      for the new group. May print multiple levels of breaks (e.g., department
      subtotal then division subtotal).
    </description>
    <cobolLocation>DC200-BREAK-PRINT paragraph</cobolLocation>
    <paragraphRef>DC200-BREAK-PRINT</paragraphRef>
    <seealso>%BREAKS %ACCUMS %ROLLAC %RPTEND</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%EOJ"
    anchor="insert001052"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      End of Job. Located in CA190-END. Executed after all records have been
      processed at the end of the batch run. Use for: printing grand totals,
      closing supplemental files, writing summary records, printing report
      footers, or releasing resources. This is the batch equivalent of the
      MMP's %GOBACK.
    </description>
    <cobolLocation>CA190-END paragraph</cobolLocation>
    <paragraphRef>CA190-END</paragraphRef>
    <seealso>%BRKPRT %RPTEND %HDGPRT</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%HDGPRT"
    anchor="insert001055"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Heading Print. Located in DA200-HDG. Executed when the batch report MBP
      needs to print page headings (at the start of the report or when a new
      page begins due to page overflow). Developer writes column headings, report
      titles, date/time, and page number to the output file. MAGEC calls this
      automatically when the line counter reaches the maximum.
    </description>
    <cobolLocation>DA200-HDG paragraph</cobolLocation>
    <paragraphRef>DA200-HDG</paragraphRef>
    <seealso>%EOJ %RPTEND</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%INITWS"
    anchor="insert001056"
    mmpType="MBP"
    section="BATCH_MISC">
    <description>
      Initialize Working Storage (Batch). Located in AA000-BEGIN of the MBP.
      Executed once at the beginning of the batch program run, before any records
      are read. Use to: initialize accumulators to zero, open supplemental files,
      read a control/parameter record, set up date/time fields, or perform any
      one-time initialization. Batch counterpart of the MMP's %INIT.
    </description>
    <cobolLocation>AA000-BEGIN paragraph (MBP initialization)</cobolLocation>
    <paragraphRef>AA000-BEGIN</paragraphRef>
    <seealso>%EOJ %ACCUMS</seealso>
    <diagrams>diags_main.htm#diags012000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%MGLOCKY"
    anchor="insert001058"
    mmpType="MBP"
    section="BATCH_MISC">
    <description>
      Batch Browse — Start (MAGEC LOCKY equivalent for MBP). Located in
      BA102-START-BROWSE. The batch program equivalent of the online %LOCKY.
      Executed when the MBP positions the file for a sequential read. Developer
      can override or supplement the starting position logic.
    </description>
    <cobolLocation>BA102-START-BROWSE paragraph</cobolLocation>
    <paragraphRef>BA102-START-BROWSE</paragraphRef>
    <seealso>%MGREDLE %MGREDNX %INITWS</seealso>
    <diagrams>diags_main.htm#diags012000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%MGREDLE"
    anchor="insert001059"
    mmpType="MBP"
    section="BATCH_MISC">
    <description>
      Batch Read First Record (REDLE equivalent for MBP). Located in the batch
      browse / sequential read initialization path. Executed when the MBP reads
      the first record in a batch sequential pass. Custom code may modify
      starting position or handle first-record special processing.
    </description>
    <cobolLocation>Batch sequential read-first path (BA102 area)</cobolLocation>
    <seealso>%MGLOCKY %MGREDNX</seealso>
    <diagrams>diags_main.htm#diags012000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%MGREDNX"
    anchor="insert001060"
    mmpType="MBP"
    section="BATCH_MISC">
    <description>
      Batch Read Next Record (REDNX equivalent for MBP). Located in BA110-READ-NEXT.
      Executed for each subsequent record in the batch sequential read loop.
      Custom code may implement record filtering, accumulate statistics per
      record, or trigger special processing for certain record types.
    </description>
    <cobolLocation>BA110-READ-NEXT paragraph</cobolLocation>
    <paragraphRef>BA110-READ-NEXT</paragraphRef>
    <seealso>%MGLOCKY %MGREDLE %SELECT</seealso>
    <diagrams>diags_main.htm#diags012000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%MVTOPRT"
    anchor="insert001061"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Move to Print Area. Located in CA130-ADD-TOTALS path (or report detail line
      build). Executed to format the detail line for printing. Developer moves
      data from the record or work fields into the print line layout before
      writing it to the report output file. This is where report column values
      are placed.
    </description>
    <cobolLocation>CA130 / detail line formatting area</cobolLocation>
    <seealso>%ADDTOT %HDGPRT %BREAKS</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%MVTOSRT"
    anchor="insert001062"
    mmpType="MBP"
    section="BATCH_MISC">
    <description>
      Move to Sort Area / Release (BA150-RELEASE path). Executed when the batch
      program is building a sort record to be released to the sort work file
      (SORT RELEASE). Developer formats and moves fields into the sort input
      record before the RELEASE statement. Used in MBPs that use COBOL sort
      (SORT/MERGE verb) as part of their processing.
    </description>
    <cobolLocation>BA150-RELEASE paragraph (SORT RELEASE path)</cobolLocation>
    <paragraphRef>BA150-RELEASE</paragraphRef>
    <seealso>%INITWS %EOJ</seealso>
    <diagrams>diags_main.htm#diags012000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%ROLLAC"
    anchor="insert001065"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Roll Accumulators. Located in DC100-ROLL-ACCUMULATORS. Executed after a
      control break to roll (accumulate) lower-level totals into higher-level
      totals before resetting the lower level. For example, after printing a
      department subtotal, the department totals are added into division totals,
      then the department totals are zeroed. Supports multi-level control breaks.
    </description>
    <cobolLocation>DC100-ROLL-ACCUMULATORS paragraph</cobolLocation>
    <paragraphRef>DC100-ROLL-ACCUMULATORS</paragraphRef>
    <seealso>%BREAKS %BRKPRT %ACCUMS %ADDTOT</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%RPTEND"
    anchor="insert001066"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Report End. Located in CA190-END (final totals section). Executed at the
      end of report processing, after all control breaks have been printed, to
      print the grand total line(s) and report trailer information. Distinct from
      %EOJ in that it is specifically for the report's final totals page, whereas
      %EOJ is the overall end-of-job cleanup.
    </description>
    <cobolLocation>CA190-END paragraph (grand total / report-end section)</cobolLocation>
    <paragraphRef>CA190-END</paragraphRef>
    <seealso>%EOJ %BRKPRT %HDGPRT</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%SVPREV"
    anchor="insert001069"
    mmpType="MBP"
    section="BATCH_REPORT">
    <description>
      Save Previous Keys. Located in CA120-SAVE-KEYS. Executed after a detail
      record is processed and its accumulators updated, to save the current
      control-break key values as the "previous" values for comparison on the
      next record iteration (used by %BREAKS to detect changes). Developer saves
      the break-field values into "previous" work fields here.
    </description>
    <cobolLocation>CA120-SAVE-KEYS paragraph</cobolLocation>
    <paragraphRef>CA120-SAVE-KEYS</paragraphRef>
    <seealso>%BREAKS %ADDTOT</seealso>
    <diagrams>diags_main.htm#diags013000</diagrams>
  </insertionPoint>

  <!-- ============================================================
       SECTION G: MISCELLANEOUS / SHARED
       ============================================================ -->

  <insertionPoint
    name="%JOIN (Batch)"
    anchor="insert001057"
    mmpType="MBP"
    section="BATCH_MISC">
    <description>
      Logical Join for batch MBP programs. Located in BB100-LOGICAL-JOIN of the
      MBP. Same concept as the online %JOIN: reads related secondary file records
      keyed by foreign-key values from the primary record just read. Used when
      a batch report or update program needs data from multiple related files.
    </description>
    <cobolLocation>BB100-LOGICAL-JOIN paragraph (MBP)</cobolLocation>
    <paragraphRef>BB100-LOGICAL-JOIN</paragraphRef>
    <seealso>%JOIN %MGREDNX %MVTOPRT</seealso>
    <diagrams>diags_main.htm#diags012000</diagrams>
  </insertionPoint>

  <insertionPoint
    name="%SELECT (Batch)"
    anchor="insert001067"
    mmpType="MBP"
    section="BATCH_MISC">
    <description>
      Record Selection Filter for MBP batch programs. Located in BA115-SELECT.
      Identical in purpose to the online %SELECT: for each record read, the
      developer sets a flag to INCLUDE or EXCLUDE it from processing/reporting.
      Provides a programmatic WHERE-clause filter.
    </description>
    <cobolLocation>BA115-SELECT paragraph (MBP)</cobolLocation>
    <paragraphRef>BA115-SELECT</paragraphRef>
    <seealso>%MGREDNX %MGREDLE %MVTOPRT</seealso>
    <diagrams>diags_main.htm#diags012000</diagrams>
  </insertionPoint>

</magecInsertionPoints>