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

Having problem passing a variable to ACM1 CR+ step


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
markzasz

New User


Joined: 04 Apr 2017
Posts: 9
Location: USA

PostPosted: Thu Jul 11, 2019 5:31 pm
Reply with quote

I will attempt to explain my situation and include two sets of JCL one worked and the second failed.

First we are trying to run a batch job that will set variables for the day of the week 01-05 (Mon-Fri). we have tested the JCL by running it through for a single day and have been successful, however when we add for the remaining 4 days the variable being passed to the ACM1 step is incorrect.

here is the job that worked:

Code:
//GMSTGMZ9 JOB (ARLRFX,CF00),'MCAT BKUP &LWDAY.',CLASS=N,MSGCLASS=X
//*
//      SET DAYIS=01
//      SET DAYOS=01
//      SET DAYAS=01
//*
//STEP00   EXEC PGM=IEBGENER
//SYSUT1   DD   *,DLM=@@
/* REXX */
EXIT DATE(B) // 7 +1
@@
//SYSUT2   DD   DSN=&T1(DOW#),DISP=(,PASS),UNIT=VIO,
//         SPACE=(TRK,(1,1,1),RLSE)
//SYSPRINT DD   SYSOUT=*
//SYSIN    DD   DUMMY
//*
//STEP01   EXEC PGM=IRXJCL,PARM=DOW#
//SYSEXEC  DD   DSN=&T1,DISP=SHR
//SYSTSPRT DD   SYSOUT=*
//SYSTSIN  DD   DUMMY
//*
//*
//*
//*
//IF4       IF STEP01.RC = 4 THEN
//*
//          EXPORT SYMLIST=(DAYIS)
// SET DAYIS=04                /* THURSDAY
//          EXPORT SYMLIST=(DAYOS)
// SET DAYOS=04                /* THURSDAY
//          EXPORT SYMLIST=(DAYAS)
// SET DAYAS=04                /* THURSDAY
//*
//DEFDSN4   EXEC PGM=IDCAMS
//SYSIN    DD *,SYMBOLS=EXECSYS
 DELETE   SYS1.&GM_SYSNODE..ACAT&DAYOS.                               -
          UCAT                                                        -
          RECOVERY
 SET      MAXCC = 0
 DEFINE   MASTERCATALOG(                                              -
          ICFCATALOG                                                  -
          NAME(SYS1.&GM_SYSNODE..ACAT&DAYOS.)                         -
          MODEL(SYS1.&GM_SYSNODE..MCAT)                               -
          CYLINDERS(20 10)                                            -
          VOLUMES(OB&GM_PLEXID.S&DAYIS)                               -
          )
 DELETE   SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYOS.                         -
          PURGE
 SET      MAXCC = 0
 DEFINE   CLUSTER(                                                    -
          NAME(SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYOS.)                    -
          CYLINDERS(20 20)                                            -
          KEYS(65 0)                                                  -
          RECORDSIZE(32744 32744)                                     -
          SPANNED                                                     -
          )                                                           -
          DATA(                                                       -
          CONTROLINTERVALSIZE(4096)                                   -
          )                                                           -
          INDEX(                                                      -
          CONTROLINTERVALSIZE(2048)                                   -
          )
//SYSPRINT DD SYSOUT=*
//*
//*
//          EXPORT SYMLIST=(DAYIS)
// SET DAYAS=04                /* THURSDAY
//*
//ACM4      EXEC PGM=CKM00010,REGION=0M
//ABNLIGNR DD DUMMY
//DAP@NVPO DD DUMMY
//INI      DD DISP=SHR,DSN=GMSTG.CKM.SCKMPARM(CKMINI)
//SORTMSG  DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *,SYMBOLS=EXECSYS
 MERGECAT INBCS(SYS1.&GM_SYSNODE..MCAT)                               -
          OUTBCS(SYS1.&GM_SYSNODE..ACAT&DAYAS)                        -
          COPY-ONLY                                                   -
          DIAGNOSE-BCS                                                -
          ACCEPT-DIAGNOSE(I)                                          -
          EXAMINE(DATATEST INDEXTEST)                                 -
          ACCEPT-EXAMINE(I)                                           -
          JOURNAL(SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYAS)                 -
          FATAL-CATALOG-ERROR(W)                                      -
          NOLOCK
