View previous topic :: View next topic
|
Author |
Message |
Divakar R
New User
Joined: 19 Feb 2013 Posts: 9 Location: India
|
|
|
|
We have
Quote: |
Out.0=670 records (79 rec len) |
"ALLOCATE DD(BR01) NEW SPACE(25) CYLINDERS" ,
"DSORG(PS) LRECL(15004) RECFM(V B)"
"EXECIO * DISKW BR01 (STEM out. FINIS"
"EXECIO * DISKR BR01 (STEM tem. FINIS"
say out.0 ....
Quote: |
Displaying 670 count |
say tem.0 ...
Quote: |
Getting count as 0 |
Do a=1 to out.0 by 1
say tem.a
Quote: |
..displaying "tem.1....tem.670" |
End |
|
Back to top |
|
|
mistah kurtz
Active User
Joined: 28 Jan 2012 Posts: 316 Location: Room: TREE(3). Hilbert's Hotel
|
|
|
|
Please re-read it. You forgot to ask what to do with your post...you have just outlined what you have done and not what is going wrong.You have not asked any questions. |
|
Back to top |
|
|
Divakar R
New User
Joined: 19 Feb 2013 Posts: 9 Location: India
|
|
|
|
Hi,
Thanks for ur reply.
I need to copy the dats from out.0 to BR01 file.. Which is not happening..
For confirmation.. /I juz moved the BR01 data into tem. and displaying it.
As output, I'm getting tem.1
tem.2
tem.3
....
tem.670
Kindly advise how to allocate a file/ how to move data into new file/ how to daiplay the dta from new file.. |
|
Back to top |
|
|
Divakar R
New User
Joined: 19 Feb 2013 Posts: 9 Location: India
|
|
|
|
How to debug RExx programs..? |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
Use TRACE I |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Mainly I look at the code, and go through it, see what I've done that is stupid. Else, have a look at Trace in Rexx. When posting problems with Rexx code, always do a Trace, look at it, and only if you still don't get it, post here, including the results of the Trace, please. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
first of all read here why using
EXECIO * DISKW is a bad practice
www.ibmmainframes.com/viewtopic.php?t=60269&highlight=execio
and here is a TESTED snippet which allocates, writes, reads without any problems
Code: |
/*REXX */
Trace "O"
dsname = "'ENRICO.TEST.MF1'"
aparm = "SPACE(1 1) TRACKS UNIT(SYSDA) " || ,
"DSORG(PS) RECFM(F B) LRECL(80) " || ,
"NEW CATALOG "
del_0ms = msg("OFF")
Address TSO "DELETE "dsname
del_0rc = rc
zrc = $alloc("DDNAME", dsname, aparm)
say "after the ALLOC RC("zrc")"
if zrc \= 0 then do
say "alloc error for file" dsname
exit
end
xou.0 = sourceline()
do i = 1 to xou.0
xou.i = sourceline(i)
end
zrc = $tsoex("EXECIO" xou.0 "DISKW DDNAME (STEM XOU. FINIS")
say "after the DISKW RC("zrc")"
if zrc \= 0 then do
say "EXECIO error for file" dsname
exit
end
drop xou.
zrc = $tsoex("EXECIO" "*" "DISKR DDNAME (STEM XIN. FINIS")
say "after the DISKR RC("zrc")"
if zrc \= 0 then do
say "EXECIO error for file" dsname
exit
end
say left(xin.0,4)
do i = 1 to xin.0
say left(i,4) "-" strip(xin.i, "T")
end
zrc = $free("DDNAME")
say "after the FREE RC("zrc")"
del_0ms = msg("OFF")
Address TSO "DELETE "dsname
del_0rc = rc
Exit 0
/* */
novalue:
say "*********************************"
say "** **"
say "** novalue trapped at line" || right(sigl,4) || " **"
say "** **"
say "*********************************"
exit
/* */
$tsoex:
tso_0tr = trace("O")
Address TSO arg(1)
tso_0rc = rc
trace value(tso_0tr)
return tso_0rc
/* */
$alloc:procedure
alc_0tr = trace("O")
parse upper arg ddnm, dsnm, misc
ddnm = strip(ddnm)
dsnm = strip(dsnm)
dsnm = strip(dsnm,,"'")
dsnm = "DA('"dsnm"') "
misc = space(misc)
alc_0ms = msg("OFF")
Address TSO "FREE FI("ddnm") "
Address TSO "ALLOC FI("ddnm") " dsnm misc
alc_0rc = rc
z = msg(alc_0ms)
trace value(alc_0tr)
Return alc_0rc
/* */
$free:procedure
alc_0tr = trace("O")
parse upper arg ddnm
ddnm = strip(ddnm)
alc_0ms = msg("OFF")
Address TSO "FREE DD("ddnm") "
alc_0rc = rc
z = msg(alc_0ms)
trace value(alc_0tr)
Return alc_0rc |
|
|
Back to top |
|
|
Divakar R
New User
Joined: 19 Feb 2013 Posts: 9 Location: India
|
|
|
|
Existing program.. (reclength= 90)
Code: |
brfile.i = "BR" || Right(i,2,"0")
"ALLOCATE DD("||brfile.i||") NEW SPACE(25) CYLINDERS" ,
"DSORG(PS) LRECL(15004) RECFM(V B)"
"EXECIO * DISKW "||brfile.i||" (STEM out. FINIS"
"EXECIO * DISKR "||brfile.i||" (STEM abc. FINIS"
say out.0
say abc.0
say brfile.i
Do a=1 to abc.0 by 1
say abc.a
End
|
Quote: |
Output
Code: |
12
12
BR01
DATE
--------------
2013-04-04
2013-04-04
2013-04-04
2013-04-04
2013-04-04
2013-04-04
--------------
--------------
|
|
New Program.. (where reclength = 79 )
Code: |
brfile.i = "BR" || Right(i,2,"0")
"ALLOCATE DD("||brfile.i||") NEW SPACE(25) CYLINDERS" ,
"DSORG(PS) LRECL(15004) RECFM(V B)"
"EXECIO * DISKW "||brfile.i||" (STEM out. FINIS"
"EXECIO * DISKR "||brfile.i||" (STEM abc. FINIS"
say out.0
say abc.0
say brfile.i
brrcnt.i = o
Do a=1 to out.0 by 1
say abc.a
End [quote]Output[/quote] |
669
0
BR01
ABC.1
ABC.2
ABC.3
ABC.4
ABC.5
ABC.6
ABC.7
ABC.8
ABC.9
ABC.10 |
|
Back to top |
|
|
Divakar R
New User
Joined: 19 Feb 2013 Posts: 9 Location: India
|
|
|
|
I'm unable to understand the reason, Why the new program which was coded as existing.. Is producing diff output..
Can anyone please advise me. How to procedd with this kind of scenario. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
the info posted was/is completely useless.
post the whole REXX script
Reread and try to understand my previous script that works |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
what are the 90 an 79 lrecls ? |
|
Back to top |
|
|
Divakar R
New User
Joined: 19 Feb 2013 Posts: 9 Location: India
|
|
|
|
Hi Enrico,
Sorry, I'm unable to understand your script. I'm beginner in Rexx. Moreover I'm doing this as part of new develeopment. which needs to be moved into production, and should run daily. I'm executing this program thru JCL.
Kindly advise, what is difference between the above 2 samples.. |
|
Back to top |
|
|
Akatsukami
Global Moderator
Joined: 03 Oct 2009 Posts: 1787 Location: Bloomington, IL
|
|
|
|
Divakar R wrote: |
Hi Enrico,
Sorry, I'm unable to understand your script. I'm beginner in Rexx. Moreover I'm doing this as part of new develeopment. which needs to be moved into production, and should run daily. |
Wow.
You don't know Rexx, you have no support or training, and your moron of a boss says, "Hey, kusomushi, write this program chop-chop; we need it for production". I'm glad that I don't work for that sorry outfit.
Enough of this deserved sarcasm, though. Put a trace statement ("TRACE I") at the beginning of your script. Post the output for the lines that you have shown here, in Code tags. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
My scripts do not seem that much complicated
unless for complicated You mean the presence of the proper checking of the return codes
what is that You do not understand when I told post the whole script ?
did You care to read the topics where I explain why it is plain wrong to use
EXECIO * DISKW |
|
Back to top |
|
|
|