@Input_LinesNumber integer 
AS SELECT     dbo.ProgramAliases.ProgramID, dbo.ProgramAliases.AliasName AS ProgramName, dbo.Paths.PathStr, dbo.Occurrences.StartRow, 
                      CASE WHEN dbo.Paths.PathID = Occurrences_1.PathID THEN 0 ELSE - 1 END AS IsCopy
FROM         dbo.Programs INNER JOIN
                      dbo.ProgramElements ON dbo.Programs.ProgramID = dbo.ProgramElements.ProgId INNER JOIN
                      dbo.SourceComments ON dbo.ProgramElements.ElementId = dbo.SourceComments.FollowedByProgramElementId INNER JOIN
                      dbo.Occurrences ON dbo.ProgramElements.OccurId = dbo.Occurrences.OccurID INNER JOIN
                      dbo.Paths ON dbo.Occurrences.PathID = dbo.Paths.PathID INNER JOIN
                      dbo.Occurrences AS Occurrences_1 ON dbo.Programs.OccurID = Occurrences_1.OccurID INNER JOIN
                      dbo.ProgramAliases ON dbo.ProgramAliases.ProgramId = dbo.Programs.ProgramID 
                        AND dbo.ProgramAliases.AliasType = 0
WHERE  (dbo.ProgramElements.ElementType IN (1, 2, 3, 4)) AND  (dbo.SourceComments.LastEmptyLinesCount < @Input_LinesNumber)
		AND (dbo.Programs.ProgramTypeID = 1) 
UNION
SELECT     dbo.ProgramAliases.ProgramID, dbo.ProgramAliases.AliasName, dbo.Paths.PathStr, dbo.Occurrences.StartRow, 
                      CASE WHEN dbo.Paths.PathID = Occurrences_1.PathID THEN 0 ELSE - 1 END AS IsCopy
FROM         dbo.Paths INNER JOIN
                      dbo.ProgramElements INNER JOIN
                      dbo.Occurrences ON dbo.ProgramElements.OccurId = dbo.Occurrences.OccurID ON dbo.Paths.PathID = dbo.Occurrences.PathID INNER JOIN
                      dbo.Programs INNER JOIN
                      dbo.Occurrences AS Occurrences_1 ON dbo.Programs.OccurID = Occurrences_1.OccurID ON dbo.ProgramElements.ProgId = dbo.Programs.ProgramID INNER JOIN
                      dbo.ProgramAliases ON dbo.ProgramAliases.ProgramId = dbo.Programs.ProgramID 
                        AND dbo.ProgramAliases.AliasType = 0
WHERE   (dbo.ProgramElements.ElementType IN (1, 2, 3, 4)) AND 
		(dbo.Programs.ProgramTypeID = 1)  AND (dbo.ProgramElements.ElementId NOT IN
                          (SELECT DISTINCT ProgramElements_1.ElementId
                            FROM          dbo.SourceComments INNER JOIN
                                                   dbo.ProgramElements AS ProgramElements_1 ON dbo.SourceComments.FollowedByProgramElementId = ProgramElements_1.ElementId
                            WHERE      (ProgramElements_1.ElementType IN (1, 2, 3, 4))))
ORDER BY dbo.ProgramAliases.AliasName, dbo.Paths.PathStr, dbo.Occurrences.StartRow
                            
                      