/*
//*
//          ENDIF
//*

Output from the good run:

Code:
IDCAMS  SYSTEM SERVICES                                           TIME: 07:44:14

 DELETE   SYS1.TZOSPLX.ACAT04                                         -
          UCAT                                                        -
          RECOVERY
IDC0550I ENTRY (U) SYS1.TZOSPLX.ACAT04 DELETED
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

 SET      MAXCC = 0

 DEFINE   MASTERCATALOG(                                              -
          ICFCATALOG                                                  -
          NAME(SYS1.TZOSPLX.ACAT04)                                   -
          MODEL(SYS1.TZOSPLX.MCAT)                                    -
          CYLINDERS(20 10)                                            -
          VOLUMES(OBTS04)                                             -
          )
IGD01007I GMSTGD05 DATACLAS ALLOCATED DC=NONE
IGD01008I GMSTGS10 NO STORCLAS ALLOCATED
IDC0510I CATALOG ALLOCATION STATUS FOR VOLUME OBTS04 IS 0
IDC0512I NAME GENERATED-(I) SYS1.TZOSPLX.ACAT04.CATINDEX
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

 DELETE   SYSGM.TZOSPLX.JRNL.ACAT04                                   -
          PURGE
IDC0550I ENTRY (D) SYSGM.TZOSPLX.JRNL.ACAT04.DATA DELETED
IDC0550I ENTRY (I) SYSGM.TZOSPLX.JRNL.ACAT04.INDEX DELETED
IDC0550I ENTRY (C) SYSGM.TZOSPLX.JRNL.ACAT04 DELETED
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

 SET      MAXCC = 0

 DEFINE   CLUSTER(                                                    -
          NAME(SYSGM.TZOSPLX.JRNL.ACAT04)                              -
          CYLINDERS(20 20)                                            -
          KEYS(65 0)                                                  -
          RECORDSIZE(32744 32744)                                     -
                  SPANNED                                                     -
          )                                                           -
IDCAMS  SYSTEM SERVICES                                           TIME: 07:44:14
          DATA(                                                       -
          CONTROLINTERVALSIZE(4096)                                   -
          )                                                           -
          INDEX(                                                      -
          CONTROLINTERVALSIZE(2048)                                   -
          )
IGD01007I GMSTGD05 DATACLAS ALLOCATED DC=NONE
IGD01008I GMSTGS06 STORCLAS ALLOCATED SC=SYSOS
IGD01009I GMSTGM11 MGMTCLAS ALLOCATED MC=SYSTEM
IGD01010I GMSTGG05 STORGRP  ALLOCATED SG=SYSOS
IDC0508I DATA ALLOCATION STATUS FOR VOLUME OSTS01 IS 0
IDC0509I INDEX ALLOCATION STATUS FOR VOLUME OSTS01 IS 0
IDC0512I NAME GENERATED-(D) SYSGM.TZOSPLX.JRNL.ACAT04.DATA
IDC0512I NAME GENERATED-(I) SYSGM.TZOSPLX.JRNL.ACAT04.INDEX
IDC0181I STORAGECLASS USED IS SYSOS
IDC0181I MANAGEMENTCLASS USED IS SYSTEM
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 0
CKM01001I IBM Tivoli Advanced Catalog Management for z/OS
          Copyright IBM Corp. 1990 - 2018.  All Rights Reserved.
          Copyright Rocket Software, Inc. 2000 - 2018.  All Rights Reserved.
CKM01012I BUILD(0206 REV=21 20140724)           OS(z/OS 2.3 PSEQ=01020300)

      1  MERGECAT INBCS(SYS1.TZOSPLX.MCAT)                                    -
      2           OUTBCS(SYS1.TZOSPLX.ACAT04)                                 -
      3           COPY-ONLY                                                   -
      4           DIAGNOSE-BCS                                                -
      5           ACCEPT-DIAGNOSE(I)                                          -
      6           EXAMINE(DATATEST INDEXTEST)                                 -
      7           ACCEPT-EXAMINE(I)                                           -
      8           JOURNAL(SYSGM.TZOSPLX.JRNL.ACAT04)                          -
      9           FATAL-CATALOG-ERROR(W)                                      -
     10           NOLOCK

above you can see the variable for ACAT04 is inserted in the OUTBCS and JOURNAL parameters.



We then added an additional day (05) and it failed.

Code:
//GMSTGMZ9 JOB (ARLRFX,CF00),'MCAT BKUP &LWDAY.',CLASS=N,MSGCLASS=X
//*
//      SET DAYIS=01
//      SET DAYOS=01
//      SET DAYAS=01
//*
//STEP00   EXEC PGM=IEBGENER
//SYSUT1   DD   *,DLM=@@
/* REXX */
EXIT DATE(B) // 7 +1
@@
//SYSUT2   DD   DSN=&T1(DOW#),DISP=(,PASS),UNIT=VIO,
//         SPACE=(TRK,(1,1,1),RLSE)
//SYSPRINT DD   SYSOUT=*
//SYSIN    DD   DUMMY
//*
//STEP01   EXEC PGM=IRXJCL,PARM=DOW#
//SYSEXEC  DD   DSN=&T1,DISP=SHR
//SYSTSPRT DD   SYSOUT=*
//SYSTSIN  DD   DUMMY
//*
//*
//*
//*
//IF4       IF STEP01.RC = 4 THEN
//*
//          EXPORT SYMLIST=(DAYIS)
// SET DAYIS=04                /* THURSDAY
//          EXPORT SYMLIST=(DAYOS)
// SET DAYOS=04                /* THURSDAY
//          EXPORT SYMLIST=(DAYAS)
// SET DAYAS=04                /* THURSDAY
//*
//DEFDSN4   EXEC PGM=IDCAMS
//SYSIN    DD *,SYMBOLS=EXECSYS
 DELETE   SYS1.&GM_SYSNODE..ACAT&DAYOS.                               -
          UCAT                                                        -
          RECOVERY
 SET      MAXCC = 0
 DEFINE   MASTERCATALOG(                                              -
          ICFCATALOG                                                  -
          NAME(SYS1.&GM_SYSNODE..ACAT&DAYOS.)                         -
          MODEL(SYS1.&GM_SYSNODE..MCAT)                               -
          CYLINDERS(20 10)                                            -
          VOLUMES(OB&GM_PLEXID.S&DAYIS)                               -
          )
 DELETE   SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYOS.                         -
          PURGE
 SET      MAXCC = 0
 DEFINE   CLUSTER(                                                    -
          NAME(SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYOS.)                    -
          CYLINDERS(20 20)                                            -
          KEYS(65 0)                                                  -
          RECORDSIZE(32744 32744)                                     -
          SPANNED                                                     -
          )                                                           -
          DATA(                                                       -
          CONTROLINTERVALSIZE(4096)                                   -
          )                                                           -
          INDEX(                                                      -
          CONTROLINTERVALSIZE(2048)                                   -
          )
