IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

A010 INVALID FILE REFERENCE - DATECARD error getting


IBM Mainframe Forums -> CA Products
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
MOHAPATRA

New User


Joined: 20 Sep 2010
Posts: 1
Location: pune

PostPosted: Wed Oct 06, 2010 6:07 pm
Reply with quote

Hi,

I'm getting A010 invalid file reference error for one easytrieve program. This program creating three reports. The 1st two reports coming fine however the third report comes as blank & getting A010 error.
This third report is getting created in 2200-GET-COMPANY-WMSCRTY
para.

I'm attaching the logic.

Code:
JOB INPUT NULL                         
    PERFORM 1000-READ-DATECARD         
    PERFORM 2000-GET-COMPANY-WMSCRTY   
    PERFORM 2100-GET-COMPANY-WMSCRTY   
    PERFORM 2200-GET-COMPANY-WMSCRTY   

 1000-READ-DATECARD. PROC                                       
*------------------------------------------------------------*   
*                                                               
     GET  DATECARD                                               
     MOVE details of date
 END-PROC                                                       

 2000-GET-COMPANY-WMSCRTY. PROC                           
*---------------------------------------------------------
*                                                         
     GET  VSSCRTY1                                       
*                                                         
     IF EOF VSSCRTY1                                     
        STOP                                             
     END-IF                                               
*                                                         
     DO WHILE WS-EOF-VSSCRTY1 = 'N'                       
        IF VSSCRTY1-WMSCRTY-USER-TID  NE WS-PREV-USER-ID 
           IF VSSCRTY1-SECURITY = 'H'                     
           MOVE VSSCRTY1-WMSCRTY-USER-TID  TO WS-USER-ID1
           MOVE VSSCRTY1-UPDT-DATE         TO WS-UPDT-DATE
             IF VSSCRTY1-WMSCRTY-USER-TID  NE WS-PREV-USER-ID     
                PERFORM A1-X-OPEN-CURSOR-C-MXACNS                 
                PERFORM A1-X-FETCH-CURSOR-C-MXACNS               
                DO WHILE WS-FOUND-CURSOR-C-MXACNS1 = 'Y'         
                   PERFORM A1-X-FETCH-CURSOR-C-MXACNS             
                END-DO                                           
                PERFORM A1-X-CLOSE-CURSOR-C-MXACNS               
             END-IF                                               
           MOVE VSSCRTY1-WMSCRTY-USER-TID  TO  WS-PREV-USER-ID   
           END-IF                                                 
        END-IF                                                   
           MOVE VSSCRTY1-WMSCRTY-USER-TID  TO  WS-PREV-USER-ID   
        GET  VSSCRTY1                                             
        IF EOF VSSCRTY1                                           
          MOVE 'Y' TO WS-EOF-VSSCRTY1                             
        END-IF                                                   
     END-DO   
 END-PROC   
---------------------------------
2100-GET-COMPANY-WMSCRTY. PROC                                 
----------------------------------------------------------------
                                                               
    GET  VSSCRTY2                                               
                                                               
    IF EOF VSSCRTY2                                             
       STOP                                                     
    END-IF                                                     
                                                               
    DO WHILE WS-EOF-VSSCRTY2 = 'N'                             
       IF VSSCRTY2-WMSCRTY-USER-TID  NE WS-PREV-USER-ID         
          IF VSSCRTY2-SECURITY = 'H'                           
          MOVE VSSCRTY2-WMSCRTY-USER-TID  TO WS-USER-ID1       
          MOVE VSSCRTY2-UPDT-DATE         TO WS-UPDT-DATE       
          MOVE DATECARD-CURRENT-DATE     TO WS-CURR-DATE       
            IF VSSCRTY2-WMSCRTY-USER-TID  NE WS-PREV-USER-ID   
               PERFORM A1-X-OPEN-CURSOR-DZWMDLTR               

               PERFORM A1-X-FETCH-CURSOR-DZWMDLTR               
               DO WHILE WS-FOUND-CURSOR-DZWMDLTR = 'Y'           
                  PERFORM A1-X-FETCH-CURSOR-DZWMDLTR             
               END-DO                                           
               PERFORM A1-X-CLOSE-CURSOR-DZWMDLTR               
            END-IF                                               
          MOVE VSSCRTY2-WMSCRTY-USER-TID  TO  WS-PREV-USER-ID   
          END-IF                                                 
       END-IF                                                   
          MOVE VSSCRTY2-WMSCRTY-USER-TID  TO  WS-PREV-USER-ID   
       GET  VSSCRTY2                                             
       IF EOF VSSCRTY2                                           
         MOVE 'Y' TO WS-EOF-VSSCRTY2                             
       END-IF                                                   
    END-DO                                                       
END-PROC                                                         

*--------------------------------------------------------------------* 
 A1-X-FETCH-CURSOR-DZWMDLTR. PROC                                       
*--------------------------------------------------------------------* 
                                                             
  SQL FETCH DZWMDLTR INTO :C-DLR,                           
                          :I-LOGON                           
  CASE SQLCODE                                               
       WHEN 0                                               
        PERFORM 3100-BUILD-REPORT                           
         MOVE 'Y'          TO WS-FOUND-CURSOR-DZWMDLTR       
       WHEN 100                                             
         MOVE 'N'          TO WS-FOUND-CURSOR-DZWMDLTR       
       OTHERWISE                                             
         DISPLAY 'SQLCODE  = ' SQLCODE                       
         STOP EXECUTE                                       
       END-CASE                                             
END-PROC                                                     
                                                   
*----------------------------------------------------------------*
 3000-BUILD-REPORT.       PROC                                   
