IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

can someone please help me in finding the error in below cod


IBM Mainframe Forums -> IBM Tools
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
shub2204

New User


Joined: 13 May 2020
Posts: 19
Location: India

PostPosted: Wed Oct 28, 2020 5:35 pm
Reply with quote

I am getting if else error
Code:

 VARSET H1 = "!HOUR"
 VARSET M1 = "!MINT"
 IF ("!H1" = "01") & ("!M1" <= "30") THEN DO
 VARSET M2 = 60 - "!M1"
 VARSET ACD = "!ACD  FILES !M2 MIN EARLY"
 END
 ELSE IF (("!H1" = "00") & ("!M1" <= "30")) THEN DO
    VARSET M2 = 30 - "!M1"
    VARSET ACD = "!ACD  FILES 01 HR !M2 MIN EARLY"
 END
 ELSE IF (("!H1" = "00") & ("!M1" > "30")) THEN DO
    VARSET M2 = 60 - "!M1"
    VARSET ACD = "!ACD  FILES 00 HR !M2 MIN EARLY"
 END
 ELSE IF "!H1" = "01" & "!M1" > "30"  THEN DO
    VARSET M2 = 30 - "!M1"
    VARSET ACD = "!ACD  FILES DELAYED BY 0 HR !M2 MIN"


the hour vale us 1 and minute is 10
here is the error
Code:

10/28 11.53.14 EQQI200I DO
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I VARSET M2 = 60 - "!M1"
10/28 11.53.14 EQQI201I VARSET M2 = 60 - "10"
10/28 11.53.14 EQQI033A Variable M2 set to 50
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I VARSET ACD = "!ACD  FILES !M2 MIN EARLY"
10/28 11.53.14 EQQI201I VARSET ACD = "28/10/20 01:10  FILES 50 MIN EARLY"
10/28 11.53.14 EQQI033A Variable ACD set to 28/10/20 01:10  FILES 50 MIN EARLY
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I END
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I ELSE
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I DO
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I VARSET M2 = 30 - "!M1"
10/28 11.53.14 EQQI201I VARSET M2 = 30 - "10"
10/28 11.53.14 EQQI033A Variable M2 set to 20
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I VARSET ACD = "!ACD  FILES 01 HR !M2 MIN EARLY"
10/28 11.53.14 EQQI201I VARSET ACD = "28/10/20 01:10  FILES 50 MIN EARLY  FILES
            ...EQQI201I 01 HR 20 MIN EARLY"
10/28 11.53.14 EQQI033A Variable ACD set to 28/10/20 01:10  FILES 50 MIN EARLY
            ...EQQI033A FILES 01 HR 20 MIN EARLY
10/28 11.53.14 EQQI299I Statement completed - RC=0
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I END
10/28 11.53.14 EQQI299I Statement completed - RC=0

10/28 11.53.14 EQQI200I ELSE
10/28 11.53.14 EQQI221F Unexpected THEN or ELSE
10/28 11.53.14 EQQI299I Statement completed - RC=12

10/28 11.53.14 EQQI107I Number of files written = 1
10/28 11.53.14 EQQI104I Records written to file REPORT = 167
10/28 11.53.14 EQQI099I WAPL complete - highest return code 12 - 8.53 (1.28) sec
READY

what i am not understanding is since it is an ifesle loop why second if is executed
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1202
Location: Dublin, Ireland

PostPosted: Wed Oct 28, 2020 9:11 pm
Reply with quote

Where is the IF-ELSE loop? I see a series of nested IF statements - and the last one is missing an END statement.

Garry
Back to top
View user's profile Send private message
shub2204

New User


Joined: 13 May 2020
Posts: 19
Location: India

PostPosted: Wed Oct 28, 2020 11:10 pm
Reply with quote

Ok..looks like I have put the ask in wrong manner.
But in case of nested loop only one loop should execute in my case it is going into 2nd else if then going to error.
I will put the whole code in some time.
Back to top
View user's profile Send private message
Nic Clouston

