###
BBx to ProvideX Standalone Converter (*conv.bbx/gui_cv)

The GUI_CV utility has been designed to convert BBx1/2/3/4, Pro/5 and Vpro5 programs and files to ProvideX, without the need for a BBx executable on the computer that will be performing the conversion.
GUI_CV will convert all BBx data files that were available in BBx/4 (DIRECT, SORT, MKEYED, INDEXED and STRING). Data files that were added to later BASIS products cannot be converted to ProvideX by means of this program. XKEYED files and +2GB files should be converted using the ProvideX *conv.bbx/CV program (which does require a working BASIS executable).
Settings on the opening screen

| Test for errors without converting Input programs / files Output directory Path & name of log file

Log file Options folder tab

| Log name of converted file Log pgm lines that contain $0A$ Log files with non-ascii characters Log record with non-ascii characters Append to log file Log item(s)

File Options folder tab

| VARIABLE length record files No maximum record count Don't convert STRING files Create files with $0A$ separator Oem to Ansi conversion in data files Add indices after conversion Use direct BBx file access if available Convert SORT files to KEYED files

Program Options folder tab

| Oem to Ansi conversion in programs Add '-' in front of 'window' title Prefix reserved variables with the prefix below Variable prefix Remove BBx ERR=20 from source pgm lines Program specifics

##### Settings on the opening screen

Test for errors without converting
By selecting "Test for errors without converting", you can step through the entire conversion process to produce an exception report (log file) in advance without actually converting any of the programs or files. The exception report can then be analysed to determine if there will be any compatibility issues.
Input programs / files
Enter the parent directory for the BBx programs & data files. You can then click the [Resolve] button to force GUI_CV to scan that directory and all subdirectories for all files. Once these are displayed in the listbox, you can select individual files and remove them from the list of programs/files to convert by clicking the [Remove] button.
Convert Programs
When this setting is de-selected, the conversion program wll NOT convert any programs anymore. This setting is enabled by default.
Convert Files
When this setting is de-selected, the conversion program wll NOT convert any files anymore (in other words, all data types other than programs). This setting is enabled by default.
Output directory
Enter the (ProvideX) output directory here. You must select a directory different from the input directory (the conversion program will not allow the input and output directory to be the same). GUI_CV will re-create the entire tree structure like it exists in the input directory.
Path & name of log file
The log file is useful to determine the overall status of the conversion. It is a flat ASCII file that can be accessed with any text editor or word processor. The log will contain any error or warning messages generated by the conversion. It can also provide a complete list of all files & programs converted. If you don't want the converter to write a log file, you must leave this field empty.

##### Log file Options folder tab

Log name of converted file
This will store all names of the converted programs/files into the log file.
Log pgm lines that contain $0A$
Will list each and every program line that contains $0A$ into the log file.
Log files with non-ascii characters
Will write the name of the data file into the log file when a non-ascii character was found in any of the records of that file. Non-ascii in this context are all characters that are smaller than a space or larger than a tilde in the ASCII table (all characters below 0x20 and above 0x7E).
Log record with non-ascii characters
See 'Log files with non-ascii characters'. The difference here is that each and every RECORD that contains non-ascii data will be written to the log file.
Append to log file
Will append error and warning messages to the end of the log file. Not selecting this setting will cause an existing log file to be overwritten.
Log item(s)
You can select individual program functions/directives that should be written into the log file in case the converter encounters them.

##### File Options folder tab

VARIABLE length record files
ProvideX will create all of the KEYED files using variable length records that will reduce disk space requirements and increase file performance.
No maximum record count
Will create all KEYED files with no preset limit to the number of records in a file.
Don't convert STRING files
All STRING (non-BBx files) will be skipped during conversion.
Create files with $0A$ separator
All KEYED files will be created with a $0A$ field separator instead if the standard $8A$ separator and GUI_CV will no longer replace $0A$ in data records by $8A$ (the data records will remain unchanged). Also check the 'Use $0A$ in Direct/Mkeyed/Indexed' setting on the 'Program Options' tab in order to change the BBx file creation verbs to create files with a $0A$ field separator.
Oem to Ansi conversion in data files
Setting this option will cause the converter to replace DOS characters with Windows characters. DO NOT SET THIS OPTION if you know your data contains either binary or high-ascii (umlaut) data.
Add indices after conversion
All multi-keyed files will be created with the primary key only. Only after converting all data will GUI_CV add the secondary keys to the file. This will result in a huge performance gain when converting larger files or files with a large number of secondary keys.
Use direct BBx file access if available
If the ProvideX executable is activated to use package 20010 (BBx Keyed File Read), GUI_CV will access the BBx data through this interface and no longer analyse the binary contents of the BBx data. This may result in a performance gain during conversion.
Convert SORT files to KEYED files

