AS
BEGIN
SET NOCOUNT ON



                -- cobol -> 56, 1
			 IF OBJECT_ID('tempdb..#appendix_1_56') IS NOT NULL DROP TABLE #appendix_1_56
			 SELECT
				COALESCE(mad.DBName,   CONVERT(VARCHAR(16), ad.DBNumber)) AS DBName,
				COALESCE(maf.FileName, CONVERT(VARCHAR(16), af.FileNumber)) AS FileName,
				af.FileID
			 INTO #appendix_1_56
			 FROM  dbo.AdabasFiles af
				LEFT OUTER JOIN dbo.AdabasDatabases ad  ON ad.AdabasDBID=af.AdabasDBID
				LEFT OUTER JOIN dbo.MFAdabasFiles maf ON maf.FileNumber=af.FileNumber
				LEFT OUTER JOIN dbo.MFAdabasDB mad ON mad.DBNumber= ad.DBNumber

               CREATE CLUSTERED INDEX IX_2 on #appendix_1_56 (FileID ASC)


                -- natural 	-> 193, 3
			 IF OBJECT_ID('tempdb..#appendix_3_193') IS NOT NULL DROP TABLE #appendix_3_193
			 SELECT nv.viewid,
				 COALESCE(mad.DBName,   CONVERT(VARCHAR(16), ad.DBNumber)) AS DBName,
				 COALESCE(maf.FileName, CONVERT(VARCHAR(16), af.FileNumber)) AS FileName,
				 af.FileID,
				 n.DDMName as AdabasView,
				 nv.ViewName as NaturalView,
				 vpth.PathStr as ViewPath,
				 nv.ResourceName as ViewSource,
				 vo.StartRow as ViewStartRow,
				 vo.StartCol as ViewStartColumn
			 INTO #appendix_3_193
			 FROM dbo.NaturalDBView nv
 				 INNER JOIN dbo.NaturalDDM n on n.DDM_ID = nv.DDM_ID AND n.ResourceType=62
 				 INNER JOIN dbo.AdabasView av ON av.ViewID = n.ReferenceResourceID
 				 INNER JOIN dbo.AdabasFiles af ON af.FileId = av.AdabasFileID
				 INNER JOIN dbo.AdabasDatabases ad ON ad.AdabasDBID = af.AdabasDBID	
				 LEFT OUTER JOIN dbo.MFAdabasFiles maf ON maf.FileNumber=af.FileNumber
 				 LEFT OUTER JOIN dbo.MFAdabasDB mad ON mad.DBNumber= ad.DBNumber
				 LEFT OUTER JOIN dbo.Occurrences vo ON nv.OccurID = vo.OccurID
				 LEFT OUTER JOIN dbo.Paths vpth ON vo.PathID = vpth.PathID
		
		         CREATE CLUSTERED INDEX IX_3 on #appendix_3_193 (viewid ASC)
							

                    -- cobol -> 62, 1
			     IF OBJECT_ID('tempdb..#appendix_1_62') IS NOT NULL DROP TABLE #appendix_1_62
				SELECT av.ViewID,
				    COALESCE(mad.DBName,   CONVERT(VARCHAR(16), ad.DBNumber)) AS DBName,
				    COALESCE(maf.FileName, CONVERT(VARCHAR(16), af.FileNumber)) AS FileName,
				    af.FileID,
				    av.ViewName AS AdabasView
                    INTO #appendix_1_62
				FROM dbo.AdabasView av
				    LEFT OUTER JOIN dbo.AdabasFiles af ON af.FileId = av.AdabasFileID
				    LEFT OUTER JOIN dbo.AdabasDatabases ad  ON ad.AdabasDBID=af.AdabasDBID
				    LEFT OUTER JOIN dbo.MFAdabasFiles maf ON maf.FileNumber=af.FileNumber
				    LEFT OUTER JOIN dbo.MFAdabasDB mad ON mad.DBNumber= ad.DBNumber

		          CREATE CLUSTERED INDEX IX_4 on #appendix_1_62 (viewid ASC)



               IF OBJECT_ID('tempdb..#core') IS NOT NULL DROP TABLE #core
			 SELECT
 				 s.Description,
				 os.StartRow AS StatementStartRow,
				 os.StartCol AS StatementStartColumn,
				 os.EndRow AS StatementEndRow,
				 os.EndCol AS StatementEndColumn,
				 pth1.PathStr as StmtPathStr,
				 p1.ProgramName,
				 p1.ProgramID,
				 p1.ProgramTypeID,
				 pth2.PathStr AS ProgramPath,
				 p1.Ancestor,
				 o.StartRow AS ProgStartRow,
				 o.StartCol AS ProgStartCol,
				 o.EndRow AS ProgEndRow,
				 o.EndCol AS ProgEndCol,
				 sr.ResourceID,
				 sr.ResourceType
			 INTO #core
			 FROM StatementReference sr
 				 INNER JOIN OccurrencesStmt os ON sr.OccurID = os.OccurID
				 INNER JOIN Statements  s ON os.StatementType = s.StatementType
				 INNER JOIN (Select tp1.ProgramID, ProgramTypeID, OccurId, pa.AliasName as ProgramName, Ancestor from Programs tp1
                                                        INNER JOIN ProgramAliases pa on pa.ProgramId = tp1.ProgramId and pa.AliasType = 0
                                         ) p1 ON os.ProgID = p1.ProgramID
				 INNER JOIN Paths pth1 ON pth1.PathID = os.PathID
				 INNER JOIN Occurrences o ON o.OccurID = p1.OccurID
				 INNER JOIN Paths pth2 on pth2.PathID = o.PathID
			 WHERE (sr.ResourceType IN (56, 62) AND p1.ProgramTypeid = 1) --cobol
				   OR
				  (sr.ResourceType IN (193) AND p1.ProgramTypeid = 3) --natural
	
	           CREATE CLUSTERED INDEX IX_1 on #core (ResourceID ASC, ResourceType ASC, ProgramTypeid ASC)



