I am facing the following abend:
"The system or user abend S878 R=00000010 was issued"
I browsed the previous posting on this abend but couldn't find much help.
The cobol program which is giving the abend has an internal sort with input and output procedures.
The above abend is in the SORT as I am getting the following message too:
DFSORT TERMINATED WITH S878 ABEND DURING PHASE S 1
I have tried many values of the region parameter (including REGION=0M) but none seem to be working.
Here is the SORTMSG listing. I hope somebody is able to help me. I am stuck
-------------------------------------------------------------------------------------
1ICE143I 0 BLOCKSET SORT TECHNIQUE SELECTED
ICE000I 0 - CONTROL STATEMENTS FOR 5740-SM1, DFSORT REL 14.0 - 14:40 ON MON MAR 12, 2007 -
0 SORT FIELDS=(0001,0027,CH,A)
RECORD TYPE=F,LENGTH=(000527,,)
ICE201I 0 RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE118I 0 UNKNOWN FILE SIZE - FILSZ=EN MAY IMPROVE RESOURCE USAGE AND PERFORMANCE
ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
ICE089I 1 O899311A.STEP5 . , INPUT LRECL = 527, TYPE = F
ICE093I 0 MAIN STORAGE = (MAX,4194304,4194304)
ICE156I 0 MAIN STORAGE ABOVE 16MB = (4062897,4062897)
ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=256
ICE128I 0 OPTIONS: SIZE=4194304,MAXLIM=1048576,MINLIM=204800,EQUALS=N,LIST=Y,ERET=RC16 ,MSGDDN=SORTMSG
ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=FULL ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=N ,ABCODE=MSG
ICE130I 0 OPTIONS: RESALL=4096,RESINV=24576,SVC=109 ,CHECK=N,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB1
ICE131I 0 OPTIONS: TMAXLIM=4194304,ARESALL=0,ARESINV=0,OVERRGN=16384,CINV=Y,CFW=Y,DSA=0
ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=N,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
ICE133I 0 OPTIONS: HIPRMAX=OPTIMAL,DSPSIZE=MAX ,ODMAXBF=0,SOLRF=Y,VLLONG=N,VSAMIO=N
ICE750I 0 DC 0 TC 0 CS DSVVV KSZ 27 VSZ 27
ICE752I 0 FSZ=0 RE IGN=0 C AVG=528 0 WSP=0 E DYN=0 0
ICE185A 0 DFSORT TERMINATED WITH S878 ABEND DURING PHASE S 1
-------------------------------------------------------------------------------------
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
Hello,
Has this program run successfully previously?
Please post the jobcard and the jcl for the step that is abending. Also, please post the jes messages for this job. If, when you post jcl, code & messages, they read better if posted with the "Code" tag (at the top of the reply panel).
Unless the program "fell through" some code, it appears that the amount of memory available is not large enough.
This program is working fine for the last set of input files which were executed. Today also if I am running those file the processing is completing successfully:
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Quote:
The above abend is in the SORT as I am getting the following message too:
DFSORT TERMINATED WITH S878 ABEND DURING PHASE S 1
This message does NOT necessarily mean that the ABEND is in DFSORT. It just indicates that DFSORT detected an ABEND. The ABEND could be in the COBOL program.
I see:
Quote:
16.24.34 JOB28381 IEW4000I FETCH FOR MODULE #XAACRT1 FROM DDNAME -LNKLST- FAILED BECAUSE INSUFFICIENT STORAGE WAS AVAILABLE.
#XAACRT1 is NOT a DFSORT module. But this may be a secondary ABEND.
However, it could be that you aren't telling DFSORT to leave enough storage for the COBOL program to use. Your RESINV value is only 24576 which might be quite small where COBOL is involved (I don't know that much about COBOL's storage requirements). You may need to raise it to a much larger value (e.g. in kilobytes or even megabytes). You can do that with RESINV=nK or RESINV=nM:
Code:
//DFSPARM DD *
OPTION RESINV=nK
/*
Of course, I don't know if this is actually the problem. It's just a suggestion based on a possibility.
The problem is not with the sort itself. The problem is that when the sort is invoked and is ungracefully terminated in the input or output procedure, the results may be unpredictable (ugly).
It appears that while in one procedure or the other some error occurred - either with the dcb for one of those 2 files or some content that caused an 0c7 or other abend. These seem likly as the program executes successfullt with other input data.
This file GUL.TB.V3.ACCEXTS.FILE appears to be on tape/cart. If so, the tape management system should have the dcb info. If it is on dasd, i'm curious about the mount message immediately before the abend. Are both files on the same media? From my perspective, it appears that the first file is on tape/cart and the other on dasd.
When abend-aid tried to report the problem, it needed to load a module (#XAACRT1), and there was insufficient memory available - which generated the s878.
Were there any sysout datasets created by step5? Other than a dump, other sysout info might be useful.
I had a call chain: A --> B --> C --> D. D is a new program which I coded. It is a DB2 program. None of A, B and C are DB 2 programs.
The product I am working on requires to connect to DB2 before making any DB2 queries. There is a standard routine which does this. So I was calling this routine at the beginning of D to connect and at the end of D to disconnect. Now program D is called for certain types of records in the input file. So for all these records a connect and disconnect to DB2 was taking place.
I did displays all over my processing and found that the abend was actually occurring in D (although the SYSOUT said A), and this abend occurred when it tried to connect to DB2. For all previous records there was no problem in connecting/disconnecting from the DB2. I removed the problematic record from the input file and the processing ended successfully. I then ran the problematic record alone and it again finished successfully.
It just hinted me that after a limit is reached the processing is unable to connect and disconnect to DB2. I moved the connect and disconnect statements at the node, i.e. program A so that there be only one connect and one disconnect in the whole processing and guess what .... IT WORKED !!!
However due to limited knowledge of this virtual address availability and all, I would like to ask ... does the above make any sense ... The understanding that I am developing out of this is that the processing was using some memory to connect which it was probably not able to release. After a point it was unable to go any further.
I would certainly like to get some expert opinion on this.
THANKS a lot for all the information that was given in the thread. It has definitely increased my understanding level
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
Congrats
One problem with going deep into a "call chain" that has external interfaces (i.e. DB2) while "inside" a sort is that when anything goes wrong, it is often hidden and tougher to isloate.
Unfortunately, what you describe does make sense. Things like this are fairly common.
Moving the connect & disconnect to A is a good move even if there was no abend.
What was the situation with the "bad" record? Just where it was located in the file? It is curious that removing that record allowed the run to complete. If the abend was a function of number of times through the process, the "next" record would have also caused the abend (unless this was the "last" one.
It is good to hear that it is now working.
Thank you for posting the good news. Let us know if you'd like any other info
If the abend was a function of number of times through the process, the "next" record would have also caused the abend (unless this was the "last" one.
well the record on which I was getting an abend was last of the type which caused invoking of module D. It was not a bad record as it had processed successfully when I processed it alone.