##### Program Options folder tab

Oem to Ansi conversion in programs
Setting this option will cause the converter to replace DOS characters with Windows characters.
Add '-' in front of 'window' title
ProvideX will insert a '-' character in front of a window title so that the title position is compatible with BBx (this to prevent misalignment with data in the window).
Prefix reserved variables with the prefix below
Selecting this option will cause GUI_CV to prefix all BBx program variables that are conflicting with ProvideX system variables and/or functions with a prefix of your choice (see below). By default, GUI_CV will put BB__ in front of the variable name. For example, 0010 LET RET=99 will become 0010 LET BB__RET=99.
Variable prefix
Enter the variable prefix of your choice here (see above).
Remove BBx ERR=20 from source pgm lines
BBx program code that has a syntax error in the BBx environment will result in a ProvideX line of code that still has a syntax error on it. By selecting this option, you can force GUI_CV to re-compile the line with the error that could result in a correct line of code in the ProvideX environment. For example, this line of BBx code:
0010 *ERR 20
0010 msgbox a$,"Hallo","!,CANCEL",b$
will convert to ProvideX:
0010?**ERR= msgbox a$,"Hallo","!,CANCEL",b$
when this option is NOT selected. Setting this option will result in the ProvideX code:
0010 MSGBOX A$,"Hallo","!,CANCEL",B$
Program specifics

Use $0A$ in Direct/Mkeyed/Indexed | ProvideX normally creates files that use field separator $8A$. By selecting this setting, the BBx file creation verbs DIRECT, MKEYED and INDEXED will be changed to include the ,SEP=$0A$ fileoption to force creating files that use the $0A$ separator. Also check the 'Create files with $0A$ separator' setting in the 'File Options' tab to convert BBx files to ProvideX files with a $0A$ separator.
CISAM -> CREATE TABLE | Replace all occurrences of CISAM with CREATE TABLE
INFO() -> FN%INFO$() | Replace the BBx INFO() function with the global ProvideX defined function FN%INFO$(). This function can be found in the *conv.bbx/START_UP program along with a number of other settings that you might want to use after converting a BBx application.
REV -> FN%REV$ | Replace the BBx REV system variable with the global ProvideX defined function FN%REV$. This function can be found in the *conv.bbx/START_UP program (feel free to change that function to return whatever your BBx application expects).
SSN -> FN%SSN$ | Replace the BBx SSN system variable with the global ProvideX defined function FN%SSN$. This function can be found in the *conv.bbx/START_UP program (feel free to change that function to return whatever your BBx application expects).
SYS -> FN%SYS$ | Replace the BBx SYS system variable with the global ProvideX defined function FN%SYS$. This function can be found in the *conv.bbx/START_UP program (feel free to change that function to return whatever your BBx application expects).
'ATTR'() -> FN%ATTR$() | The 'ATTR' mnemonic will be replaced by the ProvideX 'MODE' mnemonic which isn't fully BBx compatible. By selecting this option, ProvideX will use the global defined function FN%ATTR$() instead which should result in BBx compatible output. This function can be found the *conv.bbx/START_UP program.
'RGB'() -> FN%RGB$() | The 'RGB' mnemonic will be replaced by the ProvideX 'MODE' mnemonic which isn't fully BBx compatible. By selecting this option, ProvideX will use the global defined function FN%RGB$() instead which should result in BBx compatible output. This function can be found the *conv.bbx/START_UP program.

Taos, BBx, BBx/4, BBx1/2/3/4, Pro/5, Vpro5 and BBj are registered trademarks of BASIS International Ltd.