-- final script
               IF OBJECT_ID('dbo.cacheEZViewer_Usage_Adabas') IS NOT NULL  DROP TABLE dbo.cacheEZViewer_Usage_Adabas

                SELECT DISTINCT
				   COALESCE(a1.DBName, a2.DBName, a3.DBName) AS DBName,
				   COALESCE(a1.FileName, a2.FileName, a3.FileName) AS FileName,
				   COALESCE(a1.FileID, a2.FileID, a3.FileID) AS FileID,
				   COALESCE(a2.AdabasView, a3.AdabasView) AS AdabasView,
				   a2.NaturalView,
				   a2.ViewPath,
				   a2.ViewSource,
				   a2.ViewStartRow,
				   a2.ViewStartColumn,
				    c.Description,
				    c.StatementStartRow,
				    c.StatementStartColumn,
				    c.StatementEndRow,
				    c.StatementEndColumn,
				    c.StmtPathStr,
				    c.ProgramName,
				    c.ProgramID,
				    c.ProgramTypeID,
				    c.ProgramPath,
				    c.Ancestor,
				    c.ProgStartRow,
				    c.ProgStartCol,
				    c.ProgEndRow,
				    c.ProgEndCol
                INTO dbo.cacheEZViewer_Usage_Adabas
			 FROM #core c
				 LEFT OUTER JOIN #appendix_1_56 a1  ON a1.FileID = c.ResourceID AND c.ResourceType = 56 AND c.ProgramTypeid = 1
				 LEFT OUTER JOIN #appendix_3_193 a2 ON a2.viewid = c.ResourceID AND c.ResourceType = 193 AND c.ProgramTypeid = 3
				 LEFT OUTER JOIN #appendix_1_62 a3  ON a3.viewid = c.ResourceID AND c.ResourceType = 62 AND c.ProgramTypeid = 1
			 WHERE (a1.FileID IS NOT NULL OR a2.viewid IS NOT NULL OR a3.viewid IS NOT NULL)



END