Prozeduren Previous topic Chapter index Next topic

SE_GETGROUPSTART

 

Eingabeparameter

Parameter

Typ

Beschreibung

SNID

INTEGER

Primary Key Wert von der SENDUNGEN Tabelle

SEPOSITION

INTEGER

Positionsnummer vom selektierten Sendeelement.

SEGRUPPE

CHAR(1)

Das Gruppen Kürzel vom selektierten Sendeelement.

 

Ausgabeparameter

Parameter

Typ

Beschreibung

NEXTSEPOSITION

INTEGER

Gibt die nächste Position zurück.

 

Beschreibung

Damit erhält man anhand einer Position den Positions-Anfang.

 

Definition

CREATE PROCEDURE SE_GETGROUPSTART(
    SNID INTEGER,
    SEPOSITION INTEGER,
    SEGRUPPE CHAR(1))
RETURNS (
    NEXTSEPOSITION INTEGER)
AS
  DECLARE VARIABLE DestSeID          INTEGER;
  DECLARE VARIABLE DestSePosition    INTEGER;
  DECLARE VARIABLE DestSeGruppe      CHAR(1);
  DECLARE VARIABLE DestSeTyp         CHAR(2);
  DECLARE VARIABLE MinTriggerPos     INTEGER;
BEGIN
  /* Ermittelt den Anfang einer SE-Gruppe */
  FOR SELECT SEID, SEPOSITION, SEGRUPPE, SETYP FROM SENDEELEMENTE
        WHERE (SESNID = :SnId) AND
              (SEPOSITION <= :SePosition)
        ORDER BY SEPOSITION DESCENDING
        INTO :DestSeID,:DestSePosition,:DestSeGruppe,:DestSeTyp
  DO BEGIN
    /* Wegen VT im SC8 */
    MinTriggerPos = NULL;
    SELECT MIN(SEPOSITION)
    FROM SENDEELEMENTE JOIN TRIGGEREDEVENTS
      ON ((TETYP <= 99) AND ((SEID = TETRIGGEREDSEID) OR (SEID = TESEID)))
    WHERE ((TESEID = :DestSeID) OR
           (TESEID IN (SELECT TESEID FROM TRIGGEREDEVENTS
                       WHERE (TETRIGGEREDSEID = :DestSeID))))
    INTO :MinTriggerPos;
    IF (MinTriggerPos IS NOT NULL) THEN BEGIN
      DestSePosition = MinTriggerPos;
      NextSePosition = MinTriggerPos;
    END
    /* Eine Gruppe wird durch ein neues Header-Element oder */
    /* den Wechsel von SEGRUPPE definiert */
    if (DestSeGruppe <> SeGruppe) THEN EXIT;
  
    NextSePosition = DestSePosition;
    IF ((SEGRUPPE = ' ') OR (SEGRUPPE = '-')) THEN EXIT;
    IF ((DestSeTyp = 'H') OR (DestSeTyp = 'HR') OR (DestSeTyp = 'HB')) THEN EXIT;
  END
END

 

     Previous topic Chapter index Next topic