*----------------------------------------------------------------*
*                                                                 
     MOVE REC-I-DOCUMENT            TO  RPT-DOCUMENT             
     MOVE REC-C-TID                 TO  RPT-DOC-TID               
      MOVE WS-CURR-DATE              TO  RPT-LATEST-DATE               
      MOVE WS-UPDT-DATE              TO  RPT-UPDT-DATE                 
      MOVE VSSCRTY1-SECURITY          TO  RPT-ACC-LEVEL               
      PRINT REPORT1                                                   
 *                                                                     
  END-PROC                                                             
 *                                                                     
 *--------------------------------------------------------------------*
  3100-BUILD-REPORT.       PROC                                       
 *--------------------------------------------------------------------*
      MOVE C-DLR                     TO  RPT-C-DLR                     
      MOVE I-LOGON                   TO  RPT-I-LOGON                   
      MOVE WS-UPDT-DATE              TO  RPT-UPDT-DATE                 
      MOVE VSSCRTY2-SECURITY          TO  RPT-SECURITY                 
      MOVE WS-CURR-DATE              TO  RPT-LATEST-DATE               
      PRINT REPORT2                                                   
  END-PROC                                                         
 *                                                                 
                                                   
 *                                                                 
 *----------------------------------------------------------------*
  A1-X-FETCH-CURSOR-C-MXACNS. PROC                                 
    SQL FETCH C_MXACNS INTO :REC-I-DOCUMENT,            +       
                            :REC-C-TID,                +         
                            :REC-X-LINE10                       
                                                                 
    CASE SQLCODE                                                 
         WHEN 0                                                 
           PERFORM 3000-BUILD-REPORT                             
           MOVE 'Y'          TO WS-FOUND-CURSOR-C-MXACNS1       
         WHEN 100                                               
           MOVE 'N'          TO WS-FOUND-CURSOR-C-MXACNS1       
         OTHERWISE                                               
           DISPLAY 'SQLCODE  = ' SQLCODE                         
           STOP EXECUTE                                         
         END-CASE                                               
  END-PROC                                                         
 *                                                                 
 
   
2200-GET-COMPANY-WMSCRTY.  PROC                 
 GET  VSSCRTY3                                   
                                                 
   IF EOF VSSCRTY3                               
      STOP                                       
   END-IF                                       
                                                 
     HOLD-UNITKEY = VSSCRTY3-WMSCRTY-USER-TID   
                                                 
 COMPARE                                         
   IF HOLD-UNITKEY  < SAVE-DLRKEY               
        GOTO JOB                                 
     END-IF                                     
                                                 
   IF HOLD-UNITKEY > SAVE-DLRKEY                 
        GOTO GETDLRHI                           
         GOTO COMPARE                               
    END-IF                                           
* NEW                                               
   IF HOLD-UNITKEY  NE   WS-PREV-UNITKEY1           
* NEW                                               
    IF VSSCRTY3-SECURITY = 'H'                       
       MOVE HOLD-UNITKEY       TO RPT-DLRHIST-TID   
       MOVE HOLD-UNITKEY       TO WS-PREV-UNITKEY   
       MOVE HOLD-UNITKEY       TO WS-PREV-UNITKEY1   
       MOVE WS-CURR-DATE       TO RPT-LATEST-DATE   
       MOVE VSSCRTY3-UPDT-DATE  TO RPT-UPDT-DATE     
       MOVE VSSCRTY3-UPDT-DATE  TO WS-UPDT-DATE1     
       MOVE VSSCRTY3-SECURITY   TO RPT-ACC-LEVEL     
       MOVE VSSCRTY3-SECURITY   TO WS-ACC-LEVEL1     
       MOVE DLRHIST-DEALER     TO RPT-DLR-NUMBER     
       PRINT PROC1                                   
    END-IF                                                     
   END-IF                                                     
   MOVE HOLD-UNITKEY       TO WS-PREV-UNITKEY1                 
    GOTO JOB                                                   
  GETDLRHI                                                     
     GET DLRHIST                                               
     IF EOF DLRHIST                                           
        STOP                                                   
     END-IF                                                   
     IF EOF VSSCRTY3                                           
        STOP                                                   
     END-IF                                                   
     IF DLRHIST-CHANGE-LOGID  EQ SAVE-DLRKEY +                 
         AND   DLRHIST-CHANGE-LOGID EQ  WS-PREV-UNITKEY       
           MOVE DLRHIST-CHANGE-LOGID     TO RPT-DLRHIST-TID   
           MOVE WS-CURR-DATE             TO RPT-LATEST-DATE   
           MOVE WS-UPDT-DATE1            TO RPT-UPDT-DATE   
           MOVE WS-ACC-LEVEL1            TO RPT-ACC-LEVEL   
           MOVE DLRHIST-DEALER           TO RPT-DLR-NUMBER 
           PRINT PROC1                                     
     END-IF                                                 
     SAVE-DLRKEY = DLRHIST-CHANGE-LOGID                     
     GOTO COMPARE                                           
 END-PROC                                                   
Code'd

Any suggestions really appreciated.
Thanks
Mohapatra
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Wed Oct 06, 2010 8:49 pm
Reply with quote

Hello and welcome to the forum,

Suggest you re-code the 2200-xxxx code to be more similar to the 2 that work.

I suspect you are issuing a GET after the end of file. . .
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Thu Oct 07, 2010 10:37 am
Reply with quote

Dick is right. The 2200 code executes GOTO JOB statements that will
cause all procedures entered again.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CA Products

 


Similar Topics
Topic Forum Replies
No new posts FTP VB File from Mainframe retaining ... JCL & VSAM 4
No new posts Extract the file name from another fi... DFSORT/ICETOOL 6
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts Error to read log with rexx CLIST & REXX 11
No new posts Extracting Variable decimal numbers f... DFSORT/ICETOOL 17
Search our Forums:

Back to Top