LANGUAGE SQL
sp:BEGIN   

	BEGIN
      COMMIT; 
      TRUNCATE TABLE cacheEZViewer_Usage_JobDS ;
    END;
    COMMIT;  				     
  
	LOCK TABLE  cacheEZViewer_Usage_JobDS IN EXCLUSIVE MODE ;
	INSERT INTO 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
	FROM (
	      SELECT DISTINCT
	            jj.JobID,
	            jj.JobName,
	            jj.MemberName,
	            ca.JOB_NAME AS CA7JobName,
	            ca.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,
	            js.StepName,
	            jp.ResourceFilePath AS StepPath,
	            jp.StartRow AS stepStartRow,
	            x.DDName
	     FROM JCLStep js
	          INNER JOIN JCLPosition jp ON jp.PositionID = js.PositionID
	          INNER JOIN JCLJob jj ON js.JobID = jj.JobID
	          LEFT OUTER JOIN ca7_jobs ca ON UPPER(ca.JCL_MEMBER) = UPPER(jj.MemberName)
	          --LEFT OUTER JOIN ca7_jobs ca ON COLLATION_KEY(ca.JCL_MEMBER, 'UCA400R1_S1')  =  COLLATION_KEY(jj.MemberName, 'UCA400R1_S1') 
	          INNER JOIN JCLPosition AS JobPosition ON jj.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  JCLPhysicalDataSet jpds
		                            INNER JOIN  JCLDDRef jdref ON jpds.DataSetID = jdref.DataSetID
		                            INNER JOIN  JCLDD jd ON jdref.DDID = jd.DDID
	                             
	                           UNION ALL
	
	                            SELECT
										 istm.JobID,
										 istm.StepID,
										 idu.DDName AS DDName,
			                             CAST(NULL AS VARCHAR(50)) AS DataSetMemberName,
										 jpds.DataSetName,
										 jpds.IsGeneration,
										 jpds.GenerationNumber,
										 jpds.DataSetID,
										 jpds.IsTemp,
										 jpds.IsInstream
						   FROM   JCLIDCAMSStatements istm
								 INNER JOIN  JCLIDCAMSDatasetUsages idu ON idu.IDCAMSStatementID = istm.IDCAMSStatementID
								 INNER JOIN  JCLPhysicalDataSet jpds ON jpds.DataSetID =  idu.DataSetID	 	
	                       ) x ON x.JobID = jj.JobID AND  x.StepID = js.StepID
	     WHERE
		     (x.IsInstream <> 1
		      OR
			 x.IsInstream IS NULL)
	    
	    )c ;	
	    COMMIT;		
END 