| Greg Price 2004-09-04, 3:55 pm |
| IIRC (and I may not) SB00 means a program check during EXCP.
There may be several causes, but the one I am familiar with
is a problem (probably a S0C4) caused by the buffer being
too small for the block size.
Now, when you run it under the debugger the storage after the
buffer may exist (ie. be GETMAINed) and be purloined by EXCP
for the duration of an I/O operation. If it's a READ, the
block may not be long enough to overlay the appropriated storage,
so no data corruption occurs, and everything works.
Without the debugger, the storage after the buffer does not exist
and a S0C4 results from EXCP trying to access (page fix?) it,
hence SB00.
One thing to try is to extend the buffer size to the maximaum
allowed (32760 unless you're using a new-age LBI or whatever,
in which case why aren't you telling us the details?) and see
if the problem persists.
If so, then I guess this was not your problem.
If not, you can try to figure out "Why is it so?"
(Thank you Prof. Julius Sumner Miller. :)
Good luck!
GP
Lolobg wrote:
> I'm currently starting with assembler language
>
> While executing one of my assembler program that read a pds member I've
> got a ABEND SB00 . Message : A program check occured during EXCP
> processing of an I/O request.
>
> The same program works when running under my debugger (ASG smartest).
> I've made many tests changing AMODE/RMODE but I cannot find out what's
> going wrong with it?
>
> This program is reentrant an compiled with AMODE=24 RMODE=24
>
> Could someone explain in simple terms what a program check is ?
> Does anyone have an idea in which way I should investigate?
>
|