Read TIOT and RDJFCB for each entry



High Level Assembler(HLASM) for MVS & VM & VSE

Re: Read TIOT and RDJFCB for each entry

Postby steve-myers » Tue Mar 15, 2011 8:16 pm

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.
steve-myers
Global moderator
 
Posts: 1886
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 197 times

Re: Re: Read TIOT and RDJFCB for each entry

 

Re: Read TIOT and RDJFCB for each entry

Postby BillyBoyo » Fri Mar 25, 2011 12:53 pm

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?
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 264 times

Re: Read TIOT and RDJFCB for each entry

Postby steve-myers » Fri Mar 25, 2011 2:19 pm

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.
steve-myers
Global moderator
 
Posts: 1886
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 197 times

Re: Read TIOT and RDJFCB for each entry

Postby BillyBoyo » Sat Mar 26, 2011 12:30 am

Thanks. Also for the IEHMOVE message :lol:
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 264 times

Previous

Return to Assembler

 


  • Related topics
    Replies
    Views
    Last post