× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.