<?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=LSELECT</id>
	<title>LSELECT - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=LSELECT"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=LSELECT&amp;action=history"/>
	<updated>2026-04-28T22:13:26Z</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=LSELECT&amp;diff=1993&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=LSELECT&amp;diff=1993&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:55Z</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;It is easy to select data from a file when a field equals a known value.  e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;LIST CUSTOMER WITH CUSTNO = &amp;quot;12345&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It is also easy to select data from a file when a field equals one of a number of known value.  e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;LIST CUSTOMER WITH CUSTNO = &amp;quot;12345&amp;quot;&amp;quot;12346&amp;quot;&amp;quot;12347&amp;quot;&amp;quot;12348&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The query processor is very powerful and offers many ways to easily accommodate queries. Using selects before processing a query is a standard method to filter data.  e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;SELECT CUSTOMER WITH CUSTTYPE = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
14 items selected.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;SELECT CUSTOMER WITH CUSTNO = &amp;quot;12345&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3 items selected.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;LIST CUSTOMER&lt;br /&gt;
&lt;br /&gt;
On occasion, we have a list of data we&amp;#039;d like to compare a select to to see if any data exists in the list.  We might have a list of non-primary key values of colors and we want to select the items in a product file whose color matches one of the colors in this list.&lt;br /&gt;
&lt;br /&gt;
It would be a very nice feature if we could do something like:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;LSELECT PRODUCTS WITH COLOR IN MYLIST&lt;br /&gt;
&lt;br /&gt;
Somewhere we created MYLIST based on various colors with certain properties.  e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;SELECT COLORS WITH COLORTYPE = &amp;quot;POPULAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
20 items selected.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;SAVE.LIST MYLIST&lt;br /&gt;
Overwriting existing saved list.&lt;br /&gt;
20 key(s) saved to 1 record(s).&lt;br /&gt;
&lt;br /&gt;
Now we want to use our fantasized query to select all our products that have this popular color.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;LSELECT PRODUCTS WITH COLOR IN MYLIST&lt;br /&gt;
750 items selected.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;SORT PRODUCTS ....&lt;br /&gt;
&lt;br /&gt;
Rocket Software, and IBM before this, had a tech tip that allowed us to create this new verb (LSELECT).&lt;br /&gt;
&lt;br /&gt;
     https://u2devzone.rocketsoftware.com/accelerate/articles/u2-select/u2-select&lt;br /&gt;
