AREV32 and CFG_CTO Options
Published 11 NOV 2015 at 01:25:00PM by Sprezz
Many people who initially made the move to AREV32 with the intention of slowly re-engineering their way to a purely OpenInsight based environment still find themselves with systems that are heavily AREV32 reliant. With this in mind we thought it might be an idea to spend a little time examining CFG_CTO to see what little goodies might be lurking in there. So with the help of Revelation's esteemed CTO guru, Bryan Shumsky we've put together this little guide.
CFG_CTO consists (at the time of writing) of 10 columns in a single row. Note that several of these columns are only relevant when working with the CTO rather than AREV32 but for the sake of completeness we will document all of the columns.
Bear in mind that when looking for a config row for the CTO OpenInsight will firstly look for CFG_CTO*<appid>*<username>, then CFG_CTO**<username>, then CFG_CTO*<appid> before finally settling on CFG_CTO.
Column 1 - Server Details
URL
If a URL is entered here it will be assumed to be the path to the engine server responsible for dealing with engine requests
Path
If a path is entered here it will be assumed to be the path to the REVCAPI32.DLL to use for dealing with engine requests. Normally this is set to a period (full stop) to indicate the currently running engine.
!
If an exclamation mark is entered here the IP address and port number will be taken from the CFG_ESERVER row in SYSENV.
Column 2 - Additional Details
This is a multi-valued column having up to four values.
Value 1 Port Number
The port number on which to communicate with the engine (server). By default this will be 8088 so if you are not changing the default this does not have to be entered.In OI 10 this value will default to 18088 to allow earlier versions and 10 to coexist on the same server.
Value 2 Engine Name
If you want to communicate with a specifically named engine server then enter the name here.
Value 3 Startup Flags
The flags to apply to the engine on startup. These can be as follows :-
0 = Open Existing engine. 1 = Create a New Engine 2 = Open existing if available, otherwise create a new engine 65 = Create a New Engine with no UI
The default value is 65
Value 4 Shutdown Flags
The flags to apply to the engine on shutdown. These can be as follows :-
0 = Leave engine open 1 = Close engine
The default value is 1
Column 3 - Foreground Color - CTO Only
This contains a text string, being chosen from a list of hard coded colours, namely
BLACK DARK_BLUE DARK_GREEN TURQUOISE DARK_RED PURPLE OLIVE LIGHT_GREY DARK_GREY BLUE GREEN CYAN RED MAGENTA YELLOW WHITE
Column 4 - Background Color - CTO Only
This contains a text string, being chosen from a list of hard coded colours, namely
BLACK DARK_BLUE DARK_GREEN TURQUOISE DARK_RED PURPLE OLIVE LIGHT_GREY DARK_GREY BLUE GREEN CYAN RED MAGENTA YELLOW WHITE
Column 5 - Window Title
Column 6 - Program
The name of a program to run within the AREV32/CTO environment. It will be run and then AREV32/ CTO will be terminated so this is NOT a startup program in the traditional sense. It does not run and then continue to AREV32/CTO. This permits the running of a single AREV32 routine without having to have the user log off.
Column 7 - Font Name
If you enter the name of a fixed pitch ANSI Windows font here it will be used in place of the default AREV32.
Column 8 - Macro Name
This does not refer to AREV32 Macros but rather the VBScript-alike Macros supported by the underlying AccuTerm OCX. This is specified as the name of a record in SYSENV, or as <table><space><recordname> if stored anywhere else.
Column 9 - History Lines
This column determines how many lines of "history" will be kept. You will likely have noticed that normally the AREV32 console has a vertical scroll bar. This is because by default a history is being kept of previous screens. This is a new feature and is not present in the shipping version with 9.4.
Column 10 - Character Mapping Function
The AREV32 console actually displays UTF8 characters not ANSI. So when working with alternate character sets it can sometimes be desirable to display different UTF8 characters for specific ANSI values. Column 10 permits the specification of the name of a function to be called that actually returns the mapping to be used.
When a mapping has been specified, any time the control receives one of the mapped ANSI characters (either via the keyboard, or sent from the host for display), the associated Unicode character will be displayed on the screen. The function should take no parameters, and should return a string that has the following format:
<char_code>:<Unicode_value>,<char_code>:<Unicode_value>{,…}/<char_code>:<Unicode_value>,<char_code>:<Unicode_value>{,…}
Where <char_code> represents the “input” ANSI character (as a decimal value), and <Unicode_value> represents the desired Unicode “output” (specified as a hex string). The <char_code> and <Unicode_value> are separated by a colon; multiple mappings are separated by commas. The first “/” delimited section of the string specifies the mappings (if any) that should be applied to the control when it is in “text” (CTO) mode; the second “/” delimited section of the string specifies the mappings (if any) that should be applied to the control when it is in “graphics” (AREV32) mode.
For example, the following string shows a very simple set of mappings:
65:010C/65:0171
This says that, when an ANSI 65 (“A”) is received by the control, it should display either Č (when running in CTO mode) or ű when running in AREV32 mode.
Note that the data that is actually RECEIVED or SAVED into the database will still be the associated ANSI(single byte) character under all circumstances.
This is a new feature and is not present in the shipping version with 9.4.
Comments
Comment by Don Bakke on 11 NOV 2015 at 10:14:08PM:
Thanks to Sprezz and Bryan for putting this all in one convenient place.
Comment by Sprezz on 12 NOV 2015 at 09:59:11AM:
You're very welcome. It is all too easy to learn something and then have to relearn it again 12 months down the line because you forgot to document it somewhere you could find it again!
Comment by Unknown on 13 NOV 2015 at 05:11:28PM:
Would column 10 help the following behavior I see in my AREV32 application? Where I have menus items that point to another menu, there is supposed to be a triangle character that points right. When I resize the Arev32 form larger or maximize the form, the triangle character turns to a circle or zero (but different font than what is on the menu). The characters are correct if the form is kept below a certain size, but shows the wrong characters once enlarged. I haven't been able to figure out how to correct the issue.
Comment by Sprezz on 13 NOV 2015 at 05:17:51PM:
We've seen this behaviour but not been sufficiently vexed to investigate it. In theory you COULD use it for this although it seems a little like overkill. We'd be tempted to experiment with alternative fonts first.
Comment by Danh on 13 NOV 2015 at 07:20:48PM:
Thanks and I like it.
Comment by Anonymous on 16 DEC 2015 at 11:53:45PM:
Here are what I use as the CFG_CTO options when using the Graphic Debugger in Arev32. You have to run a local java OESocketServer.jar.
Column 2 Value 3 Startup Flags = 1, Value 4 Shutdown Flags = 1, Column 6 program = NONE surrounded by << and >>