AS 
    BEGIN
            SET NOCOUNT ON;

			IF OBJECT_ID('tempdb..#programWithAncestor') IS NOT NULL DROP TABLE #programWithAncestor;
			SELECT ProgramID ,ProgramName ,AncestorName
			INTO #programWithAncestor 
			FROM fGetProgram_Ancestor_Aliases (NULL)
			WHERE ProgramID IN (SELECT * FROM #numeric_param_temp) 
				  AND
				  ProgramTypeID NOT IN (8, 9, 15, 16, 13, 19, 14);



			SELECT pgm.ProgramName, pgm.AncestorName, COALESCE(pgm.AncestorName, '') + pgm.ProgramName AS k, pgm.ProgramID 
			       ,s3.tranName ,s3.tranType, s3.regionName
			FROM #programWithAncestor pgm
				  INNER JOIN  (
								   SELECT pa.ProgramID ,s1.tranName ,s1.tranType, s1.regionName
								   FROM
									   (
											SELECT mt.TransCode AS tranName, cp.ProgName AS progName ,14 AS tranType, MFCICSInfo.CICSName AS regionName
											FROM MFCICSList m1
												 INNER JOIN MFCICSInfo ON MFCICSInfo.CICSID = m1.CICSID
												 INNER JOIN MFCICSListVsGroup m2 ON m1.ListID = m2.ListID
												 INNER JOIN MFCICSGroup m3 ON m2.GroupID = m3.GroupID
												 INNER JOIN MFCICSGroupVsEntity m4 ON m3.GroupID = m4.GroupID AND m4.EntityTypeID = 2
												 INNER JOIN MFCICSGroupVsEntityLinks m5 ON m4.EntityID = m5.EntityID
												 INNER JOIN MFCICSTransaction mt ON m5.TransID = mt.TransID
												 INNER JOIN MFCICSProgram cp ON cp.ProgID = mt.ProgID AND mt.ProgID > 0
                        
											UNION

											SELECT Name AS tranName ,ProgName As progName ,ResourceType AS tranType, NULL AS regionName
											FROM Resources  
											WHERE ResourceType = 20 AND progName IS NOT NULL 
									   )s1
										INNER JOIN ProgramAliases pa ON pa.AliasName = s1.progName
										LEFT OUTER JOIN 
														(
														SELECT r.Name AS tranName  ,r.ResourceType AS tranType 
                        								 FROM Resources r
															INNER JOIN StatementReference sr ON sr.ResourceID = r.ResourceID AND  sr.ResourceType IN (14 ,20)
                       									 WHERE r.ResourceType IN (14 ,20)
														 GROUP BY r.Name ,r.ResourceType
														) s2 ON s1.tranName = s2.tranName AND s1.tranType = s2.tranType
								  WHERE s2.tranType IS NULL   
							   )s3 ON pgm.ProgramID = s3.ProgramID  
				  LEFT OUTER JOIN (
									 SELECT  pa2.ProgramId
									 FROM ProgramAliases pa2
                						  INNER JOIN JCLPgm jp ON pa2.AliasName = jp.PgmName
								  ) f On pgm.ProgramID = f.ProgramID
				  LEFT OUTER JOIN StatementReference sr ON sr.ResourceType = 5 AND sr.ResourceID = pgm.ProgramID 
			WHERE
				sr.ResourceID IS NULL
				AND f.ProgramID IS NULL
	      ORDER BY  k;
   END;