//SYSPRINT DD SYSOUT=*
//*
//*
//          EXPORT SYMLIST=(DAYIS)
// SET DAYAS=04                /* THURSDAY
//*
//ACM4      EXEC PGM=CKM00010,REGION=0M
//ABNLIGNR DD DUMMY
//DAP@NVPO DD DUMMY
//INI      DD DISP=SHR,DSN=GMSTG.CKM.SCKMPARM(CKMINI)
//SORTMSG  DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *,SYMBOLS=EXECSYS
 MERGECAT INBCS(SYS1.&GM_SYSNODE..MCAT)                               -
          OUTBCS(SYS1.&GM_SYSNODE..ACAT&DAYAS)                        -
          COPY-ONLY                                                   -
          DIAGNOSE-BCS                                                -
          ACCEPT-DIAGNOSE(I)                                          -
          EXAMINE(DATATEST INDEXTEST)                                 -
          ACCEPT-EXAMINE(I)                                           -
          JOURNAL(SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYAS)                 -
          FATAL-CATALOG-ERROR(W)                                      -
          NOLOCK
/*
//*
//          ENDIF
//*
//*
//*
//IF5       IF STEP01.RC = 5 THEN
//*
//          EXPORT SYMLIST=(DAYIS)
// SET DAYIS=05                /* FRIDAY
//          EXPORT SYMLIST=(DAYOS)
// SET DAYOS=05                /* FRIDAY
//          EXPORT SYMLIST=(DAYAS)
// SET DAYAS=05                /* FRIDAY
//*
//DEFDSN5   EXEC PGM=IDCAMS
//SYSIN    DD *,SYMBOLS=EXECSYS
 DELETE   SYS1.&GM_SYSNODE..ACAT&DAYOS.                               -
          UCAT                                                        -
          RECOVERY
 SET      MAXCC = 0
 DEFINE   MASTERCATALOG(                                              -
          ICFCATALOG                                                  -
          NAME(SYS1.&GM_SYSNODE..ACAT&DAYOS.)                         -
          MODEL(SYS1.&GM_SYSNODE..MCAT)                               -
          CYLINDERS(20 10)                                            -
          VOLUMES(OB&GM_PLEXID.S&DAYIS)                               -
          )
 DELETE   SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYOS.                         -
          PURGE
 SET      MAXCC = 0
 DEFINE   CLUSTER(                                                    -
          NAME(SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYOS.)                    -
          CYLINDERS(20 20)                                            -
          KEYS(65 0)                                                  -
          RECORDSIZE(32744 32744)                                     -
          SPANNED                                                     -
          )                                                           -
          DATA(                                                       -
          CONTROLINTERVALSIZE(4096)                                   -
          )                                                           -
          INDEX(                                                      -
          CONTROLINTERVALSIZE(2048)                                   -
          )
//SYSPRINT DD SYSOUT=*
//*
//*
//          EXPORT SYMLIST=(DAYIS)
// SET DAYAS=05                /* FRIDAY
//*
//ACM5      EXEC PGM=CKM00010,REGION=0M
//ABNLIGNR DD DUMMY
//DAP@NVPO DD DUMMY
//INI      DD DISP=SHR,DSN=GMSTG.CKM.SCKMPARM(CKMINI)
//SORTMSG  DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *,SYMBOLS=EXECSYS
 MERGECAT INBCS(SYS1.&GM_SYSNODE..MCAT)                               -
          OUTBCS(SYS1.&GM_SYSNODE..ACAT&DAYAS)                        -
          COPY-ONLY                                                   -
          DIAGNOSE-BCS                                                -
          ACCEPT-DIAGNOSE(I)                                          -
          EXAMINE(DATATEST INDEXTEST)                                 -
          ACCEPT-EXAMINE(I)                                           -
          JOURNAL(SYSGM.&GM_SYSNODE..JRNL.ACAT&DAYAS)                 -
          FATAL-CATALOG-ERROR(W)                                      -
          NOLOCK
/*
//*
//          ENDIF


Output from failed run:

Code:
IDCAMS  SYSTEM SERVICES                                           TIME: 07:46:13

 DELETE   SYS1.TZOSPLX.ACAT04                                         -
          UCAT                                                        -
          RECOVERY
IDC0550I ENTRY (U) SYS1.TZOSPLX.ACAT04 DELETED
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

 SET      MAXCC = 0

 DEFINE   MASTERCATALOG(                                              -
          ICFCATALOG                                                  -
          NAME(SYS1.TZOSPLX.ACAT04)                                   -
          MODEL(SYS1.TZOSPLX.MCAT)                                    -
          CYLINDERS(20 10)                                            -
          VOLUMES(OBTS04)                                             -
          )
IGD01007I GMSTGD05 DATACLAS ALLOCATED DC=NONE
IGD01008I GMSTGS10 NO STORCLAS ALLOCATED
IDC0510I CATALOG ALLOCATION STATUS FOR VOLUME OBTS04 IS 0
IDC0512I NAME GENERATED-(I) SYS1.TZOSPLX.ACAT04.CATINDEX
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

 DELETE   SYSGM.TZOSPLX.JRNL.ACAT04                                   -
          PURGE
IDC0550I ENTRY (D) SYSGM.TZOSPLX.JRNL.ACAT04.DATA DELETED
IDC0550I ENTRY (I) SYSGM.TZOSPLX.JRNL.ACAT04.INDEX DELETED
IDC0550I ENTRY (C) SYSGM.TZOSPLX.JRNL.ACAT04 DELETED
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

 SET      MAXCC = 0

 DEFINE   CLUSTER(                                                    -
          NAME(SYSGM.TZOSPLX.JRNL.ACAT04)                              -
          CYLINDERS(20 20)                                            -
          KEYS(65 0)                                                  -
          RECORDSIZE(32744 32744)                                     -
                  SPANNED                                                     -
          )                                                           -
IDCAMS  SYSTEM SERVICES                                           TIME: 07:46:13
          DATA(                                                       -
          CONTROLINTERVALSIZE(4096)                                   -
          )                                                           -
          INDEX(                                                      -
          CONTROLINTERVALSIZE(2048)                                   -
          )
IGD01007I GMSTGD05 DATACLAS ALLOCATED DC=NONE
IGD01008I GMSTGS06 STORCLAS ALLOCATED SC=SYSOS
IGD01009I GMSTGM11 MGMTCLAS ALLOCATED MC=SYSTEM
IGD01010I GMSTGG05 STORGRP  ALLOCATED SG=SYSOS
IDC0508I DATA ALLOCATION STATUS FOR VOLUME OSTS01 IS 0
IDC0509I INDEX ALLOCATION STATUS FOR VOLUME OSTS01 IS 0
IDC0512I NAME GENERATED-(D) SYSGM.TZOSPLX.JRNL.ACAT04.DATA
IDC0512I NAME GENERATED-(I) SYSGM.TZOSPLX.JRNL.ACAT04.INDEX
IDC0181I STORAGECLASS USED IS SYSOS
IDC0181I MANAGEMENTCLASS USED IS SYSTEM
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0

IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 0

CKM01001I IBM Tivoli Advanced Catalog Management for z/OS
          Copyright IBM Corp. 1990 - 2018.  All Rights Reserved.
          Copyright Rocket Software, Inc. 2000 - 2018.  All Rights Reserved.
CKM01012I BUILD(0206 REV=21 20140724)           OS(z/OS 2.3 PSEQ=01020300)

      1  MERGECAT INBCS(SYS1.TZOSPLX.MCAT)                                    -
      2           OUTBCS(SYS1.TZOSPLX.ACAT05)                                 -
      3           COPY-ONLY                                                   -
      4           DIAGNOSE-BCS                                                -
      5           ACCEPT-DIAGNOSE(I)                                          -
      6           EXAMINE(DATATEST INDEXTEST)                                 -
      7           ACCEPT-EXAMINE(I)                                           -
      8           JOURNAL(SYSGM.TZOSPLX.JRNL.ACAT05)                          -
      9           FATAL-CATALOG-ERROR(W)                                      -
     10           NOLOCK


As you can see the IDCAMS processing in the failed run is working, the issue is the correct variable is not being passed to the ACM1 step. When i add code for Day 5 the variable for day (05) is being passed not day (04).


Can someone help with this issue?

Thank you Mark
Coded for you - please do it yourself next time
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8697
Location: Dubuque, Iowa, USA

PostPosted: Thu Jul 11, 2019 6:06 pm
Reply with quote

Have you confirmed that
Code:
//IF5 IF STEP01.RC = 5 THEN
is correct? I would expect you to want to test against 4, not 5 -- the return code value doesn't change just because you're wanting a different day.
Back to top
View user's profile Send private message
markzasz

New User


Joined: 04 Apr 2017
Posts: 9
Location: USA

PostPosted: Thu Jul 11, 2019 6:13 pm
Reply with quote

We are using the set to verify the return code from INPUT01 which will identify the day of the week (01-05). and yes we have confirmed this works. We ran the code for a single day everyday to verify the day indicator is working. it fails when we add code for the next day.... day 04 only works, and when i add code for day 05 if it fails.

We are trying to setup a single job that can be run Mon-Fri and depending on the day of the week (01-05) will insert the correct last 2 digits in the output datasets.
Back to top
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2023
Location: USA

PostPosted: Thu Jul 11, 2019 8:26 pm
Reply with quote

As usually, my recommendation is simple.

Instead of debugging the whole mess of the statements not directly related to the encountered problem, - run the most simple test: only to verify that your RC is produced correctly, and all JCL IFs do work correctly as well.

So far, remove all real functionality from your JCL, leave only the code under question.

Believe me, it would save you much more time if you had deleted/restored all those functional code, compared to debugging this huge mess at once.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Thu Jul 11, 2019 8:48 pm
Reply with quote

help people who spend time trying to help You

when posting code ( in wide sense ) learn to use the code tags

the code tags will force the use of a FIXED PITCH FONT making easier
to understand what You are posting
Back to top
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2023
Location: USA

PostPosted: Thu Jul 11, 2019 11:30 pm
Reply with quote

Currently I don't have environment supporting EXPORT/SYMBOLS facility.

So this is simplified example as close to your needs as possible.

Code:
//*=====================================================================
//* REXX TEST LIBRARY                                                   
//*=====================================================================
//NEWREXX  EXEC PGM=IEBUPDTE,PARM=NEW                                   
//*                                                                     
//SYSUT2   DD  DISP=(NEW,PASS),                                         
//             SPACE=(TRK,(10,10,5)),                                   
//             LRECL=80,BLKSIZE=0,RECFM=FB,                             
//             DSN=&&REXXLIB                                           
//SYSPRINT DD  SYSOUT=*                                                 
//SYSIN    DD  *                                                       
./ ADD NAME=DAYWEEK                                                     
   /* REXX */                                                           
   SAY "DAYWEEK STARTED"                                               
   TRACE I                                                             
   DAY = DATE(B) // 7 +1                                               
   TRACE O                                                             
   SAY "DAYWEEK ENDED"                                                 
   EXIT DAY                                                             
                                                                       
