Image not found Collapse All | Expand All | Show Default


KgdGenHtmlJobDocs
DataStage Job Report
Generated 2004-06-30 10:48:02pm

 - Job Design  

Image not found

 - Job Information  

 - Job Properties (8) 

Property Value
Object Type Server 
Short Description kduke 2004-06-15 created  
Full Description Job: KgdGenHtmlJobDocs
=================================================================
Description:
This job documents DataStage jobs using JobReport.
=================================================================
Parameters:
1. FilePath - dir where all files will end up
2. LogoPath - jpg to display at top of html
3. CategoryToDoc - will document just this Category or All or one job
=================================================================
Sources:
DS_ROUTINES
=================================================================
Targets:
{FilePath}/KimD/Jobs/{JobName}.html
=================================================================
To use in next job:
none
=================================================================
Modification History
=================================================================
Developer Date Modification description
======== ========= ==============================================
kduke 2004-06-15 created
======== ========= ==============================================
 
Category UserDefined\KimD 
Multiple Instance False 
Job Version Number 40.0.0 
Hash File Cache Sharing False 
Job Control * -----------------------------------------------------------------
* Job: KgdGenHtmlJobDocs
* -----------------------------------------------------------------
* Description:
* Document DataStage Jobs.
* -----------------------------------------------------------------
* Created by: Kim Duke June 15, 2004
* -----------------------------------------------------------------
* $INCLUDE DSINCLUDE JOBCONTROL.H
* -----------------------------------------------------------------
Deffun KgdMakeDir(DirName) calling "DSU.KgdMakeDir"
DEFFUN KgdGenHtmlHeader(ObjectName,Title,LogoPath) CALLING "DSU.KgdGenHtmlHeader"
DEFFUN KgdGenHtmlDiv(DivName,DivDesc,IndentLevel) CALLING "DSU.KgdGenHtmlDiv"
DEFFUN KgdGenHtmlPicDiv(PicName) CALLING "DSU.KgdGenHtmlPicDiv"
DEFFUN KgdGenHtmlTableHeader(ColNames,ColWidths,IndentLevel) CALLING "DSU.KgdGenHtmlTableHeader"
DEFFUN KgdGenHtmlTableRows(ColValues,NoOfCols) CALLING "DSU.KgdGenHtmlTableRows"
DEFFUN KgdGenHtmlFooter(NotUsed) CALLING "DSU.KgdGenHtmlFooter"
Deffun JobReport(JobName,OutputDirectory,LogoPath,Style,Language) calling "DSU.JobReport"
* -----------------------------------------------------------------
ThisJobName = 'KgdGenHtmlJobDocs'
Title = 'DataStage Job Report'
Now = oconv(@DATE, "D4-YMD[4,2,2]"):' ':oconv(@TIME, "MTHS")
ThisDay = convert('-','',oconv(@DATE, "D4-YMD[4,2,2]"))
NotUsed = ''
* -----------------------------------------------------------------
If System(91) = 0 Then
Shell = "UNIX"
Sep = '/'
OtherSep = '\'
End Else
Shell = "DOS"
Sep = '\'
OtherSep = '/'
End
convert OtherSep to Sep in LogoPath
convert OtherSep to Sep in FilePath
* -----------------------------------------------------------------
* used in JobReport routine
* -----------------------------------------------------------------
OutputDirectory = FilePath:"KimD":Sep:"Jobs":Sep:ThisDay
Style = 1
Language = "English"
* -----------------------------------------------------------------
HashFile = "DS_JOBS"
open HashFile to DsJobs else
Call DSLogInfo("Error: Unable to open " : HashFile, ThisJobName)
goto TheEnd
end
HashFile = "DS_JOBOBJECTS"
open HashFile to DsJobObjects else
Call DSLogInfo("Error: Unable to open " : HashFile, ThisJobName)
goto TheEnd
end
* -----------------------------------------------------------------
Call DSLogInfo("KgdMakeDir(":OutputDirectory:")", ThisJobName)
x = KgdMakeDir(OutputDirectory)
openpath OutputDirectory to JobDir else
Call DSLogInfo("Error: Unable to open " : OutputDirectory, JobName)
goto TheEnd
end
* -----------------------------------------------------------------
* Get JobNo
* -----------------------------------------------------------------
RecCnt = 0
CategoryList = ''
JobList = ''
if downcase(CategoryToDoc) = 'all' then
* -----------------------------------------------------------------
* loop thru all jobs
* -----------------------------------------------------------------
cmd = "SSELECT DS_JOBS"
cmd := ' UNLIKE "\..." TO 9'
Call DSLogInfo(cmd, ThisJobName)
execute cmd capturing output
Call DSLogInfo(output, ThisJobName)
loop while readnext JobName from 9
gosub DocJob
repeat
* -----------------------------------------------------------------
end else
JobName = CategoryToDoc
read JobRec from DsJobs, JobName then
JobNo = JobRec<5>
ObjId = 'J\':JobNo:'\ROOT'
read ObjRec from DsJobObjects, ObjId then
JobType = ObjRec<40>
if JobType <> '2' then
* not a sequence
gosub DocJob
end else
gosub DocJob
* -----------------------------------------------------------------
* loop thru dependent job names
* -----------------------------------------------------------------
NoJobs = dcount(ObjRec<31>, @VM)
for i = 1 to NoJobs
DependJob = ObjRec<31,i>
DependType = ObjRec<32,i>
if DependType = '0' then
JobName = DependJob
gosub DocJob
end
next i
end
end
end else
* -----------------------------------------------------------------
* loop thru jobs by category
* -----------------------------------------------------------------
cmd = "SSELECT DS_JOBS"
cmd := ' UNLIKE "\..."'
cmd := ' AND WITH CATEGORY LIKE "':CategoryToDoc:'..." TO 9'
Call DSLogInfo(cmd, ThisJobName)
execute cmd capturing output
Call DSLogInfo(output, ThisJobName)
loop while readnext JobName from 9
gosub DocJob
repeat
* -----------------------------------------------------------------
end
end
gosub GenIndex
ExitRtn:
goto TheEnd
* -----------------------------------------------------------------
DocJob:
* -----------------------------------------------------------------
* generate html for each job in sequence
* -----------------------------------------------------------------
read JobToDocRec from DsJobs, JobName then
RecCnt += 1
JobList<1, RecCnt> = JobName:'.html'
Category = JobToDocRec<3>
CategoryList<1, RecCnt> = Category
* -----------------------------------------------------------------
* generate html here
* -----------------------------------------------------------------
Call DSLogInfo("JobReport(":JobName:",OutputDirectory,LogoPath,Style,Language)", ThisJobName)
Junk = JobReport(JobName, OutputDirectory, LogoPath, Style, Language)
* -----------------------------------------------------------------
* fix html here
* -----------------------------------------------------------------
HtmlId = JobName:'.html'
read JobHtml from JobDir, HtmlId then
if trim(JobHtml<56>) = '' and trim(JobHtml<57>) = '' then
Call DSLogInfo('Adding picdiv to ':HtmlId:' file in ':OutputDirectory:'.', JobName)
* -----------------------------------------------------------------
Call DSLogInfo('KgdGenHtmlPicDiv(':JobName:')', JobName)
GenHtml = KgdGenHtmlPicDiv(JobName)
HtmlDoc = GenHtml
NewJobHtmlStart = ''
NewJobHtmlEnd = JobHtml
for Line=1 to 57
NewJobHtmlStart = JobHtml
del NewJobHtmlEnd<58-Line>
next Line
NewJobHtml = NewJobHtmlStart : GenHtml : NewJobHtmlEnd
* -----------------------------------------------------------------
Call DSLogInfo('Adding title to ':HtmlId:' file in ':OutputDirectory:'.', JobName)
Call DSLogInfo('KgdGenHtmlHeader(':JobName:',':Title:',':LogoPath:')', JobName)
GenHtml = KgdGenHtmlHeader(JobName,Title,LogoPath)
HtmlDoc = GenHtml
* NewJobHtml = JobHtml
del NewJobHtml<1>
NoOfNewLines = dcount(HtmlDoc, @FM)
for delCnt=NoOfNewLines to 9 step -1
del HtmlDoc
next delCnt
* -----------------------------------------------------------------
NewJobHtml = HtmlDoc : @FM : NewJobHtml
write NewJobHtml on JobDir, HtmlId else
Call DSLogInfo('Error: Unable to write to ':HtmlId:' file in ':OutputDirectory:'.', JobName)
end
* abort
end else
Call DSLogInfo('No ':HtmlId:' file in ':OutputDirectory:'.', JobName)
end
end
return
* -----------------------------------------------------------------
* index html page to all Jobs just generated
* -----------------------------------------------------------------
GenIndex:
if RecCnt > 1 then
JobName = CategoryToDoc:'_Index'
HtmlDoc = ''
Call DSLogInfo('KgdGenHtmlHeader(':JobName:',':Title:',':LogoPath:')', JobName)
GenHtml = KgdGenHtmlHeader(JobName,Title,LogoPath)
HtmlDoc = GenHtml

