Try this:
dftccm3           s             72a   varying             
dptr              s               *   Inz(%ADDR(ftccm3))  
dmyds             ds                  Based(ptr)          
d indexvalue                    10i 0                     
d data                          72a                       
In debug load your ftccm3 field with 'z' and check the value of the
indexvalue... 
Thanks,
Tommy Holden
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[
mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Holden Tommy
Sent: Monday, May 21, 2007 10:57 AM
To: RPG programming on the AS400 / iSeries
Subject: RE: VarChar problem
You can't use the index area via EVAL the only way to directly access
the index area of a varying length field is via the %ADDR() BIF.  Have
you tried setting the %LEN() of the varying field to see if that helps?
%LEN(FTCCM3) = 1;
FTCCM3 = 'z';
 
Thanks,
Tommy Holden
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[
mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of
MWHopkins@xxxxxxxxxxxxxxx
Sent: Monday, May 21, 2007 10:41 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: VarChar problem
I am having a problem with a program that is using externally described 
varchar fields. It appears that the program is not recognizing that the 
fields are varchar, even though the program is compiled with 
CVTOPT(*VARCHAR).
The compile listing shows that it is a variable length character field
(70 
is the max):
1035=O                       FTCCM3             562A CHAR       72  FTC 
COMMENT 3 
                                                         External data 
type is Variable Length Character. 
But when I try to write to this file I get a data mapping error for
reason 
14: "14 -- The length of a variable length field is not valid"
I am not moving anything to these fields in the program. I clear the 
record format, then fill other data elements but do nothing with these 
variable fields.
In testing, I moved a single character 'z' to these fields and it put
the 
'z' in the first position of the field (where the index should go). 
     C                   Eval      FTCCM3 = 'z'
     C                   Eval      FTCCM4 = 'z'
     C                   Eval      FTCCM5 = 'z'
FTCCM3                CHAR(72)             'z              ' 
                      VALUE IN HEX 
'A9404040404040404040404040404040404040404040404040404040404040404040404
040404040'X 
                        41 
'4040404040404040404040404040404040404040404040404040404040404040'X   
FTCCM4                CHAR(72)             'z              ' 
                      VALUE IN HEX 
'A9404040404040404040404040404040404040404040404040404040404040404040404
040404040'X 
                        41 
'4040404040404040404040404040404040404040404040404040404040404040'X   
FTCCM5                CHAR(72)             'z              ' 
                      VALUE IN HEX 
'A9404040404040404040404040404040404040404040404040404040404040404040404
040404040'X 
                        41 
'4040404040404040404040404040404040404040404040404040404040404040'X   
This program was working fine until we re-compiled it. It was previously
compiled in release v5r2m0 and now we are at v5r4m0.
Matt Hopkins 
Sr. Programmer/Analyst 
Web: www.pdpgroupinc.com 
Email: MWHopkins@xxxxxxxxxxxxxxx 
Office: 410-584-0330 
Fax: 410-584-0336 
As an Amazon Associate we earn from qualifying purchases.