View Full Version : Alphanumeric field size limit
01-01-1995, 02:00 AM
Hi all, Sometime back I came across an article on how to trick the RPG compiler by using arrays to define fields greater than the 32 K limit. If someone out there has either the article or has been able to find a work around for this problem please respond. I am trying to define an alphanumeric field > 32 K in size. Any help in the matter will be greatly appreciated. Thanks in advance. Ram
08-11-1999, 09:34 AM
The signature is computed from the exported names of the procedures and the sequence they are in. If you change a name or change the sequence of names, the signature changes. What the LVLCHK(*NO) does is creates a signature of 0. So, no matter what names you add or change it remains 0. The actual signature check is still done. So if you had a computed signature before, it will not match 0 and you will get a level check. You can recompile all the programs that call the service programs so they have a new signature of 0 or you can create multiple signatures for the service program. The STRPGMEXP with PGMLVL(*CURRENT) will be the signature used when you rebind a program that calls the service program. If you have an additional STRPGMEXP with just the old modules listed, it will generate an entry table with the old signature and the old programs will run.
08-11-1999, 06:07 PM
<font color blue>Jim wrote: The STRPGMEXP with PGMLVL(*CURRENT) will be the signature used when you rebind a program that calls the service program. If you have an additional STRPGMEXP with just the old modules listed, it will generate an entry table with the old signature and the old programs will run. </font> Jim, Thanks for the information. I've just learnt that a service program can have more than one signature. Adding the extra Export block with the original modules only worked great. David
08-12-1999, 09:04 AM
Ram, You can allocate a little less than 16M of contiguous storage using ALLOC in RPGIV. You can then work with your data using basing pointers and variables. Some of the C functions may also come in handy. They are MemSet and MemCpy. These allow you to change the value of an area using pointers. David Morris
08-23-1999, 01:28 PM
David, If you decide to use binding source to specify multiple signatures, be sure and add your new exports at the end of the current block. The ordinal value of the current block is used to determine what to call in previous blocks of exports. This makes it easy to rename a procedure without recompiling everying, but it make is impossible to delete a procedure without at least supplying a dummy to take its place in the current block. David Morris
Powered by vBulletin® Version 4.1.5 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.