Eingabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
SRCSNID |
INTEGER |
Ein Primary Key Wert von der SENDUNGEN Tabelle |
SRCSEPOSITION |
INTEGER |
Damit wird das Sendeelement in der Sendestunde über die Position angegeben. |
DESTSNID |
INTEGER |
Ein Primary Key Wert von der SENDUNGEN Tabelle. |
DESTSEPOSITION |
INTEGER |
Gibt die Ziel Position an, wohin kopiert werden soll. |
DESTSEZEIT |
INTEGER |
Damit wird die Ziel Sendeelement Zeit übergeben. |
COPYGROUP |
INTEGER |
Damit wird angegeben, ob nur ein Element oder eine ganze Gruppe kopiert werden soll. |
BEFOREDEST |
INTEGER |
Damit wird angegeben ob vor oder nach der angegebenen DestSePosition hin kopiert werden soll. |
AVOIDGROUPBREAK |
INTEGER |
Damit kann bestimmt werden, ob ein Gruppenunterbruch verhindert werden soll. |
Ausgabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
NEWDESTSEID |
INTEGER |
Ein neuer Primary Key Wert von der SENDEELEMENTE Tabelle wird zurückgegeben. |
NEWDESTSEPOSITION |
INTEGER |
Die neue Position vom kopierten Sendeelement wird zurückgegeben. |
Beschreibung
Kopiert ein Sendeelement (mit Klammer) oder auch ganze Blöcke. (Ruft SE_COPY_BLOCK auf)
Definition
CREATE PROCEDURE SE_COPY_TO_TIME(
SRCSNID INTEGER,
SRCSEPOSITION INTEGER,
DESTSNID INTEGER,
DESTSEPOSITION INTEGER,
DESTSEZEIT INTEGER,
COPYGROUP INTEGER,
BEFOREDEST INTEGER,
AVOIDGROUPBREAK INTEGER)
RETURNS (
NEWDESTSEID INTEGER,
NEWDESTSEPOSITION INTEGER)
AS
declare variable NEWSEID integer;
declare variable NEWSESNID integer;
declare variable NEWSEDATUM date;
declare variable NEWSEZEIT integer;
declare variable NEWSESPPOSITION integer;
declare variable NEWSESNPOSITION integer;
declare variable NEWSEPOSITION integer;
declare variable NEXTSEPOSITION integer;
declare variable NUMBEROFSEINDESTSN integer;
declare variable DESTSEGRUPPE char(1);
DECLARE VARIABLE SeIdList1 VARCHAR(8190);
DECLARE VARIABLE SeIdList2 VARCHAR(8190);
DECLARE VARIABLE RefSeIdList1 VARCHAR(8190);
DECLARE VARIABLE RefSeIdList2 VARCHAR(8190);
BEGIN
/* Genaue Ziel-Position festlegen (Vor/Nach Klammerung) */
SELECT
COUNT (SEID)
FROM sendeelemente
WHERE SESNID = :destsnid
INTO :NUMBEROFSEINDESTSN;
if (NUMBEROFSEINDESTSN>0) then begin
EXECUTE PROCEDURE SE_GETBLOCKPOS (DestSnId, DestSePosition, BeforeDest)
RETURNING_VALUES (NewSeId,
NewSeSnId,
NewSeDatum,
NewSeZeit,
NewSeSpPosition,
NewSeSnPosition,
NewSePosition,
NextSePosition);
NewDestSeId = NewSeId;
NewDestSePosition = NewSePosition;
/* Klammerung wurde beruecksichtigt, jetzt auch
noch beachten, dass Gruppen nicht zerstoert werden */
SELECT SEGRUPPE
FROM Sendeelemente
WHERE SEID = :NewDestSeId
INTO :DESTSEGRUPPE;
if (AVOIDGROUPBREAK=1) then begin
if (BeforeDest = 1) then begin
EXECUTE PROCEDURE SE_GETGROUPSTART (DestSnId, NewDestSePosition, DestSeGruppe)
RETURNING_VALUES (NewSePosition);
NewDestSePosition = NewSePosition;
NextSePosition = NewDestSePosition - 249;
end else begin
EXECUTE PROCEDURE SE_GETGROUPEND (DestSnId, NewDestSePosition, DestSeGruppe)
RETURNING_VALUES (NewSePosition);
NewDestSePosition = NewSePosition;
NextSePosition = NewDestSePosition + 249;
end
end
if (BeforeDest = 1) then begin
if (NewSeZeit>DestSeZeit and DestSeZeit>=0) then begin
NewSeZeit = DestSeZeit;
end
end else begin
if (NewSeZeit<DestSeZeit and DestSeZeit>=0) then begin
NewSeZeit = DestSeZeit;
end
end
end else begin
/* Es gibt noch keine Elemente in der Sendung, Sendungseigenschaften
muessen anders ermittelt werden */
NewDestSePosition = DestSePosition;
NewSeSnId = DestSnId;
NextSePosition = NewDestSePosition + 249;
SELECT SPDATUM, SNPOSITION
FROM SENDUNGEN INNER JOIN SENDEPLAENE ON SNSPID = SPID
WHERE SNID=:destsnid
INTO :NewSeDatum, :NewSeSnPosition;
if (DestSeZeit>=0) then begin
NewSeZeit = DestSeZeit;
end else begin
NewSeZeit = NewSeSnPosition * 36 * 1000;
end
NewSeSpPosition = 0;
end
/* Ab aktueller Positon + 1 vorwaerts Elemente kopieren */
EXECUTE PROCEDURE SE_COPY_BLOCK (SrcSnId,
SrcSePosition,
NewSeSnId,
NewSeDatum,
NewSeZeit,
NewSeSpPosition,
NewSeSnPosition,
NextSePosition,
CopyGroup,
0)
RETURNING_VALUES (NewDestSeId,
NewDestSePosition,
SeIdList1,
RefSeIdList1);
/* Ab aktueller Positon reuckwaerts Elemente kopieren */
EXECUTE PROCEDURE SE_COPY_BLOCK (SrcSnId,
SrcSePosition,
NewSeSnId,
NewSeDatum,
NewSeZeit,
NewSeSpPosition,
NewSeSnPosition,
NextSePosition,
CopyGroup,
1)
RETURNING_VALUES (NewDestSeId,
NewDestSePosition,
SeIdList2,
RefSeIdList2);
/* TriggerEvents auch noch kopieren */
IF (SeIdList1 != '') THEN
SeIdList1 = SeIdList1 || ',';
SeIdList1 = SeIdList1 || SeIdList2;
RefSeIdList1 = RefSeIdList1 || RefSeIdList2;
EXECUTE PROCEDURE TE_SE_COPY(SeIdList1, RefSeIdList1);
/* Positionsnummern der Sendung neu durchnumerieren */
EXECUTE PROCEDURE SE_RENUMPOSITION (NewSeSnId);
END
![]() ![]() ![]() |