Designing and Programming CICS Applications: Integrating Existing Mainframe Applications with New Technologies