I'm trying to generate and a simple encoder, but I'm not able to compile this code... What Am I missing?
DEFINE TEMP-TABLE ttEncoder FIELD valor AS INTEGER FIELD coded AS CHAR. DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INITIAL '{"ttEncoder":[ {"valor":1 ,"coded":"um"}, {"valor":2 ,"coded":"xy"}, {"valor":3 ,"coded":"st"}, {"valor":4 ,"coded":"et"}, {"valor":5 ,"coded":"eg"}, {"valor":6 ,"coded":"ue"}, {"valor":7 ,"coded":"fy"}, {"valor":8 ,"coded":"sp"}, {"valor":9 ,"coded":"uq"}, {"valor":103 ,"coded":"fz"}]}' . TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable). FOR EACH ttEncoder: DISPLAY ttEncoder. END.
Thanks for your help.
Jorge Octavio
Hey mate,
Escape the curley brackets. Like this:
DEFINE TEMP-TABLE ttEncoder FIELD valor AS INTEGER FIELD coded AS CHAR. DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INIT '~{"ttEncoder":[ ~{"valor":1 ,"coded":"um"~}, ~{"valor":2 ,"coded":"xy"~}, ~{"valor":3 ,"coded":"st"~}, ~{"valor":4 ,"coded":"et"~}, ~{"valor":5 ,"coded":"eg"~}, ~{"valor":6 ,"coded":"ue"~}, ~{"valor":7 ,"coded":"fy"~}, ~{"valor":8 ,"coded":"sp"~}, ~{"valor":9 ,"coded":"uq"~}, ~{"valor":103 ,"coded":"fz"~}]~}' . TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable). FOR EACH ttEncoder: DISPLAY ttEncoder. END.
Sharing from ABL Dojo seems to now just save the code, so here you go:
DEFINE TEMP-TABLE ttEncoder FIELD valor AS INTEGER FIELD coded AS CHAR. DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INITIAL ' ~{"ttEncoder":[ ~{"valor":1 ,"coded":"um"}, ~{"valor":2 ,"coded":"xy"}, ~{"valor":3 ,"coded":"st"}, ~{"valor":4 ,"coded":"et"}, ~{"valor":5 ,"coded":"eg"}, ~{"valor":6 ,"coded":"ue"}, ~{"valor":7 ,"coded":"fy"}, ~{"valor":102 ,"coded":"hy"}, ~{"valor":103 ,"coded":"fz"} ] }'. TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable). FOR EACH ttEncoder: DISPLAY ttEncoder. END.
Neither, using oposite thick and quotes, would succed
DEFINE TEMP-TABLE ttEncoder FIELD valor AS INTEGER FIELD coded AS CHAR. DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INITIAL "{'ttEncoder':[ {'valor':1 ,'coded':'um'}, {'valor':2 ,'coded':'xy'}, {'valor':3 ,'coded':'st'}, {'valor':4 ,'coded':'et'}, {'valor':5 ,'coded':'eg'}, {'valor':6 ,'coded':'ue'}, {'valor':7 ,'coded':'fy'}, {'valor':102 ,'coded':'hy'}, {'valor':103 ,'coded':'fz'}]}". TEMP-TABLE ttEncoder:READ-JSON('LONGCHAR', lcTable). FOR EACH ttEncoder: DISPLAY ttEncoder. END.
Hey mate,
Escape the curley brackets. Like this:
DEFINE TEMP-TABLE ttEncoder FIELD valor AS INTEGER FIELD coded AS CHAR. DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INIT '~{"ttEncoder":[ ~{"valor":1 ,"coded":"um"~}, ~{"valor":2 ,"coded":"xy"~}, ~{"valor":3 ,"coded":"st"~}, ~{"valor":4 ,"coded":"et"~}, ~{"valor":5 ,"coded":"eg"~}, ~{"valor":6 ,"coded":"ue"~}, ~{"valor":7 ,"coded":"fy"~}, ~{"valor":8 ,"coded":"sp"~}, ~{"valor":9 ,"coded":"uq"~}, ~{"valor":103 ,"coded":"fz"~}]~}' . TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable). FOR EACH ttEncoder: DISPLAY ttEncoder. END.
I see that MollyFed's post has not yet made it to the forum... but you only need to escape the /opening/ curly braces with a tilde.
How on earth do you get this to compile? Escaping the the curly braces does not work.
You have to see the code, but it has to be the first version with ' on the outside and " on the inside from memory.
Sharing from ABL Dojo seems to now just save the code, so here you go:
DEFINE TEMP-TABLE ttEncoder FIELD valor AS INTEGER FIELD coded AS CHAR. DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INITIAL ' ~{"ttEncoder":[ ~{"valor":1 ,"coded":"um"}, ~{"valor":2 ,"coded":"xy"}, ~{"valor":3 ,"coded":"st"}, ~{"valor":4 ,"coded":"et"}, ~{"valor":5 ,"coded":"eg"}, ~{"valor":6 ,"coded":"ue"}, ~{"valor":7 ,"coded":"fy"}, ~{"valor":102 ,"coded":"hy"}, ~{"valor":103 ,"coded":"fz"} ] }'. TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable). FOR EACH ttEncoder: DISPLAY ttEncoder. END.
This is caused by ABL reserved Special Characters;
https://documentation.progress.com/output/ua/OpenEdge_latest/dvref/~-special-character.html#
~ everywhere is your friend