|
View previous topic :: View next topic
|
| Author |
Message |
markzasz
New User
Joined: 04 Apr 2017 Posts: 9 Location: USA
|
|
|
|
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 |
|
 |
Robert Sample
Global Moderator

Joined: 06 Jun 2008 Posts: 8700 Location: Dubuque, Iowa, USA
|
|
|
|
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 |
|
 |
markzasz
New User
Joined: 04 Apr 2017 Posts: 9 Location: USA
|
|
|
|
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 |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2281 Location: USA
|
|
|
|
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 |
|
 |
enrico-sorichetti
Superior Member

Joined: 14 Mar 2007 Posts: 10902 Location: italy
|
|
|
|
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 |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2281 Location: USA
|
|
|
|
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 |
|
 |
Willy Jensen
Active Member

Joined: 01 Sep 2015 Posts: 774 Location: Denmark
|
|
|
|
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 |
|
 |
Nic Clouston
Global Moderator
Joined: 10 May 2007 Posts: 2454 Location: Hampshire, UK
|
|
|
|
| Or simply have a specific job for each day. Easy to set up, easy to maintain, easy to debug. |
|
| Back to top |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2281 Location: USA
|
|
|
|
| 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".
Very often even moderators do support similar statements...  |
|
| Back to top |
|
 |
Willy Jensen
Active Member

Joined: 01 Sep 2015 Posts: 774 Location: Denmark
|
|
|
|
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 |
|
 |
prino
Senior Member

Joined: 07 Feb 2009 Posts: 1323 Location: Vilnius, Lithuania
|
|
|
|
| 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 |
|
 |
Willy Jensen
Active Member

Joined: 01 Sep 2015 Posts: 774 Location: Denmark
|
|
|
|
| SET statemets are executed when encountered, see my sample above, but I agree thtat they are not subject to IF / ENDIF. |
|
| Back to top |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2281 Location: USA
|
|
|
|
| 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 |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|