&lt;br /&gt;
The following is a basic program I created to use on [[UniData]].&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
!&lt;br /&gt;
** Select file items using keys in select list&lt;br /&gt;
** (C) Copyright 1985-2012, Pacific Mgmt Software, Inc.  All Rights Reserved.&lt;br /&gt;
!&lt;br /&gt;
** Last Modified: 07 Aug 2012, wph&lt;br /&gt;
** First Created: 01 Oct 2009, wph&lt;br /&gt;
** Program Type-: Utility&lt;br /&gt;
!&lt;br /&gt;
** Notes:&lt;br /&gt;
**&lt;br /&gt;
** This process selects the items in [[FileName]] whose keys are in the&lt;br /&gt;
** defined select (saved) list.&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;
** Initialization&lt;br /&gt;
NULL$ = &amp;#039;&amp;#039;&lt;br /&gt;
SP1   = &amp;#039; &amp;#039;&lt;br /&gt;
*&lt;br /&gt;
* Initialize command variables&lt;br /&gt;
FILE.NAME   = NULL$&lt;br /&gt;
DICT.NAME   = NULL$&lt;br /&gt;
OPER        = NULL$&lt;br /&gt;
SOURCE.LIST = NULL$&lt;br /&gt;
TO.OP       = NULL$&lt;br /&gt;
DEST.LIST   = NULL$&lt;br /&gt;
*&lt;br /&gt;
** Initialize other variables&lt;br /&gt;
SOURCE.LIST.NAMED = 1&lt;br /&gt;
DEST.LIST.NAMED   = 1&lt;br /&gt;
DISPLAY.HELP      = 0&lt;br /&gt;
VERBOSE           = 0&lt;br /&gt;
*&lt;br /&gt;
**----------------------------------------------------------------------**&lt;br /&gt;
**                                                                      **&lt;br /&gt;
**               S T A R T   P R O C E S S I N G   D A T A              **&lt;br /&gt;
**                                                                      **&lt;br /&gt;
**----------------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
** Run the command program&lt;br /&gt;
GOSUB GET.COMMAND&lt;br /&gt;
GOSUB GET.SOURCE.SELECT.LIST&lt;br /&gt;
GOSUB CREATE.TEMP.FILE&lt;br /&gt;
GOSUB LOAD.TEMP.FILE&lt;br /&gt;
GOSUB BUILD.LIST2&lt;br /&gt;
GOSUB FINISH.UP&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;
** Get the command and process&lt;br /&gt;
***************&lt;br /&gt;
GET.COMMAND:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
** Gather and parse input from command line&lt;br /&gt;
INPUT.PARAMS = TRIM(FIELD(@SENTENCE, &amp;quot; &amp;quot;, 2, 999))&lt;br /&gt;
SWAP &amp;#039; &amp;#039; WITH &amp;#039;;&amp;#039; IN INPUT.PARAMS&lt;br /&gt;
POS = 1&lt;br /&gt;
FILE.NAME = TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS))&lt;br /&gt;
POS += 1&lt;br /&gt;
WITH.OP = UPCASE(TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS)))&lt;br /&gt;
IF WITH.OP = &amp;quot;WITH&amp;quot; THEN POS += 1&lt;br /&gt;
DICT.NAME = TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS))&lt;br /&gt;
POS += 1&lt;br /&gt;
OPER = UPCASE(TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS)))&lt;br /&gt;
IF OPER = &amp;quot;IN&amp;quot; THEN&lt;br /&gt;
   POS += 1&lt;br /&gt;
   SOURCE.LIST= TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS))&lt;br /&gt;
   POS += 1&lt;br /&gt;
   TO.OP = UPCASE(TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS)))&lt;br /&gt;
   IF TO.OP = &amp;quot;TO&amp;quot; THEN POS += 1&lt;br /&gt;
   DEST.LIST = TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS))&lt;br /&gt;
   IF DEST.LIST = &amp;quot;VERBOSE&amp;quot; OR DEST.LIST = &amp;quot;-V&amp;quot; THEN&lt;br /&gt;
      VERBOSE = 1&lt;br /&gt;
      DEST.LIST = NULL$&lt;br /&gt;
   END&lt;br /&gt;
END ELSE&lt;br /&gt;
   IF OPER = &amp;quot;TO&amp;quot; THEN&lt;br /&gt;
      POS += 1&lt;br /&gt;
      DEST.LIST = OCONV(TRIM(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, POS)), &amp;#039;MCU&amp;#039;)&lt;br /&gt;
      IF DEST.LIST = &amp;quot;VERBOSE&amp;quot; OR DEST.LIST = &amp;quot;-V&amp;quot; THEN&lt;br /&gt;
         VERBOSE = 1&lt;br /&gt;
         DEST.LIST = NULL$&lt;br /&gt;
      END&lt;br /&gt;
   END ELSE&lt;br /&gt;
      IF OPER # NULL$ THEN&lt;br /&gt;
         ERROR.MSG =  &amp;#039;Expecting &amp;quot;IN&amp;quot; or &amp;quot;TO&amp;quot; clause. Found &amp;#039;:OPER&lt;br /&gt;
         GOSUB SHOW.MESSAGE&lt;br /&gt;
         DISPLAY.HELP = 1&lt;br /&gt;
      END&lt;br /&gt;
   END&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
