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 das Positions-Ende.
Definition
CREATE PROCEDURE SE_GETGROUPEND(
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 MaxTriggerPos INTEGER;
BEGIN
FOR SELECT SEID, SEPOSITION, SEGRUPPE, SETYP FROM SENDEELEMENTE
WHERE (SESNID = :SnId) AND
(SEPOSITION >= :SePosition)
ORDER BY SEPOSITION ASCENDING
INTO :DestSeID,:DestSePosition,:DestSeGruppe,:DestSeTyp
DO BEGIN
/* Wegen VT im SC8 */
MaxTriggerPos = NULL;
SELECT MAX(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 :MaxTriggerPos;
IF (MaxTriggerPos IS NOT NULL) THEN BEGIN
DestSePosition = MaxTriggerPos;
NextSePosition = MaxTriggerPos;
END
/* Eine Gruppe wird durch eines neues Header-Element oder */
/* den Wechsel von SEGRUPPE definiert */
IF ((((DestSeTyp = 'H') OR (DestSeTyp = 'HR') OR (DestSeTyp = 'HB')) AND
(DestSePosition <> SePosition)) OR
(DestSeGruppe <> SeGruppe)) THEN EXIT;
NextSePosition = DestSePosition;
IF ((SEGRUPPE = ' ') OR (SEGRUPPE = '-')) THEN EXIT;
END
END
![]() ![]() ![]() |