I might not understand, but instead of recompiling all programs that
have references to the PO Number, you would add program logic to all of
the programs that use the PO Number field (AND recompile all of those
programs). The development work required up front to add the logic to
the programs is pretty extensive. And ever program that uses the PO(15)
field needs to now have every reference to PO(15) replaced with
reference to PO(30).
In addition, every future query, and sql, and adhoc download that
includes the PO number will need to have this logic.
The amount of work and potential for program bugs and logic errors seems
to be monumental in this scenario.
I think your programmer needs to understand that the database needs to
reflect the realities of the business. The programs are not there for
our convenience, the programs are there to run the business.
If the programs involved use program described data structures and flat
file layouts (as I know older EDI systems tend to do), then I can see
why your programmer is hesitant.
On 4/26/2014 8:44 AM, Steve Richter wrote:
We have an order header file that contains a PONUM field. Char(15).
But as the business expands to take on new customers sending in orders
with a PO number the 15 char limit might not be enough. The EDI 850
specs I look at say po number can be 1 - 22 characters.
The programmer who handles the RPG code with traditional F spec files
does not want to increase the field size and recompile all of the
I am thinking of a scheme where I put a special key in the char(15)
ponum field when the po number is longer than 15 characters. That
value being the key to another file that contains the actual value.
Are there any system level, DB2 features that can be used to solve this problem?
Ideal would be something where code written using RPG SQL would
function without any code changes.
d vPonum s 30a
select a.ponum, a.shipname
into :vPonum, :vShipName
from dwhpf30c a
where a.ordnum = :inOrdnum ;
In the above code snippet, dwhpf30c is the order header. DWHPF30C is a
CRTPF created file and PONUM is a CHAR(15) field. When the value of
the PONUM field is actually more than 15 characters I need some logic
somewhere that will return the full value from where it is stored into
the char(30) program variable vPonum.