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
![]() ![]() ![]() |