![]() |
Collapse All | Expand All | Show Default |
| KgdGenHtmlJobDocs
DataStage Job Report Generated 2004-06-30 10:48:02pm |
|  - Job Design   |
|
|---|
|  - 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 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)  |
| No stages |
|  - Processing Stages (0)  |
| No stages |
|  - Target Stages (0)  |
| No stages |
|  - Source Stages (0)  |
|  - Processing Stages (0)  |
|  - Target Stages (0)  |