fglrun

The fglrun tool is the runtime system program that executes p-code programs.

Syntax 1: Executing programs

fglrun [options] program [argument [...]]
  1. options are described in Table 1.
  2. program is a .42r program, or a .42m p-code module containing the MAIN definition.
  3. argument is an argument passed to the program.

Syntax 2: Linking programs (used by fgllink)

fglrun -l -o outfile.42r [options]
    { { module.42m | library.42x } [...]
    | pattern
    | @argfile }
  1. options are described in Table 1.
  2. outfile is the .42r program (or a .42x library) to produce from the link.
  3. module.42m is a p-code module compiled with fglcomp.
  4. library.42x is the name of a library to be linked.
  5. pattern is a MATCHES-style pattern to find files, like '[a-z]*.42m'.
  6. argfile defines a file that contains a list of .42m or .42x files. Each line must specify a filename or a pattern.

Syntax 3: Using diagnostic options

fglrun diagnostic-option
    { module.42m [...]
    | pattern
    | @argfile }
  1. diagnostic-option is a option accepting multiple files such as --print-imports or --print-missing-imports.
  2. module.42m is a p-code module compiled with fglcomp.
  3. pattern is a MATCHES-style pattern to find files, like '[a-z]*.42m'.
  4. argfile defines a file that contains a list of .42m or .42x files. Each line must specify a filename or a pattern.

Options

Table 1. fglrun options
Option Description
-V or --version Displays version information.
-h or --help Displays options for the tool.
-i [ mbcs ] Displays information about the current locale / character set settings. See Application locale.
-d Start in debug mode. See Integrated debugger for more details.
-e extfile[,...] Specify a C extension module to be loaded. This option can take a comma-separated list of extensions.
-l Link p-code modules together, see Compiling source files.
-o { progname.42r | libname.42x } Output file specification when using the -l link option, it can be a 42r program or a 42x library.
-b Displays compiler version information of the module, see Compiling source files.
-p Generate profiling information to stderr (UNIX™ only). See Program profiler.
--java-option=option

Passes Java runtime options when initializing the JNI interface.

See Java Interface for more details.

--print-imports Loads the specified modules and prints all IMPORT FGL instructions required in each module. See Identifying modules to be imported.
--print-missing-imports Loads the specified modules and prints all missing IMPORT FGL instructions for each module. See Identifying modules to be imported.
--start-guilog=logfile Log all GUI protocol exchange in a file. The GUI log file can then be replayed with the --run-guilog option. If the log file contains a %p placeholder, it is replaced by the current process id.
--run-guilog=logfile Replays a GUI log created with the --start-guilog option.
--gui-listen=port Instructs the runtime system to listen to a TCP port for incoming GUI connections. For more details see Connecting with a front-end.
--module-size

Shows the amount of limited pcode size for a module.

The next argument must be a .42m module.

--merge-cov name.4gl [name.42m.cov]

Merges FGLCOV coverage data files with source files to produce a readable file name.4gl.cov module. If the .42m.cov file is not located beside the source file, you can specify the full path with the second optional file path. See Source code coverage.

--program-size

Shows the amount of limited pcode size for an entire program.

The next argument must be a .42r program file.

--trace

Starts the program by printing function call stack trace with parameter and return values. For more details, see Execution trace.

Usage

The fglrun command line tool executes p-code programs, for example:
fglrun myprogram.42r -x 123

The program file must contain the MAIN routine.

The arguments passed to the program can be queried with the arg_val() built-in function.

The .42r or .42m extension is optional:
fglrun myprogram -x 123
Note: First fglrun tries to find the program file with the name provided in the command line. If the file is not found, the extension is removed (if it is present in the provided file name), and a new search is done by adding the .42r extension. If the file is still not found, fglrun tries with the .42m extension. This means that a program file myprogram.42m will be found and loaded, even if you pass myprogram.42r to fglrun. Specify program files without a .42r or .42m extension, to avoid mistakes and simplify migration from .42r linked programs to .42m-only modules (using IMPORT FGL).