AS
     BEGIN
	      SET NOCOUNT ON
          SET XACT_ABORT ON
         
         CREATE TABLE #DDCLFromPrograms(ids INT);
         INSERT INTO #DDCLFromPrograms(ids)
         SELECT DISTINCT dde.id
         FROM Programs pgm
                INNER JOIN OccurrencesStmt os ON pgm.ProgramID = os.ProgID
                INNER JOIN StatementReference sr ON os.OccurID = sr.OccurID
                INNER JOIN Resources ON sr.ResourceID = Resources.ResourceID
                                            AND Resources.ResourceType = 13
                INNER JOIN DDCLElement dde ON dde.Name LIKE SUBSTRING(Resources.Name, CHARINDEX('-', Resources.Name)+1, LEN(Resources.Name))
                INNER JOIN DDCLDdsType ON DDCLDdsType.Name LIKE SUBSTRING(Resources.Name, 0, CHARINDEX('-', Resources.Name))
         WHERE dde.DdsTypeId = 12;

         SELECT DISTINCT
                dde.Name
         FROM DDCLElement dde
         WHERE dde.DdsTypeId = 12
               AND dde.Id IN (SELECT * FROM #numeric_param_temp)
               AND dde.id NOT IN
								 (
									   SELECT DISTINCT
											dde1.Id
									   FROM DDCLElement dde1
										   RIGHT JOIN DDCLValue ddv ON dde1.Name = ddv.ReferenceName
																 AND dde1.DdsTypeId = ddv.ReferenceDdsTypeId
										   INNER JOIN DDCLProperty ddp ON ddv.PropertyId = ddp.Id
										   INNER JOIN DDCLElement AS DDCLElementParent ON ddv.ElementId = DDCLElementParent.Id
									   WHERE ddv.ReferenceDdsTypeId = 12
										   AND dde1.Id IN  (SELECT * FROM #numeric_param_temp)
										   AND ddp.Name IN ('FILES', 'SELECTION')
										   AND DDCLElementParent.DdsTypeId IN (27, 28)
								 )
         AND dde.id NOT IN  (SELECT * FROM #DDCLFromPrograms)
         ORDER BY dde.Name;

	    DROP TABLE #DDCLFromPrograms;

     END;