* -----------------------------------------------------------------
* start jobinfo division
* -----------------------------------------------------------------
DivName = "jobindex"
DivDesc = "Job Index "
IndentLevel = 0
Call DSLogInfo('KgdGenHtmlDiv(':DivName:',':DivDesc:',':IndentLevel:')', JobName)
GenHtml = KgdGenHtmlDiv(DivName,DivDesc,IndentLevel)
HtmlDoc := @FM:GenHtml
HtmlDoc<-1> = '
'
* -----------------------------------------------------------------
* start jobinfo table
* -----------------------------------------------------------------
ColNames = "Job"
ColNames<2> = "Category"
* -----------------------------------------------------------------
ColWidths = "50"
ColWidths<-1> = "50"
* -----------------------------------------------------------------
IndentLevel = 1
Call DSLogInfo('KgdGenHtmlTableHeader(':ColNames:',':ColWidths:',':IndentLevel:')', JobName)
GenHtml = KgdGenHtmlTableHeader(ColNames,ColWidths,IndentLevel)
HtmlDoc := @FM:GenHtml
* -----------------------------------------------------------------
ColValues = ""
ColValues<1> = JobList
ColValues<2> = CategoryList
QuoteFlag = @false
NoOfCols = dcount(ColNames, @FM)
Call DSLogInfo('KgdGenHtmlTableRows(ColValues,':NoOfCols:')', JobName)
GenHtml = KgdGenHtmlTableRows(ColValues,NoOfCols)
HtmlDoc := @FM:GenHtml
* -----------------------------------------------------------------
* close table and divisions
* -----------------------------------------------------------------
HtmlDoc<-1> = ''
* HtmlDoc<-1> = ''

