Page 3 of 3

Re: Read TIOT and RDJFCB for each entry

PostPosted: Tue Mar 15, 2011 8:16 pm
by steve-myers
Changing a program's AMODE from 24 to 31 often requires no change at all in the program, though if you're doing this look for constructs like ICM reg,7,... or ICM reg,B'0111',... where the register was not pre-cleared, usually to binary 0s. You may recall my comment about code that loaded a UCB address from the TIOT had a comment about a "minor" alteration was required for AMODE 31 operation; the ICM 7,B'0111', TIOEFSRT was the issue. Back when AMODE conversions were just starting we were told to look for constructions like LA reg,0(,reg). This used to be quite common, but you never see it any more, though you sometimes see N reg,=A(X'FFFFFF') or N reg,=X'00FFFFFF' in its place.

Re: Read TIOT and RDJFCB for each entry

PostPosted: Fri Mar 25, 2011 12:53 pm
by BillyBoyo
steve-myers wrote:There is one other way to make your program work, at least for a time, without freeing the buffer pool after you CLOSE the DCB. Let's see if you can figure it out yourself.



Hi Steve, sensuixel has moved on for the moment. I can't figure it out. Are you going to put me out of my misery? I found there reference in the POP for why your -ve zero became +ve, can I swap that for figuring it out myself?

Re: Read TIOT and RDJFCB for each entry

PostPosted: Fri Mar 25, 2011 2:19 pm
by steve-myers
Actually, there are two options. The old fashion method would be to completely refresh the DCB, like so -
         MVC   ACTDCB(ACTDCBL),MASTDCB
         ...
ACTDCB   DCB   ...
ACTDCBL  EQU   *-ACTDCB
MASTDCB  DCB   ...

I've never trusted CLOSE to restore the DCB to its original contents before it was opened. Sometimes I do this anyway. In any event, the buffer pool was not freed, so eventually you'll run out of storage if you keep reusing the DCB data area this way..

The other option, only available since sometime after MVS/XA, is to run the program AMODE 31 and force the buffer pool to be above the line. This will only work for QSAM.
ACTDCB   DCB   DCBE=DCBE,DSORG=PS,MACRF=(Gx,Px)...
DCBE     DCBE  RMODE31=BUFF
CLOSE will free this buffer pool. Each opened DCB requires a unique DCBE.

Re: Read TIOT and RDJFCB for each entry

PostPosted: Sat Mar 26, 2011 12:30 am
by BillyBoyo
Thanks. Also for the IEHMOVE message :lol: