View previous topic :: View next topic
|
Author |
Message |
rahuindo
New User
Joined: 09 Apr 2008 Posts: 83 Location: Chennai
|
|
|
|
Hi,
I have a COBOL DB2 Stored Procedure which is having the following linkage variables:
Code: |
01 SP-IP-1 PIC X(09) .
01 SP-IP-2 PIC X(100).
01 SP-IP-3 PIC X(06) .
01 SP-IP-4 PIC X(01) .
01 SP-IP-5 PIC X(02) .
01 SP-IP-6 PIC X(02) .
01 SP-IP-7 PIC X(01) .
01 SP-IP-8 PIC X(03) .
01 SP-IP-9 PIC X(08) .
01 SP-IP-10 PIC X(08) .
01 SP-IP-11 PIC X(08) .
01 SP-OP-SQL-CD PIC X(06).
01 SP-OP-OUT-SQL-MSG.
49 SP-OP-SQL-MSG-LTH PIC S9(4) COMP.
49 SP-OP-SQL-MSG-TXT PIC X(1000).
01 SP-OP-INFO-MSG.
49 SP-OP-INFO-MSG-LTH PIC S9(4) COMP.
49 SP-OP-INFO-MSG-TXT PIC X(1200).
01 SP-OUT-CLOB USAGE IS SQL TYPE IS CLOB(700000).
|
While compiling this Stored Procedure, I did not see any warnings from Compiler.
This Stored Procedure calls another Stored Procedure and then reformats the output and generates XML and moves the XML to the CLOB variable SP-OUT-CLOB.
With the above layout, I face a 0C4 abend whenever I try to move any values to the O/P variables.
this is a sample code of where I face the abend:
Code: |
MOVE ' ' TO SP-OP-INFO-MSG-TXT
MOVE 1 TO SP-OP-INFO-MSG-LTH
|
I can confirm that since I debugged using the Xpeditor.
However, the strange fact is that the Stored Procedure does not abend when I remove the following variables from the output parameters:
Code: |
01 SP-OP-OUT-SQL-MSG.
49 SP-OP-SQL-MSG-LTH PIC S9(4) COMP.
49 SP-OP-SQL-MSG-TXT PIC X(1000).
|
Has it something to do with the fact that I've 2 VARCHARs in my O/P parameters? |
|
Back to top |
|
|
rahuindo
New User
Joined: 09 Apr 2008 Posts: 83 Location: Chennai
|
|
|
|
I looked at the Compiler warnings and I found this:
"SP-OP-INFO-MSG" or one of its subordinates was referenced, but
"SP-OP-INFO-MSG" was a "LINKAGE SECTION" item that did not have
addressability. This reference will not be resolved successfully at
execution.
This error implied that the SP-OP-INFO-MSG should also be referenced in the PROCEDURE division. I was not referencing this variable in the PROCEDURE division. |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
You mean the PROCEDURE DIVISION USING...?
The parameter also needs to be supplied by the CALLing program. else you'll still have a problem. |
|
Back to top |
|
|
rahuindo
New User
Joined: 09 Apr 2008 Posts: 83 Location: Chennai
|
|
|
|
Hi Bill,
Yes, I meant the PROCEDURE DIVISION Using.. The Calling program was passing this parameter. It was just not defined in the PROCEDURE DIVISION Using. |
|
Back to top |
|
|
|