From: William M. Klein on
I haven't read this thread yet, but has someone said:

A) to call ILBOWAT0, you must compile the CALLING program with DATA(24)
and
B) That calls to ILBOWAT0 should now be replaced by calls to CEE3DLY, see:
http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/CEEA3180/2.2.5.5


--
Bill Klein
wmklein <at> ix.netcom.com
<vbarathee(a)gmail.com> wrote in message
news:a9a3f442-72d5-496f-be8c-3e361866b1d5(a)z72g2000hsb.googlegroups.com...
hi all ,

Hope someone can resolve my clarifications on cobol , please find
below the scenario,

We have a batch job runs with two input files, one PS file and a VSAM
KSDS file , we read the acct number from the PS file and check with
KSDS file , we use the acct no as key and take details , then we write
into MQ series . Also we have a wait time logic in the pgm which calls
ILBOWAT module so that once the threshold reaches some 250,000 in MQ ,
all the jobs will wait for 180 secs and then it will continue writing
into MQ.

This program was a generic one and used by 10 split jobs running
parallely in production , recently we added the VSAM file , previously
the pgm had only PS file. Now the job is getting abend with S0C4 x'4'
when it waits for the threshold limit and abends exactly when it tries
to read the input VSAM file.

The VSAM file was defined in Online region , but no job or region
would update or access the file at the time of run. The share option
for VSAM was (3,3) and no RLS option was used.

Please find below abend code details ,

MQM-REASON-CODE: 000000000
MQ-TARGET-QUEUE : HNCDSCVR.LQ.FCMSLOW
************** CALL TO MQOPEN *****************
MQM-OBJECT-HANDLE: 000000001
MQM-REASON-CODE: 000000000
### MQ DEPTH: 79481 RECORDS WRITTEN: 10001 02:32:22
### MQ DEPTH: 159281 RECORDS WRITTEN: 20002 02:33:04
### MQ DEPTH: 244216 RECORDS WRITTEN: 30003 02:33:33
### MQ DEPTH: 327990 RECORDS WRITTEN: 40004 02:34:01
### MQ DEPTH: 227646 RECORDS WRITTEN: 40004 02:37:01
CEE3204S The system detected a protection exception (System
Completion Code=0C4).
From compile unit DSCB6100 at entry point DSCB6100 at
compile unit offset +000545C4 at entry offset +000545C4
at address 0005B904.


02.37.02 JOB02101 +IDI0001I Fault Analyzer V6R1M0 (PK29971
2006/08/24) invoked by IDIXDCAP using MVSP.FANALYZE.PARMLIB(IDICNF00)
02.37.03 JOB02101 +IDI0081I IEWBIND unusual condition INCLUDE
DSCB6100 rc=3000526
02.37.19 JOB02101 +IDI0002I Module IGZCXFR offset X'280': Abend S0C4-
X'4' (Protection Exception)
02.37.19 JOB02101 +IDI0003I Fault ID F04475 assigned in history file
MVSP.FA.PROD.BATCH.HIST


Fault analyzer details :

File Name . . . . . . . . . : DSCCQUEU
RT��� Data Set Name . . . . . . : DSCP.VO00P.CICS160I.DSCCQUEU
�RT�5 File Attributes . . . . . : ORGANIZATION=INDEXED VSAM, ACCESS
MODE=RANDOM,
�RT��� RECFM=FIXED
�RT��� Last I/O Function . . . . : READ
�RT��� Open Status . . . . . . . : INPUT
RT��� File Status Code. . . . . : 23
�RT�5 An attempt was made to randomly
access a record
�RT�5
�RT�5 that does not exist in the file,
or a START or
�RT�5
�RT�5 random READ statement was
attempted on an optional
�RT�5
�RT input file that was not present.
�RT
�RT��� Return Code . . . . . . . : X'8'
�RT��� Function Code . . . . . . : X'0'
�RT��� Feedback Code . . . . . . : X'10'
�RTass Record not found, or the RBA is
not found in the
�RTass
�RT��� buffer pool. (If multiple RPL
requests are issued
�RT���
�RT��� for alternate indexes, getting
return code
�RT���
�RT��� 16(X'10') might mean a temporary
situation where
�RT���
�RT��� processing has not been completed
on either the
�RT���
�RT base cluster or the associated
alternate indexes.)
�RT