./ ADD NAME=SAYPARM                                                     
   /* REXX */                                                           
   ARG PARM                                                             
   SAY "SAYPARM: PARM='"PARM"'"                                         
   EXIT 0                                                               
                                                                       
//*                                                                     
//*=====================================================================
//* DETECT CURRENT DAY-OF-WEEK                                         
//*=====================================================================
//DAYWEEK  EXEC PGM=IKJEFT01,PARM='%DAYWEEK'                           
//*                                                                     
//SYSEXEC  DD  DISP=(OLD,PASS),DSN=&&REXXLIB                           
//SYSTSPRT DD  SYSOUT=*                                                 
//SYSTSIN  DD  DUMMY                                                   
//*                                                                     
//*=====================================================================
//* RUN THIS STEP ALWAYS                                               
//*=====================================================================
//    SET X=00                                                         
//SAY00    EXEC PGM=IKJEFT01,PARM='%SAYPARM &X'                         
//*                                                                     
//SYSEXEC  DD  DISP=(OLD,PASS),DSN=&&REXXLIB                           
//SYSTSPRT DD  SYSOUT=*                                                 
//SYSTSIN  DD  DUMMY                                                   
//*                                                                     
//*=====================================================================
//* RUN THIS STEP ON THURSDAYS                                         
//*=====================================================================
// IF DAYWEEK.RC = 4 THEN                                               
//    SET X=04                                                         
//SAY04    EXEC PGM=IKJEFT01,PARM='%SAYPARM &X'                         
//*                                                                     
//SYSEXEC  DD  DISP=(OLD,PASS),DSN=&&REXXLIB                           
//SYSTSPRT DD  SYSOUT=*                                                 
//SYSTSIN  DD  DUMMY                                                   
//*                                                                     
// ENDIF DAYWEEK.RC = 4                                                 
//*=====================================================================
//* RUN THIS STEP ON FRIDAYS                                           
//*=====================================================================
// IF DAYWEEK.RC = 5 THEN                                               
//    SET X=05                                                         
//SAY05    EXEC PGM=IKJEFT01,PARM='%SAYPARM &X'                         
//*                                                                     
//SYSEXEC  DD  DISP=(OLD,PASS),DSN=&&REXXLIB                           
//SYSTSPRT DD  SYSOUT=*                                                 
//SYSTSIN  DD  DUMMY                                                   
//*                                                                     
// ENDIF DAYWEEK.RC = 5                                                 
//*=====================================================================
//* RUN THIS STEP ALWAYS                                               
//*=====================================================================
//    SET X=99                                                         
//SAY99    EXEC PGM=IKJEFT01,PARM='%SAYPARM &X'                         
//*                                                                     
//SYSEXEC  DD  DISP=(OLD,PASS),DSN=&&REXXLIB                           
//SYSTSPRT DD  SYSOUT=*                                                 
//SYSTSIN  DD  DUMMY                                                   
//*                                                                     
//*=====================================================================

