|
View previous topic :: View next topic
|
| Author |
Message |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
I am getting the error -193 while executing a rexx code to rename a file.
-----
| Code: |
IKJ56644I NO VALID TSO USERID, DEFAULT USER ATTRIBUTES USED
ACF0C038 ACF2 LOGONID ATTRIBUTES HAVE REPLACED DEFAULT USER ATTRIBUTES
28 *-* ADDRESS 'TSO' 'RENAME' "'"INPDSN"'" NEWNAME
+++ RC(-193) +++
RENAMING OF FILE FAILED. RC CODE = -193
READY
END |
---------------
I HAVE GOOGLED TO CHECK -193 ERROR CODE BUT COULDN'T FIND ANY RESULT.
My actual REXX code looks like below:
| Code: |
INPDSN = "TBHX.U1.FITS.ACH"
IF SYSDSN("'"INPDSN"'") ¬= 'OK'
THEN DO
SAY 'INPUT FILE NOT PRESENT'
EXIT
END
/* FIND DATE AND TIME INFOR FOR OUTPUT FILE */
CALL FIND_DATETIME
/* FIND SEQ NUMBER FOR OUTPUT FILE */
CALL FIND_SEQUENCE
/* CREATE NEW FILE NAME AND RENAME OLD FILE */
NEWNAME="'"INPDSN"."DATETIME"."SEQ"'"
ADDRESS 'TSO' 'RENAME' "'"INPDSN"'" NEWNAME
IF RC ¬= 0
THEN DO
THEN DO
[b] SAY 'RENAMING OF FILE FAILED. RC CODE =' RC [/b]
EXIT
END
CALL CD_GEN
EXIT
FIND_DATETIME:
NEWDAT = ""DATE(U)""
TS = ""DATE(U)"" ""TIME()""
PARSE VAR TS 1 MM1 3 . 4 DD 6 . 7 YY 9 . 10 HH 12 . 13 MM2 15
SELECT
WHEN MM1 = 01 THEN M1 = 'A'
WHEN MM1 = 02 THEN M1 = 'B'
WHEN MM1 = 03 THEN M1 = 'C'
WHEN MM1 = 04 THEN M1 = 'D'
WHEN MM1 = 05 THEN M1 = 'E'
WHEN MM1 = 06 THEN M1 = 'F'
WHEN MM1 = 07 THEN M1 = 'G'
WHEN MM1 = 08 THEN M1 = 'H'
WHEN MM1 = 09 THEN M1 = 'I'
WHEN MM1 = 10 THEN M1 = 'J'
WHEN MM1 = 11 THEN M1 = 'K'
WHEN MM1 = 12 THEN M1 = 'L'
OTHERWISE NOP
END
DATETIME = M1||DD||YY||'.'||'T'||HH||MM2
RETURN
FIND_SEQUENCE:
SEQDSN = "'TBHX.U1.AP.SEQN'"
IF SYSDSN(SEQDSN) = 'OK'
THEN DO
"ALLOC F(SEQFIL) SHR DS("SEQDSN")"
IF RC ¬= 0
THEN DO
SAY 'ALLOCATION OF SEQ FILE FAILED. RC CODE =' RC
EXIT
END
DROP SEQFLD
"EXECIO 2 DISKRU SEQFIL (STEM SEQFLD. FINIS"
IF RC = 0 THEN DO
CURRSEQ = SUBSTR(SEQFLD.1,1,3)
PREVDAT = SUBSTR(SEQFLD.2,1,8)
END
ELSE DO SAY 'ERROR IN READING FILE. RC CODE =' RC
EXIT
END
END
ELSE DO
"ALLOC FI(SEQFIL) DA("SEQDSN") SPACE(10,10) TRACKS LRECL(80)
RECFM(F) BLKSIZE(0) NEW REUSE"
IF RC ¬= 0
THEN DO
SAY 'CREATION OF SEQ FILE FAILED. RC CODE =' RC
EXIT
END
SEQFLD.1 = '001'
CURRSEQ = SEQFLD.1
PREVDAT = NEWDAT
"EXECIO 1 DISKW SEQFIL (STEM SEQFLD. FINIS"
IF RC ¬= 0
THEN DO
SAY 'INSERTING FIRST ROW TO SEQ FILE FAILED. RC CODE =' RC
EXIT
END
END
IF SUBSTR(NEWDAT,1,8) ¬= SUBSTR(PREVDAT,1,8) THEN DO
SEQFLD.1 = '001'
CURRSEQ = '001'
END
SEQ = "SEQ"CURRSEQ""
/* UPDATE THE NEW SEQ NUMBER*/
CURRSEQ = CURRSEQ + 1
SEQFLD.1 = RIGHT( CURRSEQ, 3, '0' )
SEQFLD.2 = NEWDAT
"EXECIO 2 DISKW SEQFIL (STEM SEQFLD. FINIS"
IF RC ¬= 0
THEN DO
SAY 'WRITING IN SEQUENCIAL FILE FAILED. RC CODE =' RC
SAY 'THIS NEEDS TO BE TAKEN CARE MANUALLY'
SAY 'ADD 1 TO SEQUENCE NUMBER AND UPDATE'
EXIT
END
RETURN
CD_GEN:
/* REXX */
....
... |
Edited: Please learn to use BBcode..Anuj (hopefully it's been coded the way it should be) |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
This code is just to rename given dataset .
If the dataset name is tbhx.u1.fits.ach - it will rename that like -
TBHX.U1.FITS.ACH.J1408.T1440.SEQ001
J = OCTOBER (10TH MONTH)
T1440 = TIME 14:40
SEQ001 = This file is genrated in TODAY'S -FIRST job run.
can any rexx expert pls help?? |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
| First guess - you do not have the required acces to the dataset to rename it. |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
expat,
thanks for the reply. but i think access is not the reason. the job is schedlued in OPC and the id with which the job is submitted has all the auth's for renaming the dataset. |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
| Any other messages in the job output ? |
|
| Back to top |
|
 |
enrico-sorichetti
Superior Member

Joined: 14 Mar 2007 Posts: 10900 Location: italy
|
|
|
|
| what about a "TRACE I" / "TRACE O" around the rename statement to see what is going on.... |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
actually the strange thing is - when I am running the job its working properly now. but when it is run thru the scheduler - its failing with the above error.
Could there be any particular reason for this? |
|
| Back to top |
|
 |
Pedro
Global Moderator

Joined: 01 Sep 2006 Posts: 2624 Location: Silicon Valley
|
|
|
|
| Quote: |
First guess - you do not have the required acces to the dataset to rename it.
|
I agree.
Please look in syslog for any related messages. |
|
| Back to top |
|
 |
Pedro
Global Moderator

Joined: 01 Sep 2006 Posts: 2624 Location: Silicon Valley
|
|
|
|
| How is your rexx program invoked? Are there any other TSO commands that do work? |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
| rexx is invoked by my job..and this rexx code is passed as parm... |
|
| Back to top |
|
 |
Pedro
Global Moderator

Joined: 01 Sep 2006 Posts: 2624 Location: Silicon Valley
|
|
|
|
JCl / Technical details please. How you invoke rexx makes a difference. |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
As when I am running the job with my id -its working and failing when run thru OPC scheduler- the guys are saying it might be because of the older versions REXX procs at scheduler.
I am still debugging that..
But can anyone give idea about how to pass the symbolic parameters from JCL to rexx.
In my jcl i have a dataset like: &RUN.&FLPFX..FITS.ACH
RUN=TIB.,
FLPFX='PS'
I have to rename the dataset using REXX. But I dont know how to pass on that &RUN, &FLPFX to REXX and so i used
INPDSN = "TIB.PS.FITS.ACH"
in REXX and Release team is not accepting such hard-coding in Rexx parms..
Can anybody pls help - how to pass on this prefixes (symb parameters) to REXX. |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
| Need to see the execution JCL before being able to help |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
Pls see the code below:
| Code: |
//LBHXD030 PROC RUN=TIB.,
// FLPFX='PS', * FILE NAME PREFIX (E.G.'PBHX.PS')
// PARMLIB='TIB.R17.FRAUDMON.PARMLIB'
//PS010 EXEC PGM=IEFBR14,TIME=1400
//*********************************************************************
//*
//***** DELETE FILES BEFORE CREATION
//*
//OUTACHO DD DSN=&RUN.&FLPFX..ACH.OUTPUT,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//OUTNACO DD DSN=&RUN.&FLPFX..NON.ACH.OUTPUT,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//OUFIL1 DD DSN=&RUN.&FLPFX..FRDMON.CDDTTM1,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//OUFIL2 DD DSN=&RUN.&FLPFX..FRDMON.CDDTTM2,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//NMATCHA DD DSN=&RUN.&FLPFX..FITS.ACH.NOTR,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//NMATCHP DD DSN=&RUN.&FLPFX..FITS.NON.ACH.NOTR,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//FITSACH DD DSN=&RUN.&FLPFX..FITS.ACH,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//FITSACH DD DSN=&RUN.&FLPFX..FITS.NON.ACH,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//*
//****EXTRACT RECORDS FROM PYIS, PPIS, PABD AND RW TABLES**************
//****AND WRITE ACH AND NON ACH OUTPUT FILES
//PS020 EXEC PGM=IKJEFT1B
//STEPLIB DD DSN=LNDV.OPUT.SYSTEST.B.GPL.B.LOADLIB,DISP=SHR
// DD DSN=LNDV.OPUT.INTTEST.B.GPL.B.LOADLIB,DISP=SHR
// DD DSN=HSBC.LINKLIB,DISP=SHR
// DD DSN=LDB2.SB01.UTILITY.LOADLIB,DISP=SHR
// DD DSN=LDB2.SB01.DB2.DSNEXIT,DISP=SHR
// DD DSN=LDB2LK.SB01.DB2.DSNLOAD,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DSN=&PARMLIB.(MGIB007),DISP=SHR
//SYSOUT DD SYSOUT=*
//***
//INPYTYI DD DSN=&PARMLIB.(MBHX30A),DISP=SHR
//INTIMEI DD DSN=&PARMLIB.(MBHX30B),DISP=SHR
//INMIN1I DD DSN=&PARMLIB.(MBHX30N),DISP=SHR
//INMIN2I DD DSN=&PARMLIB.(MBHX30O),DISP=SHR
//OUTACHO DD DSN=&RUN.&FLPFX..ACH.OUTPUT,
// DISP=(MOD,CATLG,CATLG),UNIT=DISK,
// SPACE=(CYL,(20,10),RLSE),
// DCB=(RECFM=FB,LRECL=1700,BLKSIZE=1700)
//OUTNACO DD DSN=&RUN.&FLPFX..NON.ACH.OUTPUT,
// DISP=(MOD,CATLG,CATLG),UNIT=DISK,
// SPACE=(CYL,(20,10),RLSE),
// DCB=(RECFM=FB,LRECL=1700,BLKSIZE=1700)
//**
//SYSPRINT DD SYSOUT=*
//CEEDUMP DD SYSOUT=X
//SYSDTERM DD SYSOUT=X
//SYSUDUMP DD SYSOUT=X
//*
//PS020SF EXEC PGM=STEPFAIL,COND=(0,EQ,PS020)
//*
//****COMPARE OUTPUT FILE WITH PREV OUTPUT FILE AND REMOVE FROM O/P FIL
//****THE RECORDS THAT ARE ALREADY PRESENT IN PREV OUTPUT FILE
//****USING ICETOOL
//PS030 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=&RUN.&FLPFX..ACH.PREV,DISP=SHR
//IN2 DD DSN=&RUN.&FLPFX..ACH.OUTPUT,DISP=SHR
//TEMP DD DSN=&T1,UNIT=SYSDA,SPACE=(CYL,(20,10),RLSE),
// DISP=(MOD,PASS),
// DCB=(RECFM=FB,LRECL=1701,BLKSIZE=1701)
//NMATCHA DD DSN=&RUN.&FLPFX..FITS.ACH.NOTR,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(20,10),RLSE),
// DCB=(RECFM=FB,LRECL=1700,BLKSIZE=1700)
//TOOLIN DD DSN=&PARMLIB.(MBHX30C),DISP=SHR
//CTL1CNTL DD DSN=&PARMLIB.(MBHX30D),DISP=SHR
//CTL2CNTL DD DSN=&PARMLIB.(MBHX30E),DISP=SHR
//CTL3CNTL DD DSN=&PARMLIB.(MBHX30F),DISP=SHR
//PS031 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN3 DD DSN=&RUN.&FLPFX..NON.ACH.PREV,DISP=SHR
//IN4 DD DSN=&RUN.&FLPFX..NON.ACH.OUTPUT,DISP=SHR
//TEMP DD DSN=&T2,UNIT=SYSDA,SPACE=(CYL,(20,10),RLSE),
// DISP=(MOD,PASS),
// DCB=(RECFM=FB,LRECL=1701,BLKSIZE=1701)
//NMATCHP DD DSN=&RUN.&FLPFX..FITS.NON.ACH.NOTR,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(20,10),RLSE),
// DCB=(RECFM=FB,LRECL=1700,BLKSIZE=1700)
//TOOLIN DD DSN=&PARMLIB.(MBHX30G),DISP=SHR
//CTL1CNTL DD DSN=&PARMLIB.(MBHX30H),DISP=SHR
//CTL2CNTL DD DSN=&PARMLIB.(MBHX30I),DISP=SHR
//CTL3CNTL DD DSN=&PARMLIB.(MBHX30J),DISP=SHR
//***CURRENT OUTPUT FILES BECOME PREVIOUS FILES FOR NEXT JOB RUN
//***COPY OUTPUT FILES TO PREV FILES **********************************
//PS040 EXEC PGM=IEFBR14,TIME=1400
//IN1 DD DSN=&RUN.&FLPFX..ACH.PREV,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//IN3 DD DSN=&RUN.&FLPFX..NON.ACH.PREV,
// DISP=(MOD,DELETE,DELETE),UNIT=DISK,SPACE=(TRK,1)
//*
//PS041 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&RUN.&FLPFX..FITS.ACH.NOTR,DISP=SHR
//SORTOUT DD DSN=&RUN.&FLPFX..ACH.PREV,DISP=(MOD,CATLG,DELETE),
// SPACE=(CYL,(20,10),RLSE)
//SYSIN DD DSN=&PARMLIB.(MBHX30K),DISP=SHR
//PS041SF EXEC PGM=STEPFAIL,COND=(0,EQ,PS041)
//PS042 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&RUN.&FLPFX..FITS.NON.ACH.NOTR,DISP=SHR
//SORTOUT DD DSN=&RUN.&FLPFX..NON.ACH.PREV,DISP=(MOD,CATLG,DELETE),
// SPACE=(CYL,(20,10),RLSE)
//SYSIN DD DSN=&PARMLIB.(MBHX30K),DISP=SHR
//PS042SF EXEC PGM=STEPFAIL,COND=(0,EQ,PS041)
//PS043 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&RUN.&FLPFX..FITS.ACH.NOTR,DISP=SHR
//SORTOUT DD DSN=&RUN.&FLPFX..FITS.ACH,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(20,10),RLSE)
//SYSIN DD DSN=&PARMLIB.(MBHX30P),DISP=SHR
//PS043SF EXEC PGM=STEPFAIL,COND=(0,EQ,PS042)
//PS044 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&RUN.&FLPFX..FITS.NON.ACH.NOTR,DISP=SHR
//SORTOUT DD DSN=&RUN.&FLPFX..FITS.NON.ACH,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(20,10),RLSE)
//SYSIN DD DSN=&PARMLIB.(MBHX30P),DISP=SHR
//PS044SF EXEC PGM=STEPFAIL,COND=(0,EQ,PS044)
//********************************************************************
//*RENAME THE OUTPUT ACH FILE DYNAMICALLY USING REXX AND SEND THRU C:D
//PS050 EXEC PGM=IKJEFT01,PARM='RFRDMON1',REGION=0M
//SYSEXEC DD DSN=&PARMLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//OUFIL1 DD DSN=&RUN.&FLPFX..FRDMON.CDDTTM1,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(1,1),RLSE),
// DCB=(RECFM=FB,LRECL=80,DSORG=PS)
//SYSTSIN DD DUMMY
//SYSOUT DD SYSOUT=*
//*
//PS050SF EXEC PGM=STEPFAIL,COND=((0,EQ,PS050))
//PS060 EXEC PGM=DMBATCH
//DMPUBLIB DD DSN=&PARMLIB,DISP=SHR
//DMNETMAP DD DISP=SHR,DSN=DNDM.NETMAP1
//DMMSGFIL DD DISP=SHR,DSN=LNDM.MSG
//SYSUDUMP DD SYSOUT=*
//DMPRINT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//NDMCMDS DD SYSOUT=A
//SYSIN DD DSN=&RUN.&FLPFX..FRDMON.CDDTTM1,DISP=SHR
//PS060SF EXEC PGM=STEPFAIL,COND=(0,EQ,PS060)
//********************************************************************
//*RENAME THE OUTPUT PP FILE DYNAMICALLY USING REXX AND SEND THRU C:D
//PS070 EXEC PGM=IKJEFT01,PARM='RFRDMON2',REGION=0M
//SYSEXEC DD DSN=&PARMLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//OUFIL1 DD DSN=&RUN.&FLPFX..FRDMON.CDDTTM2,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(1,1),RLSE),
// DCB=(RECFM=FB,LRECL=80,DSORG=PS)
//SYSTSIN DD DUMMY
//SYSOUT DD SYSOUT=*
//*
//PS070SF EXEC PGM=STEPFAIL,COND=((0,EQ,PS070))
//PS080 EXEC PGM=DMBATCH
//DMPUBLIB DD DSN=&PARMLIB,DISP=SHR
//DMNETMAP DD DISP=SHR,DSN=DNDM.NETMAP1
//DMMSGFIL DD DISP=SHR,DSN=LNDM.MSG
//SYSUDUMP DD SYSOUT=3
//DMPRINT DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//NDMCMDS DD SYSOUT=A
//SYSIN DD DSN=&RUN.&FLPFX..FRDMON.CDDTTM2,DISP=SHR
//PS080SF EXEC PGM=STEPFAIL,COND=(0,EQ,PS080)
//PS090 EXEC DMS
//SYSPARMS DD DSN=&PARMLIB.(MBHX30L),DISP=SHR
//SYSIN DD DSN=&PARMLIB.(MBHX30M),DISP=SHR
// |
|
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
1. PS020 STEP Calls a pgm and generates two o/p files.
&RUN.&FLPFX..FITS.NON.ACH.NOTR, and
&RUN.&FLPFX..FITS.ACH.NOTR,
2. PS030, PS040 steps eliminates some records (records that are present in o/p files generated in prev Job run) from the above two files
3. PS041, PS042, PS043, PS044:
the o/p files are copied to PREV files so that o/p files of next job run can be compared with these files.
&RUN.&FLPFX..FITS.NON.ACH
&RUN.&FLPFX..FITS.ACH files are same as o/p files of PS020 except they contain a trailer (total no of records)
4. PS050, PS070 are rexx steps to rename the files
&RUN.&FLPFX..FITS.NON.ACH
&RUN.&FLPFX..FITS.ACH
----
pls let me know for anymore info |
|
| Back to top |
|
 |
enrico-sorichetti
Superior Member

Joined: 14 Mar 2007 Posts: 10900 Location: italy
|
|
|
|
You posted a useless bunch of info...
what about posting the sysout and
a bit of rexx "trace I" around the rename
if You want help You should post what You are asked for..
not what You think it might help |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
Well, the JCL has the symbolics defined, so all you need to do is to change the JCL to put the required symbolics into the PARM= of the two REXX execs, and amend the REXX code to read them.
Why two seperate REXX programs to do the renames. Would one not suffice ? |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
Thanks expat.
I could pass the parm to rexx.
I had to use two different rexx pgms because there are some Connect Direct steps in between. |
|
| Back to top |
|
 |
mohanrazz
New User
Joined: 30 Sep 2008 Posts: 30 Location: India
|
|
|
|
Thanks you all guys..the prob is resolved now.
I have changed
| Code: |
ADDRESS 'TSO' 'RENAME' "'"INPDSN"'" NEWNAME
|
to
| Code: |
ADDRESS TSO
"RENAME '"INPDSN"'" NEWNAME |
I am still confused how this matters! But the prob is fixed after this.
thank u all again |
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|