Not to create too many threads here...
Alan - the file (and logical files) exist in ONE library only. WRKOBJ OBJ(*ALL/OEORD2) yields one result.
ODSEQ# is the field in the program AND the file. They used a DDS "field definition file" for nearly all of their fields. In the DDS ODSEQ# is defined by reference to WWSEQ5.
PSQ is char(3000) and is the parameter of an program (in our ERP software) I'm calling. I have the source code... the program I'm calling has this parameter defined as CHAR(1) DIM(3000).
I can't imagine that would be a problem.
I don't have the CONST keyword on the procedure interface of my old progam... but I can't imagine that being a problem either.\\
This is the simple little program (minus the reporting subroutines) - don't be hating on the old, old style here :) - its 15+ years old.
* PARAMETER LIST
*
D hh531 pr extpgm('HH531')
D pcom# 3a
D pprt# 15a
D prsnc 3a
D pent# 8a
*
D hh531 pi
D pcom# 3a
D pprt# 15a
D prsnc 3a
D pent# 8a
*
*-------------------------------------------------------------------------
*
D PORD# S 8A
D PSQ S 3000A
D PTRNC S 3A
D*
/COPY ASTHHSRC92/QCPYSRC,ASTUTIL_PR
*-------------------------------------------------------------------------
C IF PCOM# = *BLANKS OR
C PPRT# = *BLANKS
C GOTO ENDC
C ENDIF
C*
C IF Ast_GetRf('5198':PRSNC) = *BLANKS
C EVAL CLMN1 = PRSNC
C EVAL CLMN2 = 'INVALID REASON CODE ENTERED'
C WRITE RPTHDR
C WRITE RPTDTL
C GOTO ENDC
C ENDIF
C*
C EVAL ODCOM# = PCOM#
C EVAL ODPRT# = PPRT#
C ODKEY SETLL OEORDLRR
C DOU %EOF(OEORD2)
C ODKEY READE OEORDLRR
C IF NOT %EOF(OEORD2)
C*
C IF ODLSTC <> 'CL' AND
C ODLSTC <> 'CN' AND
C ODALC# = *ZERO AND
C ODCTT# = *ZERO
C*
C CLEAR PSQ
C EVAL %SUBST(PSQ:ODSEQ#:1) = 'X'
C*
C if pent# = *blanks or
C pent# = odent#
C CALL 'OE030'
C PARM ODCOM# PCOM#
C PARM ODORD# PORD#
C PARM PSQ
C PARM '531' PTRNC
C*
C EXSR RPTSR
C EXSR WRTDM SHADOW DEMAND
C*
C endif
C ENDIF
C ENDIF
C ENDDO
C*
C ENDC TAG
C SETON LR
-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxxxxxxxx] On Behalf Of Charles Wilt
Sent: Thursday, September 05, 2019 4:36 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: Value in field does not match database????
I think you're missing something...
What's the actual error message?
Are you sure about the line#?
The line you've shown is apparently trying to replace the 3409th character
of PSQ with an 'X'...
So ODSEQ# in the program is named WWSEQ5 in the DB?
Assuming you expect ODSEQ# to be 8...
I'd verify that's it's an 8 when the record is read...and wherever WWSEQ5
gets loaded to ODSEQ#.
Then I agree with Jon, memory corruption. Check the parms of any programs
called by the failing one, and any programs they call...and so forth.
Might give this thread a read...
https://archive.midrange.com/rpg400-l/201907/msg00191.html
Charles
On Thu, Sep 5, 2019 at 2:10 PM Greg Wilburn <
gwilburn@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
A program that is well over 4 years old failed today... When I view the
suspect field value in debug (or do a PGM DUMP and view in spool file), I
see a DIFFERENT value than what is actually in the database file.
How could this be??
The field in question ODSEQ# is packed (5,0) - it is the line sequence
number for our Order Entry Detail file.
In debug (and in the dump) the value in this field is 03409.
In the database file, the value is 8.
I verified the database record using SQL select by
1. Keyed values, and
2. Relative Record Number (got this from WRKJOB)
The field inside the program is not manipulated or referenced anywhere in
the code, other than the failing line:
EVAL %SUBST(PSQ:ODSEQ#:1) = 'X'
This is from the dump:
ODSEQ# PACKED(5,0) 03409. '03409F'X
This is from SQL select:
COMPANY ORDER WWSEQ5
014 10001831 8
Any ideas???
Greg
--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com
As an Amazon Associate we earn from qualifying purchases.