BB005 RPG36
The provided document is an RPG (Report Program Generator) program named BB005.rpg36.txt, called by the BB150P OCL program for Release or Post Batch operations in an IBM System/36 or AS/400 environment. This program updates batch records in the BBBTCH file based on the program mode (PGM) and batch number (BATCH#). Below, I’ll explain the process steps, business rules, tables (files) used, and external programs called.
Process Steps of the BB005 RPG Program¶
The BB005 RPG program is designed to release or post a batch by updating specific fields in the BBBTCH file. It operates in a straightforward manner, with conditional logic based on the program mode (PGM). Here’s a breakdown of the process steps:
- Retrieve Batch Record:
- The program uses the
BATCH#(batch number, positions 490-491 in the User Data Structure,UDS) to retrieve the corresponding record from theBBBTCHfile using aCHAINoperation. - If the batch record is not found (indicator
99is on), the program skips further processing and exits.
Purpose: Ensures the specified batch exists before attempting to update it.
- Process Based on Program Mode (
PGM): - If the batch record is found (
N99), the program evaluates thePGMfield (position 504 inUDS), which determines the type of batch operation:- PGM = 'O' (Order Entry):
- Executes the
RELexception output to update the batch record:- Clears the lock status (
ABLOCK, position 6) to a blank space (' '). - Clears the workstation ID (
ABLKWS, position 8) to blanks (' '). - Updates the record count (
ABREC, position 39) withRECCNT(positions 475-482 inUDS).
- Clears the lock status (
- PGM = 'L' (Pick List):
- Executes the
PICKexception output:- Clears the lock status (
ABLOCK, position 6) to a blank space (' '). - Clears the workstation ID (
ABLKWS, position 8) to blanks (' '). - Updates the record count (
ABREC, position 39) withRECCNT.
- Clears the lock status (
- PGM = 'B' (Bill of Lading Print):
- Executes the
BOLexception output:- Clears the lock status (
ABLOCK, position 6) to a blank space (' '). - Clears the workstation ID (
ABLKWS, position 8) to blanks (' '). - Sets the BOL printed status (
ABPRTD, position 9) to'Y'. - Updates the record count (
ABREC, position 39) withRECCNT.
- Clears the lock status (
- PGM = 'P' (Posting):
- Executes the
POSTexception output:- Sets the delete code (
ABDEL, position 1) to'D'(marks the batch as deleted). - Sets the lock status (
ABLOCK, position 6) to'P'(indicating posting). - Updates the record count (
ABREC, position 39) withRECCNT.
- Sets the delete code (
- Default (PGM ≠ 'O', 'L', 'B', or 'P'):
- Executes the
RELexception output (same asPGM = 'O'):- Clears the lock status (
ABLOCK) and workstation ID (ABLKWS). - Updates the record count (
ABREC) withRECCNT.
- Clears the lock status (
Purpose: Updates the batch record based on the operation type, either releasing the batch (clearing locks), marking it as printed, or deleting it for posting.
- Exit Program:
- Sets the Last Record (
LR) indicator to exit the program.
Purpose: Ensures the program terminates after processing the batch record.
Business Rules¶
The BB005 RPG program enforces the following business rules:
1. Batch Existence:
- The program only processes a batch if it exists in the BBBTCH file. If the batch number (BATCH#) does not correspond to a valid record, no updates are performed.
- Program Mode Determines Action:
-
The
PGMfield dictates the type of update:'O'(Order Entry) or'L'(Pick List): Releases the batch by clearing lock fields (ABLOCK,ABLKWS) and updating the record count.'B'(BOL Print): Releases the batch and marks it as printed (ABPRTD = 'Y').'P'(Posting): Marks the batch as deleted (ABDEL = 'D') and sets the lock status to'P'.- Any other
PGMvalue defaults to a release operation (clearing locks).
-
Record Count Update:
-
The
RECCNTvalue (number of records in the batch) is always updated in theABRECfield, ensuring the batch record reflects the current count. -
Concurrency and Lock Management:
- Releasing a batch (for
PGM = 'O','L', or'B') clears the lock status and workstation ID, making the batch available for other processes. -
Posting a batch (
PGM = 'P') marks it as deleted, preventing further use. -
Data Integrity:
- The program ensures that updates to the
BBBTCHfile are atomic (viaUCfile mode for update-capable access). - Only specific fields are modified based on the operation, preserving other data in the batch record.
Tables (Files) Used¶
The program interacts with the following file:
1. BBBTCH:
- Update-capable file (UC), 48 bytes, logical file with 2 access paths, indexed.
- Stores batch records with fields relevant to batch management.
- Fields Updated:
- ABDEL (position 1, 1 char): Delete code ('D' for posting).
- ABLOCK (position 6, 1 char): Lock status (' ' for release, 'P' for posting).
- ABLKWS (position 8, 2 char): Workstation ID (' ' for release).
- ABPRTD (position 9, 1 char): BOL printed status ('Y' for BOL print).
- ABREC (position 39, 8 num): Number of records in the batch (updated with RECCNT).
Input Fields from UDS:
- BATCH# (positions 490-491, 2 num): Batch number used to locate the record.
- PGM (position 504, 1 char): Program mode ('O', 'L', 'B', 'P', or other).
- RECCNT (positions 475-482, 8 num): Record count to update ABREC.
External Programs Called¶
The BB005 RPG program does not explicitly call any external programs. It operates as a standalone program, performing file updates directly based on input parameters.
Summary¶
The BB005 RPG program is a simple utility for releasing or posting batches in the BBBTCH file, called by the BB150P OCL program. It:
- Retrieves a batch record using BATCH#.
- Updates the record based on the PGM mode:
- Releases the batch (PGM = 'O', 'L', or default) by clearing locks.
- Marks the batch as printed (PGM = 'B').
- Deletes the batch for posting (PGM = 'P').
- Always updates the record count (ABREC) with RECCNT.
- Enforces business rules for batch existence, lock management, and operation-specific updates.
Files Used: BBBTCH (update-capable batch file).
External Programs: None.
If you need further details (e.g., field-level mappings, interaction with the OCL program, or additional context), let me know!