Problem:
You may be using the COM interface to access to some data in a Excel Sheet that may have some column with data in Unicode (cyrillic letters for example) and you may want to process that data in your program and finally show some results using Dialog System.
Resolution:
There is support for Unicode in Net Express 4.0 (only UTF-7 and UTF-16, UTF-8 is variable length and it hasn't been implemented yet) so you can define something like
01 my-unicode-variable pic N(10) usage is national.
But there is no support for Unicode in the COM interface at the moment, so when receiving a Unicode value from the COM interface, it will be converted to a USAGE DISPLAY character. This conversion follows the same rules that the DISPLAY-OF function follows, so if your code page doesn't contain that character, the "?" character is chosen instead.
So at the moment, to be able to receive a Unicode variable from the COM interface, it should be defined as:
01 my-variable pic X(10).
and you should have your system set up to use a code page that contains most of the characters that you are likely to receive.
Dialog System doesn't have support for Unicode at the moment either. If the value you want to show comes from the COM interface, you don't need to do anything as you should have been forced to define it as PIC X(n) DISPLAY, and that is obviously supported. But if you have Unicode values that come from somewhere else (maybe a file), then if you want to show them using Dialog System, you need to convert them to PIC X(n) before using the DISPLAY-OF function. For example
01 my-unicode-variable pic N(10) usage is national.
01 my-variable pic X(10).
...
move function display-of (my-unicode-variable) to my-variable
perform call-dialog-system
....
and as with the COM interface, you should have your system set up to use a code page that contains most of the characters that you are likely to handle.