LANGUAGE SQL
BEGIN


			            BEGIN
					      COMMIT;
						  TRUNCATE TABLE cacheEZViewer_Usage_ProcInJob IMMEDIATE ;
			              --DELETE FROM cacheEZViewer_Usage_ProcInJob ;
			            END;


                        LOCK TABLE  cacheEZViewer_Usage_ProcInJob IN EXCLUSIVE MODE ;-- lock table
						INSERT INTO cacheEZViewer_Usage_ProcInJob
						SELECT DISTINCT JobID, JobName, MemberName, CA7JobName, CA7JobId, JobPath,
							  ProcName, ProcID, ProcPath, ProcStartRow, ProcStartCol, ProcEndRow, ProcEndCol,
							  StepName, StepPath, stepStartRow, DataSetName, GenerationNumber, DataSetID, IsTemp, DataSetMemberName,
							  Class, DDName, DDPath, DDStartRow, Status, NormalDisposition, IsDummy,  OverridingDDID
						FROM (   -- steps that invoke a proc
							   SELECT jj.JobID,
									jj.JobName,
									jj.MemberName,
									ca.JOB_NAME AS CA7JobName,
									ca.JobId AS CA7JobId,
									JobPosition.ResourceFilePath AS JobPath,
									jproc.ProcName,
									jproc.ProcID,
									----unexisting proc has 0 in JCLPosition for column ResourceFilePath
									NULLIF(ProcPosition.ResourceFilePath, '0') AS ProcPath,
									ProcPosition.StartRow AS ProcStartRow,
									ProcPosition.StartCol AS ProcStartCol,
									ProcPosition.EndRow AS ProcEndRow,
									ProcPosition.EndCol AS ProcEndCol,
									js.StepName,
									jpos.ResourceFilePath AS StepPath,
									jpos.StartRow AS stepStartRow,
									jpds.DataSetName,
									CASE
									    WHEN jpds.IsGeneration = 1
									    THEN jpds.GenerationNumber
									    ELSE NULL
									END AS GenerationNumber,
									jpds.DataSetID,
									jpds.IsTemp,
									jref.MemberName AS DataSetMemberName,
									jsds.Class,
									jd.DDName,
									CASE
									    WHEN jd.OverridingDDID > 0 THEN NULLIF(DDPositionOver.ResourceFilePath, '0')
									    ELSE NULLIF(DDPosition.ResourceFilePath, '0')
									END AS DDPath,
									CASE
									    WHEN jd.OverridingDDID > 0  THEN DDPositionOver.StartRow
									    ELSE DDPosition.StartRow
									END AS DDStartRow,
									jst.Description AS Status,
									jdisp.Description AS NormalDisposition,
									CASE
									    WHEN jd.DDID IS NULL
									    THEN NULL
									    ELSE jd.IsDummy
									END AS IsDummy,
									CASE
									    WHEN jd.DDID IS NULL
									    THEN NULL
									    ELSE jd.OverridingDDID
									END AS OverridingDDID
							   FROM JCLStep js
								   INNER JOIN JCLProc jproc ON jproc.ProcID = js.CalledProcID
								   INNER JOIN JCLPosition jpos ON jpos.PositionID = js.PositionID
								   INNER JOIN JCLJob jj ON js.JobID = jj.JobID
								   INNER JOIN JCLPosition AS ProcPosition ON ProcPosition.PositionID = jproc.PositionID
								   INNER JOIN JCLPosition AS JobPosition ON jj.PositionID = JobPosition.PositionID
								   LEFT OUTER JOIN ca7_jobs ca ON ca.JCL_MEMBER = jj.MemberName
								   LEFT OUTER JOIN JCLDD jd ON jd.StepID = js.StepID
								   LEFT OUTER JOIN JCLDDRef jref ON jref.DDID = jd.DDID
								   LEFT OUTER JOIN JCLPhysicalDataSet jpds ON jpds.DataSetID = jref.DataSetID AND (jpds.IsInstream <> 1 OR jpds.IsInstream IS NULL)
								   LEFT OUTER JOIN JCLSpoolDataSet jsds ON jsds.SpoolID = jref.SpoolDataSetID
								   LEFT OUTER JOIN JCLStatusType jst ON jref.Status = jst.JCLStatusType
								   LEFT OUTER JOIN JCLDisposition jdisp ON jref.NormalDisposition = jdisp.JCLDispositionType
								   LEFT OUTER JOIN JCLPosition AS DDPosition ON DDPosition.PositionID = jd.PositionID
								   LEFT OUTER JOIN JCLDD AS Overr ON jd.OverridingDDID = Overr.DDID
								   LEFT OUTER JOIN JCLPosition AS DDPositionOver ON DDPositionOver.PositionID = Overr.PositionID
							   WHERE js.CalledPgmID = 0
								    AND jproc.ProcName <> '0'
								
						)s;
						COMMIT;

END 
