dBASE Source Code Analyzer + Reporter

---
Master Index Current Directory Index Go to SkepticTank Go to Human Rights activist Keith Henson Go to Scientology cult

Skeptic Tank!

dBASE Source Code Analyzer & Reporter 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 .. ....... ....... ...... ...... .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ........ ....... .. ........ ....... .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ........ ....... ....... .. .. .. .. 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 Version 3.0 Designed and written by Ryan Katri 2575 Drake Hill Road Fortuna, CA 95540 (707) 725-5559 Copyright (c) 1986-89 by Ryan Katri. All Rights Reserved. TABLE OF CONTENTS 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 UNREGISTERED VERSION OF dSCAR. . . . . . . . . . . . . . . . . . . . 2 ORDERING dSCAR . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 SYSTEM REQUIREMENTS & DISTRIBUTION . . . . . . . . . . . . . . . . . 4 INSTALLING THE FILES . . . . . . . . . . . . . . . . . . . . . . . . 5 STARTING dSCAR . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 THE MENU SCREEN. . . . . . . . . . . . . . . . . . . . . . . . . . . 7 MENU OPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Diagramming. . . . . . . . . . . . . . . . . . . . . . . . . 9 Line Numbers . . . . . . . . . . . . . . . . . . . . . . . .11 Controls Only. . . . . . . . . . . . . . . . . . . . . . . .12 Errors Only. . . . . . . . . . . . . . . . . . . . . . . . .13 Suppress Comments. . . . . . . . . . . . . . . . . . . . . .13 Proc/Funct:. . . . . . . . . . . . . . . . . . . . . . . . .13 Lines 1 to END . . . . . . . . . . . . . . . . . . . . . . .13 X-Reference. . . . . . . . . . . . . . . . . . . . . . . . .14 Modules. . . . . . . . . . . . . . . . . . . . . . . . . . .15 Word Fix-Up. . . . . . . . . . . . . . . . . . . . . . . . .16 Your Reserved. . . . . . . . . . . . . . . . . . . . . . . .17 Comment Condition. . . . . . . . . . . . . . . . . . . . . .17 Screen . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Printer. . . . . . . . . . . . . . . . . . . . . . . . . . .18 File . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Output Print-Style . . . . . . . . . . . . . . . . . . . . .19 20 Non-stop Scroll. . . . . . . . . . . . . . . . . . . . . . .19 Analyze Another. . . . . . . . . . . . . . . . . . . . . . .19 Install Temporary. . . . . . . . . . . . . . . . . . . . . .20 Save Defaults. . . . . . . . . . . . . . . . . . . . . . . .20 Quit . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Begin Processing . . . . . . . . . . . . . . . . . . . . . .20 BATCH MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 MODULES PROCESSING QUEUE . . . . . . . . . . . . . . . . . . . . . .23 CODING ERRORS dSCAR REPORTS . . . . . . . . . . . . . . . . . . . .24 ADDING RESERVED WORDS. . . . . . . . . . . . . . . . . . . . . . . .25 OTHER FEATURES & TIPS. . . . . . . . . . . . . . . . . . . . . . . .27 CONFIGURING dSCAR. . . . . . . . . . . . . . . . . . . . . . . . . .28 Miscellaneous Settings . . . . . . . . . . . . . . . . . . .29 Install Colors . . . . . . . . . . . . . . . . . . . . . . .33 Printer Setup and Reset. . . . . . . . . . . . . . . . . . .34 INTRODUCTION 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 dSCAR is a set of utilities for all versions of dBASE, FoxBase, Clipper, FrontRunner, and other dBASE clones. All of the utilities are contained in one user interface and are turned on and off through command line options or the dSCAR menu system. The dSCAR utilities perform a variety of tasks, with these being a few of the highlights: PRETTY-PRINTS SOURCE CODE -- Your code will be more readable with these clean-up functions dSCAR performs: - Properly indents code, lining up all structural statements - Changes variables and reserved words as specified to UPPERCASE/lowercase/SIGNificant case/Proper case - Can comment conditional statements if specified - Optionally removes user comments from source code UNCOVERS ERRORS -- dBASE and its clones do not catch all errors in source code, especially structural errors. dSCAR flags those errors dBASE misses. CREATES FLOW DIAGRAMS -- To aid in reading your source code, dSCAR will add graphic flow diagrams lining up structural statements (like DO WHILE...ENDDO, IF...ENDIF). CONSTRUCTS VARIABLES CROSS-REFERENCES -- Two types of variables cross-references can be created: - Local cross-references display the line numbers where variables are found within a specific module. - Global cross-references are for an entire system, and tell which modules each variable is found in. ADDS LINE NUMBERS -- Line numbering source code is necessary for cross-references, yet it is also useful when analyzing printouts and debugging code. OUTPUTS TO SCREEN, FILE, AND PRINTER -- Send dSCAR output to a variety of devices: - Screen output for quick checking of errors, with all errors being highlighted in specified color. - Printer output adds user-defined header on each page, optionally include page number, module name, system name, copyright notice, and more. A table of contents is also created if a whole system is being documented. - File output so that you can execute your pretty-printed code, or send to a file with printer codes intact for later printing. Page 1 UNREGISTERED VERSION OF dSCAR 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 The unregistered version of dSCAR is fully functional with no features disabled. The difference between the registered and unregistered versions of dSCAR are the opening and closing screens. The unregistered version has two opening screens: a title screen and an information screen. Pressing any key will page you through the screens. After these screens are displayed the dSCAR menu is presented. The unregistered closing screen is displayed only if you operate dSCAR for more than five minutes at a time. The closing screen urges you to register dSCAR and gives you the option of printing a registration form by pressing the 'R' key. Please do not use this registration form unless the ORDER.EXE program is NOT included with the dSCAR package you received. By registering dSCAR you get the latest version of dSCAR without the opening and closing screens. In addition you will receive a printed manual and unlimited support by phone or by mail. You will also be informed of major dSCAR upgrades and be entitled to updating to newer versions at a nominal charge. See the chapter "ORDERING dSCAR" (next page) for ordering instructions. Page 2 ORDERING dSCAR 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 Use the ORDER.EXE program to print a registration form. ORDER will request the information needed to register: your name, your company name, your address, and other pertinent information. In addition, it will ask if you are overseas and if you will be sending a purchase order. Both incur additional costs. ORDER will compute sales tax if you are in California and add in the extra cost of overseas shipping and purchase order handling. The total registration cost is displayed on the screen. A check or money order for that amount should be made out and mailed to: Ryan Katri 2575 Drake Hill Road Fortuna, CA 95540 ORDER also allows the entry of optional comments. If you have any suggestions, complaints, or kudos about dSCAR, enter them in the comment area. When all the information is collected, ORDER will print a registration form. Please include the form with your check, money order, or purchase order. This is the current price list for dSCAR v3.0 (prices are subject to change): dSCAR with printed manual..........$ 49.95 each dSCAR without printed manual.......$ 39.95 each dSCAR Unlimited Site License.......$400.00 Add the following if applicable: Sales tax in California............6% on dSCAR base price only Purchase orders less than $100.00..$ 5.00 Overseas shipping..................$ 2.00 Do not compute sales tax on the purchase order handling and overseas shipping costs. Site licenses are unlimited within a single company. dSCAR is supplied on a single disk and with a single printed manual. It is the responsibility of the purchaser to copy disks and print or photocopy manuals. Page 3 SYSTEM REQUIREMENTS & DISTRIBUTION 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 dSCAR will run on any of the IBM-PC family of computers, including the PC, PC/XT, PC/AT, and PS/2. It should also run on most IBM-compatible machines. If your computer will run dBASE or a dBASE-compatible compiler or interpreter (such as FoxBase, Clipper, etc), then it should also work with dSCAR. The unregistered version of dSCAR is distributed in either the .ZIP or .ARC archive formats. The following files should be included in this archive: DSCAR.EXE - the executable program DSCAR.DOC - dSCAR documentation READ.ME - important last-minute info you should read ORDER.EXE - program to create registration form INSTALL.BAT - installation batch file USE_FOX.BAT - part of installation for FoxBase USE_CLIP.BAT - part of installation for Clipper ASKYN.EXE - used in installation batch file If you received dSCAR on a disk and not in an archive, say from an associate or a software distributor, make sure that all of the above files are present. If any of these files are missing then you received an incomplete package. The READ.ME file may contain some important information which did not get into the manual, so it is recommended that you read this file. If you wish to distribute dSCAR to your associates, distribute only DSCAR??.ZIP. It is illegal to give away a copy of the registered version of DSCAR.EXE. The dSCAR program contained in the .ZIP file contains a functional copy of dSCAR. The only drawback is that it bears two sign-on screens and a closing screen urging the user to register. DSCAR.EXE is the only file necessary to run dSCAR. All other files are optional and dSCAR can operate independent of all of them. Page 4 INSTALLING THE FILES 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 To copy the dSCAR files over to another floppy disk or hard disk, first log into the drive and directory you want to put dSCAR on. Then, put the distribution disk in another drive and type: :INSTALL : is the drive letter where the dSCAR distribution disk is located. If this is drive A:, you would type: A:INSTALL A: Install performs two functions. First, it copies DSCAR.EXE from the distribution disk to the current drive and directory. Secondly, it asks if you are using Clipper or FoxBase. If you are using Clipper or FoxBase then the install program will create a RESERVED file in the current directory. The RESERVED file contains language extensions for the cross-reference feature of dSCAR. See the chapter titled "ADDING RESERVED WORDS" (page 25) for more information. For now you can ignore the RESERVED file. You do not have to use the install program to copy dSCAR. DSCAR.EXE is the only necessary file to operate dSCAR, and it may be copied to other directories and disks using the Dos COPY command. If you are using a hard disk it is recommended you just put DSCAR.EXE in a directory found in your path statement. If you wish to configure dSCAR at this point, turn to the chapter heading "CONFIGURING dSCAR" (page 28). It is recommended, however, that you run and familiarize yourself with dSCAR before making any changes in configuration. Page 5 STARTING dSCAR 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 To start dSCAR, at the DOS prompt type: DSCAR If dSCAR is in the current directory or one of your path statements, the options menu will be displayed and the second line of the screen will prompt: dBASE file to process: *.PRG '*.PRG' is the default file mask. Press if you want to get a list of all of the files with a .PRG extension. Or, type in the name of the dBASE program file you wish to process. Path designations are acceptable. will exit dSCAR. A quicker way to bring up dSCAR is to include the file to process on the command line. The syntax is: DSCAR Where is the name of the dBASE file to be processed. Wildcards are acceptable in filenames. If a wildcard is entered at the 'dBASE file to process' prompt, dSCAR will open up a window displaying a list of the files matching the filespec. You can then scan the list using the , , , , , and keys. Pressing a letter 'A'-'Z' will move the cursor to the first filename beginning with that letter. will select the file the cursor is positioned on. Page 6 THE MENU SCREEN 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 The dSCAR menu screen is divided into three areas: the status lines, the selection window, and the installation window. Each of these areas is explained in detail: Status Lines The status lines are the top three lines of the screen. They contain the dSCAR version number and copyright notice, the file which is selected to be processed, and the output device or filename. A sample status line is shown: dSCAR v3.0 (Copyright (c) 1986-89 Ryan Katri) dBASE file to process: MAIN.PRG Output file: (screen) The output file will show a filename if output is to a file. It will display '(printer)' or '(screen)' if output is to one of these two devices. Selection Window The selection window displays the options which may be turned on or off. The window looks like this: 袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴敲 -FLOW CONTROLS- -DOCUMENTATION- D Diagramming X X-Reference L Line numbers M Modules C Controls only W Word fix-up E Errors only Y Your reserved * Suppress comments & Comment condition = Proc/Funct: # Lines 1 to END -OUTPUT OPTIONS- -ACTIONS- S Screen A Analyze another P Printer I Install temporary F File ! Save defaults O Output print-style Q Quit N Non-stop scroll RETURN: Begin Processing 훤袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴 Selected (turned on) options are highlighted. 'Flow Controls', 'Documentation', 'Output Options', and 'Actions' are the option headings. Page 7 You can toggle options on and off by hitting the key next to the option. For example, to turn Diagramming on and off, hit the 'D' key. Some options are not toggles, specifically those under the Actions heading. Pressing will start processing the selected program file. Installation Window The installation window resembles the following: 旼컴컴 CONFIGURATION 컴컴 Indent Count : 3 Diagram Type : G Reserved Case : U Variables Case : P Printer Port : 1 Screen Length : 22 Printer Length : 63 Printer Width : 80 File Width : 79 Module Extension: PRG Print-Style Ext.: PRN Output Extension: FLO X-Ref Extension : XRF Truncate Lines : N 쳐컴 RESERVED WORDS 컴컴 # Own Reserved : 4 읕컴컴컴컴컴컴컴컴컴컴컴켸 Contained under the Configuration heading of this window are many of the settings you can control through dSCAR's configuration program. These settings can be modified for a single dSCAR session, however, by selecting the option Install Temporary. Thus, you can on-the-fly change many of dSCAR's setting, such as the printer port to use or the indent count. If you change these settings from the menu screen, they are changed for that session only. To make permanent changes you must run dSCAR's built-in configuration program. The Reserved Words heading tells how many reserved words are defined. This feature is explained in a later section. Page 8 MENU OPTIONS 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 DIAGRAMMING -- 'D' key toggles on/off One of the most useful features of dSCAR is its ability to line up all your control statements to make sure they are structurally sound. This makes it easy, for example, to see where you might have an open CASE or a missing IF. dBASE will not catch structural errors, yet structural errors usually result in erratic operation of your program. If your program is making some weird returns or executing loops improperly, dSCAR can be called upon to see if the problem is structural. Most dBASE language compilers (ie Clipper) will warn of structural errors themselves. Below is a sample of code before it has been processed with dSCAR's Diagramming option: 旼CODE BEFORE PROCESSING컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 DO WHILE .T. ACCEPT 'What is your name?' TO Myname IF UPPER(Myname) <> 'JOE' ? 'Only Joe is allowed access!' RETURN ELSE ? 'Hello Joe' DO CASE CASE Myname = 'JOE' ? 'You typed in uppercase' CASE Myname = 'joe' ? 'You typed in lowercase' RETURN ENDCASE ENDIF ENDDO 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 The resulting output with Diagramming on would look something like this: 旼GRAPHIC FLOW DIAGRAMS컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 DO WHILE .T. ACCEPT 'What is your name?' TO Myname IF UPPER(Myname) <> 'JOE' ? 'Only Joe is allowed access!' 컴컴컴컴RETURN 홂LSE ? 'Hello Joe' DO CASE 힏ASE Myname = 'JOE' Page 9 ? 'You typed in uppercase' 힏ASE Myname = 'joe' ? 'You typed in lowercase' 컴컴컴컴컴컴RETURN ENDCASE 픂NDIF ENDDO 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 The above example assumes that graphic flow diagrams are selected. Graphic diagrams use single and double lines to show how your program's flow is structured. Double lines are used for DO WHILE and DO CASE statements, while single lines for IF statements. Horizontal lines are used to indicate where the flow jumps to when a RETURN, LOOP, or EXIT is encountered. You can change from graphic flow diagrams to text diagrams through the configuration or temporary installation. Text diagrams are not as attractive, but they are more informative if you are trying to figure out the flow of a program. Here is what a text flow diagram looks like: 旼TEXT FLOW DIAGRAMS컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 DO WHILE .T. W ACCEPT 'What is your name?' TO Myname W IF UPPER(Myname) <> 'JOE' W T ? 'Only Joe is allowed access!' <--------RETURN W ELSE W F ? 'Hello Joe' W F DO CASE W F CASE Myname = 'JOE' W F 1 ? 'You typed in uppercase' W F CASE Myname = 'joe' W F 2 ? 'You typed in lowercase' <------------RETURN W F ENDCASE W ENDIF ENDDO 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 Notice that each control statement has a corresponding character to represent it. For example, a WHILE structure is lined up with a W. Below is what each character in the text flow diagram represents: W - DO WHILE; terminates with ENDDO T - IF is true; terminates with ENDIF or ELSE F - ELSE is false; terminates with ENDIF Page 10 S - SCAN; terminates with ENDSCAN C - DO CASE; terminates with first CASE, OTHERWISE, or ENDCASE # - Number of the case statement; terminates with next CASE, OTHERWISE, or ENDCASE O - OTHERWISE; terminates with ENDCASE P - PRINTJOB; terminates with END PRINTJOB L - FOR; terminates with NEXT If you don't quite understand these, try running some of your dBASE code through dSCAR with Diagramming on and you will get the picture. If you want runnable code that is simply indented without the flow diagramming, then turn Diagramming off. Code processed with all flow control options turned off is still indented and can be executed by dBASE and interpreted by a compiler. LINE NUMBERS -- 'L' key toggles on/off Line Numbering will add line numbers to your source code. If Variables Cross-Reference is on, then it is recommended to have Line Numbering on, as the variables are referenced with the corresponding line numbers. There are two ways to line number. The default method is to have each complete line of source code assigned its own number. The second method gives each continuation line its own number. For example, if a long line of code will not fit on a single line, dSCAR will automatically break it up into several lines using the dBASE continuation feature; each continued line would be assigned a new line number. An example of numbering if each complete line of source code is to have a single line number: 旼SINGLE NUMBER FOR CONTINUATION LINES컴컴컴컴컴컴컴컴컴컴컴커 1 do while .not. eof() 2 replace first with mfirst, last with mlast,; 2 company with mcompany, phone with mphone,; 2 address1 with maddress1, address2 with maddress2 3 skip 4 enddo 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 An example of numbering if continuation lines are assigned new numbers: Page 11 旼NEW NUMBERS FOR CONTINUATION LINES컴컴컴컴컴컴컴컴컴컴컴컴커 1 do while .not. eof() 2 replace first with mfirst, last with mlast,; 3 company with mcompany, phone with mphone,; 4 address1 with maddress1, address2 with maddress2 5 skip 6 enddo 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 The numbering method can be specified through the dSCAR configuration. CONTROLS ONLY -- 'C' key toggles on/off This option tells dSCAR to only include the control lines in the output. These control lines would be commands such as DO CASE/OTHERWISE/ENDCASE, IF/ELSE/ENDIF, DO WHILE/ENDDO, IF/ELSE/ENDIF, SCAN/ENDSCAN, FOR/NEXT, and PRINT/END PRINTJOB. This option is usually used in conjunction with the Diagramming function. The utility of Controls Only is that you can view the structure of your program without having to read through the extraneous code which has no effect on structure. Below are examples of source code with Controls Only off and with Controls Only on (in both cases Diagramming is turned on): 旼CONTROLS ONLY OFF컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 do while .t. accept 'What is your name?' to myname if upper(myname) <> 'JOE' ? 'Only Joe is allowed access!' 컴컴컴컴return 홦lse clear ? 'Hello Joe' ? 'Do you wish to check your messages now? accept to CheckMsg do case case CheckMsg = 'Y' do CheckIt case CheckMsg = 'N' ? 'Thank you for logging in.' 컴컴컴컴컴컴return endcase 픢ndif enddo 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 Page 12 旼CONTROLS ONLY ON컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 do while .t. if upper(myname) <> 'JOE' 컴컴컴컴return 홦lse do case case CheckMsg = 'Y' case CheckMsg = 'N' 컴컴컴컴컴컴return endcase 픢ndif enddo 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 Notice how much easier it is to follow the flow when Controls Only is turned on. ERRORS ONLY -- 'E' key toggles on/off With Errors Only on, only errors that are found in the dBASE code are displayed. When Errors Only is selected, the following options are automatically turned off: Line Numbers, Controls Only, Suppress Comments, and Diagramming. See "CODING ERRORS dSCAR REPORTS" (page 24) for a list of the errors. SUPPRESS COMMENTS -- '*' toggles on/off You can filter the comments out of your code by turning this option on. Useful to see only the necessary code for debugging. PROC/FUNCT: -- '=' prompts for entry of procedure or function dSCAR will process only the selected procedure or function if you indicate it here. dSCAR will scan through your dBASE program files until it encounters the selected procedure or function. Only that procedure or function will be processed. When you select this option dSCAR will ask for the procedure or function to process. The maximum length of a procedure name is 10 characters. If you wish to turn this features off (it is not a toggle) after already entering a procedure, just delete the procedure name you had entered using the DELete key on the keyboard. LINES 1 TO END -- '#' prompt for a beginning and ending line You can optionally select to have dSCAR process only a specific range of line numbers in a module. For example, you may want to process only up through line 50 in your program. Or, if you want to process only lines 100 to 150, you can save time by skipping the first 99 Page 13 lines and everything after line 150. When entering a beginning line number, an entry of '0' or '1' means to start from the beginning of the program. To have dSCAR process all the way to the end of the program, enter '0' when prompted for the ending line number. This option only works with single modules. Turning it on will automatically turn Modules off. X-REFERENCE -- 'X' toggles on/off Turning Variables Cross-Reference on will instruct dSCAR to prepare a cross-reference of all variables as it processes each module. There are two types of cross-references: local and global. A local cross-reference includes only variables found in one module or procedure, and indicates on which line numbers found. A global cross- reference displays the modules each variable is found in. If Variables Cross-Reference is toggled on, it is recommended that Line Numbers be turned on, as variables are referenced by their line numbers in a local cross-reference. If Modules is selected, then a global cross-reference will be created; otherwise, only a local cross- reference is generated. The local cross-reference is displayed after each individual module or procedure is processed. The listing for a local cross-reference is in a format similar to this: 旼LOCAL CROSS-REFERENCE컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 Variable Line number in file -------- ------------------- CheckMsg: 11 13 15 myname: =2 3 4 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 'CheckMsg' and 'myname' are variables. 'CheckMsg' occurs in lines 11, 13, and 15. 'myname' is found in lines 2, 3, and 4. Notice the equal sign (=) next to the 2 after 'myname.' The equal sign indicates that on line 2 'myname' is assigned a new value. All variable assignments are indicated with the equal sign, as well as being highlighted if output is to the screen. If Modules is toggled on also, then a global cross-reference of variables will also be generated. The global cross-reference quickly shows which variables occur in which modules. If a variable occurs in a procedure, then the procedure name is displayed with the module name in parenthesis beside it. A sample global cross-reference is shown: Page 14 旼GLOBAL CROSS-REFERENCE컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 Variable occurs in Modules -------- ------- CheckMsg: TEST.PRG myname: SHOWNAME(GETNAME.PRG) GETNAME.PRG TEST.PRG NoName: SHOWNAME(GETNAME.PRG) TempName: GETNAME.PRG 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 'CheckMsg' occurs only in the TEST.PRG module. 'myname' occurs in two modules and one procedure. The procedure name is SHOWNAME, and SHOWNAME is in the module GETNAME.PRG. 'NoName' is found solely in a procedure, and TempName occurs in a single module. MODULES -- 'M' key toggles on/off Turning Modules on will instruct dSCAR to process all modules that may call each other in a complete dBASE system. Any time dSCAR encounters a DO , SET FORMAT TO , or SET PROC TO it will add the filename to a list of modules to be processed. Thus, if you had several modules to process, and they are all eventually called somewhere in the system, you could start with the top module and dSCAR will work down from there. To illustrate this: You have a module called MAIN.PRG, which calls ACCOUNTS.PRG and INVENT.PRG. ACCOUNTS.PRG in turn calls EDIT.PRG, and INVENT.PRG also calls EDIT.PRG. If you turn Modules on and start with the file MAIN.PRG, then all of these would get processed: MAIN.PRG, ACCOUNTS.PRG, INVENT.PRG, and EDIT.PRG. A module will NOT be processed twice! The current module being processed is written at the bottom of the screen. This makes it easy to see what modules have errors in them with a glance at the status line. Depending on what you specified in the configuration, drive designators and path names will or will not be stripped from filenames. If pathnames are stripped, then dSCAR will search for modules first in the current directory. If a module is not found in the current directory, dSCAR will search the directory in which the top module was specified to be in. If a file cannot be found a warning message is displayed to the Page 15 screen. Sometimes dSCAR will not find a module because the module is really a procedure. In this case, ignore the warning message. If you wish to process a module as part of a system but that module is not being called by the system, use the MODULES file. This is a file containing a list of modules you want added to the processing queue. See the chapter heading "MODULES PROCESSING QUEUE" (page 23) to see how to do this. WORD FIX-UP -- 'W' key toggles on/off Word Fix-up will fix your code cosmetically by changing the case of reserved words and variables in your code. For example, you may opt to capitalize all reserved words and lowercase variables. You specify the case for reserved words and variables in dSCAR configuration. It may also be changed through the temporary installation. There are five different ways to change the case of reserved words and variables: upper, lower, proper, significant, and no change. Upper and lower are self-explanatory. In proper case, the first letter of each word is capitalized. For example, 'do while' becomes 'Do While' and 'REPLACE' becomes 'Replace'. Significant case will capitalize only the first four letters of a word. 'do while' becomes 'DO WHILe' and 'replace' becomes 'REPLace.' No change will leave all reserved words or all variables as they are found in the code. This is especially useful if you want to change the case of reserved words, but leave variables as you entered them. Below is an example of code before and after processing with Word Fix- up on. In this case, reserved words are capitalized and variables are made proper case. 旼CODE BEFORE PROCESSING컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 do while .T. Accept 'What is your name?' to myname IF upper(MYNAME) <> 'JOE' ? 'Only Joe is allowed access!' return ELSE ? 'Hello Joe' retu endif enddo 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 Page 16 旼WORD FIX-UP ON컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 DO WHILE .T. ACCEPT 'What is your name?' TO Myname IF UPPER(Myname) <> 'JOE' ? 'Only Joe is allowed access!' RETURN ELSE ? 'Hello Joe' RETU ENDIF ENDDO 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 Keep in mind that Word Fix-up will not add or delete any code. If you always use only the first four letters for dBASE commands and functions, dSCAR will not expand the word. For example, if you used 'retu' in your code, dBASE would make that 'RETU' (as shown in the code sample above). It will not expand it to be 'RETURN'. YOUR RESERVED -- 'Y' key toggles on/off In order to support the ever-changing and expanding dBASE language and dBASE clones, dSCAR allows you to add your own reserved words to its own list. The main purpose of this is to keep those new commands which dSCAR does not recognize out of the cross-reference. Your own reserved words are contained in a file called RESERVED (no extension). If dSCAR finds this file in the current directory then Your Reserved is automatically toggled on. The words contained in RESERVED are read into dSCAR's list of reserved words and will no longer be added to a cross-reference of variables. If you do not wish to use the reserved words in RESERVED, then turn Your Reserved off. The point of this is if you happen to be using two different dBASE compatible languages. For example, you might use Clipper at times and dBASE IV at other times. You will need the extra reserved words when processing Clipper code, so you would want Your Reserved toggled on. However, when processing dBASE IV code you would want it toggled off, as all of dBASE IV's reserved words are part of dSCAR's internal list. See the chapter "ADDING RESERVED WORDS" (page 25) for instructions on creating your own reserved words list. COMMENT CONDITION -- '&' toggles on/off dSCAR can aid in commenting your source code. If Comment Condition is on, dSCAR will append the condition for an IF, DO WHILE, SCAN, and FOR to the finishing ENDIF, ENDDO, ENDSCAN and NEXT. For example, take the following statement: IF x = 10 Page 17 When dSCAR encounters the ENDIF, it will add a comment like this: ENDIF && x = 10 By doing so, it makes it easy to see what an ENDIF, ENDDO, or NEXT is terminating. If there is already a comment on the ENDIF, ENDDO, or NEXT line, then dSCAR will leave the original comment intact and not add its own comment. SCREEN -- 'S' key turns on, 'P', 'F', or 'O' turns off Hit the 'S' key if you want all output to go to the screen. dSCAR will pause after a screen page is displayed unless Non-stop Scroll is toggled on. After a page is displayed, dSCAR will prompt with the following message: Q to quit, N for non-stop, any other key to continue. Hitting 'Q' or will return you to the dSCAR main menu. 'N' will make the display non-stop so it will not pause after each page. However, you can force a pause at any time by hitting the key; you can then turn non-stop scrolling off if you wish. Pressing a key besides 'Q' or 'N' will display the next screen page. At the end of processing the entire system, dSCAR will display this message: [END OF ANALYSIS] Q to quit dSCAR, any other key for menu Pressing 'Q' or at this point will exit dSCAR completely. Any other key will return you to the main menu. PRINTER -- 'P' key turns on, 'S', 'F', or 'O' turns off Hit the 'P' key if you want all output to be directed to the printer. When sending output to the printer, dSCAR will initially send the optional codes specified to set up the printer. At the end of printing it will send the codes to reset the printer. These printer codes are specified in the dSCAR configuration. There are several other printer options which are specified in the configuration. These include the left margin, page length and width, the page heading, printer port to use, and whether or not a formfeed is sent after each module is printed. See the chapter heading "CONFIGURING dSCAR" (page 28) for more information on these options. When Errors Only is toggled on and output is to the printer, each module processed is separated by dashes instead of a formfeed. Hitting will pause printing and ask if you wish to abort. Page 18 FILE -- 'F' key turns on, 'S', 'P', or 'O' turns off Hit the 'F' key to send output to disk. Sending output to the disk is most useful when you want to pretty up your source code to make it more readable as you work on it. To do this and still have runnable code, you must turn Diagramming and Line Numbers off. Output to disk is sent to the same filename of each module but with a new extension. For example, the source code will be written to the same filename as the module being processed, but the extension will be '.FLO'. The local cross-reference will go to the filename of the referenced module but with an extension of '.XRF'. The global cross- reference will be written to the same filename as the top file, but with an extension of '.GBL'. All of these extensions may be changed through the dSCAR configuration. For example, if you process the file HELP.PRG, the output file will be HELP.FLO. If a local cross-reference is generated it will go to HELP.XRF. If Modules and X-Reference is turned on, then the global cross-reference will be HELP.GBL if HELP.PRG is the top module. OUTPUT PRINT-STYLE -- 'O' key turns on, 'S' 'P', or 'F' turns off Hit the 'O' key to send output to disk but in printing format. This is necessary if you want to print the documentation later from the file, as all formfeeds, page headings, and margins will be left intact. When you select output to disk print-style, dSCAR will request a filename to send the output to. If you enter a specific filename then all output will go to a single file--this includes source code, local cross-references, and the global cross-reference. If '*.*' is entered as the output file, then each module and cross- reference will go to a separate file, just like output to file operates. For example, HELP.PRG will make two files: HELP.FLO and HELP.XRF. The difference between these files and those generated by output to file is that these will have printer codes inserted. NON-STOP SCROLL -- 'N' key toggles on/off Non-stop Scroll will restrict dSCAR from pausing after a full page is displayed when output is to the screen. You can still press the key at any time to pause the output. ANALYZE ANOTHER -- 'A' key prompts for a new file to process To get another file to process, hit the 'A' key. This will ask for a new file to process. Hitting will abort the entry and return to the original file being processed. Page 19 INSTALL TEMPORARY -- 'I' key selects You can change many dSCAR options on-the-fly by Installing Temporary. Changes made here are for one session only. Once dSCAR is terminated all temporary installation settings are lost. If you wish to make a permanent change, use the dSCAR configuration. When you hit the 'I' key to Install Temporary, you are thrown into the installation window. Using the up and down arrow keys go to the option you wish to change and enter the new value. Pressing will save the temporary settings and return to the selection window. For a detailed discussion of each setting, see the configuration instructions under the chapter heading "CONFIGURING dSCAR" (page 28). SAVE DEFAULTS -- '!' prompts for file and saves defaults When dSCAR is initiated, the menu options have default settings. For example, Diagramming and Comment Condition are turned on and output is to the screen. You may find that you are continually using dSCAR with different settings, such as Modules and Line Numbering turned on, Diagramming off, and output to file. You can make these settings the default with the Save Defaults command. To save your defaults, toggle all menu options to the desired state. When all the options are how you want them to permanently be, type '!'. dSCAR will then prompt for the filename of dSCAR. This is usually DSCAR.EXE, but if you renamed dSCAR then you must enter the new name. The new menu defaults will be saved so that they are the defaults the next time dSCAR is loaded. Note that Save Defaults does NOT save the Temporary Installation settings. QUIT -- 'Q' or key To exit dSCAR, press 'Q' or hit . BEGIN PROCESSING -- begins processing Hit to start processing the selected module with the desired options. If output is to the printer and the printer is not ready or turned on, dSCAR will not begin processing. Page 20 BATCH MODE 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 dSCAR can be operated completely from the command line, bypassing the menu screen. Thus, you can write a batch file for dSCAR to have it process several systems at one time while you are away from the computer. The command line format for batch is: DSCAR {BCDEFLMOPSWXY}{=/} {-begin line/}{+end line/}{(outfile)} is the name of the dBASE file to process. Everything between the curly braces ({}) are optional, except that there must be at least one parameter after to send dSCAR into batch mode. Spaces should not separate the parameters after . To invoke dSCAR in batch mode with the default settings, use this format: DSCAR B The above command line tells dSCAR to process in batch mode ('B' indicates batch). When in batch mode dSCAR will not pause after displaying a page, nor will it return to the menu screen, but instead exit back to DOS. You can also set processing options from the command line. Do this by including on the command line the selection key for the menu option you wish to toggle from its default state. For example, if you wish to toggle Diagramming off (on is the default) and send output to a file instead of the screen, use this command line: DSCAR DF Notice that the 'B' is not needed. 'B' is only needed if you are not toggling any options but wish to use the defaults. However, including the 'B' parameter at other times will not hurt. There are two things you must remember when operating in batch mode: the selection keys for the menu options and the default menu settings. For example, the 'D' key turns Diagramming off and on, and Diagramming on is the default. Several options are not supported from batch mode, for obvious reasons. These include Non-stop Scroll, Analyze Another, Install Temporary, and Save Defaults. Specifying a procedure/function or beginning and ending line numbers to process requires a special format. For a procedure or function, include the name of the procedure/function between an equal sign (=) Page 21 and a slash (/). For example, the following command will process the procedure HELP with diagramming turned off: DSCAR D=HELP/ To specify the low range of line numbers to process, include the beginning line number between a minus sign (-) and a slash (/). This command line will process beginning at line 113: DSCAR -113/ The high range line number is included between a plus sign (+) and a slash (/), like this: DSCAR +200/ Suppose you wanted to process from line 110 to line 150. To do this you would enter: DSCAR +150/-110/ Notice that the order of the parameters makes no difference. You can also specify an output file on the command line. Do this by including the output filename between parenthesis. For example, to send output print-style (option 'O') to the file PRINT.XYZ, use this command line: DSCAR O(PRINT.XYZ) You will have to experiment with the batch mode in order to get the hang of it. Here are a few more examples, as examples illustrate best in this case: DSCAR DMXL (Diagramming off, Modules on, X-ref on, Numbering on) DSCAR D+100/L (Diagramming off, end at line 100, Numbering on) DSCAR E=WRITE/ (Errors Only on, procedure WRITE) Page 22 MODULES PROCESSING QUEUE 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 Even with Modules turned on dSCAR will not always process every module in your system. The usual reason for this is macros. For example, you may have some code which looks like this: 旼MODULES & MACROS컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 IF Option = 1 Do_file = 'MENU_1' ELSE Do_file = 'MENU_2' ENDIF DO &Do_file 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 dSCAR has no way of knowing that 'Do_file' is not the name of a file and that MENU_1 and MENU_2 are files. To process these modules as part of a system you can add them to a MODULES file. When dSCAR is executed with Modules turned on, it looks for the existence of MODULES and reads the filenames contained in it into the processing queue. MODULES is a straight ascii file. The filenames in it are separated by a carriage return/linefeed pair. Thus, for the above example, MODULES would looks like this: 旼SAMPLES MODULES FILE컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 MENU_1.PRG MENU_2.PRG 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 The filenames need not be in any particular order. Be sure to delete the MODULES file when you are done with it or the modules contained in it may be processed for systems they are not needed for. Page 23 CODING ERRORS dSCAR REPORTS 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 The following is a list and explanation of the structural errors commonly found in source code which dSCAR reports. Open IF from line #### -- if there is an IF statement without a matching ENDIF dSCAR attempts to track down which IF statement was left open. Open WHILE from line #### -- DO WHILE has no terminating ENDDO Open CASE from line #### -- DO CASE has no terminating ENDCASE Open TEXT from line #### -- TEXT has no terminating ENDTEXT Open FOR from line #### -- FOR has no terminating NEXT Open SCAN from line #### -- SCAN has no terminating ENDSCAN Open PRINT from line #### -- PRINT has no terminating END PRINTJOB ENDIF without IF or ELSE -- an ENDIF has no matching IF or ELSE statement ELSE without IF -- an ELSE statement was found with no matching IF statement ENDDO without DO WHILE -- ENDDO has no matching DO WHILE ENDCASE without DO CASE -- ENDCASE has no matching DO CASE ENDSCAN without SCAN -- ENDSCAN has no matching SCAN END PRINT without PRINT -- END PRINTJOB has no matching PRINT NEXT without FOR -- NEXT has no matching FOR ENDCASE without DO CASE -- ENDCASE has no matching DO CASE Unexpected ENDTEXT -- ENDTEXT has no matching TEXT Missing DO CASE statement -- a CASE or OTHERWISE statement is missing the DO CASE Empty DO CASE -- DO CASE is immediately followed by ENDCASE with no CASE DO CASE not followed by CASE -- a CASE should immediately follow a DO CASE Follows LOOP never executed -- the only valid code to immediately follow a LOOP is ELSE, ENDIF, CASE, OTHERWISE, or ENDCASE Follows EXIT never executed -- the only valid code to immediately follow an EXIT is ELSE, ENDIF, CASE, OTHERWISE, or ENDCASE After RETURN never executed -- code after a RETURN is ignored unless the code is a procedure, an ELSE, ENDIF, CASE, OTHERWISE, or ENDCASE Warning:At most 1 iteration -- a SCAN and DO WHILE will only iterate once if a LOOP, EXIT, or RETURN is nested one level beneath the SCAN or DO WHILE Redundant LOOP statement -- a LOOP nested one level beneath a DO WHILE will cause the DO WHILE to be executed over and over again. Make sure a LOOP is embedded in a conditional structure such as IF...ENDIF. Not within a DO WHILE -- an EXIT must be within a DO WHILE or LOOP structure, and a LOOP must be within a DO WHILE structure SET PROC not followed by TO SET FORM not followed by TO Page 24 ADDING RESERVED WORDS 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 Most dBASE compilers and dBASE-compatible interpreters have additional commands and reserved words not supported by dBASE itself. dSCAR has internal built-in support for dBASE. However, if you are using a compiler such as Clipper or interpreter such as FoxBase, dSCAR supports their language extensions through external files. The file RESERVED (no extension) contains extra reserved words. The words contained in this file will not be added to any cross- references. RESERVED contains reserved words which are found within a line. Examples include ALL, TO, WHILE, and STATUS. You do not need to add commands (those words which appear first on a line), as dSCAR will always recognize a command when it sees one. Therefore, command words should not be added to the RESERVED list. Examples of commands include DO, SET, CREATE, and RETURN. Included in the distribution of dSCAR are two batch files: USE_FOX.BAT and USE_CLIP.BAT. If you are using FoxBase then run the batch file USE_FOX. This will create the necessary RESERVED file for use with FoxBase. Executing the USE_CLIP batch file will do the same for Clipper. You can modify or create your own RESERVED file using a text editor. The file is straight ascii. Each word is on a single line separated by a carriage return/linefeed pair. The words do not have to be in any particular order. RESERVED must reside in the current directory. If you use both Clipper and FoxBase or any other dBASE-compatible product, you can put different RESERVED lists in different directories. Thus, when you are processing Clipper code, dSCAR will use the appropriate reserved words if you are in the Clipper directory. dSCAR will use the FoxBase set of words when in the FoxBase directory. dSCAR automatically detects if the RESERVED file is present and turns Your Reserved on as needed. Page 25 dSCAR's reserved word list includes all of those found in dBASE IV. If you are unsure whether or not dSCAR supports a reserved word which is found in your dBASE compiler or interpreter, check the following list of dSCAR's internal reserved words: & FIELDS NOAPPEND SAVE ADDITIVE FILE NOEJECT SAY ALIAS FILL NOFOLLOW SCREEN ALL FILTER NOMENU SDF ALTERNATE FOR NOT SECONDARY AND FORM NOUPDATE SELECTION APPLICATION FORMAT OFF STATUS ARRAY FREEZE ON STRUCTURE ASCENDING FROM OR SUMMARY BEFORE FUNCTION OTHERWISE T BLANK GET PAD TAG BOTTOM GETS PAGE TO CASE HEADING PFS TOP CLEAR HISTORY PICTURE TRANSACTION COLOR INDEXES PLAIN TYPE DATABASES INTO POPUPS TYPEAHEAD DECIMALS KEY PRIMARY UNIQUE DEFAULT LABEL PRINT USERS DELIMITED LIKE PROCEDURE USING DELIMITER LOCK QUERY VIEW DESCENDING MACROS RANDOM WAIT DO MARGIN RANGE WHILE DOUBLE MASTER READERROR WIDTH ERROR MEMO RECORD WINDOWS ESCAPE MEMORY RELATION WITH EXCEPT MENUS REPORT EXTENDED MODULE REST ENVIRONMENT NEXT SAMPLE Page 26 OTHER FEATURES & TIPS 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 Table of Contents dSCAR will create a table of contents for your completed documentation if Modules is toggled on and output is to the printer or print-style to disk. The table of contents tells on which page numbers modules and cross- references are found. Can dSCAR indent my source code properly and still retain a runnable file (without diagramming and line numbers and such)? The answer is yes. To do this for a single file, turn all options off and select file output. dSCAR will generate a file with no diagramming but still indent your code. Error messages are written as comments, thereby not interfering with any interpreter your code is being run through. To do this for a whole system do the same thing but toggle Modules on. Setting Margins on Printer There is a fairly easy way to have dSCAR leave top and bottom margins on your printouts. For a top margin, include in your macro heading several blank lines. For a bottom margin, set your page length to less than it actually is. For example, if your page length is 66 lines, set it to 60--dSCAR will go to the next page at line 60 and leave a bottom margin of six lines. Page 27 CONFIGURING dSCAR 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 The configuration part of dSCAR is built into the main program. There are no separate configuration files, as the main DSCAR.EXE file will be modified to use your new settings as defaults. The following areas can be modified through configuration: MISCELLANEOUS -- This includes defaults for indentation, file extensions, screen width, printer width and length, printer port, and output headings, to name a few. COLOR -- The different color settings of dSCAR may be modified to suit your monitor and preference. The default settings are set so as to run on a variety of monitors. If you have a color monitor you may opt to use more variety of colors to make the menu and processing screens more appealing. PRINTER SETUP AND RESET -- Define command codes to send to your printer to put it in different modes before and after printing. To run the configuration program, log into the same directory containing DSCAR.EXE and at the DOS prompt type: DSCAR C The 'C' parameter tells dSCAR to run the configuration. Because dSCAR is self-modifying, it needs to know the name and directory under which to find itself. dSCAR will first ask for the .EXE file to modify, including path name. This defaults to DSCAR.EXE in the current directory. However, if dSCAR is not in the current directory or was re-named, you need to answer the question: Name of file to modify (include path): If the file specified is not found in the current directory or directory specified, then dSCAR will tell you so and let you enter it again. If you wish to abort the configuration process at this point, hit . If the file to modify is found, then a configuration menu is presented with these five options: 1 - Configure Miscellaneous settings 2 - Install colors 3 - Change printer set-up sequence 4 - Change printer reset sequence 5 - Quit & Save 0 - Quit with No Save At this point select the configuration option you wish to modify. The different configurable features of each section are outlined below. The cursor keys are functional while changing configuration options. Page 28 MISCELLANEOUS SETTINGS Upper, Lower, Proper, Significant, or No change reserved words If Word Fix-Up is selected, dSCAR can change the case of reserved words. Select here the case you wish reserved words to have. Below are samples of each type of case: UPPER: All reserved words are capitalized. ie DO WHILE, ENDDO, SET TALK, RESTORE LOWER: Reserved words are put in lower case ie do while, enddo, set talk, restore PROPER: The first letter of each word is capitalized ie Do While, Enddo, Set Talk, Restore SIGNIFICANT: Only the first four letters are capitalized ie DO WHILe, ENDDo, SET TALK, RESTore NO CHANGE: Leave reserved words as they are found in the code Upper, Lower, Proper, Significant, or No change variables This is the same as above, but specifies what action to take on variables. Thus, you may want to capitalize reserved words and lowercase variables to make your code more readable. Number of spaces to use for indentation This is the indentation increment dSCAR uses when formatting your code to look "pretty." Shown below are two pieces of the same code, the first with an indentation of three and the second with an indentation of five: 旼INDENT OF THREE컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 do while count < 100 if count = 50 then ? 'Halfway there!' endif x = x + 1 enddo 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼INDENT OF FIVE컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 do while count < 100 if count = 50 then ? 'Halfway there!' endif x = x + 1 enddo 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 Page 29 Graphic or Text flow screen diagrams Valid options here are 'G' and 'T'. Graphic diagrams use the IBM extended character set. If your printer does not support these graphic characters then you may wish to turn graphics off. Text diagrams are better for documentation, although graphics are more appealing. Here are two examples of the different flow diagrams: 旼GRAPHIC FLOW DIAGRAMS컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 DO WHILE .T. ACCEPT 'What is your name?' TO Myname IF UPPER(Myname) <> 'JOE' ? 'Only Joe is allowed access!' 컴컴컴컴RETURN 홂LSE ? 'Hello Joe' DO CASE 힏ASE Myname = 'JOE' ? 'You typed in uppercase' 힏ASE Myname = 'joe' ? 'You typed in lowercase' 컴컴컴컴컴컴RETURN ENDCASE 픂NDIF ENDDO 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼TEXT FLOW DIAGRAMS컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 DO WHILE .T. W ACCEPT 'What is your name?' TO Myname W IF UPPER(Myname) <> 'JOE' W T ? 'Only Joe is allowed access!' <--------RETURN W ELSE W F ? 'Hello Joe' W F DO CASE W F CASE Myname = 'JOE' W F 1 ? 'You typed in uppercase' W F CASE Myname = 'joe' W F 2 ? 'You typed in lowercase' <------------RETURN W F ENDCASE W ENDIF ENDDO 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 Truncate lines longer than specified width If a processed line is longer than the specified width (ie 80 Page 30 for the screen, usually) then dSCAR can either break it up using the dBASE continuation character (semicolon), or truncate the line. It is sometimes useful to truncate lines when output is to the screen for flow diagrams, as the output is easier to read. However, for printer and file outputs lines should not be truncated. It is recommended you set this to 'N', as you can set Truncate on temporarily from the dSCAR menu. Use new line number for continuation lines If line numbering is turned on and dSCAR must break up a line, then the line numbering can take one of two formats. If this option is set to 'N' then the continuation line will have the same line number as the first line of the entire command. However, if it is set to 'Y' then each continuation line will have its own line number. Examples follow: 旼SAME LINE NUMBER FOR CONTINUATION LINES컴컴컴컴컴컴컴컴컴컴 1 SELECT a 2 RELEASE m0addrf,m0arecf,m0cashf,m0commf,m0custf,; 2 m0glacf,m0glanf,m0gllkf,m0invof,m0invtf,m0itrnf,; 2 m0passf,m0recrf,m0scomf,m0tranf,m0ycshf 3 PUBLIC m0addrf,m0arecf,m0cashf,m0commf,m0custf,m0glacf 4 USE &m0sysdr.sysdata 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼NEW LINE NUMBER FOR CONTINUATION LINES컴컴컴컴컴컴컴컴컴컴커 1 SELECT a 2 RELEASE m0addrf,m0arecf,m0cashf,m0commf,m0custf,; 3 m0glacf,m0glanf,m0gllkf,m0invof,m0invtf,m0itrnf,; 4 m0passf,m0recrf,m0scomf,m0tranf,m0ycshf 5 PUBLIC m0addrf,m0arecf,m0cashf,m0commf,m0custf,m0glacf 6 USE &m0sysdr.sysdata 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 The second method is handy if you need to reference specific line numbers of a file from within an editor, but the first method is preferred for cross-references. Are you using Clipper? If you are processing mainly Clipper files then answer 'Y' to this question. Clipper does not support comments which span more than one line using the continuation character (;). Therefore, if output is to a file and you are using Clipper, dSCAR will not use continuation characters in the code unless it has to, thereby allowing your Clipper code to be runnable after being processed by dSCAR. If you find that another compiler or dBASE-compatible interpreter has this same problem, then you can answer 'Y' to this question. Page 31 Default extension for dBASE program files dSCAR assumes program files to have an extension of .PRG. However, if you are using a different naming convention you can specify that extension here. Default extension for dSCAR program files When dSCAR sends the output of program and format files to disk, it uses the same filename as the original file, but with a different extension. This extension defaults to .FLO, but can be changed here. Default extension for dSCAR cross-references files Cross-reference outputs will have the same filename as the module being processed, but with a new extension. This extension defaults to .XRF, but can be specified differently. Default extension for dSCAR printer files If output is to a file printer-style, then dSCAR writes to a file with the same filename and new extension. This extension defaults to .PRN, but can be changed. Strip drive and path from filenames Respond with 'Y' if you want to strip drive and pathnames from files encountered in processing. If they are not stripped, dSCAR will look in the paths specified. Regardless of what this option is set to, dSCAR always recognizes and uses any path prefixed to the main file you enter at start-up. This option is especially important when the Modules option is turned on. Number of lines to display per output screen This should be defaulted to stop and wait for a keypress when one full page has been displayed. But, if you happen to want to display only ten lines before stopping, or perhaps two pages, you can change it with this option. Number of columns across output screen This determines where to break a long line at. If want to break lines at 40 characters, then specify 40. Or if you happen to have a wide display then you can increase the number of columns. The default is 80. Number of lines per page on your printer The printer length tells dSCAR how many lines are on the paper so that it can issue a formfeed at the proper time to skip over the Page 32 perforation. The default should work for paper that is the standard 11 inches long. You may have to experiment with this setting if you are using a laser printer. Column width of your printer This is the number of printable characters across each printer page. The default value of 80 should work with most printers. However, you will have to change this if you are using a wide carriage printer so that dSCAR will print all the way across the page. If you set your printer to condensed mode you may have to change this value. Left margin for printer output Specify this value in number of spaces to indent. For example, enter 5 to indent five spaces before printing each line, or 0 for no left margin. Margins are especially useful if you plan on hole-punching your reports. Number of characters per line for file output This is basically the same as the screen width, but instead indicates when to break a long line when output is to a file. Some people may want to display a screen width, but others may want to go as far as 255 characters. Default printer port dSCAR supports printer ports 1, 2, and 3. dSCAR will send printer output to the port specified. Issue a formfeed after each module If you wish each module and every cross-reference to appear on its own page when output is to printer, then have dSCAR send a form feed after each module. However, answer NO if you wish to save paper and not start each module on a separate page. Report heading for printer reports On the top of each printer page, dSCAR can optionally print a header containing such information as module name, dSCAR version, current date, page number, and more. This header is user-definable, and can contain straight text or macro commands. Macro commands will print dynamic information such as page number, module being processed, date, and dSCAR version number. Straight text can contain a copyright notice, your company name, or anything else you desire. The header is entered in a three-line format. If you run out of room for the header text and macros, hit to get to the next Page 32 line and continue entering the header. Each of the three lines is strung together and treated as one long heading line. Note that each line of entry does NOT represent one line on the printer. Macro commands are one uppercase character and are preceded by the ampersand character (&), except for the new line macro which is a single back slash (\). Macro values are printed exactly where they are found in the header line configuration. Below is a list of the macro commands available: Macro Meaning Picture --------------------------------- &P page number 9999 &D date Mon DD, year &T time 99:99am &V version 9.99 BETA &S system name &M current module &F path+module &= procedure being displayed if specific procedure selected && print the ampersand character (&) \ newline (use as many lines as you want in the heading) Remember that macro characters MUST BE IN UPPERCASE! Here are some example macro headings and how they would print: ---------------- MACRO: dSCAR v&V &D &T\SYSTEM: &S dSCAR v3.0 Dec 29, 1988 10:41pm SYSTEM: LIBRARY ---------------- MACRO: Copyright (c) 1989 by John Smith.\\&M\&F\Page &P\ Copyright (c) 1989 by John Smith. ADDBOOK.PRG \DBASE\LIBRARY\ADDBOOK.PRG Page 10 ---------------- The second example shows how to use the new line character (\). A newline can be placed anywhere, and doubling new line characters will add a blank line. By putting several new line characters at the end of a macro heading you can effectively space between the header and the body of your report. INSTALL COLORS The colors dSCAR uses for its menus and output display can be configured to your preference. When color installation is selected, Page 33 the available colors are drawn across the screen with the letters A-P denoting each color. There are nine different color objects. For each object specify a foreground and background color by selecting the letter representing the desired color. Note that only colors A-H are available for background colors! Below is a description of each color item: Source line -- this is the color for the display of your source code Line numbers -- if line numbers is turned on, the line numbers will be in this color Error Messages -- any error messages, in processing or on the menu screen, will show up as this color Diagramming -- if diagramming is turned on, the screen diagrams will be highlighted in this color Footer message -- this is the message at the bottom of the processing screen indicating the current module being processed Selected options -- selected options on the menu screen will be indicated by highlighting in this color Un-selected options -- menu options which are turned off (unselected) will be displayed in this color Window color -- this is the color for the window border on the menu screen Window titles -- the titles above menu options and title headings of the different windows will show up in this color The best way to configure the color is to select some appealing colors, run dSCAR, and then try again if the colors did not turn out how you like them. Keep in mind that the main background color within a window and on the processing screen will ALWAYS be black. PRINTER SETUP AND RESET dSCAR can automatically send setup codes to your printer when output to printer is selected. This is useful if you want your printer to go into condensed mode, be reset, or have the page length reset before any reports are printed. In addition, dSCAR can optionally send codes after it is done Page 34 printing, perhaps to reset the printer to its original settings. To enter setup codes, select option 3 from the configuration menu. Option 4 allows you to enter reset codes. Upon entering either printer setup or reset, you are prompted to enter print code #1. A print code is a single character--whether it be a control character or alphanumeric character--which will be sent to the printer. For example, the ESCape code and the letter 'A' both represent single print codes. Up to 40 print codes may be sent for the setup sequence, and an additional 40 for the reset sequence. To enter an alphanumeric print code, just hit the key on the keyboard. For example, to send the letter 'A' to the printer, hit the 'A' key. To send the '@' symbol, hit that key on the keyboard. Control codes are entered by typing the '#' key (pound sign). A '#' tells dSCAR that the next characters are ascii codes. For example, to enter ESCape as a print code, type '#' and then type in '27' (followed by the key). To enter the '#' key as a print code, type '#' and then '35', as 35 is the ascii code for the pound character. When you are all done entering print codes, press the key (remember, to have the ESCape character be a print code, you must enter the ascii code for it). Option 5 from the configuration menu will save your new settings to the executable dSCAR file and then exit configuration. If you do not want to save the changes made, then select option 0 to exit without writing the configuration. Page 35 ABOUT THE AUTHOR & THE PROGRAM 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 The first version of dSCAR was released in 1986 as user supported software. Version 1.0 was followed by 2.0 and then 2.3a. Version 3.0 is almost twice as fast as version 2.3 and has a multitude of additional features. In 1988 I was contacted by a large software publishing firm interested in buying dSCAR. I turned down their offer with the idea that dSCAR would be more successful if it continued to be marketed by me. In successful I mean: 1) I could enhance the program to my specifications and continue to update it at my convenience; and 2) financially I could do better selling dSCAR as user supported software than to take what the publisher offered me. During the 1989 summer break I did not seek a "real" job so that I could release dSCAR v3.0. I am hoping sales of dSCAR will put me through four years of college at Cal Poly in San Luis Obispo, beginning in the fall of 1989. Why was version 3.0 so slow in coming? Time was the number one culprit. In addition to going to school I run track & field (10.7sec for 100m, 21.9 for 200m, 48.50 for 400m). I hope to continue my running at Cal Poly, but will have someone else handle the dSCAR orders. dSCAR was not a one-man effort. In addition to the registrants who provided monetary support and comments before v3.0, I wish to thank the following individuals for their beta-testing, support, or suggestions: Randy Wallin, Gene Head, Todd Natkin, Bruce Bott, Kent Riesen, Rod Ledbetter, P. Olympia, Ed Albert, Jon Love, Larry Taylor, and Scott Ponder. Page 36

---

E-Mail Fredric L. Rice / The Skeptic Tank