The result of this test looks as follows
Code:
       SYSIN                            NEW MASTER                           
       ./ ADD NAME=DAYWEEK                                                   
          /* REXX */                                                         
          SAY "DAYWEEK STARTED"                                               
          TRACE I                                                             
          DAY = DATE(B) // 7 +1                                               
          TRACE O                                                             
          SAY "DAYWEEK ENDED"                                                 
          EXIT DAY                                                           
                                                                             
IEB817I MEMBER NAME (DAYWEEK ) NOT FOUND IN NM DIRECTORY.  STOWED WITH TTR.   
       SYSIN                            NEW MASTER                           
       ./ ADD NAME=SAYPARM                                                   
          /* REXX */                                                         
          ARG PARM                                                           
          SAY "SAYPARM: PARM='"PARM"'"                                       
          EXIT 0                                                             
                                                                             
IEB817I MEMBER NAME (SAYPARM ) NOT FOUND IN NM DIRECTORY.  STOWED WITH TTR.   
IEB818I HIGHEST CONDITION CODE WAS 00000000                                   
IEB819I END OF JOB IEBUPDTE.                                                 
ACF0C038 ACF2 LOGONID ATTRIBUTES HAVE REPLACED DEFAULT USER ATTRIBUTES       
DAYWEEK STARTED                                                               
     4 *-* DAY = DATE(B) // 7 +1                                             
       >L>   "B"                                                             
       >F>   "737250"                                                         
       >L>   "7"                                                             
       >O>   "3"                                                             
       >L>   "1"                                                             
       >O>   "4"                                                             
     5 *-* TRACE O                                                           
