DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
         
	            DECLARE GLOBAL TEMPORARY TABLE SESSION.programWithAncestor
				(
	                 ProgramID     INTEGER,
					 ProgramName   VARCHAR(256),
					 Ancestor      VARCHAR(256)
				) WITH REPLACE  
				ON COMMIT PRESERVE ROWS
				  NOT LOGGED;

	             INSERT INTO SESSION.programWithAncestor (ProgramID ,ProgramName ,Ancestor)
	             SELECT t.ProgramID ,t.ProgramName ,t.AncestorName
		         FROM TABLE(
				             fGetProgram_Ancestor_Aliases( CAST(NULL AS INTEGER) )
				            )t
				 WHERE     t.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp) AND
				           t.OccurID > 0
	                   AND t.ProgramTypeID NOT IN (8, 9, 15, 16, 13, 19, 14);
	                   

	             BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
						SELECT pgm.ProgramName ,pgm.Ancestor , COALESCE(pgm.Ancestor, '') || pgm.ProgramName AS k, pgm.ProgramID
						FROM  SESSION.programWithAncestor pgm
						      LEFT OUTER JOIN StatementReference sr ON sr.ResourceType = 5 AND pgm.ProgramID = sr.ResourceID  
						      LEFT OUTER JOIN (
							                      SELECT  pa2.ProgramId
											      FROM ProgramAliases pa2
	                							        INNER JOIN JCLPgm jp ON pa2.AliasName = jp.PgmName
	                							  GROUP BY pa2.ProgramID      
									           ) f1 ON pgm.ProgramID = f1.ProgramID
							  LEFT OUTER JOIN (
												 SELECT  pa3.ProgramId --,pa3.AliasName 
												 FROM ProgramAliases pa3
		                							   INNER JOIN (
																		SELECT cp.ProgName AS progName  
																		FROM MFCICSList m1
																				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 ProgName AS progName
																		FROM Resources  
																		WHERE ResourceType = 20
																	) tp ON pa3.AliasName = tp.ProgName
												  GROUP BY pa3.ProgramId					
									            ) f2 ON pgm.ProgramID = f2.ProgramID  				 									
					     WHERE sr.ResourceID IS NULL
				               AND f1.ProgramID IS NULL
				               AND f2.ProgramID IS NULL
					     ORDER BY k;
							
					     OPEN crs;
							    
    
                 END;
   			
END 
