Comparison of segmented and nonsegmented programs for CICS

For CICS® environments, you can specify whether a program runs in segmented (CICS pseudoconversational) or nonsegmented (CICS conversational) mode by setting the segmented property when you define the program.
Note: If you are running in VisualAge® Generator compatibility mode, you can also dynamically change the runtime mode for the program. For more information, see Dynamically changing between segmented and nonsegmented mode.
The following diagram illustrates the flow of a program running in nonsegmented mode. The sample update program, CSUP, converses a form, displays the customer data that can be updated, accepts data from a user to update the customer record, and replaces the record with the changed data. When you use nonsegmented mode, you should set the converseVar.commitOnConverse system variable to 1. This causes a commit point to occur at the converse, so that changes to files and databases are committed and locks are released. The diagram also illustrates saving a copy of the record for comparison purposes after the converse to ensure that no other changes have been made to the record during user think time.
Figure 1. Update file program running in nonsegmented modeDiagram of program running in nonsegmented mode
The following diagram shows the flow of the same update program running in segmented mode.
Figure 2. Update file program running in segmented modeDiagram of program running in segmented mode

When a program runs in segmented mode, temporary storage must be provided to contain the roll out/in data during segmentation. Each program requires approximately 6000 bytes plus the total size of all objects accessed by the program (records, variables, and forms). In addition, because the program must be started after each user input, you might want to make the program, print services program, and FormGroup format module resident for segmented programs.


Feedback