DAYWEEK ENDED                                                                 
READY                                                                         
END                                                                           
ACF0C038 ACF2 LOGONID ATTRIBUTES HAVE REPLACED DEFAULT USER ATTRIBUTES       
SAYPARM: PARM='00'                                                           
READY                                                                         
END                                                                       
ACF0C038 ACF2 LOGONID ATTRIBUTES HAVE REPLACED DEFAULT USER ATTRIBUTES   
SAYPARM: PARM='04'                                                       
READY                                                                     
END                                                                       
ACF0C038 ACF2 LOGONID ATTRIBUTES HAVE REPLACED DEFAULT USER ATTRIBUTES   
SAYPARM: PARM='99'                                                       
READY                                                                     
END


Now you can run your own similar simplified test with EXPORT/SYMBOLS involved.

BTW, parameter SYMBOLS has the second operand, to specify a DD-name to trace JCL parameters substitution; sometimes it may help in debugging.
Back to top
View user's profile Send private message
Willy Jensen

Active Member


Joined: 01 Sep 2015
Posts: 712
Location: Denmark

PostPosted: Fri Jul 12, 2019 3:20 am
Reply with quote

The devil is in the details, the manual says
Quote:
Exported symbol values are resolved to the last value set before or within the current job step.

The following job demos this
Code:
//  EXPORT SYMLIST=(TEXT)       
//  SET TEXT=001               
//*                             
//LIST2    EXEC PGM=IEBGENER   
//SYSUT1   DD *,SYMBOLS=EXECSYS
List 2 text=&TEXT               
//SYSPRINT DD DUMMY             
//SYSIN    DD DUMMY             
//SYSUT2   DD SYSOUT=*         
//  SET TEXT=002               
//*                             
//LIST3    EXEC PGM=IEBGENER   
//SYSUT1   DD *,SYMBOLS=EXECSYS
List 3 text=&TEXT               
//SYSPRINT DD DUMMY             
//SYSIN    DD DUMMY             
//SYSUT2   DD SYSOUT=*         
//  SET TEXT=003               
//*                             
//LIST4    EXEC PGM=IEBGENER   
//SYSUT1   DD *,SYMBOLS=EXECSYS
List 4 text=&TEXT               
//SYSPRINT DD DUMMY             
//SYSIN    DD DUMMY             
//SYSUT2   DD SYSOUT=*         
//  SET TEXT=004               
//*                             

