Spezielle Natural CICS-Funktionalität

In diesem Kapitel werden spezielle Natural CICS-Funktionen erläutert. Folgende Themen werden behandelt:


Aufruf von Nicht-Natural-Programmen

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

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.

Aufruf von Nicht-Natural-Programmen mit Parameterwerten in einer COMMAREA oder in einem Container

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.

Voraussetzung:

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.

Dummy-Bildschirm-Ein-/Ausgabe bei Natural unter CICS

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:

  1. 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.

  2. 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 
  3. 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.