When you say F1 is defined as A20, where is it defined as A20. A UniData dictionary item would normally be 20L , 20R or 20T in attribute 5 of the dictonary item. I am presuming that whatever you using to define the field as A20 is generating a dictionary with 20L in attibutue 5.
UniData also has a rule of precedence on which dictionary item will be used if mutiple F1 exists on where UniData will check.
CT DICT ITMMST
F1:
D
1
F1
20L
S
LIST ITMMST WITH F1 = "64"
ID1 64
Now if you change the F1 dictionary to be right justified
F1:
D
1
F1
20R
S
You will now get all 3 results
LIST ITMMST WITH F1 = "64" F1
ITMMST.... F1..................
ID2 000064
ID3 0064
ID1 64
So first of all check attribute five of F1 to see if its marked as right justifed in the dictionary of the ITMMST dictionary.
Also check to see if you have F1 record in the VOC.
There is also a file called DICT.DICT in the sys account of $UDTHOME which contains the default F1 and should be 20L.
The precedence the query language uses to find which dictionary to use is.
1. The dictionary of the file
2. The VOC file
3. The DICT.DICT file
So in the problem account , find out which F1 you are using and check attribute 5.
To complicate this further, there are also some UDT.OPTIONS that can effect the result, see UDT.OPTIONS 22 and see if UDT.OPTIONS 22 is turned on.