Page 1 of 2

GETTING SOC7

PostPosted: Wed Feb 15, 2012 11:45 am
by utpalpal07
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?

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 1:10 pm
by BillyBoyo
Where have you set your data to an initial value (zero)?

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 1:39 pm
by NicC
Where have you defined AMOUNT?

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 3:28 pm
by utpalpal07
Amount1 has been defined in Working storage section as:
01 AMOUNT1 PIC 9(4) VALUE 1000.

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 3:50 pm
by BillyBoyo
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.

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 3:57 pm
by utpalpal07
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.

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 4:00 pm
by BillyBoyo
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?

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 4:20 pm
by Akatsukami
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.

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 5:53 pm
by Robert Sample
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.

Re: GETTING SOC7

PostPosted: Wed Feb 15, 2012 5:55 pm
by utpalpal07
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 ********************************