DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN

					    DECLARE crs CURSOR WITH RETURN FOR
						SELECT  pgm.ProgramName,
					            ssf.Name AS FileName,
					            st.Description AS StatementType,
					            COUNT(DISTINCT os.OccurID) AS Expr1,
					            '',
					            ('' || pgm.ProgramName) AS k
					     FROM StatementReference sr 
					          INNER JOIN OccurrencesStmt os ON sr.OccurID = os.OccurID
					          INNER JOIN Files f ON sr.ResourceID = f.FileID
					          INNER JOIN SCLSystemFiles ssf ON ssf.OccurId = f.OccurID AND ssf.fileId = f.FileID
					          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
										) pgm ON os.ProgID = pgm.ProgramID
					          INNER JOIN Statements st ON sr.StatementType = st.StatementType
					     WHERE sr.ResourceType = 9
					           AND (f.TypeCode <> 32 OR f.TypeCode IS NULL)
					           AND pgm.ProgramTypeid IN (19)
					           AND ssf.Name IS NOT NULL
					     GROUP BY pgm.ProgramName,
					              ssf.Name,
					              st.Description
					     ORDER BY k,
					              ssf.Name;

				        OPEN crs;
				

END ss	



