DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN           

	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
						SELECT jpgm.PgmName,
						       pgm.ProgramID,
						       pgm.ProgramTypeID,
						       pgm.Ancestor,
						       occ.StartRow,
						       occ.EndRow,
						       occ.StartCol,
						       occ.EndCol,
						       pth.PathStr,
						       Ancestor.ProgramId
						FROM JCLPgm jpgm
						     INNER JOIN 
							           	  (
												SELECT DISTINCT
													 p.ProgramID,
													 p.Ancestor,
													 pa.AliasName AS ProgramName,
													 p.OccurID,
													 p.ProgramTypeID
												FROM Programs p
													INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId
					                        ) pgm ON jpgm.PgmName = pgm.ProgramName
						     LEFT OUTER JOIN Occurrences occ ON occ.OccurID = pgm.OccurID
						     LEFT OUTER JOIN Paths pth ON pth.PathID = occ.PathID
						     LEFT OUTER JOIN 
							           	  (
												SELECT DISTINCT
													 p.ProgramID,
													 pa.AliasName AS ProgramName,
													 p.ProgramTypeID
												FROM Programs p
													INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId
					                        ) Ancestor ON UPPER(Ancestor.ProgramName) = UPPER(pgm.Ancestor)
						WHERE 
						     UPPER(jpgm.PgmName) IN (SELECT UPPER(Param) FROM SESSION.string_param_temp) AND
							 pgm.ProgramTypeID NOT IN (8, 13)
						     AND (Ancestor.ProgramTypeID IS NULL OR Ancestor.ProgramTypeID NOT IN (15, 16, 19) );
						 
						 

				         OPEN crs;
				
                END;
END ss	



