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.