DYNAMIC RESULT SETS 1
LANGUAGE SQL
 BEGIN


	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
					         SELECT DISTINCT
						            par.ParaID,
						            par.ParaName,
						            os.StatementType,
						            f.LogicalName,
						            f.FileID,
						            os.StartRow,
						            os.EndRow,
						            os.StartCol,
						            os.EndCol,
						            pth.PathStr,
						            f.Name,
						            f.TypeCode,
						            prg.ProgramID,
						            x.DataSetName AS PhysicalFileName,
						            sr.bRead
						     FROM OccurrencesStmt os
							       INNER JOIN
                                        (
	                                         SELECT p.ProgramID,
								             p.Ancestor,
										     p.ProgramTypeID,
										     p.OccurID,
								             pa.AliasName AS ProgramName
								        FROM Programs p
								                   INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId AND pa.AliasType = 0
							            ) prg ON os.ProgID = prg.ProgramID
						          INNER JOIN StatementReference sr ON os.OccurID = sr.OccurID
						          LEFT OUTER JOIN Paragraphs par ON os.ParaID = par.ParaID
						          INNER JOIN Files f ON sr.ResourceID = f.FileID
						          INNER JOIN Paths pth ON pth.PathID = os.PathID
						          LEFT OUTER JOIN(
								                 SELECT  pup.ProgramID, jpds.DataSetName , jd.DDName
								                 FROM   JCLJob jj
												    INNER JOIN JCLStep js ON jj.JobID = js.JobID
												    LEFT OUTER JOIN ProgramsUsedInPgm pup ON pup.JclPgmID = js.CalledPgmID
												    INNER JOIN JCLDD jd ON js.StepID = jd.StepID
												    INNER JOIN JCLPosition AS DDPosition ON DDPosition.PositionID = jd.PositionID
												    INNER JOIN JCLDDRef jref ON jd.DDID = jref.DDID
												    LEFT OUTER JOIN JCLPhysicalDataSet jpds ON jref.DataSetID = jpds.DataSetID
											 ) x
											 ON prg.ProgramID = x.ProgramID
						                             AND ( x.DDName IS NULL
						                                  OR (
						                                       f.Name = x.DDName
						                                       OR
						                                       f.Name LIKE '%' || '-' || x.DDName 														
						                                       )
												    )
						     WHERE  prg.ProgramName IN (SELECT * FROM SESSION.string_param_temp) AND
								      sr.ResourceType = 9
						          AND os.StatementType NOT IN (12, 29, 122, 1819, 124, 1821, 118, 1815)
						          AND (f.TypeCode <> 32 OR f.TypeCode IS NULL)
						     ORDER BY os.StartRow;
					     					
				        OPEN crs;
				
                END;
END	
