× 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.



Œ
Hello Chris,

I don't think the problem is with XLATE.  It is simply business as usual with 
varying length fields.

>c     ctoadl:cTOAD  XLATE     RawMicrIn     RawMicr

In this example RawMicr is an empty variable length string and therefore has a 
length of zero.  Since XLATE, like all character operation codes, stops when 
it reaches the end of the shortest string there is no room for any translated 
data thus:

>RawMicrIn = 't123456789t 1234 456789o    a123456a'
>RawMicr = '' after the XLATE.

>but:
>c                   EVAL      RawMicr = RawMicrIn
>c     ctoadl:cTOAD  XLATE     RawMicr       RawMicr

The EVAL statement assigns the contents and sets the length at the same time 
and now you have room in the RawMicr field thus:

>RawMicrIn = 'T123456789T 1234 456789O    A123456A'

You will have similar 'difficulites' when substringing into an empty varying 
length field. For example:

d aString         s             80a   inz  varying
c                   EVAL      %SUBST(aString:1:10) = 'XYZ1234'

will fail with RNX0100 because aString has a length of zero and thus there is 
no room at the inn.  You need to set the length beforehand with the %LEN BIF.  
Using your code as an example:

c                   EVAL      %LEN(RawMicr) = %LEN(RawMicrIn)
c     ctoadl:cTOAD  XLATE     RawMicrIn     RawMicr

in the case of the earlier string example you would need to do something like:

c                   EVAL      %LEN(aString) = %SIZE(aString) - 2
c                   EVAL      %SUBST(aString:1:10) = 'XYZ1234'
c                   EVAL      %LEN(aString) = %LEN(%TRIM(aString))

or simply

c                   EVAL      %LEN(aString) = %SIZE(aString) - 2
c                   EVAL      aString = 'XYZ1234'

As an aside has anyone tried doing an ATTR on a varying length string in the 
ILE debugger?  That's an exercise in futility ... it might be a documented 
restriction but I can't be bothered looking it up :)

Regards,
Simon Coulter.

«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
«» FlyByNight Software         AS/400 Technical Specialists       «»
«» Eclipse the competition - run your business on an IBM AS/400.  «»
«»                                                                «»
«» Phone: +61 3 9419 0175      Mobile: +61 0411 091 400           «»
«» Fax:   +61 3 9419 0175      mailto: shc@flybynight.com.au      «»
«»                                                                «»
«» Windoze should not be open at Warp speed.                      «»
«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.