<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=BFind</id>
	<title>BFind - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=BFind"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=BFind&amp;action=history"/>
	<updated>2026-04-29T01:00:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pickwiki.org/index.php?title=BFind&amp;diff=1562&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=BFind&amp;diff=1562&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:53Z</updated>

		<summary type="html">&lt;p&gt;link fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This utility will search a file, or multiple files, for the occurance of one or more strings.&lt;br /&gt;
&lt;br /&gt;
If you load this program and run it you can execute with a &amp;quot; ?&amp;quot; after it to get help (e.g. BFIND ?).  This outputs a list of options and usage notes like:&lt;br /&gt;
&lt;br /&gt;
This utility will find a string of characters within any record in the file&lt;br /&gt;
specified.  You will be prompted to enter a string to search for.  You can&lt;br /&gt;
edit the items directly or select the items into a select-list. If an &amp;#039;*&amp;#039;&lt;br /&gt;
is used instead of &amp;#039;[[FileName]]&amp;#039; then all files are searched, or if there is&lt;br /&gt;
an [[ActiveList]] the selected items are searched.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  BFIND [[FileName]]{[*]} {(options}     (same syntax with a [[SelectList]])&lt;br /&gt;
&lt;br /&gt;
  * options:&lt;br /&gt;
       A - c[A]se does matter in the search&lt;br /&gt;
       C - set the [C]ol# to start the match on (enter numeric)&lt;br /&gt;
       F - display only the [F]irst match then goto next item&lt;br /&gt;
       I - only look for matching [I]temId&amp;#039;s&lt;br /&gt;
       S - [S]uppress the display of the matching lines&lt;br /&gt;
       T - [T]rim each item of redundant spaces before comparing&lt;br /&gt;
       X - search for a he[X]adecimal character(s)&lt;br /&gt;
&lt;br /&gt;
Example: SSELECT VOC = &amp;quot;[BP]&amp;quot;&lt;br /&gt;
         xx ITEMS SELECTED&lt;br /&gt;
       : BFIND * (S&lt;br /&gt;
  Enter a string to search for: ON ACCPAY&lt;br /&gt;
&lt;br /&gt;
Unless the &amp;#039;(S&amp;#039; option is used matching lines will be displayed with the&lt;br /&gt;
search-string lined up starting in column 15 of the displayed output.  Once&lt;br /&gt;
the search process completes you&amp;#039;ll be asked:&lt;br /&gt;
&lt;br /&gt;
  EDIT item(s) selected (#[[/Yes/No/LineEditor/Quit]]) ?&lt;br /&gt;
&lt;br /&gt;
You should answer with the line# you wish to edit, [Y] to edit all items&lt;br /&gt;
that match, [L] to edit all matching items with the Line-Editor, or [Q] to&lt;br /&gt;
quit processing.  If you edit the items they are edited one at a time and&lt;br /&gt;
you have the option to stop editing items any time.  The next question is:&lt;br /&gt;
&lt;br /&gt;
   Do you wish to ACTIVATE this list (Y[[/N]]) ?&lt;br /&gt;
&lt;br /&gt;
This allows you to activate a select-list of the matching items.  This will&lt;br /&gt;
search all files with a &amp;#039;BP&amp;#039; in it&amp;#039;s name looking for the string &amp;#039;ON ACCPAY&amp;#039;.&lt;br /&gt;
This is a general search for any program that writes to the ACCPAY file!&lt;br /&gt;
&lt;br /&gt;
Note:  if the &amp;#039;s&amp;#039; option is used, the &amp;#039;f&amp;#039; option is overridden!  Also, if the&lt;br /&gt;
       &amp;#039;i&amp;#039; option is used, all other options are negated!&lt;br /&gt;
&lt;br /&gt;
I use it all the time to search program files, UV files, O[[/S]] files, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
!&lt;br /&gt;
** Find item/s with string &amp;#039;X&amp;#039; BASIC utility&lt;br /&gt;
** (C) Copyright 1985-2007, Advantos Systems, Inc.  All Rights Reserved.&lt;br /&gt;
!&lt;br /&gt;
** Last Modified: 23 Oct 2006, wph&lt;br /&gt;
** First Created: 01 Jan 1987, wph&lt;br /&gt;
** Program Type-: Utility&lt;br /&gt;
!&lt;br /&gt;
** Notes:&lt;br /&gt;
**   This utility will select a list of items within a file that&lt;br /&gt;
**   contain at least one of the specified search strings.&lt;br /&gt;
**&lt;br /&gt;
**   If &amp;#039;*&amp;#039; is used instead of a [[FileName]] then all files are searched,&lt;br /&gt;
**   or if a select list is active, those files in the select file are&lt;br /&gt;
**   searched.&lt;br /&gt;
**&lt;br /&gt;
**   If no edit then return select list for further processing&lt;br /&gt;
**&lt;br /&gt;
**   If a SELECTLIST is available when this program is executed then&lt;br /&gt;
**   it is assumed that the select list contains the file names you&lt;br /&gt;
**   want to search.&lt;br /&gt;
**&lt;br /&gt;
**   There are 2 q-pointers needed in the voc/md of the account you&amp;#039;re&lt;br /&gt;
**   running this utility in:&lt;br /&gt;
**     1) VOC or MD&lt;br /&gt;
**     2) SAVEDLISTS (_SAVEDLISTS_, &amp;amp;SAVEDLISTS&amp;amp;, POINTER-FILE)&lt;br /&gt;
**&lt;br /&gt;
**&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**                    I N I T I A L I Z A T I O N                    **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
** Initialize program variables&lt;br /&gt;
*$OPTIONS EXT                     ; ** D3 version&lt;br /&gt;
*&lt;br /&gt;
** initialize local variables&lt;br /&gt;
PROMPT &amp;#039;&amp;#039;&lt;br /&gt;
NULL$     = &amp;#039;&amp;#039;&lt;br /&gt;
*PORT.NO   = OCONV(@USER.NO, &amp;#039;MCU&amp;#039;)         ; ** UV version&lt;br /&gt;
PORT.NO   = OCONV(@UDTNO,   &amp;#039;MCU&amp;#039;)         ; ** UD version&lt;br /&gt;
*PORT.NO   = SYSTEM(22)                     ; ** D3 version&lt;br /&gt;
SP1       = &amp;#039; &amp;#039;&lt;br /&gt;
SP2       = &amp;#039;  &amp;#039;&lt;br /&gt;
SP3       = &amp;#039;   &amp;#039;&lt;br /&gt;
SP4       = &amp;#039;    &amp;#039;&lt;br /&gt;
SP5       = &amp;#039;     &amp;#039;&lt;br /&gt;
SP10      = SPACE(10)&lt;br /&gt;
SP20      = SPACE(20)&lt;br /&gt;
*&lt;br /&gt;
** initialize screen variables&lt;br /&gt;
SCRN.WIDTH  = SYSTEM(2)&lt;br /&gt;
SCRN.LENGTH = SYSTEM(3) - 1&lt;br /&gt;
TERM.TYPE   = SYSTEM(7)&lt;br /&gt;
EOS         = @(-3)&lt;br /&gt;
EOL         = @(-4)&lt;br /&gt;
C.BCK       = @(-9)&lt;br /&gt;
C.UP        = @(-10)&lt;br /&gt;
VC.BCK      = C.BCK&lt;br /&gt;
*&lt;br /&gt;
** assign continue message&lt;br /&gt;
CONT.MSG = &amp;quot;Press [Enter] to see more or any other key to quit:&amp;quot;&lt;br /&gt;
*&lt;br /&gt;
** dimension for the maximum number of search strings&lt;br /&gt;
DIM STRINGS(15), TERMINALS(150)&lt;br /&gt;
*&lt;br /&gt;
** assign other local variables&lt;br /&gt;
PG.CNT    = 0&lt;br /&gt;
FIND.CNT  = 0&lt;br /&gt;
LIST.ID   = &amp;quot;FIND.SELECT.LIST_&amp;quot; : PORT.NO&lt;br /&gt;
FILE.LIST = NULL$&lt;br /&gt;
ITEM.LIST = NULL$&lt;br /&gt;
*&lt;br /&gt;
QUIT.AND.PROCESS = 0               ; ** quit display &amp;amp; process&lt;br /&gt;
*&lt;br /&gt;
** Read &amp;#039;TCL&amp;#039; sentence&lt;br /&gt;
*TCL.LINE = @COMMAND                ; ** UV version&lt;br /&gt;
TCL.LINE = @SENTENCE               ; ** UD version&lt;br /&gt;
*TCLREAD TCL.LINE                  ; ** D3 version&lt;br /&gt;
*&lt;br /&gt;
OPTIONS  = OCONV(FIELD(TCL.LINE, &amp;#039;(&amp;#039;, 2), &amp;#039;MCU&amp;#039;)&lt;br /&gt;
TCL.LINE = TRIM(FIELD(TCL.LINE, &amp;#039;(&amp;#039;, 1))&lt;br /&gt;
*&lt;br /&gt;
** Access help if desired&lt;br /&gt;
BEGIN CASE&lt;br /&gt;
   CASE INDEX(TCL.LINE, &amp;#039; HELP &amp;#039;, 1)          ; GOTO DISPLAY.HELP&lt;br /&gt;
   CASE TCL.LINE[LEN(TCL.LINE)-4,5] = &amp;#039; HELP&amp;#039; ; GOTO DISPLAY.HELP&lt;br /&gt;
   CASE INDEX(TCL.LINE, &amp;#039;?&amp;#039;    , 1)           ; GOTO DISPLAY.HELP&lt;br /&gt;
   CASE FIELD(TCL.LINE, SP1    , 2) = NULL$   ; GOTO DISPLAY.HELP&lt;br /&gt;
END CASE&lt;br /&gt;
*&lt;br /&gt;
** Process file information&lt;br /&gt;
FNAME = FIELD(TCL.LINE, &amp;#039; &amp;#039;, 2)&lt;br /&gt;
IF OCONV(FNAME, &amp;#039;MCU&amp;#039;)  = &amp;#039;DICT&amp;#039; THEN&lt;br /&gt;
   DSW   = &amp;#039;DICT&amp;#039;&lt;br /&gt;
   FNAME = FIELD(TCL.LINE, &amp;#039; &amp;#039;, 3)&lt;br /&gt;
END ELSE&lt;br /&gt;
   DSW   = &amp;#039;&amp;#039;&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Validate options&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;I&amp;#039;, 1) THEN&lt;br /&gt;
   FIND.ITEM  = 1&lt;br /&gt;
   OPTIONS    = &amp;#039;I&amp;#039;&lt;br /&gt;
END ELSE&lt;br /&gt;
   FIND.ITEM  = 0&lt;br /&gt;
END&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;A&amp;#039;, 1) THEN [[CaseMatters]] = 1 ELSE [[CaseMatters]] = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;C&amp;#039;, 1) THEN COL.DISP    = 1 ELSE COL.DISP    = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;F&amp;#039;, 1) THEN FIRST.ITEM  = 1 ELSE FIRST.ITEM  = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;S&amp;#039;, 1) THEN SUPP.DISP   = 1 ELSE SUPP.DISP   = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;T&amp;#039;, 1) THEN TRIM.ITEM   = 1 ELSE TRIM.ITEM   = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;X&amp;#039;, 1) THEN HEX.SEARCH  = 1 ELSE HEX.SEARCH  = 0&lt;br /&gt;
*&lt;br /&gt;
** Get column display start column&lt;br /&gt;
IF COL.DISP THEN&lt;br /&gt;
   [[ColStart]] = OCONV(OPTIONS, &amp;#039;MCN&amp;#039;)&lt;br /&gt;
END ELSE [[ColStart]] = 15&lt;br /&gt;
*&lt;br /&gt;
** Build item list (if &amp;#039;*&amp;#039; files then build file list).&lt;br /&gt;
* READLIST ITEM.LINE ELSE ITEM.LINE = NULL$      ; ** UV version&lt;br /&gt;
*&lt;br /&gt;
ITEM.LINE = NULL$                                ; ** D3[[/UD]] version&lt;br /&gt;
IF SYSTEM(11) THEN                               ; ** D3[[/UD]] version&lt;br /&gt;
   LOOP                                          ; ** D3[[/UD]] version&lt;br /&gt;
      READNEXT ID ELSE EXIT                      ; ** D3[[/UD]] version&lt;br /&gt;
      ITEM.LINE&amp;lt;-1&amp;gt; = ID                         ; ** D3[[/UD]] version&lt;br /&gt;
   REPEAT                                        ; ** D3[[/UD]] version&lt;br /&gt;
END                                              ; ** D3[[/UD]] version&lt;br /&gt;
*&lt;br /&gt;
** Build file list to parse through&lt;br /&gt;
FILE.LINE = NULL$                 ; ** initialize file names to search&lt;br /&gt;
*&lt;br /&gt;
** no active list so let`s build one&lt;br /&gt;
IF FNAME = &amp;#039;*&amp;#039; THEN&lt;br /&gt;
   IF ITEM.LINE = NULL$ THEN&lt;br /&gt;
      EXECUTE \SELECT MD WITH D[[/CODE]] = &amp;quot;D]&amp;quot;&amp;quot;F&amp;quot;\ CAPTURING OUTPUT&lt;br /&gt;
      IF SYSTEM(11) THEN&lt;br /&gt;
         LOOP&lt;br /&gt;
            READNEXT ID ELSE EXIT&lt;br /&gt;
            IF FILE.LINE NE NULL$ THEN&lt;br /&gt;
               FILE.LINE = ID : @AM : FILE.LINE&lt;br /&gt;
            END ELSE FILE.LINE = ID&lt;br /&gt;
         REPEAT&lt;br /&gt;
      END&lt;br /&gt;
   END ELSE&lt;br /&gt;
*     &lt;br /&gt;
** use the item list previously built as the file list&lt;br /&gt;
      FILE.LINE = ITEM.LINE&lt;br /&gt;
   END&lt;br /&gt;
   ITEM.LINE = NULL$              ; ** default to search through ALL items&lt;br /&gt;
END ELSE FILE.LINE = FNAME&lt;br /&gt;
*&lt;br /&gt;
** Open files&lt;br /&gt;
** another &amp;#039;Open&amp;#039; statement occurs later as each selected file is opened&lt;br /&gt;
OPEN &amp;#039;PERIPHERALS&amp;#039; TO PERIPHERALS ELSE STOP 201, &amp;#039;PERIPHERALS&amp;#039;&lt;br /&gt;
OPEN &amp;#039;SAVEDLISTS&amp;#039;  TO SAVEDLISTS  ELSE STOP 201, &amp;#039;SAVEDLISTS&amp;#039;&lt;br /&gt;
*&lt;br /&gt;
** Read terminal characteristics&lt;br /&gt;
[[TermId]] = &amp;#039;CCRT_&amp;#039; : OCONV(TERM.TYPE, &amp;#039;MCU&amp;#039;)&lt;br /&gt;
MATREAD TERMINALS FROM PERIPHERALS, [[TermId]] ELSE&lt;br /&gt;
   MAT TERMINALS = NULL$&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** extract video attributes&lt;br /&gt;
HI  = TERMINALS(12)&lt;br /&gt;
HO  = TERMINALS(13)&lt;br /&gt;
FORE.COLOR1 = TERMINALS(104)&lt;br /&gt;
IF FORE.COLOR1 NE NULL$ THEN&lt;br /&gt;
   HI = FORE.COLOR1&lt;br /&gt;
END&lt;br /&gt;
V.HI  = HI&lt;br /&gt;
V.HO  = HO&lt;br /&gt;
*&lt;br /&gt;
** Build appropriate file list&lt;br /&gt;
*SELECTV FILE.LINE TO FILE.LIST    ; ** UV version&lt;br /&gt;
SELECT FILE.LINE TO FILE.LIST     ; ** D3[[/UD]] version&lt;br /&gt;
*&lt;br /&gt;
** Enter string(s) to search for&lt;br /&gt;
INPUTCLEAR&lt;br /&gt;
*&lt;br /&gt;
ITEMNUM = 0&lt;br /&gt;
*IF NOT(FIND.ITEM) THEN&lt;br /&gt;
   LOOP&lt;br /&gt;
      CRT &amp;quot;Enter a string to search for: &amp;quot;:&lt;br /&gt;
      INPUT STRING&lt;br /&gt;
   UNTIL STRING = NULL$ OR ITEMNUM = 15 DO&lt;br /&gt;
      ITEMNUM = ITEMNUM + 1&lt;br /&gt;
      IF HEX.SEARCH THEN&lt;br /&gt;
        STRING = CHAR(XTD(STRING))&lt;br /&gt;
      END&lt;br /&gt;
      IF NOT([[CaseMatters]]) THEN&lt;br /&gt;
         STRING = OCONV(STRING, &amp;#039;MCU&amp;#039;)     ; ** case doesn&amp;#039;t matter&lt;br /&gt;
      END&lt;br /&gt;
      STRINGS(ITEMNUM) = STRING&lt;br /&gt;
   REPEAT&lt;br /&gt;
   IF ITEMNUM = 0 THEN STOP&lt;br /&gt;
*END&lt;br /&gt;
CRT&lt;br /&gt;
*&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**                 S T A R T   P R O G R A M   R U N                 **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
LN.CNT     = 0                    ; ** #of lines printed on a page - count&lt;br /&gt;
SELECT.IDS = NULL$                ; ** list of items found&lt;br /&gt;
LOOP&lt;br /&gt;
   READNEXT FILENAME FROM FILE.LIST ELSE EXIT&lt;br /&gt;
*  &lt;br /&gt;
** open appropriate file to search&lt;br /&gt;
   OPEN DSW, FILENAME TO F.NAME THEN&lt;br /&gt;
      CRT V.HI : &amp;quot;File: &amp;quot; : FILENAME : V.HO&lt;br /&gt;
      GOSUB CHECK.PAGE            ; ** page-stop test routine&lt;br /&gt;
      IF QUIT.AND.PROCESS THEN GOTO EDIT.LIST&lt;br /&gt;
   END ELSE&lt;br /&gt;
      CRT V.HI : &amp;quot;File: &amp;quot; : FILENAME : &amp;quot; does not exist!&amp;quot; : V.HO&lt;br /&gt;
      GOSUB CHECK.PAGE            ; ** page-stop test routine&lt;br /&gt;
      IF QUIT.AND.PROCESS THEN GOTO EDIT.LIST&lt;br /&gt;
      GOTO END.OF.LOOP1           ; ** skip further processing &amp;amp; loop again&lt;br /&gt;
   END&lt;br /&gt;
   EDIT.PATH = TRIM(DSW : SP1 : FILENAME)&lt;br /&gt;
   &lt;br /&gt;
** build item list to search&lt;br /&gt;
   IF ITEM.LINE = NULL$ THEN&lt;br /&gt;
*     SELECTV F.NAME TO ITEM.LIST        ; ** UV version&lt;br /&gt;
      SELECT F.NAME TO ITEM.LIST         ; ** D3[[/UD]] version&lt;br /&gt;
   END ELSE&lt;br /&gt;
*     SELECTV ITEM.LINE TO ITEM.LIST     ; ** UV version&lt;br /&gt;
      SELECT ITEM.LINE TO ITEM.LIST      ; ** D3[[/UD]] version&lt;br /&gt;
   END&lt;br /&gt;
&lt;br /&gt;
** select file &amp;amp; search for desired string&lt;br /&gt;
   CNT = 0&lt;br /&gt;
   LOOP&lt;br /&gt;
      READNEXT ID FROM ITEM.LIST ELSE EXIT&lt;br /&gt;
      READ REC FROM F.NAME, ID THEN&lt;br /&gt;
         IF NOT(FIND.ITEM) THEN&lt;br /&gt;
            REC = ID : @AM : REC          ; ** include the item id&lt;br /&gt;
         END ELSE&lt;br /&gt;
            REC = ID                     ; ** we&amp;#039;re only searching the Ids&lt;br /&gt;
         END&lt;br /&gt;
         HREC = REC                      ; ** keep 2 copies of record&lt;br /&gt;
         IF NOT([[CaseMatters]]) THEN&lt;br /&gt;
            REC = OCONV(REC, &amp;#039;MCU&amp;#039;)      ; ** case doesn&amp;#039;t matter&lt;br /&gt;
         END&lt;br /&gt;
         FOR J = 1 TO ITEMNUM&lt;br /&gt;
            IF TRIM.ITEM THEN REC = TRIM(REC)&lt;br /&gt;
            IF INDEX(REC, STRINGS(J), 1) THEN&lt;br /&gt;
               IF FNAME = &amp;#039;*&amp;#039; THEN&lt;br /&gt;
                  SELECT.IDS&amp;lt;-1&amp;gt; = EDIT.PATH : SP1 : ID&lt;br /&gt;
               END ELSE&lt;br /&gt;
                  SELECT.IDS&amp;lt;-1&amp;gt; = ID&lt;br /&gt;
               END&lt;br /&gt;
               FIND.CNT += 1&lt;br /&gt;
               &lt;br /&gt;
** display matches&lt;br /&gt;
               IF NOT(SUPP.DISP) THEN&lt;br /&gt;
                  REC     = TRIM(REC)&lt;br /&gt;
                  HREC    = TRIM(HREC)&lt;br /&gt;
                  JJ.HIGH = COUNT(REC, STRINGS(J))&lt;br /&gt;
                  FOR JJ = 1 TO JJ.HIGH&lt;br /&gt;
                     COL.S = INDEX(REC, STRINGS(J), JJ)&lt;br /&gt;
                     IF JJ = 1 THEN&lt;br /&gt;
                        CRT FIND.CNT &amp;quot;L(#4)&amp;quot; :&lt;br /&gt;
                        IF SCRN.WIDTH &amp;lt; 132 THEN&lt;br /&gt;
                           CRT ID &amp;quot;L(#20)&amp;quot;:&lt;br /&gt;
                        END ELSE CRT ID &amp;quot;L(#30)&amp;quot;:&lt;br /&gt;
                     END ELSE&lt;br /&gt;
                        CRT SP20:SP4:&lt;br /&gt;
                        IF SCRN.WIDTH GE 132 THEN CRT SP10:&lt;br /&gt;
                     END&lt;br /&gt;
                     START.POS = COL.S - [[ColStart]]&lt;br /&gt;
                     START.LEN = [[ColStart]]&lt;br /&gt;
                     IF START.POS LE 0 THEN&lt;br /&gt;
                        START.LEN = 14 + START.POS&lt;br /&gt;
                        START.POS = 1&lt;br /&gt;
                     END&lt;br /&gt;
                     [[DispMask]]   = &amp;quot;R(#&amp;quot; : [[ColStart]]-2 : &amp;quot;)&amp;quot;&lt;br /&gt;
                     DISP.LINE  = &amp;quot;:&amp;quot; : HREC[START.POS,START.LEN] [[DispMask]]&lt;br /&gt;
                     DISP.LINE :=       HREC[COL.S,999]&lt;br /&gt;
                     o[[DispLine]]  = OCONV(CONVERT(@AM:@VM:@SVM, &amp;#039;^]\&amp;#039;, DISP.LINE), &amp;#039;MCP&amp;#039;)  ; ** U2 version&lt;br /&gt;
*                    o[[DispLine]]  = OCONV(CONVERT(DISP.LINE, @AM:@VM:@SVM, &amp;#039;^]\&amp;#039;), &amp;#039;MCP&amp;#039;)  ; ** D3 version&lt;br /&gt;
                     IF SCRN.WIDTH &amp;lt; 132 THEN&lt;br /&gt;
                        CRT o[[DispLine]] &amp;quot;L(#54)&amp;quot;&lt;br /&gt;
                     END ELSE&lt;br /&gt;
                        CRT o[[DispLine]] &amp;quot;L(#96)&amp;quot;&lt;br /&gt;
                     END&lt;br /&gt;
                     GOSUB CHECK.PAGE    ; ** page-stop test routine&lt;br /&gt;
                     IF QUIT.AND.PROCESS THEN GOTO EDIT.LIST&lt;br /&gt;
                     IF FIRST.ITEM THEN EXIT&lt;br /&gt;
                  NEXT JJ&lt;br /&gt;
               END ELSE&lt;br /&gt;
                 IF MOD(FIND.CNT, 10) = 1 THEN CRT &amp;#039;.&amp;#039;:&lt;br /&gt;
               END&lt;br /&gt;
               &lt;br /&gt;
            END&lt;br /&gt;
         NEXT J&lt;br /&gt;
      END&lt;br /&gt;
***************&lt;br /&gt;
END.OF.LOOP2:&lt;br /&gt;
***************&lt;br /&gt;
   REPEAT&lt;br /&gt;
***************&lt;br /&gt;
END.OF.LOOP1:&lt;br /&gt;
***************&lt;br /&gt;
  IF SUPP.DISP THEN CRT          ; ** drop a line&lt;br /&gt;
REPEAT&lt;br /&gt;
&lt;br /&gt;
** Edit list once selected&lt;br /&gt;
*&lt;br /&gt;
***************&lt;br /&gt;
EDIT.LIST:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
IF SELECT.IDS NE NULL$ THEN&lt;br /&gt;
   IF FIND.ITEM THEN CRT DCOUNT(SELECT.IDS , @AM) : &amp;quot; items selected.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   EDIT.CMD = &amp;#039;U &amp;#039;&lt;br /&gt;
   CRT V.HI : &amp;quot;EDIT item(s) selected (#[[/Yes/No/LineEditor/Quit]]) ?&amp;quot; :&lt;br /&gt;
   CRT V.HO : &amp;quot;N&amp;quot; : C.BCK :&lt;br /&gt;
   INPUT EDIT&lt;br /&gt;
   EDIT = TRIM(OCONV(EDIT , &amp;#039;MCU&amp;#039;))&lt;br /&gt;
   NUMB = TRIM(OCONV(EDIT , &amp;#039;MCN&amp;#039;))&lt;br /&gt;
   IF EDIT = &amp;#039;&amp;#039; THEN EDIT = &amp;#039;N&amp;#039;&lt;br /&gt;
   BEGIN CASE&lt;br /&gt;
      CASE EDIT[1,1] = &amp;#039;Q&amp;#039;   ; GOTO END.OF.PROGRAM&lt;br /&gt;
      CASE EDIT[1,1] = &amp;#039;X&amp;#039;   ; GOTO END.OF.PROGRAM&lt;br /&gt;
      CASE EDIT[1,1] = &amp;#039;Y&amp;#039;   ; EDIT = 0&lt;br /&gt;
      CASE EDIT[1,1] = &amp;#039;N&amp;#039;   ; EDIT = -1&lt;br /&gt;
      CASE EDIT[1,1] = &amp;#039;L&amp;#039;&lt;br /&gt;
         EDIT.CMD = &amp;#039;ED &amp;#039;&lt;br /&gt;
         IF NUMB THEN EDIT = NUMB ELSE EDIT = 0 &lt;br /&gt;
      CASE NUMB              ; EDIT = NUMB&lt;br /&gt;
      CASE 1                 ; EDIT = -1&lt;br /&gt;
   END CASE&lt;br /&gt;
&lt;br /&gt;
** Edit select list&lt;br /&gt;
   FIND.CNT = DCOUNT(SELECT.IDS , @AM)&lt;br /&gt;
   CRT FIND.CNT : &amp;quot; items found&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   IF EDIT GE 0 THEN&lt;br /&gt;
   &lt;br /&gt;
      IF EDIT &amp;gt; 0 THEN&lt;br /&gt;
         IF EDIT &amp;gt; FIND.CNT THEN EDIT = FIND.CNT&lt;br /&gt;
         FIND.CNT = EDIT&lt;br /&gt;
      END ELSE EDIT = 1&lt;br /&gt;
      YN = &amp;#039;Y&amp;#039;                    ; ** initialize prompt variable&lt;br /&gt;
      FOR X = EDIT TO FIND.CNT&lt;br /&gt;
         NEW.ITEM = SELECT.IDS&amp;lt;X&amp;gt;&lt;br /&gt;
         &lt;br /&gt;
         IF FNAME = &amp;#039;*&amp;#039; THEN&lt;br /&gt;
            CRT &amp;quot;Editing.. &amp;quot; : EDIT.PATH : SP1 : NEW.ITEM&lt;br /&gt;
            EXECUTE EDIT.CMD : NEW.ITEM&lt;br /&gt;
         END ELSE&lt;br /&gt;
            CRT &amp;quot;Editing.. &amp;quot; : EDIT.PATH : SP1 : NEW.ITEM&lt;br /&gt;
            EXECUTE EDIT.CMD : EDIT.PATH : SP1 : NEW.ITEM&lt;br /&gt;
         END&lt;br /&gt;
         &lt;br /&gt;
         IF X = FIND.CNT THEN CRT &amp;quot;End of selected items.&amp;quot; ; EXIT&lt;br /&gt;
      &lt;br /&gt;
         CRT V.HI:&amp;quot;Continue editing (Yes[[/No/Back/Quit]]) ?&amp;quot;:V.HO:YN:C.BCK:&lt;br /&gt;
         H.YN = YN&lt;br /&gt;
         INPUT YN,1&lt;br /&gt;
         YN = OCONV(YN,&amp;#039;MCU&amp;#039;)[1,1]&lt;br /&gt;
         IF YN = &amp;#039;Q&amp;#039; OR YN = &amp;#039;X&amp;#039; THEN GOTO END.OF.PROGRAM&lt;br /&gt;
         IF YN =  NULL$  THEN YN = H.YN&lt;br /&gt;
         IF YN =  &amp;#039;N&amp;#039; THEN EXIT&lt;br /&gt;
         IF YN NE &amp;#039;E&amp;#039; THEN EDIT.CMD = &amp;#039;U &amp;#039; ELSE EDIT.CMD = &amp;#039;ED &amp;#039;&lt;br /&gt;
         IF YN =  &amp;#039;-&amp;#039; OR YN = &amp;#039;B&amp;#039; THEN&lt;br /&gt;
            X = X - 2&lt;br /&gt;
            IF X &amp;lt; 0 THEN X = 0&lt;br /&gt;
*           CONTINUE&lt;br /&gt;
         END&lt;br /&gt;
      NEXT X&lt;br /&gt;
      &lt;br /&gt;
   END ELSE&lt;br /&gt;
   &lt;br /&gt;
      INPUTCLEAR&lt;br /&gt;
      CRT&lt;br /&gt;
      CRT V.HI : &amp;quot;Do you wish to ACTIVATE this List (Y[[/N]]) ?&amp;quot; :&lt;br /&gt;
      CRT V.HO : &amp;quot;N&amp;quot; : C.BCK :&lt;br /&gt;
      INPUT YN,1 ; YN = OCONV(YN , &amp;#039;MCU&amp;#039;)&lt;br /&gt;
      CRT C.UP : EOL :&lt;br /&gt;
   &lt;br /&gt;
      IF YN = &amp;#039;Y&amp;#039; THEN&lt;br /&gt;
         FORMLIST SELECT.IDS TO 0                        ; ** UD version&lt;br /&gt;
         EXECUTE \SAVE-LIST \ : LIST.ID CAPTURING OUTPUT ; ** UD version&lt;br /&gt;
         CHAIN   \GET-LIST \  : LIST.ID                  ; ** UD version&lt;br /&gt;
*        WRITE SELECT.IDS ON SAVEDLISTS, LIST.ID         ; ** D3 version&lt;br /&gt;
*        CHAIN \QSELECT SAVEDLISTS \ : LIST.ID           ; ** D3 version&lt;br /&gt;
      END&lt;br /&gt;
      &lt;br /&gt;
   END&lt;br /&gt;
   &lt;br /&gt;
   GOSUB CLEAR.SELECT&lt;br /&gt;
   &lt;br /&gt;
END ELSE CRT &amp;quot;No items found&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GOTO END.OF.PROGRAM&lt;br /&gt;
*&lt;br /&gt;
**---------------------------------------------------------------**&lt;br /&gt;
**                                                               **&lt;br /&gt;
**                  S U B R O U T I N E S                        **&lt;br /&gt;
**                                                               **&lt;br /&gt;
**---------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
** Check page for stopping and prompting to continue&lt;br /&gt;
***************&lt;br /&gt;
CHECK.PAGE:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
LN.CNT += 1&lt;br /&gt;
IF LN.CNT = SCRN.LENGTH THEN&lt;br /&gt;
&lt;br /&gt;
   INPUTCLEAR&lt;br /&gt;
   LN.CNT           = 1&lt;br /&gt;
   PG.CNT          += 1&lt;br /&gt;
   QUIT.AND.PROCESS = 0&lt;br /&gt;
   &lt;br /&gt;
   CRT V.HI:&amp;quot;Page &amp;quot;:V.HO:PG.CNT:V.HI:&amp;quot;. Press [&amp;quot;:V.HO:&amp;quot;Enter&amp;quot;:V.HI:&lt;br /&gt;
   CRT &amp;quot;] to continue, [&amp;quot;:V.HO:&amp;quot;P&amp;quot;:V.HI:&amp;quot;] to stop &amp;amp; Process,&amp;quot;:&lt;br /&gt;
   CRT &amp;quot; or [&amp;quot;:V.HO:&amp;quot;Q&amp;quot;:V.HI:&amp;quot;] to Quit:&amp;quot;:V.HO:&lt;br /&gt;
   INPUT ZZ,1&lt;br /&gt;
   ZZ = OCONV(ZZ,&amp;#039;MCU&amp;#039;)[1,1]&lt;br /&gt;
   IF ZZ = &amp;#039;E&amp;#039; THEN GOTO SELECT.ABORT &lt;br /&gt;
   IF ZZ = &amp;#039;Q&amp;#039; THEN GOTO SELECT.ABORT &lt;br /&gt;
   IF ZZ = &amp;#039;S&amp;#039; THEN GOTO SELECT.ABORT &lt;br /&gt;
   IF ZZ = &amp;#039;X&amp;#039; THEN GOTO SELECT.ABORT &lt;br /&gt;
   &lt;br /&gt;
   IF ZZ = &amp;#039;P&amp;#039; THEN&lt;br /&gt;
      QUIT.AND.PROCESS = 1 &lt;br /&gt;
   END ELSE&lt;br /&gt;
&lt;br /&gt;
** display file on top of new page&lt;br /&gt;
      CRT V.HI : &amp;quot;File: &amp;quot; : FILENAME : V.HO&lt;br /&gt;
   END&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
*&lt;br /&gt;
** Clear select list &amp;amp; pointer file item&lt;br /&gt;
***************&lt;br /&gt;
CLEAR.SELECT:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
CLEARSELECT&lt;br /&gt;
RETURN&lt;br /&gt;
*&lt;br /&gt;
** Help display&lt;br /&gt;
***************&lt;br /&gt;
DISPLAY.HELP:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;quot;This utility will find a string of characters within any record in the file&amp;quot;&lt;br /&gt;
CRT &amp;quot;specified.  You will be prompted to enter a string to search for.  You can&amp;quot;&lt;br /&gt;
CRT &amp;quot;edit the items directly or select the items into a select-list. If an &amp;#039;*&amp;#039;&amp;quot;&lt;br /&gt;
CRT &amp;quot;is used instead of &amp;#039;[[FileName]]&amp;#039; then all files are searched, or if there is&amp;quot;&lt;br /&gt;
CRT &amp;quot;an [[ActiveList]] the selected items are searched.&amp;quot;&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;quot;Syntax:&amp;quot;&lt;br /&gt;
CRT &amp;quot;  BFIND [[FileName]]{[*]} {(options}     (same syntax with a [[SelectList]])&amp;quot;&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;quot;  * options:&amp;quot;&lt;br /&gt;
CRT &amp;quot;       A - c[A]se does matter in the search&amp;quot;&lt;br /&gt;
CRT &amp;quot;       C - set the [C]ol# to start the match on (enter numeric)&amp;quot;&lt;br /&gt;
CRT &amp;quot;       F - display only the [F]irst match then goto next item&amp;quot;&lt;br /&gt;
CRT &amp;quot;       I - only look for matching [I]temId&amp;#039;s&amp;quot;&lt;br /&gt;
CRT &amp;quot;       S - [S]uppress the display of the matching lines&amp;quot;&lt;br /&gt;
CRT &amp;quot;       T - [T]rim each item of redundant spaces before comparing&amp;quot;&lt;br /&gt;
CRT &amp;quot;       X - search for a he[X]adecimal character(s)&amp;quot;&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;#039;Example: SSELECT VOC = &amp;quot;[BP]&amp;quot;&amp;#039;&lt;br /&gt;
CRT &amp;quot;         xx ITEMS SELECTED&amp;quot;&lt;br /&gt;
CRT &amp;quot;       : BFIND * (S&amp;quot;&lt;br /&gt;
CRT &amp;quot;  Enter a string to search for: ON ACCPAY&amp;quot;&lt;br /&gt;
CRT&lt;br /&gt;
CRT CONT.MSG :&lt;br /&gt;
INPUT ZZ,1&lt;br /&gt;
IF ZZ = NULL$ THEN&lt;br /&gt;
   CRT C.UP : EOL&lt;br /&gt;
   CRT &amp;quot;Unless the &amp;#039;(S&amp;#039; option is used matching lines will be displayed with the&amp;quot;&lt;br /&gt;
   CRT &amp;quot;search-string lined up starting in column 15 of the displayed output.  Once&amp;quot;&lt;br /&gt;
   CRT &amp;quot;the search process completes you&amp;#039;ll be asked:&amp;quot;&lt;br /&gt;
   CRT&lt;br /&gt;
   CRT &amp;quot;  EDIT item(s) selected (#[[/Yes/No/LineEditor/Quit]]) ?&amp;quot;&lt;br /&gt;
   CRT&lt;br /&gt;
   CRT &amp;quot;You should answer with the line# you wish to edit, [Y] to edit all items&amp;quot;&lt;br /&gt;
   CRT &amp;quot;that match, [L] to edit all matching items with the Line-Editor, or [Q] to&amp;quot;&lt;br /&gt;
   CRT &amp;quot;quit processing.  If you edit the items they are edited one at a time and&amp;quot;&lt;br /&gt;
   CRT &amp;quot;you have the option to stop editing items any time.  The next question is:&amp;quot;&lt;br /&gt;
   CRT&lt;br /&gt;
   CRT &amp;quot;   Do you wish to ACTIVATE this list (Y[[/N]]) ?&amp;quot;&lt;br /&gt;
   CRT&lt;br /&gt;
   CRT &amp;quot;This allows you to activate a select-list of the matching items.  This will&amp;quot;&lt;br /&gt;
   CRT &amp;quot;search all files with a &amp;#039;BP&amp;#039; in it&amp;#039;s name looking for the string &amp;#039;ON ACCPAY&amp;#039;.&amp;quot;&lt;br /&gt;
   CRT &amp;quot;This is a general search for any program that writes to the ACCPAY file!&amp;quot;&lt;br /&gt;
   CRT &lt;br /&gt;
   CRT &amp;quot;Note:  if the &amp;#039;s&amp;#039; option is used, the &amp;#039;f&amp;#039; option is overridden!  Also, if the&amp;quot;&lt;br /&gt;
   CRT &amp;quot;       &amp;#039;i&amp;#039; option is used, all other options are negated!&amp;quot; &lt;br /&gt;
END&lt;br /&gt;
GOTO END.OF.PROGRAM&lt;br /&gt;
*&lt;br /&gt;
**----------------------------------------------------------------**&lt;br /&gt;
**                                                                **&lt;br /&gt;
**                  E N D   O F   P R O G R A M                   **&lt;br /&gt;
**                                                                **&lt;br /&gt;
**----------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
** Clear select list and stop program&lt;br /&gt;
***************&lt;br /&gt;
SELECT.ABORT:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
GOSUB CLEAR.SELECT&lt;br /&gt;
*&lt;br /&gt;
***************&lt;br /&gt;
END.OF.PROGRAM:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>