DYNAMIC RESULT SETS 1
LANGUAGE SQL
 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 Ancestor.ProgramName = pgm.Ancestor
						WHERE
						     jpgm.PgmName IN (SELECT * 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	