Note that the SET statement taken is the one immediately before the next step, or end of job.
I really suggest that you find another approach, my immediate choicce would be using ISPF skeleton services to build the input data.
Back to top
View user's profile Send private message
Nic Clouston

Global Moderator


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

PostPosted: Fri Jul 12, 2019 3:09 pm
Reply with quote

Or simply have a specific job for each day. Easy to set up, easy to maintain, easy to debug.
Back to top
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2023
Location: USA

PostPosted: Fri Jul 12, 2019 5:25 pm
Reply with quote

Willy Jensen wrote:
I really suggest that you find another approach, my immediate choicce would be using ISPF skeleton services to build the input data.


This is the case for more than 50% of questions in this forum: the approach itself is initially wrong/messy/ineffective, or just stupid. Very tricky workarounds are needed to fix such problems.
In all those cases the logical approach needs to be changed from the very beginning, but any attempt to suggest the change hits the unbreakable brick wall:
"This is the requirement(??!!), and it cannot be changed". 12.gif

Very often even moderators do support similar statements... icon_cry.gif
Back to top
View user's profile Send private message
Willy Jensen

Active Member


Joined: 01 Sep 2015
Posts: 712
Location: Denmark

PostPosted: Sat Jul 13, 2019 3:42 am
Reply with quote

