Smart/RESTART, with its z/OS Resource Recovery Services (RRS) integration, now offers basic support for IDMS applications that run on an RRS-enabled IDMS Central Version (CV). This blog post aims to explain how to make IDMS applications restart-enabled by leveraging Smart/RESTART. While DB2 is still required for synchronization control, the IDMS application itself doesn't need any DB2 references or coding. The DB2 repository access is implicit and driven through RRS API calls for commits or rollbacks.
To restart-enable an IDMS application, it must be designed around the concept of a Unit of Work (UOW) where the database objects being updated achieve consistency at each UOW completion. Instead of using COMMIT or ROLLBACK statements, calls to SRRCMIT or SRRBACK should be used. For database access, the application can use IDMS exclusively or it can access both DB2 and IDMS. In either case, DB2 is used for synchronization control. Let's explore the steps for the IDMS-only scenario first.
The CV JCL should include the parameter 'RRS=Y,' and the application job JCL should include the SYSIDMS DD, pointing to a file with the 'ENABLE_RRS=ON' parameter.
The application should be designed around UOWs, defining synchronization points where commits can be taken. This concept is crucial for restartability.
Refer to the Smart/RESTART documentation for IDMS, following the same guidelines as for DB2 integration. Update the application JCL to include the Smart/RESTART load libraries at the front of the STEPLIB. Review and configure the DDs SRSPRINT, SRSCHECK, and RAINPUT to work properly for the IDMS environment.
a. Run the IDMS pre-compiler to convert IDMS commands to API calls.
b. Run the Smart/RESTART pre-compiler to add necessary initialization and storage markers.
c. Compile the application COBOL code.
d. Link-edit the application.
e. Bind the DB2 PLAN for the application.
Storage Marker Placement:
Review the Smart/RESTART pre-compiler's placement of storage markers. In the case of IDMS, the end marker should be placed before the COPY IDMS SUBSCHEMA commands to prevent incorrect restoration of working storage that should be reinitialized instead.
Modify the JCL to include Smart/RESTART load libraries at the front of the STEPLIB. Add or customize the DDs SRSPRINT, SRSCHECK, and RAINPUT based on the IDMS application requirements. Pay attention to parameters such as RMI, SYSTEM, ATTACH, PLAN, and PLANEXIT.
Application That Uses IDMS and DB2 for DBMS Access:
When accessing multiple DBMSs, each DBMS should use RRS connection protocols and reach points of consistency simultaneously. Coordination is crucial to propagate commits automatically between DBMSs. Depending on the access mode of IDMS (native DML navigation or SQL), separate UOWs or sub-programs should be designed.
A sample COBOL application program, along with build and execution JCL, is provided via PTF for the 20.1 release. The program showcases IDMS-only DBMS access with Smart/RESTART support using DB2 for synchronization. The sample program, SRS8ID1, can serve as a reference for customers interested in using Smart/RESTART with IDMS.
By leveraging Smart/RESTART with IDMS applications, you can make them restart-enabled, ensuring recovery and consistency in case of failures. The integration requires designing the application around the concept of Units of Work (UOWs) and using SRRCMIT and SRRBACK calls instead of COMMIT and ROLLBACK statements. The Smart/RESTART documentation provides detailed guidelines for integrating IDMS applications.
Smart/RESTART support for IDMS applications brings the benefits of restartability and recovery to IDMS environments. By following the outlined steps and incorporating Smart/RESTART into your IDMS application development process, you can enhance the reliability and availability of your applications. Remember to consult the official documentation and sample program provided for further guidance.
Link to the documentation: Smart/RESTART Support for IDMS Applications