<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://brwiki2.brulescorp.com/brwiki2/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gtisdale</id>
	<title>BR Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://brwiki2.brulescorp.com/brwiki2/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gtisdale"/>
	<link rel="alternate" type="text/html" href="https://brwiki2.brulescorp.com/brwiki2/index.php?title=Special:Contributions/Gtisdale"/>
	<updated>2026-04-17T03:48:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap&amp;diff=7175</id>
		<title>FnSnap</title>
		<link rel="alternate" type="text/html" href="https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap&amp;diff=7175"/>
		<updated>2013-10-11T00:20:36Z</updated>

		<summary type="html">&lt;p&gt;Gtisdale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:Project Leader: [[:User:Gtisdale|George Tisdale]].&lt;br /&gt;
:Language: [[Business Rules!]]&lt;br /&gt;
:License: ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find the latest copy of &#039;&#039;&#039;fnSnap.dll&#039;&#039;&#039; in fnsnap.zip available at [ftp://ftp.brulescorp.com/Brg_pub/Zip/]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:FnSnap]]&lt;br /&gt;
&lt;br /&gt;
*[[Library Functions|Library Functions]]&lt;br /&gt;
*[[fnSnap: File|File]]&lt;br /&gt;
:*File Management&lt;br /&gt;
::*FNBLDSORT - build a sort control file and execute the sort&lt;br /&gt;
::*FNFIL - create a file number that will increment by 1 each time a batch is created&lt;br /&gt;
::*FNFILENAME$*80 - Provide a file name&lt;br /&gt;
::*FNFILEOK - Check version number&lt;br /&gt;
::*FNFILESIZE - count number of records in a file&lt;br /&gt;
::*FNGETFILE$ - Return the name and path of an existing file&lt;br /&gt;
::*FNGETFILENAME$*80 - Create a file name from a seed&lt;br /&gt;
::*FNINDEX - Build an Index file and check for duplicates&lt;br /&gt;
::*FNNEXTFIL$ - returns the file name of the next sequential file in a given location&lt;br /&gt;
::*FNPUTFILE$ - Return the name and path of an file to be created, replaced or appended&lt;br /&gt;
::*FNSIZE - Set or correct a file size&lt;br /&gt;
::*FNUPDATE_VERSION - Change a file version and reconfigure layout&lt;br /&gt;
:*Data management&lt;br /&gt;
::*FNSEQ - Return the next sequence for a key field&lt;br /&gt;
::*FNTYPE - Move the contents of one text file into another open file&lt;br /&gt;
:*Form statements&lt;br /&gt;
::*FNCFORM$ - Create a Condensed Compiled Form Statement&lt;br /&gt;
::*FNCF$ - Process a field specification string for use in FNCFORM$&lt;br /&gt;
*[[fnSnap: Screen Processing|Screen Processing]]&lt;br /&gt;
:*Buttons, messages and dialogs&lt;br /&gt;
::*FNBUTTON - Add button on the button bar&lt;br /&gt;
::*FNCHECK - in connection with a radio dot or check box returns a 1 if checked&lt;br /&gt;
::*FNCHECK$ - places or strips ^ from an element&lt;br /&gt;
::*FNCLRBUTTON - removes a button from the button bar&lt;br /&gt;
::*FNDIALOG$*40 - Display dialog box and return selected text&lt;br /&gt;
::*FNDLG - Display a dialog box from data in a file&lt;br /&gt;
::*FNHELP - open a tip box associated with a screen using a text file&lt;br /&gt;
::*FNHELPTIP - uses David Blankenship utility to display a help record&lt;br /&gt;
::*FNOK - Pop-up &amp;quot;OK&amp;quot; question&lt;br /&gt;
::* FNOPTIONS - creates a radio dot selection pop up&lt;br /&gt;
::* FNOPTIONS$ - creates a check box selection pop up&lt;br /&gt;
::* FNPFKEYLINE - Creates a hot field string of function key options&lt;br /&gt;
::* FNPFKEY - Prints a function key message&lt;br /&gt;
::* FNRADIOCHK$ - display a radio/checkbox with a set of options&lt;br /&gt;
::* FNRADNUM - Return the option selected in a radio dot list&lt;br /&gt;
::* FNTIMEOUT - Display timeout message&lt;br /&gt;
::* FNWINBUTTONS - print one or more buttons on a screen in a designated window&lt;br /&gt;
:*String Manipulation&lt;br /&gt;
::*FNDECRYPT$ - Decrypt FNENCRYPT$&lt;br /&gt;
::*FNENCRYPT$ - Simple encryption&lt;br /&gt;
::*FNFKEY - Converts an FKEY value greater than 1000&lt;br /&gt;
::*FNNUM$ - Convert number to string&lt;br /&gt;
::*FNPHONE$ - Convert number to (###) ###-####&lt;br /&gt;
::*FNPROPER$*60 - Convert to Proper Case&lt;br /&gt;
:*Other&lt;br /&gt;
::*FNAUTO - 1 if last field exit was automatic&lt;br /&gt;
::*FNCLKBUF - Clear keyboard buffer&lt;br /&gt;
::*FNERRTRAP - Trapped Error Processing&lt;br /&gt;
::*FNINIT - Initialize variables in FNSNAP Library&lt;br /&gt;
::*FNPRINTSCREEN - stuff the keyboard to generate a print screen&lt;br /&gt;
::*FNZERO - set to number if zero&lt;br /&gt;
:*Screen input and display&lt;br /&gt;
::*FNWAITWIN - displays a window with a message, optionally with buttons&lt;br /&gt;
::*FNWAITBAR - displays a progress bar in a window opened using FNWAITWIN&lt;br /&gt;
::*FNWAITMSG - displays a new message in a window opened by FNWAITWIN&lt;br /&gt;
::*FNMOD - returns the column number of a cell in a grid&lt;br /&gt;
::*FNPARSERES - returns screen resolution and BR window size for a session&lt;br /&gt;
::*FNPROGRESS - Progress bar&lt;br /&gt;
::*FNSCREEN - 24 x 80 screen display for screen painter&lt;br /&gt;
::*FNTEXTBOX - creates a text box with word wrap&lt;br /&gt;
::*FNWINSCRN - paints a screen in a window&lt;br /&gt;
::*FNWINROWCOL - in GUI mode returns rows and columns of a window&lt;br /&gt;
::*FNWINSIZE - in GUI mode creates arrays holding all window sizes&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Window Maintenance|Window Maintenance]]&lt;br /&gt;
:*List and Grid&lt;br /&gt;
::*FNLISTSPEC$*50 - Create a window for a list/grid box&lt;br /&gt;
:*Child windows&lt;br /&gt;
::*FNWINHEAD - Print the top bar to a window&lt;br /&gt;
::*FNWINDEV - Query FNSNAP for last window opened&lt;br /&gt;
*[[fnSnap: Printing and PCL|Printing and PCL]]&lt;br /&gt;
:*Font Management&lt;br /&gt;
::*FNFONT$*30 - Create a PCL font string&lt;br /&gt;
::*FNLOADFONT$*50 - Loads a PCL font to printer&lt;br /&gt;
:*Reprinting Reports&lt;br /&gt;
::*FNCLEANLOG - part of FNREPRINT used to remove out of date reports&lt;br /&gt;
::*FNOPEN - create a log file for saved reports&lt;br /&gt;
::*FNMENUACCESS - used in connection with FNREPRINT to determine user permission to reprint a report&lt;br /&gt;
::*FNPRINT - prints a saved report opened using FNOPEN&lt;br /&gt;
::*FNREPRINT - displays a list of available saved reports and prints selected report&lt;br /&gt;
:*PCL and NWP formatting&lt;br /&gt;
::*Bar Codes and addresses&lt;br /&gt;
:::*FNPOSTNET - prints a postal bar code from a zip code&lt;br /&gt;
:::*FNCODE3OF9&lt;br /&gt;
:::*FNCODEUPC&lt;br /&gt;
&lt;br /&gt;
::*Forms and formatting&lt;br /&gt;
::*NWP Printing&lt;br /&gt;
:::*FNPRINTNWP - positions a string and aligns it right, center or decimal on a specified position&lt;br /&gt;
:*RTF Printing&lt;br /&gt;
::*FNRTFSTART - opens a source file to produce an RTF file using RTFLIB.dll&lt;br /&gt;
::*FNRTFEND - turns a source file built with FNRTFSTART into a finished document&lt;br /&gt;
:*FNREFERENCE - Prints a page reference on bottom right corner in PCL&lt;br /&gt;
:*FNPRINT_FILE - Prints a text file on Grey bar Paper&lt;br /&gt;
:*FNPRINTERS - Creates a printed list of printers and a printers.sys file&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Date and Time|Date and Time]]&lt;br /&gt;
:*Date formatting&lt;br /&gt;
::*FNCCYYMMDD_TO_DAYS - converts CYMD to DAYS&lt;br /&gt;
::*FNDATEFWD&lt;br /&gt;
::*FNDATEREV - converts MMDDYY to YYMMDD&lt;br /&gt;
::*FNDATE$ - Creates a formatted date from DAYS input&lt;br /&gt;
::*FNDAYS_TO_MMDDCCYY - Converts DAYS to MDCY&lt;br /&gt;
::*FNDAYS_TO_MMDDYY - Converts DAYS to MMDDYY&lt;br /&gt;
::*FNMDY2YMD - converts YYMMDD to MMDDYY with century option&lt;br /&gt;
::*FNMMDDCCYY_TO_DAYS - converts MDCY to DAYS&lt;br /&gt;
::*FNMMDDYY_TO_DAYS - Converts MDY to DAYS&lt;br /&gt;
::*FNTIMMILREG - 12 hour time from 24 hour time&lt;br /&gt;
::*FNYMD2MDY - converts MMDDYY to YYMMDD with century option&lt;br /&gt;
::*FNYYMMDD_TO_DAYS - convert YMD to DAYS&lt;br /&gt;
:*Relative and special dates&lt;br /&gt;
::*FNBUSINESSDAY - returns the next business day after or including a specified date&lt;br /&gt;
::*FNDAYOFYEAR - ordinal number of days from beginning of calendar year&lt;br /&gt;
::*FNNEXTMONTH - similar date in the following month&lt;br /&gt;
::*FNPRIOR BUSINESSDAY - returns the first business day prior to a given date including the given date&lt;br /&gt;
::*FNWEEKDAY$ - Returns the day of the week&lt;br /&gt;
::*FNWEEKOFMONTH - number of time a specified day of week has occur ed in the month specified&lt;br /&gt;
::*FNWEEKOFYEAR - number of times a specified day of week has occurred in a year up to a specified date&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Array Functions|Array Functions]]&lt;br /&gt;
:*Sorting arrays&lt;br /&gt;
::*FNSORTARRAY - sort an array with header and footer&lt;br /&gt;
::*FNSRTARY - sort an array with header and footer based on itself&lt;br /&gt;
::*FNSRTNARY -Sort a numeric array based on another array&lt;br /&gt;
:*Array arithmetic&lt;br /&gt;
::*FNCOLSUM - sums the elements of an array for a specified column&lt;br /&gt;
::*FNROWSUM - sums the elements of an array for a specified row&lt;br /&gt;
:*Searching arrays&lt;br /&gt;
::*FNCHRMAT$ - convert a numeric array to character&lt;br /&gt;
::*FNLISTSRCH - searches a character array based on a search string&lt;br /&gt;
::*FNLISTSRCHN - searches a numeric array based on a search string&lt;br /&gt;
::*FNSELECTION - selection process using two arrays&lt;br /&gt;
::*FNSRCHCRIT$*50 - search criteria for a list box&lt;br /&gt;
:*Other&lt;br /&gt;
::*FNDELROW - removes a specified row from an array and redimensions the array&lt;br /&gt;
::*FNDELROW$ - removes a specified row from an array and redimensions the array&lt;br /&gt;
::*FNADDROW - inserts a cell in the middle of a numeric array at a specified row&lt;br /&gt;
::*FNADDROW - inserts a cell in the middle of a character array at a specified row&lt;br /&gt;
::*FNPARMAT - split an array into sub-arrays&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Miscellaneous Functions|Miscellaneous Functions]]&lt;br /&gt;
:*Email&lt;br /&gt;
::*FNEMAIL - creates an email file for email monitor&lt;br /&gt;
::*FNEMAILFILE - inserts a text file into an email for email monitor&lt;br /&gt;
:*Formatting&lt;br /&gt;
::*FNLEADZERO$ - obsolete replace with CNVRT$(&amp;quot;PIC(###)&amp;quot;,x)&lt;br /&gt;
::*FNCHECKAMOUNT$ - returns English words for a dollar amount&lt;br /&gt;
:*Progress&lt;br /&gt;
::*FNPROG - displays a progress bar for a process&lt;br /&gt;
::*FNPROGRESS - displays a progress bar for a process&lt;br /&gt;
:*Other&lt;br /&gt;
::*FNCLKBUF - clears the keyboard buffer of extra key strokes&lt;br /&gt;
::*FNCURDRV$ - returns the current drive and directory&lt;br /&gt;
::*FNMSEXE$ - return the installed location of a Microsoft compliant program installation&lt;br /&gt;
::*FNX$ - returns X if true BLANK if false&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: FNSNAP Obsolete functions|Obsolete functions]]&lt;br /&gt;
:*Window and screen processing&lt;br /&gt;
::*FNMGCLR - clears a message form the fnpick message line&lt;br /&gt;
::*FNSAVPART - legacy function to save a portion of the screen - obsolete in 4.17&lt;br /&gt;
::*FNRELPART - legacy function to clear a portion of the screen obsolete in 4.17&lt;br /&gt;
::*FNWIN - legacy function to open a window in numeric order&lt;br /&gt;
::*FNCLSWIN - legacy function to close a window opened by FNWIN&lt;br /&gt;
::*FNPM - legacy message box on the main window&lt;br /&gt;
:*Point and pick&lt;br /&gt;
::*FNKEYSEL - direct file look up function requires a fixed position font&lt;br /&gt;
::*FNPICK_EX - A point and shoot legacy using a single matrix requires a fixed position font&lt;br /&gt;
::*FNPICK - A point and shoot legacy using a single matrix requires a fixed position font&lt;br /&gt;
::*FNKEYSEL_EX - a legacy direct file access point and shoot requires a fixed sized font&lt;br /&gt;
::*FNPOPUP - legacy code for a pop-up choice box&lt;br /&gt;
:*Supporting functions&lt;br /&gt;
::*Data transfer between program and library&lt;br /&gt;
::*FNWINDEV - returns the number of the currentlyactive FNSNAP window using the old system&lt;br /&gt;
::*FNLEADZERO$&lt;br /&gt;
::*FNGETK$ - \fs20&lt;br /&gt;
::*FNSETALL - set all elements of an array&lt;br /&gt;
::*FNSETSEL - set all elements of an array&lt;br /&gt;
::*FNPRTPICKBAR - a function to position a colored pick bar in FNPICK&lt;br /&gt;
::*FNZLPAD$ - pads a number with zeros and converts to string&lt;br /&gt;
::*FNINIT - initializes the variable required by the original FNSNAP functions&lt;br /&gt;
::*FNNOKEY - chekc to see if CMDKEY or FKEY were pressed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FnSnap is also discussed in [[Library Facility]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FnSnap]]&lt;br /&gt;
[[Category:Utilities]]&lt;br /&gt;
[[Category:Utilities Third Party]]&lt;br /&gt;
[[Category:ftp.brulescorp.com]]&lt;/div&gt;</summary>
		<author><name>Gtisdale</name></author>
	</entry>
	<entry>
		<id>https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap&amp;diff=7174</id>
		<title>FnSnap</title>
		<link rel="alternate" type="text/html" href="https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap&amp;diff=7174"/>
		<updated>2013-10-11T00:18:30Z</updated>

		<summary type="html">&lt;p&gt;Gtisdale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:Project Leader: [[:User:Gtisdale|George Tisdale]].&lt;br /&gt;