Global Moderator


Joined: 10 May 2007
Posts: 2454
Location: Hampshire, UK

PostPosted: Thu Oct 29, 2020 6:06 am
Reply with quote

You have not shown any loop - just an incomplete bunch of IF-THEN-ELSEs none of which are actually nested.
Back to top
View user's profile Send private message
shub2204

New User


Joined: 13 May 2020
Posts: 19
Location: India

PostPosted: Thu Oct 29, 2020 12:09 pm
Reply with quote

here is the full code.
Code:
/*--------------------------------------------------------------------*/       
/* CAPGHLTC - Capgemini Health Check.                                 */       
/*            Checks Operations from DD JOBS and Applications from    */       
/*            DD APPS and emails report to Capgemini.                 */       
/* Input                                                              */       
/* -----                                                              */       
/*                                                                    */       
/* JOBS DD   - list of jobs                                           */       
/* -------                                                            */       
/*   Word 1  - Day of week matrix MTWTFSS, replace day of week with   */       
/*             a full stop to skip checking on that day.  i.e.        */       
/*             MTWTFS. Will not do that check on Sundays.             */       
/*   Word 2  - TWS Application name.                                  */       
/*   Word 3  - TWS Job name or ALL to check and list all jobs in an   */       
/*             Application.  ALL should not really be necessary as    */       
/*             ZLAST will check the last job.                         */       
/*                                                                    */       
/* APPS DD   - list of applications                                   */       
/* -------                                                            */       
/*   Word 1  - Day of week matrix MTWTFSS, replace day of week with   */       
/*             a full stop to skip checking on that day.  i.e.        */       
/*             MTWTFS. Will not do that check on Sundays.             */       
/*   Word 2  - TWS Application name.                                  */       
/*   Word 3  - IA date in relation to the schedule of this job.       */       
/*             0 - same as this jobs IA date.                         */       
/*             n - number of days before this job IA date so is -n.   */       
/*   Word 4+ - Description of check for to go on the report.          */       
/*                                                                    */       
/* HDR DD    - HTML Header                                            */       
/* ------                                                             */       
/* The code in here is put at the front of the report produced to     */       
/* define the email sent as being in HTML format.                     */       
/*                                                                    */       
/* TLR DD    - HTML Trailer                                           */       
/* ------                                                             */       
/* The code in here is put at the end of the report produced to       */       
/* define the email sent as being in HTML format.                     */       
/*                                                                    */       
/* Parameters                                                         */       
/* ----------                                                         */       
/* PHASE should be set by the WAPL code calling the include member.   */       
/*                                                                    */       
/* Output                                                             */       
/* ------                                                             */       
/* REPORT DD                                                          */       
/* ---------                                                          */       
/* The HTML report that this code then emails                         */       
/*                                                                    */       
/* Date       Who    Description                                      */       
/* ---------- ------ ------------------------------------------------ */       
/* 14/05/2020 BBARED New WAPL code                                    */       
/* 18/05/2020 BBARED replaced object OBJ with OJOBS and OAPPS,        */       
/*                   refined code.                                    */       
/* 19/05/2020 BBARED Moved loop of OJOBS to pevent duplicate entries. */       
/* 06/12/2020 SHUBHAM CHAUHAN                                         */       
/*            added logic to calculate time for delay and early run . */       
/*            of prpmd045 and prpmd220 schedule.                      */       
/*--------------------------------------------------------------------*/       
                                                                               
/*--------------------------------------------------------------------*/       
/* Get todays day number 1 = Monday                                   */       
/*--------------------------------------------------------------------*/       
VARSET TODAY = DATE('O')                                                       
VARSET DOWNUM = DATE('B',"!TODAY",'O')//7 + 1                                   
                                                                               
