shub2204
新的用户
已加入:2020年5月13日 帖子:19 地点:印度
|
|
|
|
这是完整的代码。
码: |
/ * ------------------------------------------------ -------------------- * /
/ * CAPGHLTC-凯捷健康检查。 */
/* 检查来自DD 工作的操作以及来自的应用程序 */
/* DD 应用和电子邮件将报告给Capgemini。 */
/ *输入 */
/ * ----- */
/* */
/* 工作 DD - list of jobs */
/ * ------- */
/* Word 1 -星期几矩阵MTWTFSS,将星期几替换为 */
/* 句号跳过这一天的检查。 i.e. */
/* MTWTFS。星期日不做检查。 */
/* Word 2 -TWS应用程序名称。 */
/* Word 3 -TWS作业名称或“全部”以检查并列出一个作业中的所有作业 */
/* Application. 完全没有必要,因为 */
/* ZLAST将检查上一个作业。 */
/* */
/ * 应用 DD -应用清单 */
/ * ------- */
/* Word 1 -星期几矩阵MTWTFSS,将星期几替换为 */
/* 句号跳过这一天的检查。 i.e. */
/* MTWTFS。星期日不做检查。 */
/* Word 2 -TWS应用程序名称。 */
/* Word 3 -与这项工作的时间表有关的IA日期。 */
/* 0-与此工作IA日期相同。 */
/* n-该工作IA之前的天数-n。 */
/* Word 4+-报告要检查的描述。 */
/* */
/ * 高动态范围 DD - HTML Header */
/ * ------ */
/ *此处的代码位于生成的报告的开头 */
/ *定义以HTML格式发送的电子邮件。 */
/* */
/ * TLR DD - HTML Trailer */
/ * ------ */
/ *此处的代码位于生成的报告的末尾, */
/ *定义以HTML格式发送的电子邮件。 */
/* */
/ *参数 */
/ * ---------- */
/ * PHASE应该由WAPL代码调用include成员来设置。 */
/* */
/ *输出 */
/ * ------ */
/* 报告 DD */
/ * --------- */
/ *此代码随后通过电子邮件发送的HTML报告 */
/* */
/ *日期 Who Description */
/ * ---------- ------ -------------------------------- ---------------- * /
/ * 14/05/2020 BBARED新的WAPL代码 */
/ * 18/05/2020 BBARED用OJOBS和OAPPS替换了对象OBJ, */
/* refined code. */
/ * 19/05/2020 BBARED将OJOBS循环移动到pevent重复项。 * /
/ * 2020年6月12日,舒罕·楚汉 */
/* 增加了计算延迟和提前运行时间的逻辑。 * /
/* prpmd045和prpmd220时间表。 */
/ * ------------------------------------------------ -------------------- * /
/ * ------------------------------------------------ -------------------- * /
/ *获取今天的数字1 =星期一 */
/ * ------------------------------------------------ -------------------- * /
今天的变量集=日期('O')
VARSET 做WNUM = DATE('B',"!TODAY",'O')//7 + 1
/ * ------------------------------------------------ -------------------- * /
/ *设置邮件服务器 */
/ * ------------------------------------------------ -------------------- * /
选项邮件服务器(royalmail.com)
/ * ================================================= =================== * /
/ *第1部分-检查作业 */
/ * ================================================= =================== * /
VARSET RUNDT =翻译('GH/EF/ABCD',"!CYMD",'ABCDEFGH')
VARSET RUNTM =翻译('AB:CD:EF',"!CHHMMSS",'ABCDEF')
VARSET RUN = "!RUNDT !RUNTM"
/*
写报告"<h1>报告由Job!OJOBNAME!OJJESNO!RUN产生</h1>"
*/
/ * ------------------------------------------------ -------------------- * /
/ *在HTML中建立表格标题 */
/ * ------------------------------------------------ -------------------- * /
写报告"<h1>Job 状态</h1>"
写报告"<table>"
写报告" <tr>"
写报告" <th>Application Name</th>"
写报告" <th>Input Arrival<br>Date/Time</th>"
写报告" <th>Operation<br>Number</th>"
写报告" <th>Job Name</th>"
写报告" <th>Status</th>"
写报告" <th>Completed<br>Date/Time</th>"
写报告" </tr>"
/ * ------------------------------------------------ -------------------- * /
/ *将作业DD读取到对象作业中,然后遍历它,发出一个 */
/ * list命令用于每个作业以列出作业。 */
/ * ------------------------------------------------ -------------------- * /
读取作业对象(JOBS) COUNT(0)
/ *循环输入作业 */
做 J = 1到!@JOBS
VARSET DAYS = WORD("@V(@JOBS-!J.)",1)
VARSET ADID = WORD("@V(@JOBS-!J.)",2)
VARSET JOBNAME = WORD("@V(@JOBS-!J.)",3)
IF "!JOBNAME" = "ALL" THEN / *列出appl中的所有作业? * /
VARSET JOBNAME = "*" /* 将工作名称设置为wildcrd * /
VARSET RUNCHECK = SUBSTR("!DAYS","!DOWNUM",1)
IF "!RUNCHECK" /= "." THEN / *我们今天检查工作吗? * /
做
/ *列出标记为CHKJOB的作业,以供以后测试 */
CHKJOB: LIST CPOPCOM ADID(!ADID) JOBNAME(!JOBNAME)
IF @CMD(CHKJOB.EQ.4) THEN / *找不到,告诉我们 */
做
写报告" <tr style=""background-color: red;"">"
写报告" <td>!ADID</td>"
写报告" <td> </td>"
写报告" <td> </td>"
写报告" <td>!JOBNAME</td>"
写报告" <td>Not found</td>"
写报告" <td> </td>"
写报告" </tr>"
结束
IF @CMD(CHKJOB.EQ.0) THEN / *找到,列出对象 */
做
LIST CPOPCOM ADID(!ADID) JOBNAME(!JOBNAME) OBJECT(OJOBS)
结束
SETMAX政策(0) /* Set RC back to 0 */
结束 /* End runcheck */
结束 /* End J loop */
/ * ------------------------------------------------ -------------------- * /
/* Loop object 欧宝 to produce report of jobs */
/ * ------------------------------------------------ -------------------- * /
做 X = 1到!@OJOBS
VARSET ADID @V(@OJOBS!X.-CPOPADI)
VARSET IA @V(@OJOBS!X.-CPOPIA)
VARSET IAD =翻译('EF/CD/AB GH:IJ',"!IA",'ABCDEFGHIJ')
VARSET OPNO @V(@OJOBS!X.-CPOPNO)
VARSET JOBNAME @V(@OJOBS!X.-CPOPJBN)
VARSET STATUS @V(@OJOBS!X.-CPOPST)
VARSET AE @V(@OJOBS!X.-CPOPAE)
VARSET AED =翻译('EF/CD/AB GH:IJ',"!AE",'ABCDEFGHIJ')
/ * ------------------------------------------------ ------------------ * /
/ *当状态为C时,作业已完成,因此在* /中添加绿色行
/* HTML 表. 如果有其他状态,请添加红色行。 */
/ * ------------------------------------------------ ------------------ * /
IF "!STATUS" = "C" THEN
做
写报告" <tr style=""background-color: lime;"">"
写报告" <td>!ADID</td>"
写报告" <td>!IAD</td>"
写报告" <td>!OPNO</td>"
写报告" <td>!JOBNAME</td>"
写报告" <td>Complete</td>"
写报告" <td>!AED</td>"
写报告" </tr>"
结束
ELSE
做
写报告" <tr style=""background-color: red;"">"
写报告" <td>!ADID</td>"
写报告" <td>!IAD</td>"
写报告" <td>!OPNO</td>"
写报告" <td>!JOBNAME</td>"
写报告" <td>!STATUS</td>"
写报告" <td> </td>"
写报告" </tr>"
结束
结束 /* 结束 做 X LOOP */
/ * ------------------------------------------------ -------------------- * /
/ *添加HTML标记以结束表定义 */
/ * ------------------------------------------------ -------------------- * /
写报告"</table>"
写报告"<br>"
/ * ================================================= =================== * /
/ *第2部分-检查应用程序 */
/ * ================================================= =================== * /
/ * ------------------------------------------------ -------------------- * /
/ *在HTML中建立表格标题 */
/ * ------------------------------------------------ -------------------- * /
写报告"<h1>申请完成</h1>"
写报告"<table>"
写报告" <tr>"
写报告" <th>Description of check</th>"
写报告" <th>Application Name</th>"
写报告" <th>Input Arrival<br>Date/Time</th>"
写报告" <th>Status</th>"
写报告" <th>Start Time<br>Date/Time</th>"
写报告" <th>Completed<br>Date/Time</th>"
写报告" </tr>"
/ * ------------------------------------------------ -------------------- * /
/ *将APPS DD读入对象APPS,然后遍历它,发出一个 */
/ *为每个应用程序选择commadn,然后构建报告表行。 * /
/ * ------------------------------------------------ -------------------- * /
阅读应用程序对象(APPS) COUNT(0)
做 X = 1到!@APPS
VARSET COLOR ="LIME"
VARSET DAYS = WORD("@V(@APPS-!X.)",1)
VARSET INADID = WORD("@V(@APPS-!X.)",2)
VARSET DAY = WORD("@V(@APPS-!X.)",3)
VARSET DESCR = SUBWORD("@V(@APPS-!X.)",4)
VARSET RUNCHECK = SUBSTR("!DAYS","!DOWNUM",1)
IF "!RUNCHECK" /= "." THEN
做
IF "!DAY" = "0" THEN
做
VARSET FINDIA = "!OYMD1"||"*"
结束
ELSE
做
VARSET OFFSET = "-"||"!DAY"
VARDATE FINDIA BASE(!OYMD1) OFFSET(!OFFSET)
VARSET FINDIA = "!FINDIA"||"*"
结束
SELECT CPOC ADID(!INADID) IA(!FINDIA) STATUS(*) OBJECT(OAPPS)
IF @CMD(EQ.0) THEN
做
VARSET ADID @V(@OAPPS-CPOCADI) /* ADID OF OBJECT */
VARSET IA @V(@OAPPS-CPOCIA) /* IA OF OBJECT */
VARSET IAD =翻译('EF/CD/AB GH:IJ',"!IA",'ABCDEFGHIJ')
VARSET STATUS @V(@OAPPS-CPOCST) /* STATUS OF OBJCT */
VARSET AC @V(@OAPPS-CPOCAC) /* COMPLETE DT/TM */
VARSET ACD =翻译('EF/CD/AB GH:IJ',"!AC",'ABCDEFGHIJ')
VARSET AA @V(@OAPPS-CPOCAA) /* COMPLETE DT/TM */
VARSET AAS =翻译('EF/CD/AB GH:IJ',"!AA",'ABCDEFGHIJ')
/ * ------------------------------------------------ ---------- * /
IF "!ADID" = "PRPMD045" THEN
做
VARSET DATE = SUBSTR("!AC",5,2)
VARSET CDATE = DATE('S')
VARSET CDAY = SUBSTR("!CDATE",3,6)
VARSET JDAY = SUBSTR("!AC",1,6)
VARSET HOUR = SUBSTR("!AC",7,2)
VARSET MINT = SUBSTR("!AC",9,2)
IF "!CDAY" > "!JDAY" THEN 做
IF "!MINT" = '00' THEN 做
VARSET H1 = 24-"!HOUR"
VARSET M1 = "!MINT"
VARSET ACD = "!ACD 送出的文件!H1 HR!M1 MIN提早"
结束
ELSE 做
VARSET H1 = 23-"!HOUR"
VARSET M1 = 60-"!MINT"
VARSET ACD = "!ACD 送出的文件!H1 HR!M1 MIN提早"
结束
END
ELSE 做
VARSET H1 ="!HOUR"
VARSET M1 ="!MINT"
VARSET ACD ="!ACD !H1 HR!M1 MIN延迟的文件"
VARSET COLOR ="#FFBF00"
END
结束
/ * ------------------------------------------------ -------------------- * /
/ *计算时间 通过较早发送过的文件* /
/ *或更早,星期一/星期二(即01)的时间有所不同:30 HRS */
/ *夏令时和休息日 0000 HRS BST. */
/ * ------------------------------------------------ -------------------- * /
IF "!ADID" = "PRPMD220" THEN
做
VARSET DATE = SUBSTR("!AC",5,2)
VARSET CDATE = DATE('S')
VARSET CDAY = SUBSTR("!CDATE",3,6)
VARSET JDAY = SUBSTR("!AC",1,6)
VARSET HOUR = SUBSTR("!AC",7,2)
VARSET MINT = SUBSTR("!AC",9,2)
IF "!DOWNUM" = "2" | "!DOWNUM" = "3" THEN
DO
/ * ------------------------------------------------ -------------------- * /
/ *上次发送文件时的情况 日期为哪个日期* /
/ *调用此WAPL的JCL。 */
/ * ------------------------------------------------ -------------------- * /
IF "!CDAY" > "!JDAY" THEN 做
IF "!MINT" = "00" THEN 做
VARSET H1 = 25-"!HOUR"
VARSET M1 = "!MINT" + 30
VARSET ACD = "!ACD 送出的文件!H1 HR!M1 MIN提早"
结束
别做
VARSET H1 = 24-"!HOUR"
VARSET M1 = 60-"!MINT" + 30
IF "!M1" > "60" THEN 做
VARSET H1 ="!H1" + 1
VARSET M1 ="!M1" - 60
结束
VARSET ACD = "!ACD 送出的文件!H1 HR!M1 MIN提早"
结束
END
/ * ------------------------------------------------ -------------------- * /
/ *与文件在同一日期发送文件的情况 */
/ *调用此WAPL的JCL。 */
/ * ------------------------------------------------ -------------------- * /
ELSE 做
VARSET H1 ="!HOUR"
VARSET M1 ="!MINT"
IF (("!H1" = "01") & ("!M1" <= "30")) THEN 做
VARSET M1 =60- "!M1"
VARSET ACD ="!ACD 文件0!M1分钟"
结束
否则(("!H1" = "00") & ("!M1" <= "30")) THEN 做
VARSET M1 = 30 - "!M1"
VARSET ACD = "!ACD FILES 01 HR !M1 MIN EARLY"
结束
ELSE IF "!H1" = "00" & "!M1" > "30" THEN 做
VARSET M1 = 60 - "!M1"
VARSET ACD = "!ACD FILES 00 HR !M1 MIN EARLY"
结束
否则"!H1" = "01" & "!M1" > "30" THEN 做
VARSET M1 = 30 - "!M1"
VARSET ACD = "!ACD 文件延迟了0 HR!M1 MIN"
VARSET COLOR = "#FFBF00"
结束
否则"!H1" >='2' & "!M1" > '30' THEN 做
VARSET M0 = "!M1" - 30
VARSET COLOR ="#FFBF00"
VARSET H0 = "!H1" - 1
VARSET ACD ="!ACD文件被延迟
!H0 HR !M0 MIN"
结束
否则"!H1" >='2' & "!M1" <= '30' THEN 做
VARSET M0 = "!M1" + 30
VARSET H0 = "!H1" - 2
VARSET COLOR ="#FFBF00"
VARSET ACD ="!ACD文件延迟
!H0 HR !M0 MIN"
结束
END
END
/ * ------------------------------------------------ -------------------- * /
/ *以在星期一和星期二以外的其他日子发送文件为例* /
/ *握手时间为0000 HRS BST。 */
/ * ------------------------------------------------ -------------------- * /
ELSE 做
IF "!CDAY" > "!JDAY" THEN 做
IF "!MINT" = "00" THEN 做
VARSET H1 = 24-"!HOUR"
VARSET M1 = "!MINT"
VARSET ACD = "!ACD 送出的文件!H1 HR!M1 MIN提早"
结束
ELSE 做
VARSET H1 = 23-"!HOUR"
VARSET M1 = 60-"!MINT"
VARSET ACD = "!ACD 送出的文件!H1 HR!M1 MIN提早"
结束
END
ELSE 做
VARSET H1 ="!HOUR"
VARSET M1 ="!MINT"
VARSET COLOR ="#FFBF00"
VARSET ACD ="!ACD !H1 HR!M1 MIN延迟的文件"
END
结束
结束
/ * ------------------------------------------------ ---------- * /
/ *状态为C时,表示申请已完成 */
/ *绿色行到我们的HTML表格。 其他任何状态添加 */
/* RED ROW. */
/ * ------------------------------------------------ ---------- * /
IF "!STATUS" = "C" THEN
做
WRITE 报告 " <TR STYLE=""BACKGROUND-COLOR: !COLOR;"">"
WRITE 报告 " <TD>!DESCR</TD>"
WRITE 报告 " <TD>!ADID</TD>"
WRITE 报告 " <TD>!IAD</TD>"
WRITE 报告 " <TD>!STATUS</TD>"
WRITE 报告 " <TD>!AAS</TD>"
WRITE 报告 " <TD>!ACD</TD>"
WRITE 报告 " </TR>"
结束
ELSE
做
WRITE 报告 " <TR STYLE=""BACKGROUND-COLOR: RED;"">"
WRITE 报告 " <TD>!DESCR</TD>"
WRITE 报告 " <TD>!ADID</TD>"
WRITE 报告 " <TD>!IAD</TD>"
WRITE 报告 " <TD>!STATUS</TD>"
WRITE 报告 " <TD> </TD>"
WRITE 报告 " </TR>"
结束
结束
ELSE
做
/ * ------------------------------------------------ --------- * /
/ *如果未找到该应用程序,则在 */
/* HTML 表 */
/ * ------------------------------------------------ --------- * /
SETMAX POLICY(0) / *将RC设置回0 * /
VARSET FINDIAD =翻译('EF/CD/AB G',"!FINDIA",'ABCDEFG')
WRITE 报告 " <tr style=""background-color: red;"">"
WRITE 报告 " <td>!DESCR</td>"
WRITE 报告 " <td>!INADID</td>"
WRITE 报告 " <td>!FINDIAD</td>"
WRITE 报告 " <td>Not found</td>"
WRITE 报告 " <td> </td>"
WRITE 报告 " </tr>"
结束
结束
结束
/ * ------------------------------------------------ -------------------- * /
/ *添加HTML标记以结束表定义 */
/ * ------------------------------------------------ -------------------- * /
写报告"</table>"
/ * ------------------------------------------------ -------------------- * /
/ *关闭REPORT DD以确保将报告记录写入其中 */
/ *,然后再发送报告。 */
/ * ------------------------------------------------ -------------------- * /
CLOSE 报告
/ * ------------------------------------------------ -------------------- * /
/ *当WAPL尝试替换@和!时,关闭变量扫描。与 */
/ *值。 */
/ * ------------------------------------------------ -------------------- * /
VARSUB NOSCAN
/ * ------------------------------------------------ -------------------- * /
/ *通过电子邮件发送包含HDR,REPORT和TLR DD的报告* /
/ *一起组成邮件的内容。 */
/ * ------------------------------------------------ -------------------- * /
SENDMAIL FROM(RMG-POH7@ROYALMAIL.COM)
TO(cg_itst_lot2b_mainframe.in@capgemini.com)
CC(roopa.a.sharma@capgemini.com
shubham.chauhan@capgemini.com
richard.dealtry@atos.com)
SUBJECT(POH7-每日健康检查)
TEXTDD(HDR)
TEXTDD(REPORT)
TEXTDD(TLR)
|
|
|