True, but sometime you do find yourself locked in to a less than optimal solution. I don't have a problem trying to help the OP by answering the stated question, while also taking the opertunity to point at other, in my mind better, solutions. As long as it helps the OP achieve his/hers objectives ...
nuf said.
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1306
Location: Vilnius, Lithuania

PostPosted: Sat Jul 13, 2019 1:27 pm
Reply with quote

JCL SET statements do not care about JCL IF-THEN-ELSE logic. They are executed regardless, AT THE BEGINNING OF THE JOB!
Back to top
View user's profile Send private message
Willy Jensen

Active Member


Joined: 01 Sep 2015
Posts: 712
Location: Denmark

PostPosted: Sat Jul 13, 2019 2:10 pm
Reply with quote

SET statemets are executed when encountered, see my sample above, but I agree thtat they are not subject to IF / ENDIF.
Back to top
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2023
Location: USA

PostPosted: Sat Jul 13, 2019 4:54 pm
Reply with quote

prino wrote:
JCL SET statements do not care about JCL IF-THEN-ELSE logic. They are executed regardless, AT THE BEGINNING OF THE JOB!

This is wrong. Try to run any simple test, or take a look at the tests given above.
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 -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts Extracting Variable decimal numbers f... DFSORT/ICETOOL 17
No new posts Map Vols and Problem Dataset All Other Mainframe Topics 2
No new posts Return codes-Normal & Abnormal te... JCL & VSAM 7
No new posts How to append a PS file into multiple... JCL & VSAM 3
No new posts Passing Parameters to Programs Invoke... PL/I & Assembler 5
Search our Forums:

Back to Top