DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN

	            BEGIN
              
					    DECLARE crs CURSOR WITH RETURN FOR	 
						SELECT DISTINCT
					            jpds.DataSetName,
					            pa.ProgramName,
					            pa.ProgramID,
					            jd.DDName,
					            pa.OccurId,
					            jpds.DataSetID,
								pth.PathStr
					     FROM JCLPhysicalDataSet jpds
					          INNER JOIN JCLDDRef jr ON jpds.DataSetID = jr.DataSetID
					          INNER JOIN JCLStep js ON jr.StepID = js.StepID
					          INNER JOIN JCLPgm jpgm ON js.CalledPgmID = jpgm.PgmID
							  LEFT OUTER JOIN ProgramAliases pga ON UPPER(jpgm.PgmName) = UPPER(pga.AliasName)
					          LEFT OUTER JOIN   (
													SELECT DISTINCT
														 p.ProgramID,
														 p.Ancestor,
														 pa.AliasName AS ProgramName,
														 UPPER(pa.AliasName) AS ProgramNameU,
														 p.OccurID,
														 p.ProgramTypeID
													FROM Programs p
														INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId AND pa.AliasType = 0
												) pa ON pga.ProgramID = pa.ProgramID
							  INNER JOIN JCLDD jd ON jr.DDID = jd.DDID
					          INNER JOIN SESSION.ds_param_temp dpt ON jpds.DataSetID = dpt.dsid
                                   AND UPPER(jr.MemberName) = UPPER(dpt.dsmembername)
						      LEFT OUTER JOIN
											  (
												 SELECT 1 AS Flag,
													   prax.AliasName,
													   UPPER(prax.AliasName) AS AliasNameU,
													   prgx.ProgramTypeID
												 FROM Programs prgx
													 INNER JOIN ProgramAliases prax ON prgx.ProgramID = prax.ProgramId AND prax.AliasType = 0
												 GROUP BY prax.AliasName,
														prgx.ProgramTypeID
												 HAVING COUNT(*) > 1
											  ) x ON pa.ProgramNameU = x.AliasNameU AND pa.ProgramTypeID = x.ProgramTypeID
								LEFT OUTER JOIN Occurrences occ ON occ.OccurID = pa.OccurID
								LEFT OUTER JOIN Paths pth ON pth.PathID = occ.PathID AND x.Flag = 1
						WHERE EXISTS ( SELECT 1
						               FROM SESSION.ds_param_temp f
						               WHERE jpds.DataSetID = f.dsid
						             )		
					     ORDER BY jd.DDName,
					              pa.ProgramName;
						   

                         OPEN crs;
                        
                  END;       
 END