This "Guide to Creating OpenVMS Modular Procedures" (April 2001) provides comprehensive guidelines for advanced OpenVMS system and application programmers on developing, integrating, and maintaining complex applications by dividing them into modular, callable procedures.
The document emphasizes modular programming benefits such as enhanced reusability, reduced development time and complexity, increased reliability, and simplified maintenance.
Key areas covered include:
- Design Principles: Organizing applications into distinct modules and procedures, defining clear and consistent procedure interfaces (favoring explicit over implicit arguments), efficient use of system resources (stack, heap, static storage, with static generally discouraged for reentrancy reasons), managing input/output operations, writing internal documentation for modules and procedures, and planning for robust error signaling and condition handling.
- Coding Guidelines: Adhering to strict naming conventions for facilities, procedures, files, modules, program sections (PSECTs), and status codes to avoid conflicts. It details various initialization techniques for modular procedures and provides extensive guidance on writing AST-reentrant code to ensure correct execution when interrupted by Asynchronous System Traps (ASTs), addressing potential race conditions and deadlocks.
- Testing Methods: Unit testing (black box and white box), language-independence testing, and integration testing (favoring incremental over all-at-once approaches). Specific methods for checking AST reentrancy (debugger, desk check) and general performance analysis and monitoring are also described.
- Integration & Maintenance: How to create and manage object module libraries and shareable image libraries (highlighting benefits like memory/disk space savings and easier updates). It also covers maintaining upward compatibility when modifying procedures (e.g., adding new optional arguments at the end of argument lists) and performing regression testing to ensure new changes do not introduce errors into existing functionality.
The guide aims to provide a common environment and a set of rules and principles that allow any modular procedure to be successfully integrated into an OpenVMS application without conflicts.