Focal Point
[SOLVED] DECODE statement with a LOOP statement

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/5827004036

April 24, 2013, 04:32 PM
prodrigu
[SOLVED] DECODE statement with a LOOP statement
I am trying to build a DECODE statement from a string to sort my data. I need to loop through the string and for each data in quotes give it an counter number that start with 1. Can someone please point me in the right direction on how to figure this out.

string: &TC_V1 = 'CA' 'ALC' 'BAL'

Below is what I would like the DECODE statement to look like:

  
SORT/I2 = DECODE DACODE('CA' 1 'ALC' 2 'BAL' 3)

This message has been edited. Last edited by: <Kathryn Henning>,


Prod: WebFOCUS 7.7.03: Win 2008 & AIX hub/Servlet Mode; sub: AS/400 JDE; mostly Self Serve; DBs: Oracle, JDE, SQLServer; various output formats
April 25, 2013, 05:11 AM
Alan B
You could try something like:
-* How many items are there?
-* Remove quotes to get a shorter string, which can then be used to calculate the number of items in the string
-SET &SHORT_STRING = STRREP (&TC_V1.LENGTH, &TC_V1, 1, '''', 0, 'X', &TC_V1.LENGTH,'A&TC_V1.LENGTH');
-SET &SHORT_STRING = TRUNCATE(&SHORT_STRING);

-SET &NUM_ITEMS = (&TC_V1.LENGTH-&SHORT_STRING.LENGTH)/2;

-SET &DECODE_ITEMS = ' ';
-SET &CNTR=1;
-REPEAT :LOOP &NUM_ITEMS TIMES
-SET &ITEM = GETTOK(&TC_V1,&TC_V1.LENGTH,&CNTR, ' ',&TC_V1.LENGTH, 'A&TC_V1.LENGTH');
-SET &DECODE_ITEMS = &DECODE_ITEMS | TRUNCATE(&ITEM) | ' ' | &CNTR | ' ';
-SET &CNTR=&CNTR+1;
-:LOOP
-SET &DECODE_ITEMS = TRUNCATE(&DECODE_ITEMS);
-TYPE &DECODE_ITEMS
.
.
.
SORT/I2 = DECODE DACODE(&DECODE_ITEMS);
.
.
.



Alan.
WF 7.705/8.007
April 25, 2013, 10:49 AM
prodrigu
Alan,

This worked perfectly!!!

Thanks,
prodrigu


Prod: WebFOCUS 7.7.03: Win 2008 & AIX hub/Servlet Mode; sub: AS/400 JDE; mostly Self Serve; DBs: Oracle, JDE, SQLServer; various output formats