Re: Re: MVT COBOL under MVS3.8j.

"Joe Monk [email protected] [H390-MVS]" <[email protected]>
Newsgroups gmane.comp.emulators.hercules390.mvs
Message-ID <CAPcd4G_rL40jjuzMBsVnYz+FrC6fm8reZxXiquL_7+poJ7uNWQ@mail.gmail.com>
"In the TBGETSPC I see  check for the longest phase which is phase 1 and a
quick exit bypassing the GETMAIN for the 3rd MASTAM."

This is a fundamental mistake.

A quick look at the source for IKFCBL00 reveals ...

TBNEWLG1 DC    H'0'
69540021
TAM1Q    EQU   X'02'
 69560021
TAM2Q    EQU   X'04'
 69580021
LONGPHS EQU   TAM2Q                                             69600021
TAM3Q    EQU   X'05'
 69620021
TAM4Q    EQU   X'06'
 69640021
TAM5Q    EQU   X'07'
 69660021
TAM6Q    EQU   X'09'

So, the longest phase is Phase 4, not Phase 1.

Thus, this code:

      CLI   DX0(R10),LONGPHS
      BE    TBGETXIT            THIS IS LONGEST PHASE

is testing to see if we are in Phase 4 so it doesnt try to getmain more
than the region available.

Joe

On Sat, Sep 14, 2019 at 1:43 AM Dave Kreiss [email protected] [H390-MVS]
<[email protected]> wrote:

>
>
> Ok I think I have this figured out.  Of course I could of have broken
> something else...
>
> The TBGETALL appears to have a requirement that it must be in either the
> first or second MASTAM.  In all my tests there are 3 so we take the a
> branch to TBERR4 in TBGETALL:
>          LA    R4,TBMASTAM
>          C     R4,TBLASMTM
>          BE    TBGTAL21            ONLY 1 MASTAM
>          LA    R5,TBMSTMLG(R4)
>          C     R5,TBLASMTM
>          BNE   TBERR4              R5 NOT EQUAL TO TBLASMTM
> I can see the storage obtain in the trace table just before the U16 abend..
> In the TBGETSPC I see  check for the longest phase which is phase 1 and a
> quick exit bypassing the GETMAIN for the 3rd MASTAM.
>          CLI   DX0(R10),LONGPHS
>          BE    TBGETXIT            THIS IS LONGEST PHASE
> My solution is to zap that phase test to 0A the cross reference phase
> preventing the third MASAM.  I have tested several old  programs and they
> compile successfully now.
> ZAP is simple:
> //ZAP     EXEC PGM=AMASPZAP
> //SYSPRINT DD  SYSOUT=*
> //SYSLIB   DD  DSN=your COBOL steplib here,DISP=SHR
> //SYSIN    DD  *
>  NAME IKFCBL00 PH0TBST1
>   VER 05F0 9504A000
>   REP 05F0 950AA000
> /*
> This is my compile parameters:
> //COBOL   EXEC COBUCLG,REGION=200K,
> //             PARM=('LOAD,SUPMAP,SIZE=100K,BUF=5K',
> //             'NOLIB,SXREF,DMAP,PMAP,VBREF')
> The zap needs more tests but worked  for the simple hello world and my
> other old COBOL program that does amortization.
>
> Dave
>
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.