AS SELECT JCLJob.JobID,
		JCLJob.JobName,
		JCLJob.MemberName,
     	JCLStep.StepName,
     	JCLPosition.ResourceFilePath as StepPath,
     	JCLPosition.StartRow as stepStartRow,
                case when pa.AliasName is null then JCLPgm.PgmName else pa.AliasName end as ProgramName,
		p.ProgramID AS ProgramId,
	 	p.ProgramTypeID,
	 	Paths.PathStr AS ProgramPath,
	 	Occurrences.StartRow AS ProgStartRow,
	 	Occurrences.StartCol AS ProgStartCol,
		Occurrences.EndRow AS ProgEndRow,
	 	Occurrences.EndCol AS ProgEndCol,
	 	p.Ancestor,
	 	Programs_Ancestor.ProgramID AS AncestorID,
	 	Programs_Ancestor.ProgramTypeID AS AncestorTypeID
from JCLStep
        inner join JCLPgm on JCLPgm.PgmID = JCLStep.CalledPgmID  and JCLStep.CalledProcID = 0
        inner join JCLPosition on JCLPosition.PositionID = JCLStep.PositionID
        inner join JCLJob on JCLStep.JobID = JCLJob.JobID
          LEFT JOIN (SELECT DISTINCT p1.ProgramID, ProgramTypeID, AliasName as ProgramName, Ancestor, OccurID  FROM Programs p1
                                INNER JOIN ProgramAliases p2 ON p1.ProgramID = p2.ProgramID ) p on p.ProgramName = JCLPgm.PgmName AND p.ProgramTypeID NOT IN (8,13)
                      LEFT JOIN ProgramAliases pa ON pa.ProgramId = p.ProgramId and pa.AliasType = 0
                      LEFT JOIN Occurrences ON Occurrences.OccurID = p.OccurID
					  LEFT JOIN Paths on paths.PathID = Occurrences.PathID
					  LEFT JOIN (SELECT DISTINCT p1.ProgramID, AliasName as ProgramName, ProgramTypeId FROM Programs p1
                                                        INNER JOIN ProgramAliases p2 ON p1.ProgramID = p2.ProgramID) Programs_Ancestor ON Programs_Ancestor.ProgramName = p.Ancestor
					 AND Programs_Ancestor.ProgramTypeID IN (8,13)
WHERE (JCLJob.JobID in (Select * from #numeric_param_temp))
order by JCLJob.JobName, JCLPgm.PgmName