This manual provides comprehensive guidelines for advanced system and applications programmers on developing, integrating, and maintaining modular procedures within the OpenVMS AXP and VAX operating environments.
The document covers:
- Introduction and Benefits: Defines modular procedures, explains their advantages such as reusability, reduced development time, improved reliability, and cross-language compatibility. It details how to invoke procedures, utilize procedure libraries (including shareable images), and leverage existing OpenVMS system routines.
- Design Principles: Offers strategies for structuring applications, modules, and files; designing clear procedure interfaces (emphasizing explicit arguments and discouraging implicit ones); managing system resources (stack, heap, and static storage, event flags, logical unit numbers); handling input/output; documenting code; and planning for signaling and condition handling.
- Coding Guidelines: Provides best practices for naming conventions (facilities, procedures, files, modules, PSECTs, status codes), initializing modular procedures effectively, and writing Asynchronous System Trap (AST)-reentrant code to ensure robust operation in interrupt-driven contexts, including techniques to prevent race conditions and deadlocks.
- Testing Methodologies: Outlines detailed approaches for unit testing (black box and white box), ensuring language independence, and performing integration testing (advocating incremental over all-at-once). It also describes methods for verifying reentrancy and analyzing performance.
- Integration and Maintenance: Instructs on creating facility prefixes, object module libraries, and shareable image libraries. It addresses critical maintenance aspects like ensuring upward compatibility for future updates and implementing regression testing.
- Summary: Includes an appendix summarizing all modular programming guidelines for quick reference.
Overall, the manual serves as a guide for building well-structured, efficient, and maintainable applications on OpenVMS by adhering to established modular programming standards.