AS
BEGIN
SET NOCOUNT ON


IF OBJECT_ID('dbo.cacheEZViewer_Usage_JobDS') IS NOT NULL  DROP TABLE dbo.cacheEZViewer_Usage_JobDS
SELECT      c.JobID, c.JobName, c.MemberName, c.CA7JobName, c.CA7JobId, c.JobPath,
            c.DataSetName, c.DataSetMemberName, c.GenerationNumber,
            c.DataSetID, c.IsTemp, c.StepName, c.StepPath, c.stepStartRow, c.DDName
INTO dbo.cacheEZViewer_Usage_JobDS
FROM (
      SELECT DISTINCT
            JCLJob.JobID,
            JCLJob.JobName,
            JCLJob.MemberName,
            ca7_jobs.JOB_NAME AS CA7JobName,
            ca7_jobs.JobId AS CA7JobId,
            JobPosition.ResourceFilePath AS JobPath,
	       x.DataSetName,
            x.DataSetMemberName,
            CASE
                WHEN x.IsGeneration = '1'
                THEN x.GenerationNumber
                ELSE NULL
            END AS GenerationNumber,
            x.DataSetID,
            x.IsTemp,
            JCLStep.StepName,
            JCLPosition.ResourceFilePath AS StepPath,
            JCLPosition.StartRow AS stepStartRow,
            x.DDName
     FROM dbo.JCLStep
          INNER JOIN dbo.JCLPosition ON JCLPosition.PositionID = JCLStep.PositionID
          INNER JOIN dbo.JCLJob ON JCLStep.JobID = JCLJob.JobID
          LEFT OUTER JOIN dbo.ca7_jobs ON ca7_jobs.JCL_MEMBER = JCLJob.MemberName
          INNER JOIN dbo.JCLPosition AS JobPosition ON JCLJob.PositionID = JobPosition.PositionID
	     LEFT OUTER JOIN
	                     ( SELECT jd.JobID,
					          jd.StepID,
	                              jd.DDName,
							jdref.MemberName AS DataSetMemberName,
							jpds.DataSetName,
							jpds.IsGeneration,
                                   jpds.GenerationNumber,
                                   jpds.DataSetID,
                                   jpds.IsTemp,
							jpds.IsInstream
	                      FROM  dbo.JCLDD jd
                                 INNER JOIN dbo.JCLDDRef jdref ON jdref.DDID = jd.DDID
                                 INNER JOIN dbo.JCLPhysicalDataSet jpds ON jpds.DataSetID = jdref.DataSetID

                             UNION

					
                            SELECT
							 istm.JobID,
							 istm.StepID,
							 idu.DDName AS DDName,
                                    NULL AS DataSetMemberName,
							 jpds.DataSetName,
							 jpds.IsGeneration,
							 jpds.GenerationNumber,
							 jpds.DataSetID,
							 jpds.IsTemp,
							 jpds.IsInstream
					   FROM  dbo.JCLIDCAMSStatements istm
							 INNER JOIN dbo.JCLIDCAMSDatasetUsages idu ON idu.IDCAMSStatementID = istm.IDCAMSStatementID
							 INNER JOIN dbo.JCLPhysicalDataSet jpds ON jpds.DataSetID =  idu.DataSetID		
                       ) x ON x.JobID = JCLJob.JobID AND  x.StepID = JCLStep.StepID
     WHERE
	     (x.IsInstream <> 1
	      OR
		 x.IsInstream IS NULL)
    )c 			

	
END