* -----------------------------------------------------------------
* sort by category
* -----------------------------------------------------------------
if downcase(CategoryToDoc) = "all" then
* -----------------------------------------------------------------
* start jobinfo division
* -----------------------------------------------------------------
DivName = "jobcatindex"
DivDesc = "Job Index by Category"
IndentLevel = 0
Call DSLogInfo('KgdGenHtmlDiv(':DivName:',':DivDesc:',':IndentLevel:')', JobName)
GenHtml = KgdGenHtmlDiv(DivName,DivDesc,IndentLevel)
HtmlDoc := @FM:GenHtml
HtmlDoc<-1> = '
'
* -----------------------------------------------------------------
cmd = "SSELECT DS_JOBS"
cmd := ' UNLIKE "\..."'
cmd := ' BY CATEGORY TO 9'
Call DSLogInfo(cmd, JobName)
execute cmd capturing output
Call DSLogInfo(output, JobName)
* -----------------------------------------------------------------
JobList = ''
CategoryList = ''
RecCnt = 0
loop while readnext JobName from 9
read JobRec from DsJobs, JobName then
RecCnt += 1
JobList<1, RecCnt> = JobName:'.html'
Category = JobRec<3>
CategoryList<1, RecCnt> = Category
end
repeat
* -----------------------------------------------------------------
* start jobinfo table
* -----------------------------------------------------------------
ColNames = "Category"
ColNames<2> = "Job"
* -----------------------------------------------------------------
ColWidths = "50"
ColWidths<-1> = "50"
* -----------------------------------------------------------------
IndentLevel = 1
Call DSLogInfo('KgdGenHtmlTableHeader(':ColNames:',':ColWidths:',':IndentLevel:')', JobName)
GenHtml = KgdGenHtmlTableHeader(ColNames,ColWidths,IndentLevel)
HtmlDoc := @FM:GenHtml
* -----------------------------------------------------------------
ColValues = ""
ColValues<1> = CategoryList
ColValues<2> = JobList
QuoteFlag = @false
NoOfCols = dcount(ColNames, @FM)
Call DSLogInfo('KgdGenHtmlTableRows(ColValues,':NoOfCols:')', JobName)
GenHtml = KgdGenHtmlTableRows(ColValues,NoOfCols)
HtmlDoc := @FM:GenHtml
* -----------------------------------------------------------------
* close table and divisions
* -----------------------------------------------------------------
HtmlDoc<-1> = ''
end
* -----------------------------------------------------------------
* close table and divisions
* -----------------------------------------------------------------
HtmlDoc<-1> = ''
HtmlDoc<-1> = '
'

JobName = CategoryToDoc:'_Index'
* -----------------------------------------------------------------
* footer
* -----------------------------------------------------------------
Call DSLogInfo('KgdGenHtmlFooter(':NotUsed:')', JobName)
GenHtml = KgdGenHtmlFooter(NotUsed)
HtmlDoc := @FM:GenHtml
* -----------------------------------------------------------------
* write documents to disk
* -----------------------------------------------------------------
HtmlId = convert('\/','__',JobName):'.html'
Call DSLogInfo("Writing " : HtmlId :" to " : OutputDirectory, JobName)
write HtmlDoc on JobDir, HtmlId else
Call DSLogInfo("Error: Unable to write to " : OutputDirectory, JobName)
goto TheEnd
end
end
return
* -----------------------------------------------------------------
ErrRtn:
Call DSLogInfo(ErrMsg, ThisJobName)
* -----------------------------------------------------------------
TheEnd:  

 - Parameters (3) 

Parameter Name Prompt Default Value Help Text
FilePath  FilePath  ./   
LogoPath  LogoPath  ../OurLogo.jpg   
CategoryToDoc  Category or All  All   

 - Stages (0) 



 - Source Stages (0) 


 - Processing Stages (0) 


 - Target Stages (0) 





Ascential and DataStage are trademarks of Ascential Software Corporation or its affiliates and may be registered in the United States or other jurisdictions.
For questions or comments regarding this utility, contact tony.curcio@ascentialsoftware.com.