Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

cstxit, _cstxit - Definition einer STXIT-Routine

&pagelevel(4)&pagelevel

Definition

#include <stxit.h>

void cstxit(struct stxitp stxitpar);
void _cstxit(struct stxitp *stxitpar);

cstxit definiert eine STXIT-Routine, d.h. eine vom Anwender geschriebene Routine wird damit als STXIT-Routine angemeldet.
Ausführliche Informationen zur Programmierung von STXIT-Routinen finden Sie im Kapitel "Contingency- und STXIT-Routinen“ und im Handbuch „Makroaufrufe an den Ablaufteil“ [6])

_cstxit definiert ebenfalls eine STXIT-Routine.
Im Unterschied zu cstxit wird jedoch nicht die Struktur stxitpar selbst, sondern ein Zeiger auf diese übergeben. Somit kann die Funktion _cstxit das Strukturelement err_set so setzen, dass es vom aufrufenden Programm ausgewertet werden kann.

Parameter

struct stxitp stxitpar

Struktur, in der die notwendigen Informationen für die Definition einer STXIT-Routine anzugeben sind. Die Struktur ist in <stxit.h> für ANSI-C wie folgt definiert (struct cont ist abhängig vom Übersetzungsmodus):

struct stxitp
{
  addr     bufadr;      /* Adresse der Mitteilung an das  */
                        /*  Programm (OPINT)*/
  err_set retcode;      /* Returncode */
  struct cont contp;    /* Adresse der STXIT-Routinen */
  struct nest nestp;    /* max. Schachtelungstiefe */
  struct stx  stxp;     /* Steuerung des cstxit-Aufrufs */
  struct diag diagp;    /* Diagnosesteuerung */
  struct type typep;    /* Parameterübergabe-Modus */
};
struct cont             /* Adresse der STXIT-Routine für */
{                       /* die jeweilige Ereignisklasse */
  void  (*prchk) (struct stxcontp stxcontpar);
  void  (*timer) (struct stxcontp stxcontpar);
  void  (*opint) (struct stxcontp stxcontpar);
  void  (*error) (struct stxcontp stxcontpar);
  void  (*runout) (struct stxcontp stxcontpar);
  void  (*brkpt) (struct stxcontp stxcontpar);
  void  (*abend) (struct stxcontp stxcontpar);
  void  (*pterm) (struct stxcontp stxcontpar);
  void  (*rtimer) (struct stxcontp stxcontpar);
};
struct nest             /* max. Schachtelungstiefe für */
{                       /* die jeweilige Ereignisklasse */
  char prchk;
  char timer;
  char opint;
  char error;
  char runout;
  char brkpt;
  char abend;
  char pterm;
  char rtimer;
  char filler;
};
struct stx              /* Steuerung des cstxit-Aufrufs für */
{                       /* die jeweilige Ereignisklasse */
  stx_set prchk;
  stx_set timer;
  stx_set opint;
  stx_set error;
  stx_set runout;
  stx_set brkpt;
  stx_set abend;
  stx_set pterm;
  stx_set rtimer;
  stx_set filler;
};
struct diag             /* Diagnosesteuerung für die */
{                       /* jeweilige Ereignisklasse */
  diag_set prchk;
  diag_set timer;
  diag_set opint;
  diag_set error;
  diag_set runout;
  diag_set brkpt;
  diag_set abend;
  diag_set pterm;
  diag_set rtimer;
  diag_set filler;
};
struct type             /* Parameterübergabe-Modus für */
{                       /* jeweilige Ereignisklasse */
  type_set prchk;
  type_set timer;
  type_set opint;
  type_set error;
  type_set runout;
  type_set brkpt;
  type_set abend;
  type_set pterm;
  type_set rtimer;
  type_set filler;
};
#define stx_set      char
#define old_stx      0
#define new_stx      4
#define del_stx      8
#define diag_set     char
#define ful_diag     0
#define min_diag     4
#define no_diag      8
#define err_set      char
#define no_err       0
#define par_err      4
#define stx_err      8
#define mem_err      12
#define type_set     char
#define par_opt      0
#define par_std      4

Steuerung des cstxit-Aufrufs:

Über diese Information wird der Ablauf des cstxit-Aufrufs gesteuert. Es wird festgelegt, welche Aktionen für die jeweilige Ereignisklasse durchgeführt werden.

old_stx

Für die entsprechende Ereignisklasse ergibt sich keine Änderung. Eine vorher zugeordnete STXIT-Routine bleibt erhalten. Die restlichen Informationen für diese Ereignisklasse werden nicht ausgewertet.

new_stx

Für die entsprechende Ereignisklasse wird eine neue STXIT-Routine zugeordnet. In diesem Fall werden die restlichen Informationen für diese Ereignisklasse ausgewertet. Insbesondere muss die Adresse der Routine im entsprechenden Eintrag von contp stehen.

del_stx

Für die entsprechende Ereignisklasse wird die bisher zugeordnete STXIT-Routine gelöscht. Die restlichen Informationen für diese Ereignisklasse werden nicht ausgewertet.

Diagnosesteuerung:

ful_diag

Die Parameter zur Diagnosesteuerung werden aus Kompatibilitätsgründen syntaktisch akzeptiert, jedoch wegen der Umstellung auf ILCS nicht mehr ausgewertet. Die angemeldete Routine wird ohne vorhergehende Diagnosemeldung aktiviert.

min_diag

no_diag

Parameterübergabe-Modus:

par_opt

Die Parameter werden in den Registern 1-4 übergeben.

par_std

Die Parameter werden in einer Parameterliste übergeben.
Für C ist nur dieser Wert zulässig!

Returncode:

no_err

Die STXIT-Routine wurde ordnungsgemäß definiert.

par_err

Die Parameterstruktur stxitpar wurde falsch versorgt.

stx_err

Fehler beim Anmelden der STXIT-Routine.

mem_err

Fehler bei der Speicherplatzanforderung (beim Anmelden der STXIT-Routine).

Hinweise

Die Parameterstruktur stxitpar müssen Sie selbst versorgen.

Für die standardmäßige Initialisierung steht ein in der Include-Datei <stxit.h> definierter Prototyp (stxit_pr) zur Verfügung. Diesen Prototyp können Sie auf eine selbst definierte Struktur vom Typ stxitp kopieren und brauchen dann nur die Felder für diejenigen Ereignisklassen zu versorgen, bei denen die Zuordnung einer STXIT-Routine geändert werden soll.

Bei der Ereignisklasse INTR ist die Adresse zu versorgen (stxitpar.bufadr), bei der die Mitteilung an das Programm bereitgestellt werden soll. Die STXIT-Contingency-Routine kann dann die Mitteilung von dieser Adresse abholen und auswerten.

Der Rückgabewert retcode ist derzeit nicht abfragbar. Bitte beachten Sie eventuelle Hinweise in der Freigabemitteilung zu cstxit.

Siehe auch

alarm, cenaco, raise, signal, sleep