DYNAMIC RESULT SETS 1
LANGUAGE SQL
 BEGIN

		
		 -- declare temp tables
		    DECLARE GLOBAL TEMPORARY TABLE SESSION.stmtassoc
				(
		         OccurID	INTEGER,
					 RefID1		INTEGER,
					 GroupID	INTEGER,
					 OffSet		INTEGER,
					 VarSize	INTEGER
				) WITH REPLACE 
                  ON COMMIT PRESERVE ROWS 
                  NOT LOGGED ;
			
		
			-- fill in temp tables	
			INSERT INTO SESSION.stmtassoc
			SELECT
					OccurID,
					RefID1,
					GroupID,
					MAX(COALESCE(OffSet, 0)) AS OffSet,
					MAX(COALESCE(VarSize, 0)) AS VarSize
		   FROM (
		   		SELECT
		   			sr.OccurID,
		   			sr.StatementType,
		   			asoc1.RefID1,
		   			asoc1.GroupID,
		    		CASE asoc1.AssocTypeID
		        		WHEN 0 THEN str1.IntValue
		        		ELSE CAST(NULL AS INTEGER)
		    		END AS OffSet,
		     		CASE asoc1.AssocTypeID
		        		WHEN 1 THEN str1.IntValue
		        		ELSE CAST(NULL AS INTEGER)
		    		END AS VarSize
		

		      		FROM StatementreferenceAssociation asoc1
		   			INNER JOIN StatementReference sr ON sr.RefID = asoc1.RefID2 AND sr.ResourceType = 221
					INNER JOIN IntegerConstants str1 ON str1.ID = sr.ResourceID
			)src
			GROUP BY src.OccurID, src.RefID1, src.GroupID
			ORDER BY src.OccurID;
			COMMIT;
			
	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
						 SELECT *
					     FROM (
									 SELECT
									   	   var1.VarID,
											var2.VarID AS DataDependantVarId,
											st.Description AS StatementType,
											pgal.AliasName AS ProgramName,
										pth.PathStr,
										os.StartRow,
										var2.IsField,
										var1.VarSize  as Varsize1,
										var2.VarSize  as Varsize2,
										var1.Type,
										var2.Type,
											a1.OffSet  AS Var1OffSet,
											a2.OffSet  AS Var2OffSet,
											a1.VarSize  AS Var1Lenght,
											a2.VarSize  AS Var2Length,
											a1.GroupID AS varGrp1,
											a2.GroupID AS varGrp2

									FROM OccurrencesStmt os
									     INNER JOIN Statements st ON st.StatementType = os.StatementType
									    INNER JOIN Paths pth ON pth.PathID = os.PathID
									    INNER JOIN ProgramAliases pgal ON os.ProgID = pgal.ProgramID AND pgal.AliasType = 0
									     INNER JOIN StatementReference sr1 ON os.OccurID = sr1.OccurID AND sr1.ResourceType = 4 AND sr1.bRead = 2
									    INNER JOIN Variables var1 ON sr1.ResourceID = var1.VarID
									    INNER JOIN StatementReference sr2 ON sr1.OccurID = sr2.OccurID AND sr2.ResourceType = 4 AND sr2.bRead = 1
									    INNER JOIN Variables var2 ON var2.VarID = sr2.ResourceID
									    LEFT OUTER JOIN SESSION.stmtassoc a1 ON sr1.RefID = a1.RefID1 AND os.OccurID = a1.OccurID
									    LEFT OUTER JOIN SESSION.stmtassoc a2 ON sr2.RefID = a2.RefID1 AND os.OccurID = a2.OccurID
									WHERE  (var1.VarID IN (Select * from SESSION.numeric_param_temp))  AND
										sr1.StatementType NOT IN (14, 18, 23, 30, 326, 390, 412)
											
									ORDER BY var2.VarID,
										 	var1.VarID
					          ) x;
						
						
				        OPEN crs;
				
                END;
END	
