DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN
          

	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
		           		SELECT   
				           		jj.JobID, 
								jj.JobName, 
								jj.MemberName,
						     	js.StepName,
						     	jpos.ResourceFilePath as StepPath,
						     	jpos.StartRow as stepStartRow,
								 CASE
										WHEN pa.AliasName IS NULL THEN jpgm.PgmName
										ELSE pa.AliasName
								 END AS ProgramName,
								pgm.ProgramID AS ProgramId,
							 	pgm.ProgramTypeID,
							 	pth.PathStr AS ProgramPath,
							 	occ.StartRow AS ProgStartRow, 
							 	occ.StartCol AS ProgStartCol, 
								occ.EndRow AS ProgEndRow, 
							 	occ.EndCol AS ProgEndCol, 
							 	pgm.Ancestor,
							 	Programs_Ancestor.ProgramID AS AncestorID, 
							 	Programs_Ancestor.ProgramTypeID AS AncestorTypeID 
						FROM JCLStep js
						        INNER JOIN JCLPgm jpgm ON jpgm.PgmID = js.CalledPgmID  AND js.CalledProcID = 0
						        INNER JOIN JCLPosition jpos ON jpos.PositionID = js.PositionID
						        INNER JOIN JCLJob jj ON js.JobID = jj.JobID
						        LEFT OUTER JOIN 
								                (   
	                                         SELECT DISTINCT
											        p.ProgramID,
								                    p.Ancestor,
										            p.ProgramTypeID,
										            p.OccurID,
								                    pa.AliasName AS ProgramName
								              FROM Programs p
								                   INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId 
								          ) pgm ON UPPER(pgm.ProgramName) = UPPER(jpgm.PgmName) AND pgm.ProgramTypeID NOT IN (8, 13)
								LEFT OUTER JOIN ProgramAliases pa ON pgm.ProgramID = pa.ProgramId AND pa.AliasType = 0	  
						        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,
								                    p.Ancestor,
										            p.ProgramTypeID,
										            p.OccurID,
								                    pa.AliasName AS ProgramName
								              FROM Programs p
								                   INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId 
								          )  Programs_Ancestor ON UPPER(Programs_Ancestor.ProgramName) = UPPER(pgm.Ancestor)
											                                         AND Programs_Ancestor.ProgramTypeID IN (8, 13) 
						WHERE jj.JobID IN (SELECT *  FROM SESSION.numeric_param_temp)
						ORDER BY jj.JobName, jpgm.PgmName;
		           

				         OPEN crs;
				
                END;
END ss	