LAST.COMMAND = UPCASE(FIELD(INPUT.PARAMS, &amp;quot;;&amp;quot;, DCOUNT(INPUT.PARAMS, &amp;quot;;&amp;quot;)))&lt;br /&gt;
IF (LAST.COMMAND = &amp;quot;VERBOSE&amp;quot;) OR (LAST.COMMAND = &amp;quot;-V&amp;quot;) THEN VERBOSE = 1&lt;br /&gt;
*&lt;br /&gt;
** Display Usage if parameters not supplied or help is requested&lt;br /&gt;
IF FILE.NAME = NULL$ OR FILE.NAME = &amp;quot;?&amp;quot; OR FILE.NAME = &amp;quot;HELP&amp;quot; OR DICT.NAME = NULL$ THEN DISPLAY.HELP = 1&lt;br /&gt;
IF DISPLAY.HELP THEN&lt;br /&gt;
   PRINT&lt;br /&gt;
   PRINT &amp;#039;This will create a list of {[[FileName]]} keys for records whose&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;field definition value appears in a defined list.&amp;#039;&lt;br /&gt;
   PRINT&lt;br /&gt;
   PRINT &amp;#039;Syntax:&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;  LSELECT [[File_Name]] WITH [[Dict_Name]] IN LIST1 TO LIST2 [VERBOSE| -V]&amp;#039;&lt;br /&gt;
   PRINT&lt;br /&gt;
   PRINT &amp;#039;Example: SELECT CUSTOMERS SAMPLE 500&amp;#039;&lt;br /&gt;
   PRINT &amp;#039; SAVE.LIST MY.LIST&amp;#039;&lt;br /&gt;
   PRINT &amp;#039; LSELECT SALES.ORDERS WITH CUST.NBR IN MY.LIST TO MY.LIST.2&amp;#039;&lt;br /&gt;
   PRINT&lt;br /&gt;
   PRINT &amp;#039;Notes:&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;If a destination list is not supplied then keys will be left as the active&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;select list.  If a source list is not supplied then the current active select&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;list will be used.  Lists may be specified as select buffers (0-8) or as named&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;lists from SAVEDLISTS.&amp;#039;&lt;br /&gt;
   PRINT&lt;br /&gt;
   STOP&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Validate Dictionary&lt;br /&gt;
DR.REC = XLATE(&amp;quot;DICT &amp;quot;:FILE.NAME, DICT.NAME, -1, &amp;quot;X&amp;quot;)&lt;br /&gt;
IF DR.REC = NULL$ THEN&lt;br /&gt;
   ERROR.MSG = &amp;quot;Unable to read dictionary &amp;quot;:DICT.NAME:&amp;quot;  for file &amp;quot;:FILE.NAME&lt;br /&gt;
   GOSUB SHOW.MESSAGE&lt;br /&gt;
   STOP&lt;br /&gt;
END ELSE&lt;br /&gt;
   IF DR.REC&amp;lt;6&amp;gt; # &amp;quot;S&amp;quot; THEN&lt;br /&gt;
      ERROR.MSG = &amp;quot;Warning, &amp;quot;:DICT.NAME:&amp;quot; is not a single valued field. Results may be unexpected.&amp;quot;&lt;br /&gt;
      GOSUB SHOW.MESSAGE&lt;br /&gt;
   END&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Complete defaulting behavior&lt;br /&gt;
IF SOURCE.LIST = NULL$ THEN&lt;br /&gt;
   SOURCE.LIST = 0&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Make sure the destination list has a value&lt;br /&gt;
