Click! can now accept .LNK files as file lists. Each line starting with
the letters FI will be parsed and if the file(s) referred to on that
line exist in the current directory, they are included in the processing
list. This is handy when you keep the source for more than one
executable in a single directory, and don't want to process them all at
once.

---

In the output directory, Click! now creates two files named SRC_CROS.TXT
and FNC_CROS.TXT.

(from CLICK.INI...)

SOURCE_XREF_FILE=SRC_CROS.TXT

FUNCTION_XREF_FILE=FNC_CROS.TXT

// options are YES, NO
// please note that you must set ADD_CLICK_HEADER=YES
FUNCTION_REF_INTO_SOURCE=YES

// options are YES, NO
// please note that you must set ADD_FUNCTION_HEADERS=YES
FUNCTION_XREF_INTO_SOURCE=YES

SRC_CROS.TXT contains a module to function reference for all modules
included in the processing pass. If you set FUNCTION_REF_INTO_SOURCE to
YES, then a final pass is made which incorporates the function
information into the source file header.

FNC_CROS.TXT contains a function called by function reference for the
functions in all modules included in the processing pass. If you set
FUNCTION_XREF_INTO_SOURCE to YES, then then a final pass is made which
incorporates the function information into the source file function
headers.

This can be used as a complete function cross reference when all .PRG
source files in a system are included in the processing pass.

---

In addition to the above internal function tracking ability, Click! also
scans the LIB= environment variable, gathers a list of all available
libraries, and extracts the function names out of every library
available via the environment settings.

The function names gathered in this process are placed into an indexed
master function table, which is used to identify unresolved functions
including which library they might belong to.

---

Files are now processed in alpha order.

---

Rewrite of PROFILE.PRG to be a buffered system for faster program
startup.

---

If the output directory did not exist when the run was started, the
initialization of the log file left off the starting time. Click! now
checks for the output directory first.

---

In .997, I added the ability to convert STORE commands to assignments.

Continued lines were messed up in the process, so Click! now skips
conversion on lines which continue, and a message is logged to the error
file as to the module and line number. Hand corrected code can then be
converted safely.

ie:

Current File => E:\CLICK\TEST.PRG
No Conversion of STORE due to ; at end of line 1

---

In .998, I made any word followed by a ( into a function, however, it
caused control structures to fail when followed by a parenthesis. So,
these work OK now.

do while ( x := somefunc() )

enddo ( oGet:ExitState == GE_NOEXIT )

This more robust way of handling things is controlled by the CLICK.INI
file [CMD_LIST] section.

(from CLICK.INI...)

// Commands beginning with * never make sense when used as a function, so
// when they are followed by a (, they are NOT considered to be functions.
// THIS ALLOWS YOU TO DEFINE WHICH COMMANDS WILL NOT BE CONSIDERED TO BE
// FUNCTIONS. If you prefer for Click! to treat all commands as if they
// cannot be functions, then place a * before each command.
// Good programming practices never allow key words to be used as
// functions.

ACCEPT
ADDITIVE
*ALL
*APPEND BLANK
*APPEND FROM
etc...

---

Added many more functions and commands to the CLICK.INI file