The same code works fine when we use Dynamic access mode and a START
verb before reading the VSAM file.

We are able to track the pgm where it gets abend , but we are unable
to locate the exact reason . The same code runs in testing environment
fine if it is not going to wait time logic .

Please let me know ur findings.

Thanks
Barathi.v


From: klshafer on
On Jun 24, 3:33 pm, "William M. Klein" <wmkl...(a)nospam.netcom.com>
wrote:
> I haven't read this thread yet, but has someone said:
>
> A) to call ILBOWAT0, you must compile the CALLING program with DATA(24)
>    and
> B) That calls to  ILBOWAT0 should now be replaced by calls to CEE3DLY, see:
>    http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/CEEA3180/2...

Hi, Bill,

Our shop makes a CALL to ILBOABN0 to do a user-initiated abend.

Is there an analogous CEE call that we should be making instead?

Ken
From: klshafer on
On Jun 24, 3:59 pm, "klsha...(a)att.net" <klsha...(a)att.net> wrote:
> On Jun 24, 3:33 pm, "William M. Klein" <wmkl...(a)nospam.netcom.com>
> wrote:
>
> > I haven't read this thread yet, but has someone said:
>
> > A) to call ILBOWAT0, you must compile the CALLING program with DATA(24)
> >    and
> > B) That calls to  ILBOWAT0 should now be replaced by calls to CEE3DLY, see:
> >    http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/CEEA3180/2...
>
> Hi, Bill,
>
> Our shop makes a CALL to ILBOABN0 to do a user-initiated abend.
>
> Is there an analogous CEE call that we should be making instead?
>
> Ken

Oops, Mr. Klein has already answered this before, back in 2004...

http://groups.google.com/group/comp.lang.cobol/browse_frm/thread/4a81304043a5b224/f1fefd05beba9bf2?tvc=1&q=abending#f1fefd05beba9bf2

Next time I should do a better search of "information assets" within
CLC before posting a redundant question...

Ken
From: William M. Klein on
I still haven't read this entire thread but a few things seem clear (to me):

1) If you are still using calls to ILBOWAT0, then you need to be careful about
AMODE and RMODE. The recommended way to do this is via a DYNAMIC call (CALL
identifier) statement with an Enterprise COBOL program compiled with DATA(24).
If you use a static call, then make certain you don't override the link-edit
(binder) attributes and keep the entire load module "below the line". - Better
yet, upgrade to CEE3DLY from ILBOWAT0.

2) The ANSI/ISO Standard has a rule that says you must have a file status field
OR a declarative. IBM has an extension that says you don't need either.
HOWEVER, if you have neither, then COBOL will ABEND when an unsuccessful (e.g.
"23") status occurs. This seems to be happening here.

Recommendation:
- Add a file status (actually, also add a 2nd 6-byte file-status-2 field as
defined in the LRM).
- Check the file status after ALL I/O (including OPENs, START, READ)
- If you are using data from the sequential file to look for a specific record
in the VSAM file and you get a file status 23, make certain that you display
what key value you tried using on the READ or START (with an indication of the
length of the key used).

--
Bill Klein
wmklein <at> ix.netcom.com
<vbarathee(a)gmail.com> wrote in message
news:a9a3f442-72d5-496f-be8c-3e361866b1d5(a)z72g2000hsb.googlegroups.com...
hi all ,

Hope someone can resolve my clarifications on cobol , please find
below the scenario,

We have a batch job runs with two input files, one PS file and a VSAM
KSDS file , we read the acct number from the PS file and check with
KSDS file , we use the acct no as key and take details , then we write
into MQ series . Also we have a wait time logic in the pgm which calls
ILBOWAT module so that once the threshold reaches some 250,000 in MQ ,
all the jobs will wait for 180 secs and then it will continue writing
into MQ.

This program was a generic one and used by 10 split jobs running
parallely in production , recently we added the VSAM file , previously
the pgm had only PS file. Now the job is getting abend with S0C4 x'4'
when it waits for the threshold limit and abends exactly when it tries
to read the input VSAM file.