/*--------------------------------------------------------------------*/       
/* Set mail server                                                    */       
/*--------------------------------------------------------------------*/       
OPTIONS MAILSERVER(royalmail.com)                                               
                                                                               
/*====================================================================*/       
/* Part 1 - Check jobs                                                */       
/*====================================================================*/       
                                                                               
VARSET RUNDT = TRANSLATE('GH/EF/ABCD',"!CYMD",'ABCDEFGH')                       
VARSET RUNTM = TRANSLATE('AB:CD:EF',"!CHHMMSS",'ABCDEF')                       
VARSET RUN   = "!RUNDT !RUNTM"                                                 
/*                                                                             
WRITE REPORT "<h1>Report Produced by Job !OJOBNAME !OJJESNO !RUN</h1>"         
*/                                                                             
/*--------------------------------------------------------------------*/       
/* Build table header in HTML                                         */       
/*--------------------------------------------------------------------*/       
WRITE REPORT "<h1>Job Status</h1>"                                             
WRITE REPORT "<table>"                                                         
WRITE REPORT "  <tr>"                                                           
WRITE REPORT "    <th>Application Name</th>"                                   
WRITE REPORT "    <th>Input Arrival<br>Date/Time</th>"                         
WRITE REPORT "    <th>Operation<br>Number</th>"                                 
WRITE REPORT "    <th>Job Name</th>"                                           
WRITE REPORT "    <th>Status</th>"                                             
WRITE REPORT "    <th>Completed<br>Date/Time</th>"                             
WRITE REPORT "  </tr>"                                                         
                                                                               
/*--------------------------------------------------------------------*/       
/* Read the JOBS DD into object JOBS then loop through it issuing a   */       
/* list command for each job to list the jobs.                        */       
/*--------------------------------------------------------------------*/       
READ JOBS OBJECT(JOBS) COUNT(0)                                                 
/* Loop input jobs                                                    */       
DO J = 1 TO !@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                /* List all jobs in appl? */       
    VARSET JOBNAME = "*"                    /*  Set jobname to wildcrd*/       
  VARSET RUNCHECK = SUBSTR("!DAYS","!DOWNUM",1)                                 
  IF "!RUNCHECK" /= "." THEN                /* Do we check job today? */       
    DO                                                                         
      /* List jobs, labelled CHKJOB for later test                    */       
      CHKJOB: LIST CPOPCOM ADID(!ADID) JOBNAME(!JOBNAME)                       
      IF @CMD(CHKJOB.EQ.4) THEN             /* Not found, tell us     */       
        DO                                                                     
          WRITE REPORT "  <tr style=""background-color: red;"">"               
          WRITE REPORT "    <td>!ADID</td>"                                     
          WRITE REPORT "    <td> </td>"                                         
          WRITE REPORT "    <td> </td>"                                         
          WRITE REPORT "    <td>!JOBNAME</td>"                                 
          WRITE REPORT "    <td>Not found</td>"                                 
          WRITE REPORT "    <td> </td>"                                         
          WRITE REPORT "  </tr>"                                               
        END                                                                     
      IF @CMD(CHKJOB.EQ.0) THEN             /* Found, list to object  */       
        DO                                                                     
          LIST CPOPCOM ADID(!ADID) JOBNAME(!JOBNAME) OBJECT(OJOBS)             
        END                                                                     
      SETMAX POLICY(0)                      /* Set RC back to 0       */       
    END                                     /* End runcheck           */       
END                                         /* End J loop             */       
                                                                               
