home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-01 | 42.7 KB | 1,085 lines |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CrossBas Manual
-
- Power-BASIC Cross-Reference List Creator
-
-
-
-
-
-
-
- November 13, 1989 (1990)
- (c) Lester L. Noll
- CompuServe Id: 72250,2551
-
-
-
-
-
-
-
-
- CrossBas.exe
- version 1.00P
-
-
-
-
-
-
-
-
-
-
-
-
- ContentsContents
-
-
- 1 Disclaimer . . . . . . . . . . . . . . . . . . 1
- 2 Copyright and Usage . . . . . . . . . . . . . . 1
- 3 Introduction . . . . . . . . . . . . . . . . . 1
- 4 Running CrossBas . . . . . . . . . . . . . . . 2
- 5 Command Line Options . . . . . . . . . . . . . 2
- 6 Changing Defaults File . . . . . . . . . . . . 5
- 7 The Summary Report . . . . . . . . . . . . . . 6
- 8 What CrossBas Does . . . . . . . . . . . . . . 8
- 8.1 Initialize . . . . . . . . . . . . . . . . 8
- 8.2 InitScreen . . . . . . . . . . . . . . . . 8
- 8.3 ReadCmdLine . . . . . . . . . . . . . . . 9
- 8.4 OpenFiles . . . . . . . . . . . . . . . . 9
- 8.5 CalcFileNames . . . . . . . . . . . . . . 9
- 8.6 ReadDefaults . . . . . . . . . . . . . . . 9
- 8.7 CheckStringSpace . . . . . . . . . . . . 10
- 8.8 CalcWordArraySize . . . . . . . . . . . 10
- 8.9 PrintScreenTop . . . . . . . . . . . . . 10
- 8.10 ReadAndParseData . . . . . . . . . . . 10
- 8.11 PrintScreen1 . . . . . . . . . . . . . 10
- 8.12 Compare . . . . . . . . . . . . . . . . 11
- 8.13 PrintScreen2 . . . . . . . . . . . . . 11
- 8.14 Sort . . . . . . . . . . . . . . . . . 11
- 8.15 PrintScreen3 . . . . . . . . . . . . . 11
- 8.16 PrintList . . . . . . . . . . . . . . . 11
- 8.17 PrintReportBtm . . . . . . . . . . . . 12
- 8.18 PrintScreen4 . . . . . . . . . . . . . 12
- 8.19 End Routines . . . . . . . . . . . . . 12
-
- Appendix A CrossBas Files 13
-
- Appendix B Modification History 15
-
- Appendix C Power-BASIC Reserved Words 17
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- i
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ii
-
-
-
-
-
-
-
-
-
-
-
-
- FiguresFigures
-
-
- Figure 1: Summary Report Example . . . . . . . . . . 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- iii
-
-
- CROSSBAS.DOC CrossBas Manual page 1
-
-
-
- 1 Disclaimer 1 Disclaimer
-
-
- Hear ye, hear ye! Be it known that the author hereby
- disclaims all warranties expressed or implied as to the quality
- or performance of this program. The author will not be held
- liable for any lost profits, lost savings or any other direct,
- indirect, incidental or consequential damages resulting from the
- use of this program. Your use of this program constitutes your
- agreement to this disclaimer and your release of the author from
- any form of liability or litigation. (Really gives you
- confidence, huh?)
-
-
- 2 Copyright and Usage 2 Copyright and Usage
-
-
- This program, as well as its accompanying files and
- documents, is copyright by the author, Lester L. Noll. You are
- free to use and distribute it as you wish as long as you charge
- no payment, either money or otherwise, for it. Also, you must
- keep all the associated files together. The files are listed in
- Appendix I. Use PKUNZIP to unarchive.
-
- If you have any questions, comments or suggestions about
- this program, feel free to contact me at CompuServe:
-
- Lester L. Noll
- [72250,2551]
-
-
- 3 Introduction 3 Introduction
-
-
- CrossBas will scan a Power-BASIC source file and create a
- cross-reference table of variable names, labels, procedure and
- function names versus the physical line numbers where those names
- occur.
-
- To do this we must first read in all words in the file. We
- can skip text to the right of "REM" statements or "'" remark
- identifiers; text to the right of "DATA" statements; text between
- quote marks; numbers; and operators.
-
- After the program words are read in, we compare them with
- Power-BASIC reserved words and metastatements. We keep only
- those that are not Power-BASIC words.
-
- Finally, we alphabetize the remaining words and print them
- out, one word to a line, followed by the physical source file
- line number(s) where these words are found. The list is sorted
- without regard to case.
-
-
- CROSSBAS.DOC CrossBas Manual page 2
-
-
-
- We print the list to an ASCII file and allow the user some
- control over its format. You may either print it to your printer
- using the DOS PRINT or TYPE filename.ext>PRN commands or you may
- use a print program such as Norton's LP.
-
- At the end of the file is a summary report showing
- processing times, number of words processed and a few
- calculations that may be helpful for customizing CrossBas to your
- own programming characteristics.
-
-
- 4 Running CrossBas 4 Running CrossBas
-
-
- Run CrossBas from the DOS command line. There is no
- interactive mode. If you enter "CROSSBAS" with no command line
- parameters, CrossBas will print a short message showing proper
- syntax and the optional switches.
-
-
- 5 Command Line Options 5 Command Line Options
-
-
- The only required command line parameter is the input file
- (source file) path/name. The output file path/name and switches
- are optional. If no output file is entered, I append ".cb" to
- the input file name to create an output file name. If a file
- having the same name as output file already exists, I write over
- it -- so be warned.
-
- Command line options can be entered in any order. In fact,
- the only rule is that the input file path/name must be entered
- before the output file path/name. You may enter switches, one
- after the other, without separating spaces. If, however, you
- enter a switch before a file path/name you must leave at least
- one space between the file path/name and the preceding switch.
-
- Syntax:
-
- crossbas infile[.ext][outfile][.ext][/bw][/p][/u][/s][/l:n][/w:n]
-
-
- Switches:
- /bw Set screen colors to black and white.
- /p Paginate output file and print page headers.
- /u Print variables to output file in upper case.
- /s Print the list to the screen as well as to file.
- /l:n Set the printer left margin to n columns.
- /w:n Override CrossBas' word array dimension calculation.
-
-
- CROSSBAS.DOC CrossBas Manual page 3
-
-
-
- Input File infile [required]
-
- The input file path/name must be a valid DOS pathname. If
- no path is entered, the default path is assumed. If the input
- file path/name is not found, CrossBas prints an appropriate
- message and quits.
-
-
- Output File outfile [optional]
-
- The output file path/name must be formed using valid DOS
- pathname and filename syntax. If no path is entered, the default
- is assumed. If no output file path/name is entered or if the
- entered output file path/name is invalid, I append ".cb" to the
- input file path/name for the output file.
-
- I do not check if a file with the same name already exists.
- If one does exist, I write over it. If you have a main file with
- the extension ".bas" and an include file with the extension
- ".inc" you are responsible for providing output file names that
- do not conflict with each other. By allowing CrossBas to use its
- default output file name, both cross-reference files would have
- the same name, which means the second one would overwrite the
- first.
-
-
- Black & White /bw [optional]
-
- The black and white switch, /bw, sets the screen color to
- black and white. The default screen colors are yellow (#14)
- foreground on a blue (#1) background. The upper and lower screen
- lines (lines 1 and 25) use the same colors but with foreground
- and background colors reversed. Since only colors numbered 0
- through 7 are allowed for background colors, and since yellow is
- 14, the upper and lower screen line colors are blue foreground
- and brown (#6) background (14 minus 8).
-
-
- Paginate /p [optional]
-
- The paginate switch, /p, causes the output file to be
- written with page breaks and page headers. The header contains
- the current system date, the page number and the source file
- name. To print a paginated file, type either "TYPE filename.ext
- > PRN" or "PRINT filename.ext" from the DOS command line. Blank
- lines and form-feeds are inserted in the output file in order to
- leave two blank lines at the top of the page and three blank
- lines at the bottom of the page. The header appears on line
- three of each page, followed by one blank line. On line five is a
- column header indicating "Variable/Label/Proc" name on the left,
- and "Physical Line Number" on the right.
-
-
- CROSSBAS.DOC CrossBas Manual page 4
-
-
-
- If the paginate switch is not selected, the output file is
- printed without page breaks or headers. This method may be
- preferable if you use a print formatter like Norton Utilities'
- LP, which does its own page formatting.
-
- In either case, the summary report will be printed on the
- last page without breaks. Thus if there are not enough lines to
- print the entire report on what remains of the last page, I
- insert a form-feed and print it on a new page.
-
-
- Upper-case /u [optional]
-
- The upper-case switch, /u, causes the variable, label,
- procedure and function names to be written to the output file in
- all upper-case. If this switch is selected, two words, the same
- in name but written in different case, would only appear once in
- the output listing. If this switch is not selected, for example,
- "Label1:", LABEL1:" and "label1:" would all be listed separately.
- If you use case to clarify your labels, such as,
- "ThisIsLabelOne:", you will probably choose to not use this
- switch. Sorting is always done in upper-case order, therefore
- "AAA", "aaa" and "Aaa" would be treated equally. (Because I use
- UCASE$(word$) to sort the list, the three previous examples could
- appear in any order.)
-
-
- Screen /s [optional]
-
- The screen switch, /s, causes the sorted list to print to
- the screen at the same time it prints to the output file. After
- 22 lines print to the screen, the scroll stops with a "...Press Q
- to Quit screen list, any other key to continue" message. When
- you press a key the scroll continues for 22 more lines. If you
- press <Q> or <ESC> the screen list stops but output to output
- file continues until the list print is completed.
-
- [Note: The list prints to the output file at the same time it
- prints to the screen. Therefore, if you decide you don't want to
- see anymore and press <Ctrl><Break>, you will also abort the
- write to file.]
-
-
- Left Margin /l:n [optional]
-
- The left margin switch and parameter, /l:n, will insert a
- printer setup string at the top of the output file to set the
- left margin at "n" columns. The left margin range is 0 to 8
- columns. Since the page width is 72 columns, having a left
- margin of more than 8 would push the page off the edge of an 80
- column page. If you enter a left margin greater than 8, the
- value defaults to 8.
-
-
- CROSSBAS.DOC CrossBas Manual page 5
-
-
-
- [Note: I use the Epson escape sequence, <ESC> "l" n, where n
- equals the left margin column. If you have a different printer
- you must modify the code or not use this option.]
-
-
- Word Array Dimension Override /w:n [optional]
-
- The word dimension override switch and parameter, /w:n, will
- override CrossBas' internal word dimension calculation. You may
- need to use this if the source file is less densely commented
- than CrossBas expects. Let me explain.
-
- CrossBas uses a string array to hold all the words read in
- from the input file. I use two default parameters to calculate
- how many words to dimension the word array for. The two
- parameters are Average Word Length and Packing Factor. The word
- array will hold all of the non-comment, non-number words found in
- a source file. To calculate the word array dimension, I first
- read the source file size in bytes. Then I multiply it by the
- Packing Factor. The Packing Factor is a number, less than 1,
- that represents the ratio of non-comment, non-number word bytes
- versus the total bytes in the file. Then I divide the result by
- the Average Word Length. These two parameters are read in from
- the defaults file, CROSSBAS.DEF, when CrossBas first starts.
-
- Normally, this calculation is accurate enough. However, if
- the actual packing factor of a particular source file is
- considerably greater than the default or the actual average word
- length is considerably smaller than the default, you may need to
- use this switch.
-
- To use the /w:n switch: approximate the number of words,
- both Power-BASIC reserved words and non-reserved words: labels,
- procedure names, function names, variable names, in the source
- file. Do not include comment words, data words or numbers in the
- total. This number will become the 'n' parameter of the word
- array dimension switch.
-
-
- 6 Changing Defaults File 6 Changing Defaults File
-
-
- You can change the defaults file with any ASCII editor.
- When you run CrossBas the first time it will create CROSSBAS.DEF.
- The next time it runs it will look for that file in the default
- directory. If it finds it, CrossBas will read in two parameters:
- Average Word Length, and Packing Factor.
-
- These two parameters are both in the first line of the
- defaults file, separated by a comma. The rest of the defaults
- file contains a few lines of text explaining the default
- parameters. You may do anything you like to this file except
- modify the format of the first line. Change the values, if you
- like but be sure the first number, the Average Word Length, is a
-
-
- CROSSBAS.DOC CrossBas Manual page 6
-
-
-
- number greater than one. Likewise, the second number, the
- Packing Factor, must be a decimal number less than one. The two
- numbers must be separated by a comma.
-
- To determine the best default parameters, check the summary
- report, at the end of your CrossBas listings. It shows the
- default values used by CrossBas. It also shows the actual
- parameters that CrossBas found after reading in the words from
- the source file. After CrossBas-ing a few of your source files,
- you can get an idea of the Average Word Lengths and Packing
- Factors you use in your files.
-
-
- 7 The Summary Report 7 The Summary Report
-
-
- A summary report appears at the end of the CrossBas cross-
- reference file listing.
-
- The top two-thirds of the report is the same as what
- CrossBas prints to the screen as it processes the source file.
-
- Your command line options are listed on the top two rows.
-
- The next three lines show the read and parse procedure
- statistics. This is where CrossBas reads in source file text
- lines, parses them into words and saves all the words that are
- not comments (REM or '), data words (DATA), operators (*, AND, =,
- etc.), or numbers. The remaining words get stored in a word
- array. Line number references for each of the saved words are
- stored in a line number array. These three lines show the number
- of lines in the source file, the number of words saved to the
- word array and the start, end and elapsed processing times.
-
- The next three lines show the compare procedure statistics.
- Up to this point, the word array contains Power-BASIC reserved
- words, label names, variable names, subprogram (SUB) names and
- function (FN) names. Now CrossBas compares each word in the word
- array with Power-BASIC reserved words. If the words compare we
- do not save them. These three report lines show the number of
- words compared, the number of non-Power-BASIC words in the source
- file (if the same word appears 5 times then it is counted as 5
- words at this point) and the start, end and elapsed processing
- times.
-
- The next two lines show the sort procedure statistics.
- CrossBas sorts the remaining words in alphabetical order, without
- regard for case. These two report lines show the number of words
- sorted and the start, end and elapsed processing times.
-
- The next two lines show the printing to file statistics.
- CrossBas prints the sorted words to the output file in the manner
- specified by the command line options. These two lines show the
- number of unique words (if the same word appears 5 times it is
-
-
- CROSSBAS.DOC CrossBas Manual page 7
-
-
-
- counted as only one unique word) printed to the output file and
- the start, end and elapsed processing times.
-
- The next line shows the total CrossBas processing times:
- start, end and elapsed, from the start of the read and parse
- procedure to the end of the print to file procedure.
-
- Next we have an analysis of the source file. Use this to
- help you customize your CROSSBAS.DEF file.
-
- The total number of bytes used by the word array is taken at
- the time when it contained both non-reserved words (labels,
- procedures, functions, variables) and Power-BASIC reserved words.
- I use this figure (actually a projection of this figure using the
- input file length and the default Packing Factor) to determine if
- there will be enough string space to process the source file.
-
- The default word array dimension is the number used to
- dimension the word array. This is a calculated value unless you
- included a command line override (/w:n). The command line
- override is shown at the top of the report. If no override
- option was included, the screen report will show "No o/r."
-
- The actual word array dimension is the actual number of
- words found in the source file.
-
- The default Average Word Length is the number read in from
- the CROSSBAS.DEF file. I use this, along with the default
- Packing Factor, to calculate the default word array dimension.
-
- The actual average word length is the actual average word
- length of the non-reserved words in the source file. I guess
- that explains itself.
-
- The default Packing Factor is the number read in from the
- CROSSBAS.DEF file (a number less than one). I use this, along
- with the Average Word Length, to calculate the word array
- dimension. I use this also to determine if there is enough
- string space to process the source file.
-
- Finally, we list the source and output file names and sizes.
-
-
- CROSSBAS.DOC CrossBas Manual page 8
-
-
-
- -+-+-+- Summary Report -+-+-+-
-
- Options: Upper-case: No Screen: No Paginate: Yes
- Left Margin: 6 ArrayDim: No o/r
-
- Read: 448 lines from source file CROSSBAS.INC
- Found: 919 non-comment words.
- Times: Start: 15:06:59 End: 15:07:16 Elapsed: 00:00:17
-
- Compared: 919 non-comment words from source file CROSSBAS.INC
- Found: 432 non-reserved words (variables, labels, procedures)
- Times: Start: 15:07:17 End: 15:07:27 Elapsed: 00:00:10
-
- Sorted: 432 non-reserved words (variables, labels, procedures)
- Times: Start: 15:07:28 End: 15:08:01 Elapsed: 00:00:33
-
- Printed: 93 unique, non-reserved words to CROSSBAS.CBI
- Times: Start: 15:08:02 End: 15:08:04 Elapsed: 00:00:02
-
- Totals: Start: 15:06:59 End: 15:08:04 Elapsed: 00:01:05
-
- Word Array Size: 4,852 bytes
- Default Word Array Dim.: 1,124 wds Actual Word Array Dim.: 919 wds
- Default Avg.Word Length: 6 byt Actual Avg.Word Length: 5 byt
- Default Packing Factor: 45.00 % Actual Packing Factor: 32.35 %
-
- Source, CROSSBAS.INC, File size: 14,998 bytes
- Cross-Ref, CROSSBAS.CBI, File size: 6,984 bytes
-
-
- Figure 1: Summary Report Example Figure 1
-
-
-
- 8 What CrossBas Does 8 What CrossBas Does
-
-
- CrossBas' main program flow consists of a series of GOSUB-
- type subroutines. The following is a description of each one in
- the order in which they occur.
-
- 8.1 Initialize 8.1 Initialize
-
- Initialize the screen type and color variables. Most of my
- numbers will be integers so I define all number variables as
- integers. Set up an error trap.
-
- 8.2 InitScreen 8.2 InitScreen
-
- Print initializing message to the screen.
-
-
- CROSSBAS.DOC CrossBas Manual page 9
-
-
-
- 8.3 ReadCmdLine 8.3 ReadCmdLine
-
- Read in the DOS command line parameters. Set up the
- paginate, screen print and upper-case flags, and the left margin
- and word array dimension variables. Get input file path/name.
- The second parameter that is not a valid switch is assumed to be
- the output file path/name. If no input file path/name is found
- then print the appropriate message to the screen and die.
-
- 8.4 OpenFiles 8.4 OpenFiles
-
- Attempt to open the input and output files. If I fail while
- opening the input file, I check to see if it has an extension.
- If it doesn't, I append ".bas" and try again. If I fail again, I
- print the appropriate message to the screen and die.
-
- If the input I open the input file ok, I next attempt to
- open the output file. If no file path/name is given I append
- ".cb" to the end of the input file (after stripping the
- extension, if one exists). If I fail, I somewhere along the way,
- I print the appropriate message to the screen and die. If I am
- successful I close the output file until I'm ready to write to
- it.
-
- [Note: A previously existing file with the same name as the
- output file is, at this point, replaced by a file of 0 bytes.]
-
- 8.5 CalcFileNames 8.5 CalcFileNames
-
- Strip off the drive and directory specs from the input and
- output file path/names. I use these stripped names for output
- file page headers and screen and file report headers.
-
- 8.6 ReadDefaults 8.6 ReadDefaults
-
- Read in the default values for Average Word Length and
- Packing Factor from the defaults file, CROSSBAS.DEF. If this
- file does not exist, I make one.
-
- If you run CrossBas from other than its home directory, it
- will not find its defaults file and will create a new one in the
- default directory. This won't bother CrossBas but if you have
- modified the CROSSBAS.DEF and are assuming your modified default
- parameters will be used, you may be surprised. In that case, you
- had better change directory to the CrossBas directory and run the
- program from there. See the default section for more on
- modifying the defaults file.
-
-
- CROSSBAS.DOC CrossBas Manual page 10
-
-
-
- 8.7 CheckStringSpace 8.7 CheckStringSpace
-
- [Note: I removed this subroutine from the Power-BASIC version of
- CrossBas because of PB's increased string space capacity. To use
- it with Turbo-BASIC, reinstall.]
-
- Check to see that there is enough free string space for
- storing the anticipated input file words. I read the input file
- size and multiply it by the packing factor. This should give me
- the approximate number of bytes of non-comment, non-number words
- in the input file. Then I compare this "effective file size"
- with the free string space. If not enough string space, I print
- the appropriate message to the screen and die.
-
- 8.8 CalcWordArraySize 8.8 CalcWordArraySize
-
- First check to see if there is a command line Word Array
- Dimension override (/w:n). If so, use this value to dimension
- the word array.
-
- If not calculate the approximate number of words in the
- input file. Find the effective input file size by multiplying
- the input file size by the Packing Factor. Then divide the
- effective file size by the Average Word Length. Packing Factor
- and Average Word Length are values read in from the defaults file
- in the ReadDefaults section.
-
- 8.9 PrintScreenTop 8.9 PrintScreenTop
-
- Print the first few lines of the screen report. These show
- the input file name, less any drive or directory specifications;
- the condition of the three command line switch flags; and the
- option values for left margin and word array dimension override.
-
- 8.10 ReadAndParseData 8.10 ReadAndParseData
-
- Read in the input file line by line, and parse out the non-
- comment, non-number words. Save these words, along with their
- physical line numbers in separate arrays. Keep a running total
- of the bytes in the word array. Print the current input file
- line number and word to the status bar at the bottom of the
- screen after every input file line.
-
- Also, check the free string space after each line and, if it
- gets below 300 bytes (249 column limit per line, plus a few extra
- for good measure) then abort and print the appropriate message to
- the screen and die.
-
- 8.11 PrintScreen1 8.11 PrintScreen1
-
- Print the number of lines read from the input file, the
- number of non-comment, non-number words read and saved in the
- word array, and the start and end times for the operation to the
- screen.
-
-
- CROSSBAS.DOC CrossBas Manual page 11
-
-
-
- 8.12 Compare 8.12 Compare
-
- Compare the word array words with Power-BASIC reserved
- words. If the words are not Power-BASIC words, then save them
- and their associated line-number array elements. Print the
- current word number to the status bar at the bottom of the screen
- after every non-Power-BASIC word is saved.
-
- By checking the first letter of the word array word, I only
- need to compare the word array word with Power-BASIC words
- beginning with the same letter. Save the non-Power-BASIC words
- back into the same array but at a lower location.
-
- Lets say words 1,2 and 3 were Power-BASIC words. Word 4 is
- a label. Therefore I save word array element number 4 back to
- the same array but as element 1. I also save the associated
- line-number array element, in this case, 4 to 1.
-
- When I have compared all the words in the array, I blank out
- the remaining, non-used elements in the word array to free up
- string space.
-
- 8.13 PrintScreen2 8.13 PrintScreen2
-
- Print the number of non-reserved words saved back to the
- word array and the start and end times for the operation to the
- screen.
-
- 8.14 Sort 8.14 Sort
-
- Sort the remaining non-Power-BASIC words into alphabetical
- order. I use a modified bubble sort and compare upper-case
- values of the words. Print the current pass to the status bar at
- the bottom of the screen.
-
- If there are J words in the word array then I make J-1
- passes through the array, comparing a word with the word after
- it. If the words are in order, I check the next two words. If
- the words are out of order I swap them and their associated
- line-number array elements. If I make an entire pass without
- making any swaps, then the sorting is complete.
-
- 8.15 PrintScreen3 8.15 PrintScreen3
-
- Print the number of non-reserved words sorted and the start
- and end times for the operation to the screen.
-
- 8.16 PrintList 8.16 PrintList
-
- Print the word list to the output file. The words are
- listed in the left column. The associated line numbers are
- listed in the right eight columns. Print the current page and
- word number to the status bar at the bottom of the screen.
-
-
- CROSSBAS.DOC CrossBas Manual page 12
-
-
-
- o If a left margin (/l:n) is selected, print the printer setup
- string at the top of the file.
- o If the upper-case switch (/u) is selected, convert the words
- at print time.
- o If the screen print switch (/s) is selected, print the words
- and line-numbers to the screen as they print to file.
- o If the paginate switch (/p) is selected, print a page header
- at the top of each page and a form-feed at the bottom of
- each page.
-
- 8.17 PrintReportBtm 8.17 PrintReportBtm
-
- Print the summary report on the last page of the report. If
- the paginate switch (/s) is selected then if there is not enough
- room on the last page for the entire report, send out a form-feed
- and put it on a new page. If the paginate switch is not selected
- then send out a form-feed to start a new page.
-
- The report contains read, compare, sort and print
- information, similar to that displayed on the screen.
- Additionally I print total procedure times; source and output
- file sizes; word array words and bytes, both default and actual;
- and Packing Factors and Average Word Lengths, default and actual.
-
- 8.18 PrintScreen4 8.18 PrintScreen4
-
- Print the number of unique words printed to the output file
- and the start and end times for the operation to the screen.
- Erase the status bar and print a "CrossBas finished" message.
-
- 8.19 End Routines 8.19 End Routines
-
- Finally, I close all open files, flush the keyboard buffer
- and wait for the user to acknowledge he has read the report
- screen by pressing a key. I included this step because some
- versions of DOS erase the screen when they reload COMMAND.COM.
-
-
- CROSSBAS.DOC CrossBas Manual page 13
-
-
-
-
-
-
-
-
-
- Appendix AAppendix A
-
- CrossBas FilesCrossBas Files
-
-
- CrossBas uses the following files:
-
- CRSBAS.ZIP CrossBas archive file that contains the
- CrossBas files.
- CROSSBAS.EXE CrossBas executable file.
- CROSSBAS.DEF CrossBas defaults file. (CrossBas creates
- this file the first time it runs.)
- CROSSBAS.BAS CrossBas main source file.
- CROSSBAS.INC CrossBas subprograms file.
- CROSSBAS.DOC CrossBas document file (this file).
-
-
- CROSSBAS.DOC CrossBas Manual page 14
-
-
- CROSSBAS.DOC CrossBas Manual page 15
-
-
-
-
-
-
-
-
-
- Appendix BAppendix B
-
- Modification HistoryModification History
-
-
- version 1.00P 12/ 1/90
-
- Uploaded CrossBas version 1.00P to CompuServe PCVENB, Spectra
- forum.
-
- version 1.000 11/13/89
-
- Uploaded CrossBas version. 1.00 to CompuServe BPROGA forum,
- LIB 9.
-
- KEYWORDS: CROSS-REFERENCE, TABLE, LIST, NON-RESERVED WORDS,
- BASIC, CREF, XREF
-
- Description: CrossBas will read in a Power-BASIC source file
- and create an alphabetized cross-reference listing
- of non-reserved words, i.e., variable, subprogram,
- function and label names, along with the physical
- line number(s) where they appear. The list is
- printed to file. Handy for cleaning up unused
- variable names, labels, etc.
-
-
- CROSSBAS.DOC CrossBas Manual page 16
-
-
- CROSSBAS.DOC CrossBas Manual page 17
-
-
-
-
-
-
-
-
-
- Appendix CAppendix C
-
- Power-BASIC Reserved WordsPower-BASIC Reserved Words
-
-
- $COM BLOAD DEF FILEATTR()
- $COM1 BSAVE DEFBCD FILES
- $COM2 DEFDBL FIX()
- $COMPILE CALL DEFEXT FIXDIGITS
- $CPU CASE DEFFIX FLEXCHR$
- $DEBUG CBCD() DEFFLX FN
- $DYNAMIC CDBL() DEFINT FOR
- $ELSE CEIL() DEFLNG FRE()
- $ENDIF CTEXT() DEFQUD FREEFILE
- $ERROR CFIX() DEFSNG FROM
- $EVENT CHAIN DEFSTR FUNCTION
- $FLOAT CHDIR DELAY
- $IF CHR$() DELETE GET
- $INCLUDE CINT() DESCEND GET()
- $INLINE CIRCLE() DIM GET$
- $LIB CLEAR DO GOSUB
- $LINK CLNG() DRAW GOTO
- $LIST CLOSE DYNAMIC
- $OPTION CLS HEX$()
- $SEGMENT COLLATE ELSE
- $SOUND COLOR ELSEIF IF
- $STACK COM() END IMP
- $STATIC COMMAND$ ENDMEM IN
- $STRING COMMON ENVIRON INCR
- COS() ENVIRON$() INKEY$
- ABS() CQUD() EOF() INP()
- ABSOLUTE CSNG() EQV INPUT
- AND CSRLIN ERADR INPUT #
- ANY CVB() ERASE INPUT$()
- APPEND CVD() ERDEV INSERT
- ARRAY CVE() ERDEV$ INSTAT
- AS CVF() ERL INSTR()
- ASC() CVI() ERR INT()
- ASCEND CVL() ERROR INTERRUPT
- ASCII() CVMD() EXECUTE IOCTL
- DATA CVMS() EXIT IOCTL$
- AT CVQ() EXP()
- ATN() CVS() EXP10() KEY
- EXP2() KEY()
- BASE DATA EXTERNAL KILL
- BEEP DATE$ EXTRACT$()
- BIN$() DECLARE LBOUND()
- BINARY DECR FIELD LCASE$()
-
-
- CROSSBAS.DOC CrossBas Manual page 18
-
-
-
- LEFT$() OCT$() RESET TALLY()
- LEN() OFF RESTORE TAN()
- LET ON RESUME THEN
- LINE OPEN RETURN TIME$
- LINE() OPTION RIGHT$() TIMER
- LIST OR RMDIR TIMER()
- LOC() OUT RND TO
- LOCAL OUTPUT RND() TROFF
- LOCATE ROUND() TRON
- LOF() PAINT() RSET
- LOG() PALETTE RTRIM$() UBOUND()
- LOG10() PEEK() RUN UCASE
- LOG2() PEEK$() UCASE$()
- LOOP PEEKI() SAVE UNTIL
- LPOS() PEEKL() SCAN USING
- LPRINT PEN SCREEN USING$()
- LPRINT # PEN() SCREEN() USR
- LSET PLAY SEEK USR0
- LTRIM$() PLAY() SEG USR1
- PMAP() SELECT USR2
- MAP POINT() SERVICE USR3
- MAX() POKE SGN() USR4
- MAX$() POKE$ SHARED USR5
- MAX%() POKEI SHELL USR6
- MEMSET POKEL SIN() USR7
- MID$() POS SORT USR8
- MIN() POS() SOUND USR9
- MIN$() PRESET SPACE$()
- MIN%() PRINT SPC() VAL()
- MKDIR PRINT # SQR() VARPTR()
- MKB$() PSET() STATIC VARPTR$()
- MKD$() PUBLIC STEP VARSEG()
- MKE$() PUT STICK() VERIFY()
- MKF$() PUT() STOP VIEW
- MKI$() PUT$ STR$() VIEW()
- MKL$() STRIG
- MKMD$() RANDOM STRIG() WAIT
- MKMS$() RANDOMIZE STRING$() WEND
- MKQ$() READ STRPTR() WHILE
- MKS$() REDIM STRSEG() WIDTH
- MOD REG SUB WINDOW
- MTIMER REG() SWAP WINDOW()
- REM SYSTEM WITH
- NAME REMOVE$() WRITE
- NEXT REPEAT$() TAB() WRITE #
- NOT REPLACE TAGARRAY
- XOR
-