The VSAM file was defined in Online region , but no job or region
would update or access the file at the time of run. The share option
for VSAM was (3,3) and no RLS option was used.

Please find below abend code details ,

MQM-REASON-CODE: 000000000
MQ-TARGET-QUEUE : HNCDSCVR.LQ.FCMSLOW
************** CALL TO MQOPEN *****************
MQM-OBJECT-HANDLE: 000000001
MQM-REASON-CODE: 000000000
### MQ DEPTH: 79481 RECORDS WRITTEN: 10001 02:32:22
### MQ DEPTH: 159281 RECORDS WRITTEN: 20002 02:33:04
### MQ DEPTH: 244216 RECORDS WRITTEN: 30003 02:33:33
### MQ DEPTH: 327990 RECORDS WRITTEN: 40004 02:34:01
### MQ DEPTH: 227646 RECORDS WRITTEN: 40004 02:37:01
CEE3204S The system detected a protection exception (System
Completion Code=0C4).
From compile unit DSCB6100 at entry point DSCB6100 at
compile unit offset +000545C4 at entry offset +000545C4
at address 0005B904.


02.37.02 JOB02101 +IDI0001I Fault Analyzer V6R1M0 (PK29971
2006/08/24) invoked by IDIXDCAP using MVSP.FANALYZE.PARMLIB(IDICNF00)
02.37.03 JOB02101 +IDI0081I IEWBIND unusual condition INCLUDE
DSCB6100 rc=3000526
02.37.19 JOB02101 +IDI0002I Module IGZCXFR offset X'280': Abend S0C4-
X'4' (Protection Exception)
02.37.19 JOB02101 +IDI0003I Fault ID F04475 assigned in history file
MVSP.FA.PROD.BATCH.HIST


Fault analyzer details :

File Name . . . . . . . . . : DSCCQUEU
RT��� Data Set Name . . . . . . : DSCP.VO00P.CICS160I.DSCCQUEU
�RT�5 File Attributes . . . . . : ORGANIZATION=INDEXED VSAM, ACCESS
MODE=RANDOM,
�RT��� RECFM=FIXED
�RT��� Last I/O Function . . . . : READ
�RT��� Open Status . . . . . . . : INPUT
RT��� File Status Code. . . . . : 23
�RT�5 An attempt was made to randomly
access a record
�RT�5
�RT�5 that does not exist in the file,
or a START or
�RT�5
�RT�5 random READ statement was
attempted on an optional
�RT�5
�RT input file that was not present.
�RT
�RT��� Return Code . . . . . . . : X'8'
�RT��� Function Code . . . . . . : X'0'
�RT��� Feedback Code . . . . . . : X'10'
�RTass Record not found, or the RBA is
not found in the
�RTass
�RT��� buffer pool. (If multiple RPL
requests are issued
�RT���
�RT��� for alternate indexes, getting
return code
�RT���
�RT��� 16(X'10') might mean a temporary
situation where
�RT���
�RT��� processing has not been completed
on either the
�RT���
�RT base cluster or the associated
alternate indexes.)
�RT

The same code works fine when we use Dynamic access mode and a START
verb before reading the VSAM file.

We are able to track the pgm where it gets abend , but we are unable
to locate the exact reason . The same code runs in testing environment
fine if it is not going to wait time logic .

Please let me know ur findings.

Thanks
Barathi.v


From: William M. Klein on
Your use of ILBOWAT0 is probably why you are getting S0C4 - you probably are NOT
using the correct AM/RMODE and DATA options.

--
Bill Klein
wmklein <at> ix.netcom.com
<vbarathee(a)gmail.com> wrote in message
news:284af19c-3f88-4348-9e4a-2628dd841062(a)34g2000hsf.googlegroups.com...
> Hi
>
> Give me some time to run the program without ILBOWATO module.
>
> The enhancement work came to us a month back.
>
> Could please explain me the reason behind why we need to run the
> program without ILBOWATO , I'm sorry I'm confused. Bcoz the logic wud
> change if we remove the traces of ILBOWATO .
>
> Regards,
> barathi.v
>