Zwischen segmentierten und nicht segmentierten Programmen wählen
Für die Entscheidung, ob Sie Ihre Programme als segmentierte oder nicht segmentierte Programme entwerfen, sollten Sie zwei Problembereiche kennen.
Die Auswirkung der Transaktion auf konkurrierende Ressourcen wie die Verwendung von Speicher und Prozessor ist der erste Problembereich. Der zweite Problembereich ist die Auswirkung auf Ressourcen mit exklusiver Nutzung wie Datensätze und wiederherstellbare Dateien, wiederherstellbare Warteschlangen mit transienten Daten und Elemente, für die eine Warteschlange aufgebaut wird.
Nicht segmentierte Programme haben eine große Auswirkung auf den Speicher, da ihre Ausführung länger dauert als die Ausführung der Gesamtheit der Transaktionen, die sich in einem entsprechenden segmentierten Programm befinden. Der Prozessoraufwand ist jedoch niedriger, da nur ein einziges Programm gestartet wird, anstatt ein Programm pro Transaktion.
Ein nicht segmentiertes Programm behält länger als ein entsprechendes segmentiertes Programm die exklusive Nutzung von Ressourcen bei. Aus diesem Grund ist die Antwortzeit für segmentierte Programme kürzer; allerdings ziehen Sie aus Gründen der Wiederherstellung und der Integrität möglicherweise ein nicht segmentiertes Programm vor.
Wenn in den aufgerufenen Programmen Formulare vorhanden sind oder Sie die Datenbank während einer Ausführung von converse sperren müssen, sollten Sie Ihr Programm für eine Ausführung im nicht segmentierten Modus entwerfen.
- Der Segmentmodus verwendet mehr Prozessorzeit, weil CICS mehr Zeit für die Initiierung und das Beenden von Transaktionen aufwendet.
- Der Modus ohne Segmentierung verwendet mehr virtuellen Speicher, weil Transaktionen während der Bedenkzeit des Benutzers aktiv bleiben. Mit dem dynamischen Transaktionsrouting kann CICS jedoch automatisch einen anderen Bereich starten und Transaktionen an den nächsten Bereich senden, während der erste Bereich beschränkt ist.
- Im Modus ohne Segmentierung können während der Bedenkzeit des Benutzers auch andere Ressourcen wie beispielsweise Sperren in der Datenbank verwendet werden. (Dies kann aufgelöst werden, indem die Systemvariable converseVar.commitOnConverse auf 1 gesetzt wird.)
- Die CICS-Abrechnung und die Sicherheit ist bei nicht segmentierten Transaktionen weniger differenziert, da Sie einige umfangreiche Transaktionen haben und nicht viele kleine.
- Das Beenden von CICS kann mit vielen nicht segmentierten Transaktionen schwieriger sein. Zum Beenden müssen Sie möglicherweise Transaktionen beenden, weil sich jemand mitten in einer nicht segmentierten Transaktion in der Pause befindet. (Dies kann gelöst werden, indem Transaktionen das Zeitlimit überschreiten, wenn der Benutzer nach einer bestimmten Zeit nicht die Eingabetaste drückt.)
- Die Programmierung von nicht segmentierten Programmen kann einfacher sein, weil Sie Folgendes ausführen können:
- Textformulare in aufgerufenen Programmen verwenden.
- Sperren und die Cursorposition in der Datenbank auch während der Ausführung einer Anweisung converse beibehalten.
- Für die IMS-Umgebung können nur segmentierte Programme generiert werden.
Beim Ausführen eines Programms auf einem System, auf dem die Speicherkonkurrenz kein Problem ist, ist die Ausführung im Modus ohne Segmentierung mit dem Wert '1' für die Variable converseVar.commitOnConverse ein guter Kompromiss zwischen der Ausführung im Segmentmodus bzw. der Ausführung im Modus ohne Segmentierung. Dieser Ansatz führt dazu, dass bei jeder Ausführung der Anweisung converse vom Hauptprogramm aus eine Festschreibung erzwungen wird und er weist die guten Leistungsmerkmale des Modus ohne Segmentierung auf; allerdings werden Datei- oder Datenbankressourcen während der Bedenkzeit des Benutzers nicht blockiert.