IF DEST.LIST = NULL$ THEN DEST.LIST = 0&lt;br /&gt;
*&lt;br /&gt;
** Make sure source list name has a value (under misc circumstances)&lt;br /&gt;
IF NUM(SOURCE.LIST) AND LEN(SOURCE.LIST) = 1 AND (SOURCE.LIST NE 9) THEN SOURCE.LIST.NAMED = 0&lt;br /&gt;
*&lt;br /&gt;
** Make sure destination list name has a value (under misc circumstances)&lt;br /&gt;
IF NUM(DEST.LIST) AND LEN(DEST.LIST)=1 AND (DEST.LIST # 9) THEN DEST.LIST.NAMED = 0&lt;br /&gt;
*&lt;br /&gt;
** Display verbose information&lt;br /&gt;
IF VERBOSE THEN&lt;br /&gt;
   PRINT &amp;#039;(Parsed Command)&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;LSELECT &amp;#039;:FILE.NAME:&amp;#039; WITH &amp;#039;:DICT.NAME:&amp;#039; IN &amp;#039;:SOURCE.LIST:&amp;#039; TO &amp;#039;:DEST.LIST&lt;br /&gt;
   PRINT&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
!&lt;br /&gt;
** Get the list of values to match&lt;br /&gt;
***************&lt;br /&gt;
GET.SOURCE.SELECT.LIST:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
SOURCE.ID.LIST = NULL$&lt;br /&gt;
*&lt;br /&gt;
** Process a named list&lt;br /&gt;
IF SOURCE.LIST.NAMED THEN&lt;br /&gt;
   EXECUTE \GET-LIST \ : SOURCE.LIST CAPTURING OUTPUT&lt;br /&gt;
   [[NoOfItems]] = SYSTEM(11)&lt;br /&gt;
   IF NOT([[NoOfItems]]) THEN&lt;br /&gt;
      ERROR.MSG = &amp;quot;Error reading saved list &amp;quot;:SOURCE.LIST : SP1 : OUTPUT&lt;br /&gt;
      GOSUB SHOW.MESSAGE&lt;br /&gt;
      STOP&lt;br /&gt;
   END&lt;br /&gt;
   READSELECT SOURCE.ID.LIST ELSE SOURCE.ID.LIST = NULL$&lt;br /&gt;
END ELSE&lt;br /&gt;
   READSELECT SOURCE.ID.LIST FROM SOURCE.LIST ELSE SOURCE.ID.LIST = NULL$&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Display verbose information&lt;br /&gt;
IF VERBOSE THEN&lt;br /&gt;
   PRINT &amp;#039;(Selected List)&amp;#039;&lt;br /&gt;
   PRINT &amp;#039;List Source &amp;#039;:SOURCE.LIST:&amp;#039; found &amp;#039;:DCOUNT(SOURCE.ID.LIST, @AM):&amp;#039; items.&amp;#039;&lt;br /&gt;
   PRINT&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
!&lt;br /&gt;
** Create temporary file to support TRANS selection&lt;br /&gt;
***************&lt;br /&gt;
CREATE.TEMP.FILE:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
** determine appropriate file size based on size of list of values to match&lt;br /&gt;
TBYTES   = SUM(LENS(SOURCE.ID.LIST))&lt;br /&gt;
TEMP.MOD = INT(TBYTES/1024)&lt;br /&gt;
IF TEMP.MOD &amp;lt; 1 THEN&lt;br /&gt;
   TEMP.MOD = 5&lt;br /&gt;
END&lt;br /&gt;
PROCESS.NBR = @UDTNO + 0&lt;br /&gt;
PROCESS.ID  = (&amp;#039;0000&amp;#039; : PROCESS.NBR : @LEVEL) &amp;quot;R#4&amp;quot;&lt;br /&gt;
TEMP.NAME   = &amp;#039;LSELECT&amp;#039; : PROCESS.ID&lt;br /&gt;
UDT.COMMAND = &amp;#039;CREATE.FILE &amp;#039; : TEMP.NAME : SP1 : TEMP.MOD&lt;br /&gt;
PERFORM UDT.COMMAND CAPTURING UDT.RESPONSE&lt;br /&gt;
*&lt;br /&gt;
** Now open the temporary file&lt;br /&gt;
OPEN &amp;#039;&amp;#039;, TEMP.NAME TO TEMP.HANDLE ELSE&lt;br /&gt;
   ERROR.MSG = &amp;quot;Error opening &amp;quot;:TEMP.NAME:&amp;quot; file&amp;quot;&lt;br /&gt;
   GOSUB SHOW.MESSAGE&lt;br /&gt;
   STOP&lt;br /&gt;
END&lt;br /&gt;
OPEN &amp;#039;DICT&amp;#039;, TEMP.NAME TO TEMP.DICT ELSE&lt;br /&gt;
   ERROR.MSG = &amp;quot;Error opening DICT &amp;quot;:TEMP.NAME:&amp;quot; file&amp;quot;&lt;br /&gt;
   GOSUB SHOW.MESSAGE&lt;br /&gt;
   STOP&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Display verbose information&lt;br /&gt;
IF VERBOSE THEN&lt;br /&gt;
   PRINT &amp;quot;(Create Temp File)&amp;quot;&lt;br /&gt;
   PRINT TEMP.NAME:&amp;#039; file created with MOD = &amp;#039; : TEMP.MOD&lt;br /&gt;
   PRINT&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
!&lt;br /&gt;
** Put selection values into temp file&lt;br /&gt;
***************&lt;br /&gt;
LOAD.TEMP.FILE:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
EMPTY.STRING = &amp;#039;&amp;#039;&lt;br /&gt;
MORE.IDS     = 1&lt;br /&gt;
[[LoadCnt]]      = 0&lt;br /&gt;
LOOP&lt;br /&gt;
   REMOVE ID FROM SOURCE.ID.LIST SETTING MORE.IDS&lt;br /&gt;
   WRITEVU EMPTY.STRING ON TEMP.HANDLE, ID, 0&lt;br /&gt;
   [[LoadCnt]] += 1&lt;br /&gt;
WHILE MORE.IDS DO&lt;br /&gt;
REPEAT&lt;br /&gt;
*&lt;br /&gt;
** Reset internal udt REMOVE pointer&lt;br /&gt;
SOURCE.ID.LIST = SOURCE.ID.LIST&lt;br /&gt;
*&lt;br /&gt;
** Display verbose information&lt;br /&gt;
IF VERBOSE THEN&lt;br /&gt;
   PRINT &amp;quot;(Loaded List to Temp File) - &amp;quot; : [[LoadCnt]] : &amp;quot; items.&amp;quot;&lt;br /&gt;
   PRINT&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
*&lt;br /&gt;
** Create the resulting list&lt;br /&gt;
***************&lt;br /&gt;
BUILD.LIST2:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
TRANS.STMT = &amp;quot;TRANS(&amp;#039;&amp;quot; : TEMP.NAME : &amp;quot;&amp;#039;,&amp;quot; : DICT.NAME : &amp;quot;,&amp;#039;@ID&amp;#039;,&amp;#039;X&amp;#039;)&amp;quot;&lt;br /&gt;
IF DEST.LIST.NAMED THEN&lt;br /&gt;
   UDT.COMMAND = &amp;#039;select &amp;#039;:FILE.NAME:&amp;#039; WITH EVAL &amp;quot;&amp;#039;:TRANS.STMT:&amp;#039;&amp;quot; GT &amp;quot;&amp;quot; &amp;#039;&lt;br /&gt;
   PERFORM UDT.COMMAND CAPTURING UDT.RESPONSE&lt;br /&gt;
   PERFORM &amp;#039;SAVE.LIST &amp;#039;:DEST.LIST&lt;br /&gt;
END ELSE&lt;br /&gt;
   UDT.COMMAND = &amp;#039;select &amp;#039;:FILE.NAME:&amp;#039; WITH EVAL &amp;quot;&amp;#039;:TRANS.STMT:&amp;#039;&amp;quot; GT &amp;quot;&amp;quot; TO &amp;#039;:DEST.LIST&lt;br /&gt;
   PERFORM UDT.COMMAND CAPTURING UDT.RESPONSE&lt;br /&gt;
   IF NOT(VERBOSE) THEN HUSH ON&lt;br /&gt;
   PERFORM &amp;#039;SAVE.LIST &amp;#039;:TEMP.NAME&lt;br /&gt;
   IF NOT(VERBOSE) THEN HUSH OFF&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Display verbose information&lt;br /&gt;
IF VERBOSE THEN&lt;br /&gt;
   PRINT &amp;quot;(Selected Result List)&amp;quot;&lt;br /&gt;
   PRINT &amp;quot;UDT.COMMAND = &amp;quot;:UDT.COMMAND&lt;br /&gt;
   PRINT &amp;quot;UDT.RESPONSE = &amp;quot;:UDT.RESPONSE&lt;br /&gt;
   PRINT &amp;quot;Destination &amp;quot;:DEST.LIST&lt;br /&gt;
   PRINT &amp;quot;Named List &amp;quot;:DEST.LIST.NAMED&lt;br /&gt;
   PRINT&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
!&lt;br /&gt;
** Remove temporary key list file&lt;br /&gt;
***************&lt;br /&gt;
FINISH.UP:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
** Close and delete the temporary file&lt;br /&gt;
CLOSE TEMP.HANDLE&lt;br /&gt;
CLOSE TEMP.DICT&lt;br /&gt;
UDT.COMMAND = &amp;#039;DELETE.FILE &amp;#039;:TEMP.NAME&lt;br /&gt;
DATA &amp;#039;Y&amp;#039;&lt;br /&gt;
PERFORM UDT.COMMAND CAPTURING UDT.RESPONSE&lt;br /&gt;
*&lt;br /&gt;
** Display verbose information&lt;br /&gt;
IF VERBOSE THEN&lt;br /&gt;
   PRINT &amp;quot;(Delete Temp File)&amp;quot;&lt;br /&gt;
   PRINT TEMP.NAME:&amp;#039; file deleted...&amp;#039;&lt;br /&gt;
   PRINT&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** Create a currently active select list (if no to-list defined)&lt;br /&gt;
IF NOT(DEST.LIST.NAMED) THEN&lt;br /&gt;
   PERFORM &amp;#039;GET.LIST &amp;#039;:TEMP.NAME CAPTURING UDT.RESPONSE&lt;br /&gt;
   READSELECT SOURCE.ID.LIST ELSE SOURCE.ID.LIST = NULL$&lt;br /&gt;
   PERFORM &amp;#039;DELETE.LIST &amp;#039;:TEMP.NAME CAPTURING UDT.RESPONSE&lt;br /&gt;
   FORMLIST SOURCE.ID.LIST&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
!&lt;br /&gt;
** Display error messages&lt;br /&gt;
***************&lt;br /&gt;
SHOW.MESSAGE:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
PRINT ERROR.MSG&lt;br /&gt;
PRINT &amp;quot;Press &amp;lt;cr&amp;gt; To Continue&amp;quot;:&lt;br /&gt;
INPUT DUMMY&lt;br /&gt;
RETURN&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;
***************&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;br /&gt;
&lt;br /&gt;
A use of the program would look like:&lt;br /&gt;
&lt;br /&gt;
2 Dev (0)-&amp;gt; SELECT MASTER WITH YREND NE &amp;quot;12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
4 records selected to list 0.&lt;br /&gt;
&lt;br /&gt;
2 Dev (0)-&amp;gt; SAVE-LIST MY.LIST&lt;br /&gt;
Overwriting existing saved list.&lt;br /&gt;
4 key(s) saved to 1 record(s).&lt;br /&gt;
2 Dev (0)-&amp;gt; LSELECT ARTMASTER WITH CLIENTNO IN MY.LIST VERBOSE&lt;br /&gt;
(Parsed Command)&lt;br /&gt;
LSELECT ARTMASTER WITH CLIENTNO IN MY.LIST TO 0&lt;br /&gt;
&lt;br /&gt;
(Selected List)&lt;br /&gt;
List Source MY.LIST found 4 items.&lt;br /&gt;
&lt;br /&gt;
(Create Temp File)&lt;br /&gt;
LSELECT0021 file created with MOD = 5&lt;br /&gt;
&lt;br /&gt;
(Loaded List to Temp File) - 4 items.&lt;br /&gt;
&lt;br /&gt;
235 key(s) saved to 1 record(s).&lt;br /&gt;
(Selected Result List)&lt;br /&gt;
UDT.COMMAND = select ARTMASTER WITH EVAL &amp;quot;TRANS(&amp;#039;LSELECT0021&amp;#039;,CLIENTNO,&amp;#039;@ID&amp;#039;,&amp;#039;X&amp;#039;)&lt;br /&gt;
&amp;quot; GT &amp;quot;&amp;quot; TO 0&lt;br /&gt;
UDT.RESPONSE = ■235 records selected to list 0.■■&lt;br /&gt;
Destination 0&lt;br /&gt;
Named List 0&lt;br /&gt;
&lt;br /&gt;
(Delete Temp File)&lt;br /&gt;
LSELECT0021 file deleted...&lt;br /&gt;
&lt;br /&gt;
2 Dev (0)-&amp;gt; SSCROLL ARTMASTER &amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Command =&amp;gt; SORT  ARTMASTER                                09:11:36 Oct 18 2012&lt;br /&gt;
ARTMASTER... CUSTOMER NAME (LFM)............ BT MOVE-IN. PRICHG$... BAL DUE...&lt;br /&gt;
&lt;br /&gt;
120*1        ROBINSON, JAMES                    05-17-07     210.00       0.00&lt;br /&gt;
120*2        ROBINSON, KATHRYN J                06-18-08     210.00     210.00&lt;br /&gt;
120*3        GARCIA, SAMANTHA L                 08-13-09     210.00    -210.00&lt;br /&gt;
120*4        ROBINSON, CAROL A                  03-15-95     210.00     210.00&lt;br /&gt;
120*5        ROBINSON, AARON L                  09-19-06     210.00     210.00&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I hope this is of some help.&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>