GETTING SOC7



Support for OS/VS COBOL, VS COBOL II, COBOL for OS/390 & VM and Enterprise COBOL for z/OS

GETTING SOC7

Postby utpalpal07 » Wed Feb 15, 2012 11:45 am

01 CTL-CARD-RECORD.                                 
   05 EMP-ID           PIC X(6).                   
   05 FILLER           PIC X(3).                   
   05 EMP-NAME         PIC X(12).                   
   05 FILLER           PIC X(3).                   
   05 EMP-SALARY       PIC 9(5)V9(2) USAGE DISPLAY.
   05 FILLER           PIC X(48).                   
01 TBL.                                                 
   05 EMP-TBL OCCURS 5 TIMES INDEXED BY TBL-IDX.       
       10 TBL-EMP-ID       PIC X(6).                   
       10 FILLER           PIC X(3).                   
       10 TBL-NAME         PIC X(12).                   
       10 FILLER           PIC X(3).                   
       10 TBL-SALARY       PIC 9(5)V9(2) USAGE DISPLAY.
       10 FILLER           PIC X(48).                   
 2200-UPDATE-TABLE.                                   
         DISPLAY "*********UPDATED TABLE*********".   
         READ SRH-FILE INTO SRH-FILE-RECORD           
                 AT END                               
                 DISPLAY 'NO DATA'                   
         END-READ.                                   
         MOVE AMOUNT TO AMOUNT1.                     
         PERFORM WITH TEST BEFORE VARYING TBL-IDX     
                 FROM 1 BY 1 UNTIL TBL-IDX = 5       
                 ADD AMOUNT1 TO TBL-SALARY(TBL-IDX)
                 DISPLAY EMP-TBL(TBL-IDX)             




I'm getting error SOC7 when ever i'm executing "ADD AMOUNT1 TO TBL-SALARY(TBL-IDX)". as amount contains 1000.00.

Why?
utpalpal07
 
Posts: 43
Joined: Wed Feb 08, 2012 12:02 pm
Has thanked: 1 time
Been thanked: 0 time

Re: GETTING SOC7

 

Re: GETTING SOC7

Postby BillyBoyo » Wed Feb 15, 2012 1:10 pm

Where have you set your data to an initial value (zero)?
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 264 times

Re: GETTING SOC7

Postby NicC » Wed Feb 15, 2012 1:39 pm

Where have you defined AMOUNT?
The problem I have is that people can explain things quickly but I can only comprehend slowly.
Regards
Nic
NicC
Global moderator
 
Posts: 2690
Joined: Sun Jul 04, 2010 12:13 am
Location: Pushing up the daisys (almost)
Has thanked: 4 times
Been thanked: 105 times

Re: GETTING SOC7

Postby utpalpal07 » Wed Feb 15, 2012 3:28 pm

Amount1 has been defined in Working storage section as:
01 AMOUNT1 PIC 9(4) VALUE 1000.
utpalpal07
 
Posts: 43
Joined: Wed Feb 08, 2012 12:02 pm
Has thanked: 1 time
Been thanked: 0 time

Re: GETTING SOC7

Postby BillyBoyo » Wed Feb 15, 2012 3:50 pm

NicC asked about AMOUNT, which is moved to AMOUNT1, so initial value of AMOUNT1 has no relevance.

Either AMOUNT is causing you the problem, or your field you are adding it to has no initial value.
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 264 times

Re: GETTING SOC7

Postby utpalpal07 » Wed Feb 15, 2012 3:57 pm

Hi, Billy & Nic
Amount is in an PS. Declared as
01 AMOUNT PIC 9(4).
I'm moving it to AMOUNT1.

& billy i've initialized also bt its giving same SOC7.
utpalpal07
 
Posts: 43
Joined: Wed Feb 08, 2012 12:02 pm
Has thanked: 1 time
Been thanked: 0 time

Re: GETTING SOC7

Postby BillyBoyo » Wed Feb 15, 2012 4:00 pm

Can you show the code where you are initiliasing the table?

Are you able to identify the instruction that is failing, using the OFFSET from the dump output and the compiler listing?
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 264 times

Re: GETTING SOC7

Postby Akatsukami » Wed Feb 15, 2012 4:20 pm

utpalpal07 wrote:Hi, Billy & Nic
Amount is in an PS. Declared as
01 AMOUNT PIC 9(4).
I'm moving it to AMOUNT1.

So in other words: you still refuse to tell us what value(s) AMOUNT has, most likely because you do not know yourself and lack the ability to find out.
"You have sat too long for any good you have been doing lately ... Depart, I say; and let us have done with you. In the name of God, go!" -- what I say to a junior programmer at least once a day
User avatar
Akatsukami
Global moderator
 
Posts: 1053
Joined: Sat Oct 16, 2010 2:31 am
Location: Bloomington, IL
Has thanked: 6 times
Been thanked: 51 times

Re: GETTING SOC7

