In diesem Kapitel werden spezielle Natural CICS-Funktionen erläutert. Folgende Themen werden behandelt:
Eine der ersten Aktionen, die eine Natural-Task beim Start ausführt, ist die Aktivierung
eines Exits für die Verarbeitung abnormaler Beendigungen. Dieser Exit wird verwendet, um
alle Ressourcen einschließlich des Threads im Falle einer abnormalen Beendigung
freizugeben. Daher darf ein Nicht-Natural-Programm nicht EXEC CICS ABEND
CANCEL oder die entsprechende Makroanforderung ausgeben, weil eine solche
Anforderung die aktuelle Sitzung ohne Berücksichtigung eines aktiven Exits abbricht.
Dadurch ist Natural nicht in der Lage, seine Ressourcen aufzuräumen, und der Thread und
die Roll Facility werden nicht freigegeben.
Ein Thread wird einer Natural-Task zugewiesen, wenn ein Natural-Programm aktiv ist. Dies gilt auch, wenn Nicht-Natural-Programme aufgerufen werden (gemäß den CICS-Linkage-Konventionen).
Daher sollten solche Programme keine übermäßigen Ein-/Ausgaben oder andere Arbeiten
ausführen, ohne dass Natural zwischendurch die Kontrolle erhält. Falls ein
Nicht-Natural-Programm Ein-/Ausgaben auf dem Bildschirm durchführt, können Sie im
Natural-Programm ein SET CONTROL 'P=V'-Statement codieren, das das
Nicht-Natural-Programm vor dem aufrufenden Statement aufruft: Dies zeigt an, dass die
Parameterdaten aus dem Thread kopiert werden und die Sitzung vor dem Aufruf des
Nicht-Natural-Programms ausgespeichert wird.
Folgende Themen werden anschließend behandelt:
Aufruf von Nicht-Natural-Programmen über Standard-Linkage-Konventionen
Aufruf von Nicht-Natural-Programmen mit Parameterwerten in einer COMMAREA oder in einem Container
Ein Nicht-Natural-Programm wird von Natural in der Weise aufgerufen (per
CALL) wie Programme im zugrunde liegenden Betriebs- und/oder
TP-Monitorsystem aufgerufen werden.
In CICS werden Nicht-Natural-Programme durch EXEC CICS
LINK-Anfragen aufgerufen. Wenn jedoch z.B. dasselbe Subprogramm (das keine
CICS- oder Betriebssystemanfragen ausgibt) sowohl für die Batch- als auch für die
Online-Verarbeitung verwendet werden soll, kann ein Nicht-Natural-Programm auch über
Standard-Linkage-Konventionen aufgerufen werden, d.h. über BASR
R14,R15.
Weitere Informationen finden Sie unter dem Terminalkommando %P=S in der
Terminalkommandos-Dokumentation. Siehe auch Subparameter
SLCALL im
Makro NTCICSP.
Standardmäßig werden Nicht-Natural-Programme mit den Adressen der
Anfrageparameterlisten (siehe Beschreibung des CALL-Statement in der
Natural-Statements-Dokumentation) aufgerufen, die im TWA und/oder
einer COMMAREA übergeben werden (abhängig von der Einstellung des Subparameters
CALLRPL
des Makros NTCICSP).
Eine an CICS orientierte Methode ist die Übergabe der Parameterwerte in einer CICS-COMMAREA oder einem CICS-Container (siehe Unterstützung von CICS-Channels und -Containern), insbesondere wenn sich das aufgerufene Programm in einer anderen CICS-Region befindet (Distributed Program Link, DPL), da Adressen innerhalb der "aufrufenden" Region für die "aufgerufene" Region nicht zugänglich sind.
Einzelheiten und Einschränkungen finden Sie bei den Terminalkommandos %P=C und %P=CC in der
Terminalkommandos-Dokumentation.
Diese Funktionalität erfordert, dass der Subparameter CALLRPL im Makro
NTCICSP auf ON gesetzt ist.
Wenn die Parameterwerte in einer CICS COMMAREA oder einem CICS Container übergeben
werden, werden unabhängig von der CALLRPL-Einstellung keine
Parameterlistenzeiger in der CICS TWA übergeben.
Wenn ein SET CONTROL 'QO'-Statement vor einem Natural-Statement steht, das
eine Bildschirm-Eingabe/-Ausgabe bewirkt, wird die Terminalausgabe von Natural unter CICS
nicht ausgeführt. Folglich werden sowohl die Enter-Taste als auch die
Benutzereingabe nicht an Natural rückübertragen.
Diese Funktionalität kann in den folgenden Situationen nützlich sein:
Wenn Sie pseudo-konversationelle Bildschirm-Ein-/Ausgaben an Nicht-Natural-Programme
überlassen, die von Natural aufgerufen werden. Das Nicht-Natural-Programm führt die
Operation EXEC CICS SEND durch und kehrt zu Natural zurück.
Aufgrund des Statement SET CONTROL 'QO' beendet die nächste
Natural-Bildschirm-Ein-/Ausgabe die Task einer Pseudo-Konversationssitzung. Bei der
Bildschirmeingabe erhält Natural die Kontrolle und ruft erneut das
Nicht-Natural-Programm auf, das dann die Operation EXEC CICS
RECEIVE durchführt.
Beim Ändern der pseudokonversationellen Natural-Transaktionskennung während der laufenden Vorgangs, ohne dass ein Terminalbediener eingreifen muss:
MOVE *INIT-ID TO termid CALLNAT 'CMTRNSET' trnid /* change the restart transaction ID * starting a task on your terminal forces an interrupt as if * pressing any attention identifier CALL 'CMTASK' USING trnid H'0000' H'00000000' termid SET CONTROL 'QO' INPUT 'DUMMY' /* dummy I/O, which you will never see WRITE 'HELLO' *INIT-PROGRAM /* now the new transaction ID is active
Beim Wechsel zu einer Anwendung außerhalb von Natural, vielleicht sogar in einer anderen CICS AOR (Application Owning Region), ohne dass ein Terminalbediener eingreifen muss:
* starting a task on your terminal forces an interrupt as if * pressing any attention identifier CALL 'CMTASK' USING trnid data-length start-data termid SET CONTROL 'QO' INPUT 'DUMMY' /* dummy I/O, which you will never see WRITE 'HELLO' *INIT-PROGRAM /* now the new transaction ID is active
In diesem Fall ist die aufgerufene Anwendung dafür verantwortlich, die Natural-Neustartdaten auf den Stack zu legen, wenn sie in einer CICS-COMMAREA übergeben werden, da eine COMMAREA höchstwahrscheinlich auch von der neuen (pseudo-konversationellen) Anwendung verwendet wird.