:Language: [[Business Rules!]]&lt;br /&gt;
:License: ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find the latest copy of &#039;&#039;&#039;fnSnap.dll&#039;&#039;&#039; in fnsnap.zip available at [ftp://ftp.brulescorp.com/Brg_pub/Zip/]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:FnSnap]]&lt;br /&gt;
&lt;br /&gt;
*[[Library Functions|Library Functions]]&lt;br /&gt;
*[[fnSnap: File|File]]&lt;br /&gt;
:*File Management&lt;br /&gt;
::*FNBLDSORT - build a sort control file and execute the sort&lt;br /&gt;
::*FNFIL - create a file number that will increment by 1 each time a batch is created&lt;br /&gt;
::*FNFILENAME$*80 - Provide a file name&lt;br /&gt;
::*FNFILEOK - Check version number&lt;br /&gt;
::*FNFILESIZE - count number of records in a file&lt;br /&gt;
::*FNGETFILE$ - Return the name and path of an existing file&lt;br /&gt;
::*FNGETFILENAME$*80 - Create a file name from a seed&lt;br /&gt;
::*FNINDEX - Build an Index file and check for duplicates&lt;br /&gt;
::*FNNEXTFIL$ - returns the file name of the next sequential file in a given location&lt;br /&gt;
::*FNPUTFILE$ - Return the name and path of an file to be created, replaced or appended&lt;br /&gt;
::*FNSIZE - Set or correct a file size&lt;br /&gt;
::*FNUPDATE_VERSION - Change a file version and reconfigure layout&lt;br /&gt;
:*Data management&lt;br /&gt;
::*FNSEQ - Return the next sequence for a key field&lt;br /&gt;
::*FNTYPE - Move the contents of one text file into another open file&lt;br /&gt;
:*Form statements&lt;br /&gt;
::*FNCFORM$ - Create a Condensed Compiled Form Statement&lt;br /&gt;
::*FNCF$ - Process a field specification string for use in FNCFORM$&lt;br /&gt;
*[[fnSnap: Screen Processing|Screen Processing]]&lt;br /&gt;
:*Buttons, messages and dialogs&lt;br /&gt;
::*FNBUTTON - Add button on the button bar&lt;br /&gt;
::*FNCHECK - in connection with a radio dot or check box returns a 1 if checked&lt;br /&gt;
::*FNCHECK$ - places or strips ^ from an element&lt;br /&gt;
::*FNCLRBUTTON - removes a button from the button bar&lt;br /&gt;
::*FNDIALOG$*40 - Display dialog box and return selected text&lt;br /&gt;
::*FNDLG - Display a dialog box from data in a file&lt;br /&gt;
::*FNHELP - open a tip box associated with a screen using a text file&lt;br /&gt;
::*FNHELPTIP - uses David Blankenship utility to display a help record&lt;br /&gt;
::*FNOK - Pop-up &amp;quot;OK&amp;quot; question&lt;br /&gt;
::* FNOPTIONS - creates a radio dot selection pop up&lt;br /&gt;
::* FNOPTIONS$ - creates a check box selection pop up&lt;br /&gt;
::* FNPFKEYLINE - Creates a hot field string of function key options&lt;br /&gt;
::* FNPFKEY - Prints a function key message&lt;br /&gt;
::* FNRADIOCHK$ - display a radio/checkbox with a set of options&lt;br /&gt;
::* FNRADNUM - Return the option selected in a radio dot list&lt;br /&gt;
::* FNTIMEOUT - Display timeout message&lt;br /&gt;
::* FNWINBUTTONS - print one or more buttons on a screen in a designated window&lt;br /&gt;
:*String Manipulation&lt;br /&gt;
::*FNDECRYPT$ - Decrypt FNENCRYPT$&lt;br /&gt;
::*FNENCRYPT$ - Simple encryption&lt;br /&gt;
::*FNFKEY - Converts an FKEY value greater than 1000&lt;br /&gt;
::*FNNUM$ - Convert number to string&lt;br /&gt;
::*FNPHONE$ - Convert number to (###) ###-####&lt;br /&gt;
::*FNPROPER$*60 - Convert to Proper Case&lt;br /&gt;
:*Other&lt;br /&gt;
::*FNAUTO - 1 if last field exit was automatic&lt;br /&gt;
::*FNCLKBUF - Clear keyboard buffer&lt;br /&gt;
::*FNERRTRAP - Trapped Error Processing&lt;br /&gt;
::*FNINIT - Initialize variables in FNSNAP Library&lt;br /&gt;
::*FNPRINTSCREEN - stuff the keyboard to generate a print screen&lt;br /&gt;
::*FNZERO - set to number if zero&lt;br /&gt;
:*Screen input and display&lt;br /&gt;
::*FNWAITWIN - displays a window with a message&lt;br /&gt;
::*FNWAITBAR - displays a progress bar in a window opened using FNWAITWIN&lt;br /&gt;
::*FNWAITMSG - displays a new message in a window opened by FNWAITWIN&lt;br /&gt;
::*FNMOD - returns the column number of a cell in a grid&lt;br /&gt;
::*FNPARSERES - returns screen resolution and BR window size for a session&lt;br /&gt;
::*FNPROGRESS - Progress bar&lt;br /&gt;
::*FNSCREEN - 24 x 80 screen display for screen painter&lt;br /&gt;
::*FNTEXTBOX - creates a text box with word wrap&lt;br /&gt;
::*FNWINSCRN - paints a screen in a window&lt;br /&gt;
::*FNWINROWCOL - in GUI mode returns rows and columns of a window&lt;br /&gt;
::*FNWINSIZE - in GUI mode creates arrays holding all window sizes&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Window Maintenance|Window Maintenance]]&lt;br /&gt;
:*List and Grid&lt;br /&gt;
::*FNLISTSPEC$*50 - Create a window for a list/grid box&lt;br /&gt;
:*Child windows&lt;br /&gt;
::*FNWINHEAD - Print the top bar to a window&lt;br /&gt;
::*FNWINDEV - Query FNSNAP for last window opened&lt;br /&gt;
*[[fnSnap: Printing and PCL|Printing and PCL]]&lt;br /&gt;
:*Font Management&lt;br /&gt;
::*FNFONT$*30 - Create a PCL font string&lt;br /&gt;
::*FNLOADFONT$*50 - Loads a PCL font to printer&lt;br /&gt;
:*Reprinting Reports&lt;br /&gt;
::*FNCLEANLOG - part of FNREPRINT used to remove out of date reports&lt;br /&gt;
::*FNOPEN - create a log file for saved reports&lt;br /&gt;
::*FNMENUACCESS - used in connection with FNREPRINT to determine user permission to reprint a report&lt;br /&gt;
::*FNPRINT - prints a saved report opened using FNOPEN&lt;br /&gt;
::*FNREPRINT - displays a list of available saved reports and prints selected report&lt;br /&gt;
:*PCL and NWP formatting&lt;br /&gt;
::*Bar Codes and addresses&lt;br /&gt;
:::*FNPOSTNET - prints a postal bar code from a zip code&lt;br /&gt;
:::*FNCODE3OF9&lt;br /&gt;
:::*FNCODEUPC&lt;br /&gt;
&lt;br /&gt;
::*Forms and formatting&lt;br /&gt;
::*NWP Printing&lt;br /&gt;
:::*FNPRINTNWP - positions a string and aligns it right, center or decimal on a specified position&lt;br /&gt;
:*RTF Printing&lt;br /&gt;
::*FNRTFSTART - opens a source file to produce an RTF file using RTFLIB.dll&lt;br /&gt;
::*FNRTFEND - turns a source file built with FNRTFSTART into a finished document&lt;br /&gt;
:*FNREFERENCE - Prints a page reference on bottom right corner in PCL&lt;br /&gt;
:*FNPRINT_FILE - Prints a text file on Grey bar Paper&lt;br /&gt;
:*FNPRINTERS - Creates a printed list of printers and a printers.sys file&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Date and Time|Date and Time]]&lt;br /&gt;
:*Date formatting&lt;br /&gt;
::*FNCCYYMMDD_TO_DAYS - converts CYMD to DAYS&lt;br /&gt;
::*FNDATEFWD&lt;br /&gt;
::*FNDATEREV - converts MMDDYY to YYMMDD&lt;br /&gt;
::*FNDATE$ - Creates a formatted date from DAYS input&lt;br /&gt;
::*FNDAYS_TO_MMDDCCYY - Converts DAYS to MDCY&lt;br /&gt;
::*FNDAYS_TO_MMDDYY - Converts DAYS to MMDDYY&lt;br /&gt;
::*FNMDY2YMD - converts YYMMDD to MMDDYY with century option&lt;br /&gt;
::*FNMMDDCCYY_TO_DAYS - converts MDCY to DAYS&lt;br /&gt;
::*FNMMDDYY_TO_DAYS - Converts MDY to DAYS&lt;br /&gt;
::*FNTIMMILREG - 12 hour time from 24 hour time&lt;br /&gt;
::*FNYMD2MDY - converts MMDDYY to YYMMDD with century option&lt;br /&gt;
::*FNYYMMDD_TO_DAYS - convert YMD to DAYS&lt;br /&gt;
:*Relative and special dates&lt;br /&gt;
::*FNBUSINESSDAY - returns the next business day after or including a specified date&lt;br /&gt;
::*FNDAYOFYEAR - ordinal number of days from beginning of calendar year&lt;br /&gt;
::*FNNEXTMONTH - similar date in the following month&lt;br /&gt;
::*FNPRIOR BUSINESSDAY - returns the first business day prior to a given date including the given date&lt;br /&gt;
::*FNWEEKDAY$ - Returns the day of the week&lt;br /&gt;
::*FNWEEKOFMONTH - number of time a specified day of week has occur ed in the month specified&lt;br /&gt;
::*FNWEEKOFYEAR - number of times a specified day of week has occurred in a year up to a specified date&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Array Functions|Array Functions]]&lt;br /&gt;
:*Sorting arrays&lt;br /&gt;
::*FNSORTARRAY - sort an array with header and footer&lt;br /&gt;
::*FNSRTARY - sort an array with header and footer based on itself&lt;br /&gt;
::*FNSRTNARY -Sort a numeric array based on another array&lt;br /&gt;
:*Array arithmetic&lt;br /&gt;
::*FNCOLSUM - sums the elements of an array for a specified column&lt;br /&gt;
::*FNROWSUM - sums the elements of an array for a specified row&lt;br /&gt;
:*Searching arrays&lt;br /&gt;
::*FNCHRMAT$ - convert a numeric array to character&lt;br /&gt;
::*FNLISTSRCH - searches a character array based on a search string&lt;br /&gt;
::*FNLISTSRCHN - searches a numeric array based on a search string&lt;br /&gt;
::*FNSELECTION - selection process using two arrays&lt;br /&gt;
::*FNSRCHCRIT$*50 - search criteria for a list box&lt;br /&gt;
:*Other&lt;br /&gt;
::*FNDELROW - removes a specified row from an array and redimensions the array&lt;br /&gt;
::*FNDELROW$ - removes a specified row from an array and redimensions the array&lt;br /&gt;
::*FNADDROW - inserts a cell in the middle of a numeric array at a specified row&lt;br /&gt;
::*FNADDROW - inserts a cell in the middle of a character array at a specified row&lt;br /&gt;
::*FNPARMAT - split an array into sub-arrays&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: Miscellaneous Functions|Miscellaneous Functions]]&lt;br /&gt;
:*Email&lt;br /&gt;
::*FNEMAIL - creates an email file for email monitor&lt;br /&gt;
::*FNEMAILFILE - inserts a text file into an email for email monitor&lt;br /&gt;
:*Formatting&lt;br /&gt;
::*FNLEADZERO$ - obsolete replace with CNVRT$(&amp;quot;PIC(###)&amp;quot;,x)&lt;br /&gt;
::*FNCHECKAMOUNT$ - returns English words for a dollar amount&lt;br /&gt;
:*Progress&lt;br /&gt;
::*FNPROG - displays a progress bar for a process&lt;br /&gt;
::*FNPROGRESS - displays a progress bar for a process&lt;br /&gt;
:*Other&lt;br /&gt;
::*FNCLKBUF - clears the keyboard buffer of extra key strokes&lt;br /&gt;
::*FNCURDRV$ - returns the current drive and directory&lt;br /&gt;
::*FNMSEXE$ - return the installed location of a Microsoft compliant program installation&lt;br /&gt;
::*FNX$ - returns X if true BLANK if false&lt;br /&gt;
&lt;br /&gt;
*[[fnSnap: FNSNAP Obsolete functions|Obsolete functions]]&lt;br /&gt;
:*Window and screen processing&lt;br /&gt;
::*FNMGCLR - clears a message form the fnpick message line&lt;br /&gt;
::*FNSAVPART - legacy function to save a portion of the screen - obsolete in 4.17&lt;br /&gt;
::*FNRELPART - legacy function to clear a portion of the screen obsolete in 4.17&lt;br /&gt;
::*FNWIN - legacy function to open a window in numeric order&lt;br /&gt;
::*FNCLSWIN - legacy function to close a window opened by FNWIN&lt;br /&gt;
::*FNPM - legacy message box on the main window&lt;br /&gt;
:*Point and pick&lt;br /&gt;
::*FNKEYSEL - direct file look up function requires a fixed position font&lt;br /&gt;
::*FNPICK_EX - A point and shoot legacy using a single matrix requires a fixed position font&lt;br /&gt;
::*FNPICK - A point and shoot legacy using a single matrix requires a fixed position font&lt;br /&gt;
::*FNKEYSEL_EX - a legacy direct file access point and shoot requires a fixed sized font&lt;br /&gt;
::*FNPOPUP - legacy code for a pop-up choice box&lt;br /&gt;
:*Supporting functions&lt;br /&gt;
::*Data transfer between program and library&lt;br /&gt;
::*FNWINDEV - returns the number of the currentlyactive FNSNAP window using the old system&lt;br /&gt;
::*FNLEADZERO$&lt;br /&gt;
::*FNGETK$ - \fs20&lt;br /&gt;
::*FNSETALL - set all elements of an array&lt;br /&gt;
::*FNSETSEL - set all elements of an array&lt;br /&gt;
::*FNPRTPICKBAR - a function to position a colored pick bar in FNPICK&lt;br /&gt;
::*FNZLPAD$ - pads a number with zeros and converts to string&lt;br /&gt;
::*FNINIT - initializes the variable required by the original FNSNAP functions&lt;br /&gt;
::*FNNOKEY - chekc to see if CMDKEY or FKEY were pressed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FnSnap is also discussed in [[Library Facility]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FnSnap]]&lt;br /&gt;
[[Category:Utilities]]&lt;br /&gt;
[[Category:Utilities Third Party]]&lt;br /&gt;
[[Category:ftp.brulescorp.com]]&lt;/div&gt;</summary>
		<author><name>Gtisdale</name></author>
	</entry>
	<entry>
		<id>https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap:_Screen_Processing&amp;diff=5313</id>
		<title>FnSnap: Screen Processing</title>
		<link rel="alternate" type="text/html" href="https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap:_Screen_Processing&amp;diff=5313"/>
		<updated>2011-05-10T00:40:20Z</updated>

		<summary type="html">&lt;p&gt;Gtisdale: /* FNDIALOG$*40 - Display dialog box and return selected text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Buttons, messages and dialogs==&lt;br /&gt;
===FNBUTTON - Add button on the button bar===&lt;br /&gt;
&lt;br /&gt;
Creates a button on the button bar.  Buttons are created left to right and can be removed with FNCLRBUTTON&lt;br /&gt;
&lt;br /&gt;
 FNBUTTON(BUTTON_TEXT$,FK;BTN)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BUTTON_TEXT$&#039;&#039;&#039;||Text to display on button.  Must be less than 10 characters&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FK&#039;&#039;&#039;||Function key value to return when the button is pressed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BTN&#039;&#039;&#039;||Button number if an existing button is to be changed.  If this parameter is omitted the next button position will be used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNCHECK - in connection with a radio dot or check box returns a 1 if checked===&lt;br /&gt;
&lt;br /&gt;
Used to process the elements of a radio dot list or check box is to determine wether the element has been checked (true) or not (false)&lt;br /&gt;
&lt;br /&gt;
  FNCHECK(L$*100)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;L$ &#039;&#039;&#039;||The label description being processed for an element of a radio list or check b ox list&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
This function is intended to be used by other functions see for example FNOPTIONS and FNOPTIONS$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNCHECK$ - places or strips ^ from an element===&lt;br /&gt;
&lt;br /&gt;
Based on the results of FNCHECK or a default parameter this function will add or remove the ^ from a description that indicates if it has been checked&lt;br /&gt;
&lt;br /&gt;
Returns the label modified to either contain or be free of a leading ^.&lt;br /&gt;
 FNCHECK$*100(L$*100,L)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;L$ &#039;&#039;&#039;||The label description to be modified if L is true&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;L &#039;&#039;&#039;||A flag indicating whether the ^ is to be appended to the front of a label, or stripped from it&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Used as a part of FNOPTIONS and FNOPTIONS$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNCLRBUTTON - removes a button from the button bar===&lt;br /&gt;
&lt;br /&gt;
Removes a button from the button bar if it was created using FNBUTTON&lt;br /&gt;
&lt;br /&gt;
 FNCLRBUTTON(;BTN)&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BTN&#039;&#039;&#039;||The number of the button to be cleared.  If blank the last, highest number, button will be cleared. If equal to 99 all buttons will be cleared.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Use in connection with FNBUTTON to display and remove buttons left to right on the button bar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNDIALOG$*40 - Display dialog box and return selected text===&lt;br /&gt;
&lt;br /&gt;
Displays a dialog box with up to three options and specifiable text.  See also FNDLG&lt;br /&gt;
&lt;br /&gt;
 FNDIALOG$*40(SROW$,SCOL$,DBWIDTH,TXTSTR$*900,OPT1$*40,OPT2$*40,OPT3$*40,REMOVE,DFLTOPT,DISPANYKEY,KEYWAIT) !:&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
Text does not align very well in the box when using proportional fonts.  This function can be called from FNDLG that uses an unformatted BR file to supply text and button labels.  Both functions have been updated to utilize the external utility from David Blankenship.&lt;br /&gt;
&lt;br /&gt;
See also FNWAITWIN for a very useful alternative.&lt;br /&gt;
&lt;br /&gt;
===FNDLG - Display a dialog box from data in a file===&lt;br /&gt;
&lt;br /&gt;
Creates a dialog box from a DAT file prepared by DIALOGMN.BR&lt;br /&gt;
&lt;br /&gt;
 FNDLG(DIALOG_DAT,DLNR;DISPANYKEY,KEYWAIT,SUFFIX$*300)&lt;br /&gt;
&lt;br /&gt;
Functions used&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FNDIALOG&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DIALOG_DAT&#039;&#039;&#039;||&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DLNR&#039;&#039;&#039;||&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DISPANYKEY&#039;&#039;&#039;||&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;KEYWAIT&#039;&#039;&#039;||&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SUFFIX$&#039;&#039;&#039;||&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
This is a carry over from earlier versions and does not align proportional text very well. If possible use MSGBOX instead.&lt;br /&gt;
&lt;br /&gt;
The function has been updated to use the message box utility from David Blankenship if RADIOCHK.exe is in the VOL002 directory&lt;br /&gt;
&lt;br /&gt;
With version 4.2 the function FNWAITWIN and rel;ated functions FNWAITMSG and FNWAITBAR are much more flexible and provde a Windows look message box with custom buttons, a progress bar and optionsl message flashing across the wait window as processing progresses.&lt;br /&gt;
&lt;br /&gt;
===FNHELP - open a tip box associated with a screen using a text file===&lt;br /&gt;
&lt;br /&gt;
Searches a specified text file for an anchor point, then displays a record after that point specified by HFLD.  Used for displaying pop up help windows based on the input field where the cursor is located&lt;br /&gt;
&lt;br /&gt;
[PICT(PICS\SNAP0007.ptf)]&lt;br /&gt;
&lt;br /&gt;
 FNHELP(HPATH$*60,HFILE$*20,HBASE$,HFLD,HROW,HCOL;HTITLE$*80)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HPATH$ &#039;&#039;&#039;||Path where the help file is located&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HFILE$ &#039;&#039;&#039;||File name within HPATH$ for the help file&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HFLD &#039;&#039;&#039;||Field number, usually set by CURFLD except in GRIDs it should be set by CURCOL.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HROW &#039;&#039;&#039;||Current row position of cursor, used to help in the positioning of the help window.  Usually set by CURROW&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HCOL &#039;&#039;&#039;||Current column of cursor, used to help in the positioning of the help window.  Usually set by CURCOL&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HTITLE$ &#039;&#039;&#039;||An optional title to appear in the bar at the top of the help window.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Very flexible and easy to implement help system.  I uses David Blankenship&#039;s HELPTIPS.exe utility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNHELPTIP - uses David Blankenship utility to display a help record===&lt;br /&gt;
&lt;br /&gt;
Displays a record from a text file in a pop up window.  Used in the BR system by the ERRORS routine to display the description of an error number.&lt;br /&gt;
&lt;br /&gt;
 FNHELPTIP(PROGPATH$*100,TEXTFILE$*50,TITLE$*50,RECORD,HROW,HCOL;NO_WAIT)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;PROGPATH$ &#039;&#039;&#039;||Path where text file is located.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TEXTFILE$ &#039;&#039;&#039;||Name of text file within the specified path&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TITLE$ &#039;&#039;&#039;||Name to be displayed at the top of the pop up window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;RECORD &#039;&#039;&#039;||The record number within the text file to display as the text of the message.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HROW &#039;&#039;&#039;||A positioning variable generally set by CURROW&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HCOL &#039;&#039;&#039;||A positioning variable generally set by CURCOL&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;NO_WAIT &#039;&#039;&#039;||Ignored&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
If HROW and HCOL are zero then the window id positioned in the center of the screen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNOK - Pop-up &amp;quot;OK&amp;quot; question===&lt;br /&gt;
&lt;br /&gt;
 FNOK&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Displays a dialog box with OK yes or NO. If yes is returned FNOK is true else it is false&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
MSGBOX is probably a better option with current programs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNOPTIONS - creates a radio dot selection pop up===&lt;br /&gt;
&lt;br /&gt;
Displays a pop up radio dot selection window.  If David Blankenship&#039;s utility RADIOCHEK.exe is present that will be used.  If not present then a BR generated selection window will be generated.&lt;br /&gt;
&lt;br /&gt;
[PICT(PICS\SNAP0005.ptf)]&lt;br /&gt;
 FNOPTIONS(MAT O$;DEFAULT,TITLE$*100,MESSAGE$*1000,WAITTIME,SROW,SCOL)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&amp;lt;br&amp;gt;&lt;br /&gt;
FNRADIOCHK&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat O$ &#039;&#039;&#039;||Matrix containing the descriptions for each line in the list&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DEFAULT &#039;&#039;&#039;||A number indicating which radio dot item should carry the dot when the box is displayed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TITLE$ &#039;&#039;&#039;||A title to appear across the top of the list box.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MESSAGE$ &#039;&#039;&#039;||A message to appear in a separate part of the dialog box explaining the choices if appropriate.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;WAITTIME &#039;&#039;&#039;||Number of seconds that the list should be displayed before accepting whatever is checked and continuing.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SROW &#039;&#039;&#039;||Positioning parameter generally set by CURROW&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SCOL &#039;&#039;&#039;||Positioning parameter generally set by CURCOL&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNOPTIONS$ - creates a check box selection pop up===&lt;br /&gt;
&lt;br /&gt;
Similar to FNOPTIONS, but this function displays the information in the form of a multiple selection check box list.&lt;br /&gt;
&lt;br /&gt;
[PICT(PICS\SNAP0006.ptf)]&lt;br /&gt;
&lt;br /&gt;
 FNOPTIONS$*100(MAT O$;DEFAULT$*100,TITLE$*100,MESSAGE$*1000,WAITTIME,NONE)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&amp;lt;br&amp;gt;&lt;br /&gt;
FNRADIOCHK&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DEFAULT &#039;&#039;&#039;||A number indicating which radio dot item should carry the dot when the box is displayed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TITLE$ &#039;&#039;&#039;||A title to appear across the top of the list box.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MESSAGE$ &#039;&#039;&#039;||A message to appear in a separate part of the dialog box explaining the choices if appropriate.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;WAITTIME &#039;&#039;&#039;||Number of seconds that the list should be displayed before accepting whatever is checked and continuing.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;NONE &#039;&#039;&#039;||A flag that will allow no items to be selected, otherwise the check list may not be exited without at least one selection being made.Positioning parameter generally set by CURROW&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNPFKEYLINE - Creates a hot field string of function key options===&lt;br /&gt;
&lt;br /&gt;
See also FNWINBUTTONS for 4.17+&lt;br /&gt;
&lt;br /&gt;
Prints a function key message line in an open window or child window at the row specified. Function keys displayed are hot and return the Fkey value. Fkey references can be hot text or optionally buttons.&lt;br /&gt;
&lt;br /&gt;
[PICT(PICS\SNAP0009.ptf)]&lt;br /&gt;
&lt;br /&gt;
 FNPFKEYLINE(ROW,TXT$*80;FKWIN)&lt;br /&gt;
&lt;br /&gt;
Functions used&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;ROW&#039;&#039;&#039;||The row number of the window on which the line should be displayed. Negative number indicate that many rows UP from the bottom of the window. Zero &amp;quot;0&amp;quot; indicates the very bottom of the window. All messages will be right justified within the window.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TXT$&#039;&#039;&#039;||Text to be displayed. Function keys should be designated with a leading carat ^ and trailing double space such as &amp;quot;^Esc  End&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FKWIN&#039;&#039;&#039;||Window number in which the line should be displayed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Valid function keys are numbers beginning with &amp;quot;^F&amp;quot; such a ^F9, or abbreviations for keys including ^PgUp ^PgDn ^Esc and ^Enter.  These are not case sensitive.&lt;br /&gt;
See also FNWINBUTTONS for a GUI based alternative.&lt;br /&gt;
&lt;br /&gt;
===FNPFKEY - Prints a function key message===&lt;br /&gt;
&lt;br /&gt;
 FNPFKEY(R,C,F$,TXT$*78) !:&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Prints a function key message on window zero&lt;br /&gt;
&lt;br /&gt;
Functions used&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;R&#039;&#039;&#039;||Row number&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;C&#039;&#039;&#039;||Column number&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;F$&#039;&#039;&#039;||Function key to be displayed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TXT$&#039;&#039;&#039;||Message to be displayed next to the function key&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Displays only one function key message at the row and column of window #0 specified.  FNPFKEYLINE is more flexible and recommended.&lt;br /&gt;
&lt;br /&gt;
Effective with GUI mode and release 4.17 FNWINBUTTONS and FNPICBUTTONS are much better options.&lt;br /&gt;
&lt;br /&gt;
===FNRADIOCHK$ - display a radio/checkbox with a set of options===&lt;br /&gt;
&lt;br /&gt;
Used by FNOPTONS and FNOPTIONS$ and FNDLG to display radio dot list, check box list, or a dialog box.  Makes use of David Blankenship&#039;s RADIOCHK.exe utility.&lt;br /&gt;
&lt;br /&gt;
 FNRADIOCHK$*100(CAPTION$*80,INFILE$*60,LEFT,TOP,ALLOW,DEFAULT$*100,TYPE$,LOCATE,NOCOLS,COLWIDTH,WAITTIME;TEXTSTRING$*2400)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;CAPTION$ &#039;&#039;&#039;||Title for the top bar&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;INFILE$ &#039;&#039;&#039;||File name to be processed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;LEFT &#039;&#039;&#039;||Position form left of screen to display in pixels&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TOP &#039;&#039;&#039;||Position from the top of the screen in pixels&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;ALLOW &#039;&#039;&#039;||allows no responses if true, requires at least one if false&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DEFAULT$ &#039;&#039;&#039;||A string of 0 and 1 where 0 is not checked and 1 is checked&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TYPE$ &#039;&#039;&#039;||R for Radio C for Check box&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;LOCATE &#039;&#039;&#039;||Record number in file to use as data for a dialog box&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;NOCOLS &#039;&#039;&#039;||Number of columns to display&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;COLWIDTH &#039;&#039;&#039;||Width of columns or buttons.  If not provided the spacing will be automatic based on the length of text provided&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;WAITTIME$ &#039;&#039;&#039;||Number of seconds to wait before returning the default answer.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TEXTSTRING$ &#039;&#039;&#039;||Text to display in a dialog box if not using text from a file.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNRADNUM - Return the option selected in a radio dot list===&lt;br /&gt;
&lt;br /&gt;
 FNRADNUM(MAT V$)&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Function determines which in a group of radio buttons was selected and returns the element number&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNTIMEOUT - Display timeout message===&lt;br /&gt;
&lt;br /&gt;
 FNTIMEOUT(;SECONDS)&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Displays a message that input has timed out and waits for a keystroke to reactivate the program.&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNWINBUTTONS - print one or more buttons on a screen in a designated window===&lt;br /&gt;
&lt;br /&gt;
Similar to and a replacement of FNPFKEYLINE.  Prints one or more buttons, right justified in a designated window either BROWs down from the top of the window if BROPW is positive of BROWS up from the bottom of the window if BROW is zero or negative.&lt;br /&gt;
&lt;br /&gt;
[PICT(PICS\SNAP0002.ptf)]&lt;br /&gt;
&lt;br /&gt;
 DEF LIBRARY FNWINBUTTONS(BROW,BTEXT$*100;BWIN,CENTER,FONT$)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&amp;lt;br&amp;gt;&lt;br /&gt;
FNWINROWCOL&amp;lt;br&amp;gt;&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BROW &#039;&#039;&#039;||The row number within a window on which to place the buttons.  If 0 or negative the row is up from the bottom of the window, positive is down from the top.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BTEXT$ &#039;&#039;&#039;||The text to display within the buttons. Each button is designated with a ^followed by FX: where X is the fkey value to be returned when the button is pushed.  FX can also be PGUP, PGDN or ESC.  The^FX: is followed by the text to appear within each button.  Al buttons are dimensioned to the longest string provided for any button.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BWIN &#039;&#039;&#039;||The window number of the window within which the buttons should appear.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;CENTER &#039;&#039;&#039;||The default is zero (0) which right aligns the buttons on the right hand border of the window. To center the buttons horizontally in the window enter one (1) in this element.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FONT$ &#039;&#039;&#039;||If this element is blank the default BUTTONS font will be used for the WINBUTTONS. Entering an alternative font can allow wingdings or directional arrows if the font allows it.  An example would be specifying TERMINAL on a Windows machine and then usinrt chr$(16) and chr$(17) next to the word Right or Left.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Can only be used in GUI ON mode&lt;br /&gt;
&lt;br /&gt;
==String Manipulation==&lt;br /&gt;
===FNDECRYPT$ - Decrypt FNENCRYPT$===&lt;br /&gt;
&lt;br /&gt;
Undoes what FNENCRYPT$ does&lt;br /&gt;
&lt;br /&gt;
 FNDECRYPT$(PW$)&lt;br /&gt;
&lt;br /&gt;
Functions used&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;PW$&#039;&#039;&#039;||The encrypted password from FNENCRYPT$.  This is usually a stored value to be compared with an entered value&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
This is a simple encryption routine only meant to hide a value from a casual observer, not a dedicated hacker. A more robust encryption routine is available with George Tisdale&#039;s WORKMENU.br menuing system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNENCRYPT$ - Simple encryption===&lt;br /&gt;
&lt;br /&gt;
 FNENCRYPT$(PW$) !:&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Simple encryption routine to ward off SNOOPS, NOT serious hackers&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
This is a simple encryption routine only meant to hide a value from a casual observer, not a dedicated hacker.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNFKEY - Converts an FKEY value greater than 1000===&lt;br /&gt;
&lt;br /&gt;
Returns a function key value.  If the value would be greater than 1000 then only the right tree places are used to determine the number.  Useful in converting button FKEYs to hot text fkeys&lt;br /&gt;
&lt;br /&gt;
 FNFKEY(AKEY)&lt;br /&gt;
&lt;br /&gt;
Functions used&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;AKEY&#039;&#039;&#039;||An FKEY value to be reduced by 1000 and returned as the value of FKEY.  If AKEY is less than 1000 the value of AKEY will be returned&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
Use in conjunction with FNPFKEYLINE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNNUM$ - Convert number to string===&lt;br /&gt;
&lt;br /&gt;
 FNNUM$(NAMT,DCML,LNGTH) !:&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Converts a number to a character string with fixed decimal places.  CNVRT$ is a better option.&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNPHONE$ - Convert number to (###) ###-####===&lt;br /&gt;
&lt;br /&gt;
Formats a 10 digit number into a telephone number formatted string&lt;br /&gt;
&lt;br /&gt;
 FNPHONE$(X)&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;X&#039;&#039;&#039;||Numeric telephone number including a leading &amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNPROPER$*60 - Convert to Proper Case===&lt;br /&gt;
&lt;br /&gt;
Converts a string into an initial capital title or name case&lt;br /&gt;
&lt;br /&gt;
 FNPROPER$*60(A_IN$*60) !:&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;A_IN$&#039;&#039;&#039;||String that is to be converted to initial capitals&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
The function uses a lot of SREP$ statements, consequently the string passed should be short enough to not cause a string overflow. About 500 characters is a reasonable limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
===FNAUTO - 1 if last field exit was automatic===&lt;br /&gt;
&lt;br /&gt;
Returns a 1 (true) if the last field was exited with an automatic exit Attribute E or X LASTFIELD is the field # that was current&lt;br /&gt;
&lt;br /&gt;
 FNAUTO(LASTFLD) !:&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;NONE&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNCLKBUF - Clear keyboard buffer===&lt;br /&gt;
&lt;br /&gt;
Clears the keyboard buffer&lt;br /&gt;
&lt;br /&gt;
 FNCLKBUF ! Clear the keyboard buffer&lt;br /&gt;
&lt;br /&gt;
;Functions used:&amp;lt;br&amp;gt;&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;None&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNERRTRAP - Trapped Error Processing===&lt;br /&gt;
&lt;br /&gt;
Red Screen error trapping routine. Displays error, program line and number to call.  Also logs the error to a log file by workstation and creates an email message&lt;br /&gt;
&lt;br /&gt;
 FNERRTRAP(EPROG$*50,ELINE,EERR,ECOUNT,EVARIABLE$,&amp;amp;ECURFLD,EMENU$)&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;EPROG$&#039;&#039;&#039;||Program name where the error was generated&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;ELINE&#039;&#039;&#039;||Line number where the error occurred&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;EERR&#039;&#039;&#039;||Error number that occurred&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;ECOUNT&#039;&#039;&#039;||Variable count if appropriate to the error&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;EVARIABLE$&#039;&#039;&#039;||Name of the variable, if appropriate where the error occurred&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;ECURFLD&#039;&#039;&#039;||Current field where the error occurred if in full screen processing&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;EMENU$ &#039;&#039;&#039;||The menu to which the program should return if the error can not be resolved&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;EMENUSEQ$ &#039;&#039;&#039;||The menu Sequence to which the program should return if the error can not be resolved.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
Requires FNEMAILFILE and EmailBlaster or EmailMonitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNINIT - Initialize variables in FNSNAP Library===&lt;br /&gt;
&lt;br /&gt;
Initiates the variables for the FNSNAP library.  Be careful not to use more than once in a program&lt;br /&gt;
&lt;br /&gt;
 FNINIT(;SYSDIR$,SYS$)&lt;br /&gt;
&lt;br /&gt;
Functions used&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;NONE&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes variables for the older FNSNAP tools.  If run  in the middle of a program the variables will be reset to the initial values and may cause problems.  Most new functions being written should NOT use this function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNPRINTSCREEN - stuff the keyboard to generate a print screen===&lt;br /&gt;
&lt;br /&gt;
Programmatically controls the keyboard to do the equivalent of Ctrl-P to issue a print screen&lt;br /&gt;
&lt;br /&gt;
 FNPRINTSCREEN&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;None&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNZERO - set to number if zero===&lt;br /&gt;
&lt;br /&gt;
 FNZERO(V,DV) ! SET Variable equal to the Default Variable if zero !:&lt;br /&gt;
&lt;br /&gt;
Description|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screen input and display==&lt;br /&gt;
===FNMOD - returns the column number of a cell in a grid===&lt;br /&gt;
&lt;br /&gt;
Replaced by CURCOL in 4.17.  Returns the column number of the current cell&lt;br /&gt;
&lt;br /&gt;
 FNMOD(CEL,COLS)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;CEL &#039;&#039;&#039;||The cell number where the cursor is located&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;COLS &#039;&#039;&#039;||The number of columns in the grid&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNPARSERES - returns screen resolution and BR window size for a session===&lt;br /&gt;
&lt;br /&gt;
Converts&lt;br /&gt;
&lt;br /&gt;
 FNPARSERES(W$,MAT SCRNRES,MAT WINRES,MAT CONRES)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;W$ &#039;&#039;&#039;||The workstation ID being queried&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT SCRNRES &#039;&#039;&#039;||Two element array of current terminal rows and columns in pixels&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT WINRES &#039;&#039;&#039;||Five element matrix 1    0 is maximized (&amp;quot;M-&amp;quot;) 1 is windowed (&amp;quot;A-&amp;quot;)2    rows in pixels of window  3    columns in pixels of window 4    row position of upper left corner in pixels of window  5    columns position of upper left corner in pixels of window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT CONRES &#039;&#039;&#039;||Five element matrix 1    0 is maximized (&amp;quot;M-&amp;quot;) 1 is windowed (&amp;quot;A-&amp;quot;)2    rows in pixels of window3    columns in pixels of window 4    row position of upper left corner in pixels of window5    columns position of upper left corner in pixels of window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Uses Steve Koger&#039;s RESOLUTION.exe utility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNPROGRESS - Progress bar===&lt;br /&gt;
&lt;br /&gt;
 FNPROGRESS(&amp;amp;PCT_WINDEV,PCT_TOTAL,PCT_DONE;SR$,CAPTION$*55)&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Displays a progress bar that expands based on numbers passed to the function&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNSCREEN - 24 x 80 screen display for screen painter===&lt;br /&gt;
&lt;br /&gt;
 FNSCREEN(SCRNO;SCREENFILE,MAT SCRATR$,MAT SCREEN$,MAT INWRK$,MAT INFLDA$,MAT INWRKH$,NOPAINT) ! Retrieve and display screen&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Displays a generated screen in the full screen window 0.  Screen was created using SCREENMN in a 23x80 format.&lt;br /&gt;
&lt;br /&gt;
This function has been significantly changed by NEWSCREEN.dll&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNTEXTBOX - creates a text box with word wrap===&lt;br /&gt;
&lt;br /&gt;
 Displays and allows input from a windows text box with text&lt;br /&gt;
&lt;br /&gt;
 FNTEXTBOX$*4000(&amp;amp;TEXTWIN,SROW,SCOL,ROWS,COLS,TLEN,PARENT,TEXT$*4000;BORDER,TKEY$)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TEXTWIN &#039;&#039;&#039;||&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SROW &#039;&#039;&#039;||Starting row within the parent window where the upper left corner should appear&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SCOL &#039;&#039;&#039;||Starting column number within the parent window where the upper left corner should appear&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;ROWS &#039;&#039;&#039;||Number of rows the text box should cover&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;COLS &#039;&#039;&#039;||Number of Columns the text box should cover&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TLEN &#039;&#039;&#039;||Allowable length of the text&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;PARENT &#039;&#039;&#039;||Parent window number&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TEXT$ &#039;&#039;&#039;||Text to display.  Modified text will be returned as the value of the function&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BORDER &#039;&#039;&#039;||Zero for no border or any other number to create a single line border&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;TKEY$ &#039;&#039;&#039;||Function key to return if the window is to be marked as hot&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNWINSCRN - paints a screen in a window===&lt;br /&gt;
&lt;br /&gt;
 FNWINSCRN(SFIL,SCRNO,WINNO,WINLIN,WINLEN,MAT SINFLDA$,MATSHELP$;DISPLAY) !:&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Displays a generated screen in an open child window of specified size.  The generated screen was created using SCREENMN&lt;br /&gt;
&lt;br /&gt;
This function has been significantly changed by NEWSCRN.DLL&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNWINROWCOL - in GUI mode returns rows and columns of a window===&lt;br /&gt;
&lt;br /&gt;
Must be in GUI ON mode to use this function.  Returns the number of rows and number of columns in the specified window.  the values returned are actually one shorter than the actual size of the window.&lt;br /&gt;
&lt;br /&gt;
 FNWINROWCOL(WINNO,&amp;amp;WROWS,&amp;amp;WCOLS)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&amp;lt;br&amp;gt;&lt;br /&gt;
FNWINSIZE&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;WINNO &#039;&#039;&#039;||Window number for which information is requested&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;WROWS &#039;&#039;&#039;||Number of rows less one of the requested window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;WCOLS &#039;&#039;&#039;||Number of columns less on of the requested window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNWINSIZE - in GUI mode creates arrays holding all window sizes===&lt;br /&gt;
&lt;br /&gt;
Returns arrays carrying dimensions for all open windows&lt;br /&gt;
&lt;br /&gt;
 FNWINSIZE(MAT S_WINNO,MAT S_SROW,MAT S_SCOL,MAT S_EROW,MAT S_ECOL,MAT S_ROWS,MAT S_COLS,MAT S_PARENT)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_WINNO &#039;&#039;&#039;||Array is dynamically populated with window number information&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_SROW &#039;&#039;&#039;||Array is dynamically populated with starting row number&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_SCOL &#039;&#039;&#039;||Array is dynamically populated with starting column number&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_EROW &#039;&#039;&#039;||Array is dynamically populated with ending row number&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_ECOL &#039;&#039;&#039;||Array is dynamically populated with ending column number&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_ROWS &#039;&#039;&#039;||Array is dynamically populated with the number of rows in the window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_COLS &#039;&#039;&#039;||Array is dynamically populated with the number of columns in the window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT S_PARENT &#039;&#039;&#039;||Array is dynamically populated with the number of the parent window&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
this is the working function for FNWINROWCOL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FnSnap]]&lt;/div&gt;</summary>
		<author><name>Gtisdale</name></author>
	</entry>
	<entry>
		<id>https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap:_Array_Functions&amp;diff=5319</id>
		<title>FnSnap: Array Functions</title>
		<link rel="alternate" type="text/html" href="https://brwiki2.brulescorp.com/brwiki2/index.php?title=FnSnap:_Array_Functions&amp;diff=5319"/>
		<updated>2010-03-23T01:11:23Z</updated>

		<summary type="html">&lt;p&gt;Gtisdale: /* FNPARMAT - split an array into sub-arrays */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Sorting arrays==&lt;br /&gt;
===FNSORTARRAY - sort an array with header and footer===&lt;br /&gt;
Sorts an array either ascending or descending and optionally excludes elements at the top and bottom to allow headers and footers to remain in place - sort is based on positions within the array, not the start of the string&lt;br /&gt;
&lt;br /&gt;
 FNSORTARRAY(MAT L$,START,LENGTH;DESENDING,HEADER,FOOTER)!:&lt;br /&gt;
&lt;br /&gt;
Functions used |None&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat L$&#039;&#039;&#039;||matrix to be sorted&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;START&#039;&#039;&#039;||Starting position for the character string on which to sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;LENGTH&#039;&#039;&#039;||length of the character sub string on which to sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DESCENDING&#039;&#039;&#039;|| if true sorts descending order else sorts ascending&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HEADER number of rows at the top of the matrix to omit from the sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FOOTER number of rows at the bottom of the matrix to omit from the sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
Sort an array on any character sub-set allowing for header rows at the top and footer/total rows at the bottom.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNSRTARY - sort an array with header and footer based on itself===&lt;br /&gt;
&lt;br /&gt;
Similar to FNSORTARRAY but uses the entire string to sort rather than a sub string&lt;br /&gt;
&lt;br /&gt;
 FNSRTARY(MAT L$;MAT M$,DESENDING,HEADER,FOOTER)&lt;br /&gt;
&lt;br /&gt;
Functions used |None&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat L$&#039;&#039;&#039;||matrix to be sorted&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DESCENDING&#039;&#039;&#039;|| if true sorts descending order else sorts ascending&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HEADER&#039;&#039;&#039;|| number of rows at the top of the matrix to omit from the sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FOOTER&#039;&#039;&#039;|| number of rows at the bottom of the matrix to omit from the sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNSRTNARY -Sort a numeric array based on another array===&lt;br /&gt;
&lt;br /&gt;
Similar to FNSRTARY but for a numeric matrix&lt;br /&gt;
&lt;br /&gt;
 FNSRTNARY(MAT L;MAT M$,DESENDING,HEADER,FOOTER) !:&lt;br /&gt;
&lt;br /&gt;
Functions used |None&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat L$&#039;&#039;&#039;||matrix to be sorted&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DESCENDING&#039;&#039;&#039;||if true sorts descending order else sorts ascending&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;HEADER&#039;&#039;&#039;||number of rows at the top of the matrix to omit from the sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FOOTER&#039;&#039;&#039;|| number of rows at the bottom of the matrix to omit from the sort&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Array arithmetic==&lt;br /&gt;
===FNCOLSUM - sums the elements of an array for a specified column===&lt;br /&gt;
&lt;br /&gt;
Provides the sum of a single column of a multi column array.&lt;br /&gt;
&lt;br /&gt;
 FNCOLSUM(MAT L,C)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT L &#039;&#039;&#039;||Matrix containing multiple columns&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;C &#039;&#039;&#039;||Column number to be summed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNROWSUM - sums the elements of an array for a specified row===&lt;br /&gt;
&lt;br /&gt;
Returns the sum of a row of a multi row and multi column array&lt;br /&gt;
&lt;br /&gt;
 FNROWSUM(MAT L,R)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat L &#039;&#039;&#039;||Numeric array containing the row to be totaled&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;R &#039;&#039;&#039;||Row number to be totaled&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Searching arrays==&lt;br /&gt;
===FNCHRMAT$ - convert a numeric array to character===&lt;br /&gt;
&lt;br /&gt;
Convert a numeric matrix into a formatted character matrix&lt;br /&gt;
&lt;br /&gt;
 FNCHRMAT$(CHRMAT$,NUMMAT,FORMAT$;BLANKS)&lt;br /&gt;
&lt;br /&gt;
Functions used |None&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat CHRMAT$&#039;&#039;&#039;||matrix that will be output&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat NUMMAT&#039;&#039;&#039;||numeric matrix being converted&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;FORMAT$&#039;&#039;&#039;||format used to convert each line to a string&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;BLANKS&#039;&#039;&#039;||if true replaces a zero value with blanks&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNLISTSRCH - searches a character array based on a search string===&lt;br /&gt;
&lt;br /&gt;
 FNLISTSRCH(MAT L$,SRCHSTR$,MAT SELECT;STRT)&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Performs a search on a matrix and modifies the matrix select with elements in the searched matrix that match SRCHSTR$&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat L$ &#039;&#039;&#039;||The array to be searched.  The search is case insensitive and will match any matching combination regardless of position within each element.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SRCHSTR$ &#039;&#039;&#039;||The string that is being matched to each element, case insensitive&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT SELECT &#039;&#039;&#039;||A numeric array that holds the row numbers of matching elements.  Any newly found elements are added to the array.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;STRT &#039;&#039;&#039;||Optional positioning number. matches will only occur if the match is AFTER this position in the row string&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Used in lists and grids following FNLISTSPEC to allow for a search of the arrays used in a list or grid and a positioning of the cursor on elements matching the criteria&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNLISTSRCHN - searches a numeric array based on a search string===&lt;br /&gt;
&lt;br /&gt;
 FNLISTSRCHN(MAT L,SRCHSTR$,MAT SELECT;STRT,SMASK$)&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Same as FNLISTSRCH except for a numeric matrix&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;Mat L &#039;&#039;&#039;||The array to be searched.  Each element is turned into a string before being searched. The search is case insensitive and will match any matching combination regardless of position within each element.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SRCHSTR$ &#039;&#039;&#039;||The string that is being matched to each element, case insensitive&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT SELECT &#039;&#039;&#039;||A numeric array that holds the row numbers of matching elements.  Any newly found elements are added to the array.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;STRT &#039;&#039;&#039;||Optional positioning number. matches will only occur if the match is AFTER this position in the row string&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&amp;lt;br&amp;gt;&lt;br /&gt;
Used in lists and grids following FNLISTSPEC to allow for a search of the arrays used in a list or grid and a positioning of the cursor on elements matching the criteria&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNSELECTION - selection process using two arrays===&lt;br /&gt;
&lt;br /&gt;
 FNSELECTION(SELECTION,MAT SEL$,MAT SEL;MANY)&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Maintains two matrices, one SEL is true if an item is selected.  The other SEL$ contains the selection sequence number if MANY is greater than one or the word SELECTED if MANY equals one.  If many=0 only one item is allowed as a selection.&lt;br /&gt;
&lt;br /&gt;
Functions used |None&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SELECTION the element number selected or deselected  MAT SEL$ selection number or word MAT SEL true if element is selected  MANY 0 for a single selection 1 for any or all and a number for a limited number of elements&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNSRCHCRIT$*50 - search criteria for a list box===&lt;br /&gt;
&lt;br /&gt;
 FNSRCHCRIT$*50(SR$,SC$,LROWS,LCOLS,PARENT;MESSAGE$)&lt;br /&gt;
&lt;br /&gt;
Description|&amp;lt;br&amp;gt;&lt;br /&gt;
Opens a window within a listbox window and asks for a search string&lt;br /&gt;
&lt;br /&gt;
Functions used |&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
===FNDELROW - removes a row from an array and redimensions the array===&lt;br /&gt;
&lt;br /&gt;
Removes a row form an array and redimensions the array to be one row shorter&lt;br /&gt;
&lt;br /&gt;
 FNDELROW$(MAT DEL,DELROW)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT DEL &#039;&#039;&#039;||The numeric array that needs to be updated&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DELROW &#039;&#039;&#039;||The row number to delete&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNDELROW$ - removes a row from an array and redimensions the array===&lt;br /&gt;
&lt;br /&gt;
Removes a row form an array and redimensions the array to be one row shorter&lt;br /&gt;
&lt;br /&gt;
 FNDELROW$(MAT DEL$,DELROW)&lt;br /&gt;
&lt;br /&gt;
;Functions used:&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT DEL$ &#039;&#039;&#039;||The character array that needs to be updated&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;DELROW &#039;&#039;&#039;||The row number to delete&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FNPARMAT - split an array into sub-arrays===&lt;br /&gt;
&lt;br /&gt;
Parses an array into a multi-dimensional array based on splitting at a predefined character&lt;br /&gt;
&lt;br /&gt;
 FNPARMAT(MAT M$,SUB$;NOREF)&lt;br /&gt;
&lt;br /&gt;
Functions used |None&lt;br /&gt;
&lt;br /&gt;
;Variables:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;MAT M$&#039;&#039;&#039;||matrix to be parsed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|&#039;&#039;&#039;SUB$&#039;&#039;&#039;||character that will be treated as a boundary or field separator   NOREF if true prevents a single line matrix from being reformatted to a one dimensional matrix&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;Comments:&lt;br /&gt;
[[Category:FnSnap]]&lt;/div&gt;</summary>
		<author><name>Gtisdale</name></author>
	</entry>
</feed>