Postby Robert Sample » Wed Feb 15, 2012 5:53 pm

utpalpal07, you get a S0C7 abend for only one reason -- there is non-numeric data in a numeric variable. That non-numeric data could be a decimal point (1000.00 that you earlier posted for the value would NOT be a valid value for a PIC 9(5)V9(2) variable), a character, or actually anything other than zero through nine. The non-numeric data could be AMOUNT1 or it could be TBL-SALARY(TBL-IDX) -- we don't know since you're not posting anything helpful to figure it out.

The diagnostics provided with the S0C7 will help you identify which value is not valid. If your site has Abend Aid or one of the other abend analysis tools, use that -- Abend Aid, for example, can tell you which variable has the invalid value and even what the value is. But since the computer is giving you the S0C7 abend, you need to fix it -- somehow. I recommend you find someone with more experience at your site and get help there, as you are not cooperating and not posting what you are asked to post, which pretty much makes it impossible for us on this forum to help you.
Robert Sample
Global moderator
 
Posts: 3367
Joined: Sat Dec 19, 2009 8:32 pm
Location: East Dubuque, Illinois
Has thanked: 1 time
Been thanked: 222 times

Re: GETTING SOC7

Postby utpalpal07 » Wed Feb 15, 2012 5:55 pm

Full Code:

***************************** Top of Data ******************************
 IDENTIFICATION DIVISION.                                               
 PROGRAM-ID. RT7801.                                                   
                                                                       
 ENVIRONMENT DIVISION.                                                 
 CONFIGURATION SECTION.                                                 
 INPUT-OUTPUT SECTION.                                                 
                                                                       
 FILE-CONTROL.                                                         
        SELECT CTL-CARD ASSIGN TO DD1                                   
        FILE STATUS IS CTL-CARD-STAT.                                   
        SELECT SRH-FILE ASSIGN TO DD2                                   
        FILE STATUS IS SRH-FILE-STAT.                                   
                                                                       
 DATA DIVISION.                                                         
 FILE SECTION.                                                         
                                                                       
 FD   CTL-CARD                                                         
        RECORDING MODE IS F.                                           
 01   CTL-CARD-REC        PIC X(80).                                   
 FD   SRH-FILE                                                         
       RECORDING MODE IS F.                                             
 01   SRH-FILE-REC        PIC X(80).                                   
                                                                       
 WORKING-STORAGE SECTION.                                               
                                                                       
 01 CTL-CARD-STAT       PIC  XX VALUE SPACES.                           
 88 CTL-CARD-STAT-OK            VALUE '00'.                             
 01 SRH-FILE-STAT       PIC  XX VALUE SPACES.                           
 88 SRH-FILE-STAT-OK            VALUE '00'.                             
                                                                       
 01 WS-END-OF-CTL-CARD  PIC  X   VALUE SPACES.                         
 88 END-OF-CTL-CARD             VALUE 'Y'.                             
                                                                       
 01 S-EMP-ID1           PIC X(6).                                       
 01 S-AMT1              PIC 9(4).                                       
******      CONTROL CARD     *********                                 
 01 CTL-CARD-RECORD.                                                   
    05 EMP-ID           PIC X(6).                                       
    05 FILLER           PIC X(3).                                       
    05 EMP-NAME         PIC X(12).                                     
    05 FILLER           PIC X(3).                                       
    05 EMP-SALARY       PIC 9(5)V9(2) DISPLAY VALUE ZEROES.             
    05 FILLER           PIC X(48).                                     
