View previous topic :: View next topic
|
Author |
Message |
MOHAPATRA
New User
Joined: 20 Sep 2010 Posts: 1 Location: pune
|
|
|
|
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 |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
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 |
|
|
PeterHolland
Global Moderator
Joined: 27 Oct 2009 Posts: 2481 Location: Netherlands, Amstelveen
|
|
|
|
Dick is right. The 2200 code executes GOTO JOB statements that will
cause all procedures entered again. |
|
Back to top |
|
|
|