/*--------------------------------------------------------------------*/       
/* Loop object OJOBS to produce report of jobs                        */       
/*--------------------------------------------------------------------*/       
DO X = 1 TO !@OJOBS                                                             
  VARSET ADID    @V(@OJOBS!X.-CPOPADI)                                         
  VARSET IA      @V(@OJOBS!X.-CPOPIA)                                           
  VARSET IAD = TRANSLATE('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 = TRANSLATE('EF/CD/AB GH:IJ',"!AE",'ABCDEFGHIJ')                   
  /*------------------------------------------------------------------*/       
  /* When status is C the job is complete so add a green row into the */       
  /* HTML table.  If any other status add a red row.                  */       
  /*------------------------------------------------------------------*/       
  IF "!STATUS" = "C" THEN                                                       
    DO                                                                         
      WRITE REPORT "  <tr style=""background-color: lime;"">"                   
      WRITE REPORT "    <td>!ADID</td>"                                         
      WRITE REPORT "    <td>!IAD</td>"                                         
      WRITE REPORT "    <td>!OPNO</td>"                                         
      WRITE REPORT "    <td>!JOBNAME</td>"                                     
      WRITE REPORT "    <td>Complete</td>"                                     
      WRITE REPORT "    <td>!AED</td>"                                         
      WRITE REPORT "  </tr>"                                                   
    END                                                                         
  ELSE                                                                         
    DO                                                                         
      WRITE REPORT "  <tr style=""background-color: red;"">"                   
      WRITE REPORT "    <td>!ADID</td>"                                         
      WRITE REPORT "    <td>!IAD</td>"                                         
      WRITE REPORT "    <td>!OPNO</td>"                                         
      WRITE REPORT "    <td>!JOBNAME</td>"                                     
      WRITE REPORT "    <td>!STATUS</td>"                                       
      WRITE REPORT "    <td> </td>"                                             
      WRITE REPORT "  </tr>"                                                   
    END                                                                         
END                                 /* END DO X LOOP          */               
                                                                               
/*--------------------------------------------------------------------*/       
/* Add an HTML tag to end the table definition                        */       
/*--------------------------------------------------------------------*/       
WRITE REPORT "</table>"                                                         
WRITE REPORT "<br>"                                                             
                                                                               
/*====================================================================*/       
/* PART 2 - CHECK APPLICATIONS                                        */       
/*====================================================================*/       
                                                                               
/*--------------------------------------------------------------------*/       
/* Build table header in HTML                                         */       
/*--------------------------------------------------------------------*/       
WRITE REPORT "<h1>Application Completion</h1>"                                 
WRITE REPORT "<table>"                                                         
WRITE REPORT "  <tr>"                                                           
WRITE REPORT "    <th>Description of check</th>"                               
WRITE REPORT "    <th>Application Name</th>"                                   
WRITE REPORT "    <th>Input Arrival<br>Date/Time</th>"                         
WRITE REPORT "    <th>Status</th>"                                             
WRITE REPORT "    <th>Start Time<br>Date/Time</th>"                             
WRITE REPORT "    <th>Completed<br>Date/Time</th>"                             
WRITE REPORT "    </tr>"                                                       
                                                                               
/*--------------------------------------------------------------------*/       
/* Read the APPS DD into object APPS then loop through it issuing a   */       
/* select commadn for each application, then build report table rows. */       
/*--------------------------------------------------------------------*/       
READ APPS OBJECT(APPS) COUNT(0)                                                 
DO X = 1 TO !@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                                                   
    DO                                                                         
      IF "!DAY" = "0" THEN                                                     
        DO                                                                     
          VARSET FINDIA = "!OYMD1"||"*"                                         
        END                                                                     
      ELSE                                                                     
        DO                                                                     
          VARSET OFFSET = "-"||"!DAY"                                           
          VARDATE FINDIA BASE(!OYMD1) OFFSET(!OFFSET)                           
          VARSET FINDIA = "!FINDIA"||"*"                                       
        END                                                                     
      SELECT CPOC ADID(!INADID) IA(!FINDIA) STATUS(*) OBJECT(OAPPS)             
      IF @CMD(EQ.0) THEN                                                       
        DO                                                                     
          VARSET ADID   @V(@OAPPS-CPOCADI)        /* ADID OF OBJECT   */       
          VARSET IA     @V(@OAPPS-CPOCIA)         /* IA OF OBJECT     */       
          VARSET IAD = TRANSLATE('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 = TRANSLATE('EF/CD/AB GH:IJ',"!AC",'ABCDEFGHIJ')           
          VARSET AA     @V(@OAPPS-CPOCAA)         /* COMPLETE DT/TM   */       
          VARSET AAS = TRANSLATE('EF/CD/AB GH:IJ',"!AA",'ABCDEFGHIJ')           
          /*----------------------------------------------------------*/       
          IF "!ADID" = "PRPMD045"  THEN                                         
          DO                                                                   
             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 DO                                     
                IF "!MINT" = '00' THEN DO                                       
                   VARSET H1 = 24-"!HOUR"                                       
                   VARSET M1 = "!MINT"                                         
                   VARSET ACD = "!ACD  FILES SENT !H1 HR !M1 MIN EARLY"         
                END                                                             
                ELSE  DO                                                       
                   VARSET H1 = 23-"!HOUR"                                       
                   VARSET M1 = 60-"!MINT"                                       
                   VARSET ACD = "!ACD  FILES SENT !H1 HR !M1 MIN EARLY"         
                END                                                             
             END                                                               
             ELSE DO                                                           
                VARSET H1 = "!HOUR"                                             
                VARSET M1 = "!MINT"                                             
                VARSET ACD = "!ACD  FILES DELAYED BY !H1 HR !M1 MIN"           
                VARSET COLOR = "#FFBF00"                                       
             END                                                               
          END                                                                   
/*--------------------------------------------------------------------*/       
/* CALCULATE THE TIME  BY WHICH ER FILES HAS BEEN SENT WITHER DELAYED */       
/* OR EARLY , THE TIME IS DIFFERENT FOR MONDAY/TUESDAY I.E 01:30 HRS  */       
/* BST AND FOR REST DAYS IT IS  0000 HRS BST.                         */       
/*--------------------------------------------------------------------*/       
          IF "!ADID" = "PRPMD220"  THEN                                         
            DO                                                                 
               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                                                                 
/*--------------------------------------------------------------------*/       
/* CASE WHEN FILES ARE SENT ON THE PREVIOUS  DATE AS THE DATE ON WHICH*/       
/* THE JCL WHICH CALL THIS WAPL RUNS.                                 */       
/*--------------------------------------------------------------------*/       
               IF "!CDAY" > "!JDAY"  THEN DO                                   
                  IF "!MINT" = "00" THEN DO                                     
                   VARSET H1 = 25-"!HOUR"                                       
                   VARSET M1 = "!MINT" + 30                                     
                   VARSET ACD = "!ACD  FILES SENT !H1 HR !M1 MIN EARLY"         
                  END                                                           
                  ELSE DO                                                       
                   VARSET H1 = 24-"!HOUR"                                       
                   VARSET M1 = 60-"!MINT" + 30                                 
                    IF "!M1" > "60" THEN DO                                     
                      VARSET H1 = "!H1" + 1                                     
                      VARSET M1 = "!M1" - 60                                   
                    END                                                         
                   VARSET ACD = "!ACD  FILES SENT !H1 HR !M1 MIN EARLY"         
                  END                                                           
               END                                                             
/*--------------------------------------------------------------------*/       
/* CASE WHEN FILES ARE SENT ON THE SAME DATE AS THE DATE ON WHICH     */       
/* THE JCL WHICH CALL THIS WAPL RUNS.                                 */       
/*--------------------------------------------------------------------*/       
               ELSE DO                                                         
                  VARSET H1 = "!HOUR"                                           
                  VARSET M1 = "!MINT"                                           
                  IF (("!H1" = "01") & ("!M1" <= "30")) THEN DO                 
                  VARSET M1 = 60- "!M1"                                         
                  VARSET ACD = "!ACD  FILES 0!M1 MIN EARLY"                     
                  END                                                           
                  ELSE IF (("!H1" = "00") & ("!M1" <= "30"))  THEN DO           
                     VARSET M1 = 30 - "!M1"                                     
                     VARSET ACD = "!ACD  FILES 01 HR !M1 MIN EARLY"             
                  END                                                           
                  ELSE  IF "!H1" = "00" & "!M1" > "30"  THEN DO                 
                     VARSET M1 = 60 - "!M1"                                     
                     VARSET ACD = "!ACD  FILES 00 HR !M1 MIN EARLY"             
                  END                                                           
                  ELSE IF "!H1" = "01" & "!M1" > "30"  THEN DO                 
                     VARSET M1 = 30 - "!M1"                                     
                     VARSET ACD = "!ACD  FILES DELAYED BY 0 HR !M1 MIN"         
                     VARSET COLOR = "#FFBF00"                                   
                  END                                                           
                  ELSE IF "!H1" >='2' & "!M1" > '30' THEN DO                   
                        VARSET M0 = "!M1" - 30                                 
                        VARSET COLOR = "#FFBF00"                               
                        VARSET H0 = "!H1" - 1                                   
                        VARSET ACD = "!ACD FILES ARE DELAYED BY                 
                                     !H0 HR !M0 MIN"                           
                  END                                                           
                  ELSE IF "!H1" >='2' & "!M1" <= '30' THEN DO                   
                        VARSET M0 = "!M1" + 30                                 
                        VARSET H0 = "!H1" - 2                                   
                        VARSET COLOR = "#FFBF00"                               
                        VARSET ACD = "!ACD FILES DELAYED BY                     
                                     !H0 HR !M0 MIN"                           
                  END                                                           
               END                                                             
             END                                                                                                                           
/*--------------------------------------------------------------------*/       
/* CASE WHEN FILES ARE SENT ON THE DAYS OTHER THAN MONDAY AND TUESDAY */       
/* THE TIME HANDSHAKED IS 0000 HRS BST.                               */       
/*--------------------------------------------------------------------*/       
             ELSE DO                                                           
               IF "!CDAY" > "!JDAY"  THEN DO                                   
                  IF "!MINT" = "00" THEN DO                                     
                     VARSET H1 = 24-"!HOUR"                                     
                     VARSET M1 = "!MINT"                                       
                     VARSET ACD = "!ACD  FILES SENT !H1 HR !M1 MIN EARLY"       
                  END                                                           
                  ELSE  DO                                                     
                     VARSET H1 = 23-"!HOUR"                                     
                     VARSET M1 = 60-"!MINT"                                     
                     VARSET ACD = "!ACD  FILES SENT !H1 HR !M1 MIN EARLY"       
                  END                                                           
               END                                                             
               ELSE DO                                                         
                  VARSET H1 = "!HOUR"                                           
                  VARSET M1 = "!MINT"                                           
                  VARSET COLOR = "#FFBF00"                                     
                  VARSET ACD = "!ACD  FILES DELAYED BY !H1 HR !M1 MIN"         
               END                                                             
            END                                                                 
          END                                                                   
          /*----------------------------------------------------------*/       
          /* WHEN THE STATUS IS C THE APPLICATION IS COMPLETE SO ADD  */       
          /* A GREEN ROW TO OUR HTML TABLE.  ANY OTHER STATUS ADD A   */       
          /* RED ROW.                                                 */       
          /*----------------------------------------------------------*/       
          IF "!STATUS" = "C" THEN                                               
            DO                                                                 
             WRITE REPORT "  <TR STYLE=""BACKGROUND-COLOR: !COLOR;"">"         
             WRITE REPORT "    <TD>!DESCR</TD>"                                 
             WRITE REPORT "    <TD>!ADID</TD>"                                 
             WRITE REPORT "    <TD>!IAD</TD>"                                   
             WRITE REPORT "    <TD>!STATUS</TD>"                               
             WRITE REPORT "    <TD>!AAS</TD>"                                   
             WRITE REPORT "    <TD>!ACD</TD>"                                   
             WRITE REPORT "  </TR>"                                             
            END                                                                 
          ELSE                                                                 
            DO                                                                 
             WRITE REPORT "  <TR STYLE=""BACKGROUND-COLOR: RED;"">"             
             WRITE REPORT "    <TD>!DESCR</TD>"                                 
             WRITE REPORT "    <TD>!ADID</TD>"                                 
             WRITE REPORT "    <TD>!IAD</TD>"                                   
             WRITE REPORT "    <TD>!STATUS</TD>"                               
             WRITE REPORT "    <TD> </TD>"                                     
             WRITE REPORT "  </TR>"                                             
            END                                                                 
        END                                                                     
      ELSE                                                                     
        DO                                                                     
           /*---------------------------------------------------------*/       
           /* If the application was not found add a red row to the   */       
           /* HTML table                                              */       
           /*---------------------------------------------------------*/       
           SETMAX POLICY(0)                       /* Set RC back to 0*/         
           VARSET FINDIAD = TRANSLATE('EF/CD/AB G',"!FINDIA",'ABCDEFG')         
           WRITE REPORT "  <tr style=""background-color: red;"">"               
           WRITE REPORT "    <td>!DESCR</td>"                                   
           WRITE REPORT "    <td>!INADID</td>"                                 
           WRITE REPORT "    <td>!FINDIAD</td>"                                 
           WRITE REPORT "    <td>Not found</td>"                               
           WRITE REPORT "    <td> </td>"                                       
           WRITE REPORT "  </tr>"                                               
        END                                                                     
    END                                                                         
END                                                                             
                                                                               
/*--------------------------------------------------------------------*/       
/* Add an HTML tag to end the table definition                        */       
/*--------------------------------------------------------------------*/       
WRITE REPORT "</table>"                                                         
                                                                               
/*--------------------------------------------------------------------*/       
/* Close the REPORT DD to ensure report records are written to it     */       
/* before sending the report.                                         */       
/*--------------------------------------------------------------------*/       
CLOSE REPORT                                                                   
                                                                               
/*--------------------------------------------------------------------*/       
/* Turn off variable scanning as WAPL tries to replace @ and ! with   */       
/* values.                                                            */       
/*--------------------------------------------------------------------*/       
VARSUB NOSCAN                                                                   
                                                                               
/*--------------------------------------------------------------------*/       
/* Send the report by email concatentating the HDR,REPORT and TLR DD's*/       
/* together to make the content of the mail.                          */       
/*--------------------------------------------------------------------*/       
  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 - Daily Health Check)                                       
       TEXTDD(HDR)                                                             
       TEXTDD(REPORT)                                                           
       TEXTDD(TLR)                                                             
Back to top
View user's profile Send private message
shub2204

New User


Joined: 13 May 2020
Posts: 19
Location: India

PostPosted: Thu Oct 29, 2020 12:14 pm
Reply with quote

here is the error part:

Code:
 10/28 11.23.54 EQQI200I DO                                                                                                         
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I VARSET M2 = 60 - "!M1"                                                                                     
 10/28 11.23.54 EQQI201I VARSET M2 = 60 - "10"                                                                                       
 10/28 11.23.54 EQQI033A Variable M2 set to 50                                                                                       
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I VARSET ACD = "!ACD  FILES 0!M2 MIN EARLY"                                                                   
 10/28 11.23.54 EQQI201I VARSET ACD = "28/10/20 01:10  FILES 050 MIN EARLY"                                                         
 10/28 11.23.54 EQQI033A Variable ACD set to 28/10/20 01:10  FILES 050 MIN EARLY                                                     
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I END                                                                                                         
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I ELSE                                                                                                       
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I DO                                                                                                         
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I VARSET M2 = 30 - "!M1"                                                                                     
 10/28 11.23.54 EQQI201I VARSET M2 = 30 - "10"                                                                                       
 10/28 11.23.54 EQQI033A Variable M2 set to 20                                                                                       
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I VARSET ACD = "!ACD  FILES 01 HR !M2 MIN EARLY"                                                             
 10/28 11.23.54 EQQI201I VARSET ACD = "28/10/20 01:10  FILES 050 MIN EARLY                                                           
             ...EQQI201I FILES 01 HR 20 MIN EARLY"                                                                                   
110/28 11.23.54 EQQI033A Variable ACD set to 28/10/20 01:10  FILES 050 MIN EARLY                                                     
             ...EQQI033A FILES 01 HR 20 MIN EARLY                                                                                   
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I END                                                                                                         
 10/28 11.23.54 EQQI299I Statement completed - RC=0                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI200I ELSE                                                                                                       
 10/28 11.23.54 EQQI221F Unexpected THEN or ELSE          <===                                                                           
 10/28 11.23.54 EQQI299I Statement completed - RC=12                                                                                 
                                                                                                                                     
 10/28 11.23.54 EQQI107I Number of files written = 1                                                                                 
 10/28 11.23.54 EQQI104I Records written to file REPORT = 167                                                                       
 10/28 11.23.54 EQQI099I WAPL complete - highest return code 12 - 6.96 (0.96) sec                                                   
 READY                                                                                                                               
 END     

Edited to make the error message more apparent
Back to top
View user's profile Send private message
Willy Jensen

Active Member


Joined: 01 Sep 2015
Posts: 724
Location: Denmark

PostPosted: Thu Oct 29, 2020 2:42 pm
Reply with quote

I haven't analyzed the whole thing, but looking at indentations it sems that you are missing an END after the block starting with
IF "!ADID" = "PRPMD220" THEN
DO
Back to top
View user's profile Send private message
shub2204

New User


Joined: 13 May 2020
Posts: 19
Location: India

PostPosted: Thu Oct 29, 2020 2:58 pm
Reply with quote

hello Willy,

Thanks for taking a look icon_smile.gif .The PRPMD220 end completed at just before status = 'C'.

It does not have a else part, i am trying to do processing within one if for prpmd220. the problem occurs at when hours is 1 . there it is going in all loops of nested if rather than one loop
Back to top
View user's profile Send private message
Nic Clouston

Global Moderator


Joined: 10 May 2007
Posts: 2454
Location: Hampshire, UK

PostPosted: Thu Oct 29, 2020 4:18 pm
Reply with quote

Some languages are picky about indentation - I do not know if this one, whatever it is, is one of those. Just in case it is, there is one block where the code has not been indented. I would also standardise the coding - you have some IF/THEN/DOs on one line whilst on others you have IF THEN on one line and the DO on the next. Ensure you indent by the same amount each time.
Once you have done that use ISPF editor facilities to exclude everything then find all your IFs, THENs, DOs, ENDs and ELSEs. Then, working from the deepest nesting out, exclude complete sets of IF/THEN/ELSEs.
Back to top
View user's profile Send private message
shub2204

New User


Joined: 13 May 2020
Posts: 19
Location: India

PostPosted: Thu Oct 29, 2020 4:24 pm
Reply with quote

yes Nic absolutely.. this work load automation programming is very much concerned about indentation ..else lot of parsing errors. Meanwhile I have changed the and condition with nested if.. let see if it is good to run.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> IBM Tools

 


Similar Topics
Topic Forum Replies
No new posts JES datasets IO Error ABENDS & Debugging 3
No new posts Error to invoke MPP program through B... IMS DB/DC 3
No new posts PKZIP error ZPFM121E and ZPCE009E JCL & VSAM 6
No new posts OpenPGP Decryption job getting LRECL ... IBM Tools 7
No new posts Finding and researching jobs All Other Mainframe Topics 0
Search our Forums:

Back to Top