******      SEARCH FILE LAYOUT         *****                           
 01 SRH-FILE-RECORD.                                                   
    05 S-EMP-ID         PIC X(6).                                       
    05 F                PIC X.                                         
    05 S-AMT            PIC 9(4).                                       
                                                                       
 01 TBL.                                                               
    05 EMP-TBL OCCURS 5 TIMES INDEXED BY TBL-IDX.                       
        10 TBL-EMP-ID       PIC X(6).                                   
        10 FILLER           PIC X(3).                                   
        10 TBL-NAME         PIC X(12).                                 
        10 FILLER           PIC X(3).                                   
        10 TBL-SALARY       PIC 9(5)V9(2) DISPLAY VALUE ZEROES.         
        10 FILLER           PIC X(48).                                 
 PROCEDURE DIVISION.                                                   
 0000-MAIN.                                                             
          PERFORM 1000-INITIAL-PARA THRU 1000-EXIT.                     
          PERFORM 3000-EXEC-TABLE   THRU 3000-EXIT.                     
          PERFORM 4000-CLOSE-PARA   THRU 4000-EXIT.                     
          GOBACK.                                                       
                                                                       
 1000-INITIAL-PARA.                                                     
          OPEN INPUT CTL-CARD.                                         
          OPEN INPUT SRH-FILE.                                         
          IF NOT CTL-CARD-STAT-OK                                       
              DISPLAY 'PROBLEM IN OPENING FILE'.                       
          IF NOT SRH-FILE-STAT-OK                                       
              DISPLAY 'PROBLEM IN OPENING FILE'.                       
          PERFORM 2000-LOAD-TABLE  THRU 2000-EXIT.                     
 1000-EXIT.                                                             
      EXIT.                                                             
                                                                       
 2000-LOAD-TABLE.                                                       
          DISPLAY 'GOING TO READ FILE'.                                 
          SET TBL-IDX TO 1.                                             
            READ CTL-CARD INTO EMP-TBL(TBL-IDX)                         
                AT END                                                 
                DISPLAY 'NO DATA IN CONTROL CARD'                       
            END-READ.                                                   
          DISPLAY "*********TABLE*********".                           
          PERFORM 2100-READ-REC THRU 2100-EXIT UNTIL                   
                        END-OF-CTL-CARD.                               
          PERFORM 2200-UPDATE-TABLE THRU 2200-EXIT.                     
  2000-EXIT.                                                           
          EXIT.                                                         
                                                                       
  2100-READ-REC.                                                       
          IF NOT CTL-CARD-STAT-OK                                       
               DISPLAY 'PROBLEM IN READING CONTROL CARD'.               
               DISPLAY EMP-TBL(TBL-IDX).                               
               SET TBL-IDX UP BY 1.                                     
          READ CTL-CARD INTO EMP-TBL(TBL-IDX)                           
               AT END                                                   
               SET END-OF-CTL-CARD TO TRUE                             
          END-READ.                                                     
 2100-EXIT.                                                             
       EXIT.                                                           
                                                                       
 2200-UPDATE-TABLE.                                                     
         DISPLAY "*********UPDATED TABLE*********".                     
         READ SRH-FILE INTO SRH-FILE-RECORD                             
                 AT END                                                 
                 DISPLAY 'NO DATA'                                     
         END-READ.                                                     
         MOVE S-AMT TO S-AMT1.                                         
         DISPLAY S-AMT1.                                               
         PERFORM WITH TEST BEFORE VARYING TBL-IDX                       
                 FROM 1 BY 1 UNTIL TBL-IDX = 5                         
                 ADD S-AMT1 TO TBL-SALARY(TBL-IDX)                     
                 DISPLAY EMP-TBL(TBL-IDX)                               
         END-PERFORM.                                                   
 2200-EXIT.                                                             
        EXIT.                                                           
                                                                       
 3000-EXEC-TABLE.                                                       
          DISPLAY "*******EXEC-TABLE********".                         
          READ SRH-FILE INTO SRH-FILE-RECORD                           
                  AT END                                               
                  DISPLAY 'NO DATA'                                   
          END-READ.                                                   
          MOVE S-EMP-ID TO S-EMP-ID1.                                 
          DISPLAY S-EMP-ID1.                                           
          SET TBL-IDX TO 1.                                           
          SEARCH EMP-TBL                                               
                        AT END                                         
                        DISPLAY 'NO MATCH FOUND'                       
          WHEN S-EMP-ID1 = TBL-EMP-ID(TBL-IDX)                         
                 DISPLAY 'EMP FOUND'                                   
                 DISPLAY EMP-TBL(TBL-IDX)                             
                 CONTINUE                                             
                 SET TBL-IDX UP BY 1                                   
          END-SEARCH.                                                 
                                                                       
 3000-EXIT.                                                             
      EXIT.                                                             
                                                                       
 4000-CLOSE-PARA.                                                       
          CLOSE CTL-CARD.                                               
 4000-EXIT.                                                             
          EXIT.                                                         
                                                                       
 2500-EXIT.                                                             
          EXIT.                                                         
                                                                       
          STOP RUN.                                                     
**************************** Bottom of Data ****************************





the INPUT FILE & SEARCH FILE ARE:

INPUT:
***************************** Top of Data ******************************
000010 UTPAL 20000.00
000011 NEHA 25000.90
000012 ETI 29000.56
000013 ABHISHEK 27589.36
**************************** Bottom of Data ****************************



Search:
***************************** Top of Data ******************************
000012 1000
**************************** Bottom of Data ****************************

Output:
********************************* TOP OF DATA **********************************
GOING TO READ FILE
*********TABLE*********
000010 UTPAL 20000.00
000011 NEHA 25000.90
000012 ETI 29000.56
000013 ABHISHEK 27589.36
*********UPDATED TABLE*********
0
CEE3207S The system detected a data exception (System Completion Code=0C7).
From compile unit RT7801 at entry point RT7801 at compile unit offset +00000938 at entry offset +00000938 at
address 0A500938.
******************************** BOTTOM OF DATA ********************************
utpalpal07
 
Posts: 43
Joined: Wed Feb 08, 2012 12:02 pm
Has thanked: 1 time
Been thanked: 0 time

Next

Return to IBM Cobol

 


  • Related topics
    Replies
    Views
    Last post