Click! 2.03 Source Code Reformatter

Click .INI file:

@_SAY_GET_ALIGNMENT_METHOD
ADD_CLICK_HEADER
ADD_EOF_MARKER
ADD_FUNCTION_HEADERS
ALIGN_DBCREATE_IN_THE_ALIGNER
ALIGN_CLASS_IN_THE_ALIGNER
CASE_OF_BOOLEAN
CASE_OF_COMMANDS
CASE_OF_FUNCTIONS
CHANGE_REPLACE_WITH_TO_ASSIGNMENT
CHANGE_STORE_TO_ASSIGNMENT
CLEAN_UP_INCLUDES
CLICK_LOG
CLICK_LOG_ERASE
COMMENTTAB
CONVERT_&&_TO_//
CONVERT_*_TO_//
CONVERT_OLD_STYLE_FUNCTIONS
CONVERT_TO_INCREMENTOR
DEFAULT_INDENT
DEFLATE_(
DEFLATE_[
DEFLATE_{
DEFLATE_,
DEFLATE_+
FUNC_DIV
FUNCTION_REF_INTO_SOURCE
FUNCTION_XREF_FILE
FUNCTION_XREF_INTO_SOURCE
HEAD_DIV
INDENT_/IF/FOR/CASE/FUNC/BEGIN/WHILE/CLASS
INDENT_DO_CASE
INDENT_FUNCTIONS
INDENT_LOCALS
INDEX_XREF_INTO_SOURCE
MAKE_CLICK_DBF_FROM
MY_TABLE_OPENING_FUNCTION
NOTIFY_OF_ERROR_ON_SCREEN
OUTPUT_DIRECTORY
OUTPUT_EXTENSION
OUTPUT_OVERWRITE
POSTPROCESS_WITH_THE_ALIGNER
PREPROCESS_WITH_DECLARATION_BUSTER
RECURSION_LIMIT
REMOVE_CLICK_HEADERS
REMOVE_DUPLICATE_EMPTY_LINES
REMOVE_MULTIEDIT_HEADERS
REMOVE_SNAP_HEADERS
RESTORE_SCREEN_ON_EXIT
RETAIN_ORIGINAL_TIME_DATE_ON_OUTPUT_FILES
RUNMODE
SKIP_FILES_WITH_NO_CHANGES
SMART_ALIGN_MAX_ELEMENTS
SOURCE_XREF_FILE
TABLE_XREF_FILE
TABLE_XREF_INTO_SOURCE
VERBOSE


@_SAY_GET_ALIGNMENT_METHOD

@_SAY_GET_ALIGNMENT_METHOD Default: 2 This is part of The Aligner. Options: 0, no alignment 1, each element type in it's own aligned column 2, Columns aligned, but not by type 3, Each element in it's own row. There is no automated reverse process for Option 3. Because of this, if you select Option 3, be sure to review the output carefully before committing to it.

ADD_CLICK_HEADER

ADD_CLICK_HEADER Default: YES Options: YES, NO Set to YES, Click! adds headers to the top of each source module.

ADD_EOF_MARKER

ADD_EOF_MARKER Default: YES Options: YES, NO Set to YES, Click! adds an EOF marker at the end of each source module.

ADD_FUNCTION_HEADERS

ADD_FUNCTION_HEADERS Default: YES Options: YES, NO Set to YES, Click! adds function dividers at the start of each function in every source module.

ALIGN_DBCREATE_IN_THE_ALIGNER

ALIGN_DBCREATE_IN_THE_ALIGNER Default: YES Options: YES, NO Selecting YES will allow Click! to align DBCREATE( when used in the following two formats. So, this: dbcreate( 'filename.dbf', { { 'xxxxx', 'C', 23, 0 }, ; { 'yyy', 'D', 8, 0 }, ; { 'yy', 'C', 8, 0 }, ; { 'yuu', 'D', 8, 0 }, ; { 'yijiiiyy', 'N', 9, 2 }, ; { 'yhhfyy', 'D', 8, 0 } } ) ends up looking like this: dbcreate( 'FILENAME.DBF', { { 'XXXXX' , 'C', 23, 0 }, ; { 'YYY' , 'D', 8, 0 }, ; { 'YY' , 'C', 8, 0 }, ; { 'YUU' , 'D', 8, 0 }, ; { 'YIJIIIYY', 'N', 9, 2 }, ; { 'YHHFYY' , 'D', 8, 0 } } ) and: aSomeArray := { { 'xxxxx', 'C', 23, 0 }, ; { 'yyy', 'D', 8, 0 }, ; { 'yy', 'C', 8, 0 }, ; { 'yuu', 'D', 8, 0 }, ; { 'yijiiiyy', 'N', 9, 2 }, ; { 'yhhfyy', 'D', 8, 0 } } ) ends up looking like this: aSomeArray := { { 'XXXXX' , 'C', 23, 0 }, ; { 'YYY' , 'D', 8, 0 }, ; { 'YY' , 'C', 8, 0 }, ; { 'YUU' , 'D', 8, 0 }, ; { 'YIJIIIYY', 'N', 9, 2 }, ; { 'YHHFYY' , 'D', 8, 0 } } ) Any DBCREATE() which does not follow the above two formats are not changed, code such as... local temp := {} aadd( temp, { 'xxxxx', 'C', 23, 0 } ) aadd( temp, { 'yyy', 'D', 8, 0 } ) aadd( temp, { 'yy', 'C', 8, 0 } ) aadd( temp, { 'yuu', 'D', 8, 0 } ) aadd( temp, { 'yijiiiyy', 'N', 9, 2 } ) aadd( temp, { 'yhhfyy', 'D', 8, 0 } ) dbcreate( filename, temp ) ...is ignored.

ALIGN_CLASS_IN_THE_ALIGNER

ALIGN_CLASS_IN_THE_ALIGNER Default: YES Options: YES, NO Selecting YES will allow Click! to align CLASS structures when used like:

CASE_OF_BOOLEAN

CASE_OF_BOOLEAN Default: LOWER Options: NOCHANGE, UPPER, LOWER Use this to change the case of your boolean instructions.

CASE_OF_COMMANDS

CASE_OF_COMMANDS Default: LOWER Options: NOCHANGE, UPPER, LOWER, PROPER, LIKEINFILE Click! uses the CLICK.INI file to recognize Clipper commands. You can select this option to change how COMMAND key words look in Click! output. Please note that when you choose LIKEINFILE, your keywords will be replaced with the ones in the CLICK.INI file, so if you have a program which was coded with the old dBase III syntax using 4 letter commands like CLEA SCRE, each command will be expanded to the full command in the output.

CASE_OF_FUNCTIONS

CASE_OF_FUNCTIONS Default: LOWER Options: NOCHANGE, UPPER, LOWER, PROPER, LIKEINFILE Click! uses the CLICK.INI file to recognize Clipper functions. You can select this option to change how FUNCTION key words look in Click! output. Please note that when you choose LIKEINFILE, your keywords will be replaced with the ones in the CLICK.INI file, so if you have a program which was coded with the old dBase III syntax using 4 letter functions like UPPE( sometext), each function will be expanded to the full function in the output.

CHANGE_REPLACE_WITH_TO_ASSIGNMENT

CHANGE_REPLACE_WITH_TO_ASSIGNMENT Default: YES Options: YES, NO When set to YES, results in: REPLACE foo with x REPLACE bar with y REPLACE baz with z Being processed into: field->foo := x field->bar := y field->baz := z This doesn't work unless the Declaration Buster is turned on. Any REPLACE commands containing any of the following modifiers: ALL, FOR, WHILE, RECORD, REST and NEXT are skipped..

CHANGE_STORE_TO_ASSIGNMENT

CHANGE_STORE_TO_ASSIGNMENT Default: YES Options: YES, NO When set to YES, results in: STORE 'Hello' + " World" to y, z, x STORE x to y being processed into: y := z := x := 'Hello' + " World" y := x

CLEAN_UP_INCLUDES

CLEAN_UP_INCLUDES Default: YES This Determines if #includes will be beautified. Beautification consists of switching the #define to lower case, converting the delimiters to " and upper casing the file name. #INCLUDE 'somefile.CH' #include "nextFILE.CH" becomes #include "SOMEFILE.CH" #include "NEXTFILE.CH"

CLICK_LOG

CLICK_LOG Default: CLICK.LOG This is where the log file is written. The log file contains data from each run of Click, and is created in the output directory.

CLICK_LOG_ERASE

CLICK_LOG_ERASE Default: YES Options: YES, NO Set to YES, Click! erases the log file at the beginning of each run.

COMMENTTAB

COMMENTTAB Default: 20 When Click! finds comments, it tabs them out at this interval. So, like here when COMMENTTAB = 20, all END OF LINE comments will start on column 20, 40, 60, etc. (Bigger numbers align better)

CONVERT_&&_TO_//

CONVERT_&&_TO_// Default: YES Options: YES, NO When set to YES, Click! converts && to //.

CONVERT_*_TO_//

CONVERT_*_TO_// Default: YES Options: YES, NO When set to YES, Click! converts first * on a line to //.

CONVERT_OLD_STYLE_FUNCTIONS

CONVERT_OLD_STYLE_FUNCTIONS Default: NO Options: YES, NO When set to YES, Click! converts: 1.09 makes a change to the way that the conversion of old style function calls are done. After creating 1.08, I was informed that conversion of DO/WITH function calls to formal function/parameters changes the way the variables are passed. DO/WITH passes all variables by reference, but function calls do not. Now, the conversion places an @ in front of each parameter. Sometimes this will break the code because the @ sign is an illegal operator. See below for what to do if you get C2009 errors.. With this set to YES, ... do test do test // a comment do test with a, c, somevar do test with a, c, somevar // and a comment ... becomes ... test() test() // a comment test( @a, @c, @somevar ) test( @a, @c, @somevar ) // and a comment ... and a blazing warning screen appears when Click! is set to run with this option turned on, because of the potential of compiler error C2009 occuring because of the pass by reference on all parameters. If you get C2009 compiler errors after using this option, remove the offending @ in the parameter list and recompile.

CONVERT_TO_INCREMENTOR

CONVERT_TO_INCREMENTOR Default: YES Options: YES, NO When set to YES, Click! converts: s = s + 1 s := s - 1 x := x + ( anyvar + anyfunc() ) test=test-1// with a comment q = q * 14 ... to ... s ++ s -- x += ( anyvar + anyfunc() ) test -- // with a comment q *= 14

DEFAULT_INDENT

DEFAULT_INDENT Default: 8 Default_Indent is how far Click! indents the next line after a ; when Click! can't figure out how to align it with the previous line.

DEFLATE_(

DEFLATE_( Default: No Deflate_( removes the spaces after ( and before ). Turned on, Click converts this: X := ( 9, 3 ) to X := (9, 3)

DEFLATE_[

DEFLATE_[ Default: No Deflate_[ removes the spaces after [ and before ]. Turned on, Click converts this: X := [ 9, 3 ] to X := [9, 3]

DEFLATE_{

DEFLATE_{ Default: No Deflate_{ removes the spaces after { and before }. Turned on, Click converts this: X := { 9, 3 } to X := {9, 3}

DEFLATE_,

DEFLATE_, Default: No Deflate_, removes the spaces after , Turned on, Click converts this: X := ( 9, 3 ) to X := ( 9,3 )

DEFLATE_+

DEFLATE_+ Default: No Deflate_+ removes the spaces before and after + Turned on, Click converts this: X := 9 + 3 to X := 9+3

FUNC_DIV

FUNC_DIV Default: * This is the character used to replicate( ??, 68 ) for the function divider.

FUNCTION_REF_INTO_SOURCE

FUNCTION_REF_INTO_SOURCE Default: YES Options: YES, NO Set to YES, Click! places a short synopsis of the functions in each module in the header for that module. This is identical to the matching information in the SOURCE_XREF_FILE file, if created. Please note that you must set ADD_CLICK_HEADER to YES.

FUNCTION_XREF_FILE

FUNCTION_XREF_FILE Default: FNC_CROS.TXT If this is set to a file name, then that file is created in the output directory, and contains a cross reference which shows everywhere any function is called from, and which source module the call came from. A function to function cross reference.

FUNCTION_XREF_INTO_SOURCE

FUNCTION_XREF_INTO_SOURCE Default: YES Options: YES, NO Set to YES, Click! places the function to function cross reference information in the function header of each function in each source module. This is identical to the matching information in the FUNCTION_XREF_FILE file, if created. Please note that you must set ADD_FUNCTION_HEADERS to YES.

HEAD_DIV

HEAD_DIV Default: * This is the character used to replicate( ??, 68 ) for the header divider.

INDENT_/IF/FOR/CASE/FUNC/BEGIN/WHILE/CLASS

INDENT_IF INDENT_FOR INDENT_CASE INDENT_FUNC INDENT_BEGIN INDENT_WHILE INDENT_CLASS Default: 3 Each type of structure can be indented a different amount if necessary. This is what to change if you want Click! to indent each level more or less.

INDENT_DO_CASE

INDENT_DO_CASE Default: NO Options: YES, NO Set to YES, Click! indents everything between DO CASE and END CASE by the amount set in INDENT_CASE.

INDENT_FUNCTIONS

INDENT_FUNCTIONS Default: NO Options: YES, NO Set to YES, Click! indents everything after the first line of each FUNCTION by the amount set in INDENT_FUNC.

INDENT_LOCALS

INDENT_LOCALS Default: no Options: YES, NO This directive is only operative when INDENT_FUNCTIONS is set to YES. If INDENT_FUNCTIONS=YES, and INDENT_LOCALS=NO, then any line starting with LOCA PRIV MEMV STAT PUBL FIEL is left justified.

INDEX_XREF_INTO_SOURCE

INDEX_XREF_INTO_SOURCE Default: YES Options: YES, NO Set to YES, Click! places a reference into the header of each file which opens an index.

MAKE_CLICK_DBF_FROM

MAKE_CLICK_DBF_FROM Default: ENVIRONMENT Options: ENVIRONMENT, (specified path), DRIVES An example of each option: MAKE_CLICK_DBF_FROM=ENVIRONMENT MAKE_CLICK_DBF_FROM=C:\CLIPPER5\LIB;E:\GRUMP52\LIB MAKE_CLICK_DBF_FROM=DRIVES

MY_TABLE_OPENING_FUNCTION

MY_TABLE_OPENING_FUNCTION Default: None Options: Add function names delimited by |, to track other file opening and closing functions other than USE and DBUSEAREA. MY_TABLE_OPENING_FUNCTION=D_OPEN|D_CLOSE|D_ZAP

NOTIFY_OF_ERROR_ON_SCREEN

NOTIFY_OF_ERROR_ON_SCREEN Default: YES Options: YES, NO If this is set to yes, then processing will stop when an error is encounterd. Set to NO, the program will continue non-stop, and you will need to look in the CLICK.LOG file to see what happened.

OUTPUT_DIRECTORY

OUTPUT_DIRECTORY=CLICKOUT Default: CLICKOUT This is the directory where all output will be written.

OUTPUT_EXTENSION

OUTPUT_EXTENSION=.PRG Default: .PRG This is the default extension of output which Click! will create.

OUTPUT_OVERWRITE

OUTPUT_OVERWRITE Default: ALWAYS The Options:: ALWAYS, ASK, NEVER This determines what action Click! performs when it is going to create output, but the file already exists.

POSTPROCESS_WITH_THE_ALIGNER

POSTPROCESS_WITH_THE_ALIGNER Default: YES Options: YES, NO The Aligner currently works on: @ SAY GET's and: Removes the space bloat from := on both assignments and declarations. and: Certain types of DBCREATE() usage. Future uses of the aligner will add other code sequences, probably this is where the OO stuff will get realigned.

PREPROCESS_WITH_DECLARATION_BUSTER

PREPROCESS_WITH_DECLARATION_BUSTER Default: YES Options: YES, NO Set to YES, then declarations that start like this: LOCAL var1, var2, var3 Will end up like this: LOCAL var1 LOCAL var2 LOCAL var3 This works on the following declarations. LOCAL PRIVATE MEMVAR STATIC PUBLIC FIELD It does cost a little time, since it is a separate process done with it's own pass on the file. Declaration Buster now also busts up multiparameter REPLACE statements. So, if you have the Declaration Buster turned on, this: REPLACE foo with x, bar with y, baz with z becomes: REPLACE foo with x REPLACE bar with y REPLACE baz with z which in a later pass may become: foo := x bar := y baz := z

RECURSION_LIMIT

RECURSION_LIMIT Default: 7 Options: Any Number This is only used if you select... MAKE_CLICK_DBF_FROM=DRIVES It limits the depth that directory recursion will traverse. I found on my personal NT drive, there were directories nested so deeply that I got a stack overflow. This eliminated that problem.

REMOVE_CLICK_HEADERS

REMOVE_CLICK_HEADERS Default: YES Options: YES, NO Click! headers and function dividers start with *+. If set to yes, then they are recognized and removed.

REMOVE_DUPLICATE_EMPTY_LINES

REMOVE_DUPLICATE_EMPTY_LINES Default: YES Options: YES, NO Click! will remove any extra empty lines in your source code. Single empty lines are not removed. This option only works if The Aligner is turned on.

REMOVE_MULTIEDIT_HEADERS

REMOVE_MULTIEDIT_HEADERS Default: YES Options: YES, NO Multi Edit headers start with #/ or /* --% . If this is set to yes, then they are recognized and removed.

REMOVE_SNAP_HEADERS

REMOVE_SNAP_HEADERS Default: YES Options: YES, NO Snap headers and function dividers start with *! and *: If this is set to yes, then they are recognized and removed.

RESTORE_SCREEN_ON_EXIT

RESTORE_SCREEN_ON_EXIT Default: NO Options: NO, YES Set to yes, Click! restores the screen before returning to DOS.

RETAIN_ORIGINAL_TIME_DATE_ON_OUTPUT_FILES

RETAIN_ORIGINAL_TIME_DATE_ON_OUTPUT_FILES Default: YES Options: YES, NO Set to YES, Click! sets the output files to have the same time/date stamp as the originals.

RUNMODE

RUNMODE Default: 5.X Options: 5.X, S87 Selecting S87: Stops the = to := conversion Turns off the Declaration Buster Stops the STORE to := converter The Aligner uses = != instead of := += -= *= /= ^= !=

SKIP_FILES_WITH_NO_CHANGES

SKIP_FILES_WITH_NO_CHANGES Default: YES Options: YES, NO Set to YES, Click! skips the processing of a file when the file in the output directory has the same name, time and date as the file in the input directory.

SMART_ALIGN_MAX_ELEMENTS

SMART_ALIGN_MAX_ELEMENTS Default: 11 Smart Align Max Elements refers to how many line elements will be considered to try to line something up on a continued line. Lower numbers here cause more lines to use the DEFAULT_INDENT number.

SOURCE_XREF_FILE

SOURCE_XREF_FILE Default: SRC_CROS.TXT If this is set to a file name, then that file is created in the output directory, and contains a cross reference of all of the functions in each source module included in the entire processing pass.

TABLE_XREF_FILE

TABLE_XREF_FILE Default: TBL_CROS.TXT If this is set to a file name, then that file is created in the output directory, and contains a cross reference of all of the tables and indexes in each source module included in the entire processing pass.

TABLE_XREF_INTO_SOURCE

TABLE_XREF_INTO_SOURCE Default: YES Options: YES, NO Set to YES, Click! places a reference into the header of each file which opens an data table.

VERBOSE

VERBOSE Default: YES Options: YES, NO Set to YES, Click! scrolls the input and output stream in the two windows. Set to NO, the only indication of progress will be the progress bar at the top of the screen.