<?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=MakeDict</id>
	<title>MakeDict - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=MakeDict"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=MakeDict&amp;action=history"/>
	<updated>2026-04-28T22:13:36Z</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=MakeDict&amp;diff=2049&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=MakeDict&amp;diff=2049&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;Back to [[BasicSource]]&lt;br /&gt;
&lt;br /&gt;
This program lists, amends, or creates a dictionary from a command line input.  It uses defined keywords to figure out what to do - the help is&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 SYNTAX: MAKEDICT [DICT] FILE ITEM [OPTIONS] [OVERWRITING]&lt;br /&gt;
&lt;br /&gt;
OPTIONS: Each option is followed by a string defining it&lt;br /&gt;
&lt;br /&gt;
   AS   - Dictionary type (A, S, D, I or V)&lt;br /&gt;
   LNUM - Attribute number (A, S, and D types)&lt;br /&gt;
   CALC - I-type (I,V) or correlative (A,S,D)&lt;br /&gt;
   CONV - Conversion&lt;br /&gt;
   FMT  - length and Justification&lt;br /&gt;
   ASSOC - Associated multivalue string&lt;br /&gt;
   MULTI-VALUE  - M or Y for multivalues, otherwise single&lt;br /&gt;
   DISPLAY.NAME - Column heading for reports&lt;br /&gt;
&lt;br /&gt;
   OVERWRITING means that changes are made without prompting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the code is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  PROGRAM MAKEDICT&lt;br /&gt;
&lt;br /&gt;
* ECL - KRJ - Program to create or change a dictionary item&lt;br /&gt;
&lt;br /&gt;
  OPEN &amp;#039;VOC&amp;#039; TO VOC ELSE&lt;br /&gt;
    OPEN &amp;#039;MD&amp;#039; TO VOC ELSE STOP 201,&amp;#039;VOC&amp;#039;&lt;br /&gt;
  END&lt;br /&gt;
  PROMPT &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Set up keywords&lt;br /&gt;
*&lt;br /&gt;
  DICTK = &amp;#039;20&amp;#039;  ;* DICT keyword&lt;br /&gt;
  TYPEK = &amp;#039;260&amp;#039; ;* AS keyword&lt;br /&gt;
  LNUMK = &amp;#039;269&amp;#039; ;* LNUM keyword&lt;br /&gt;
  CALCK = &amp;#039;38&amp;#039;  ;* CALC keyword&lt;br /&gt;
  CONVK = &amp;#039;301&amp;#039; ;* CONVERSION keyword&lt;br /&gt;
  DISPK = &amp;#039;304&amp;#039; ;* DISPLAY.NAME keyword&lt;br /&gt;
  FORMK = &amp;#039;276&amp;#039; ;* FMT keyword&lt;br /&gt;
  MULTK = &amp;#039;306&amp;#039; ;* MULTI-VALUE keyword&lt;br /&gt;
  ASSOK = &amp;#039;302&amp;#039; ;* ASSOC keyword&lt;br /&gt;
  OVERK = &amp;#039;34&amp;#039;  ;* OVERWRITING keyword&lt;br /&gt;
&lt;br /&gt;
$IFDEF QM&lt;br /&gt;
  DICTK = &amp;#039;1&amp;#039;    ;* DICT keyword&lt;br /&gt;
  TYPEK = &amp;#039;60&amp;#039;  ;* AS keyword&lt;br /&gt;
  LNUMK = &amp;#039;153&amp;#039; ;* LNUM keyword&lt;br /&gt;
  CALCK = &amp;#039;74&amp;#039;  ;* CALC keyword&lt;br /&gt;
  CONVK = &amp;#039;64&amp;#039;  ;* CONVERSION keyword&lt;br /&gt;
  DISPK = &amp;#039;57&amp;#039;  ;* DISPLAY.NAME keyword&lt;br /&gt;
  FORMK = &amp;#039;58&amp;#039;  ;* FMT keyword&lt;br /&gt;
  MULTK = &amp;#039;93&amp;#039;   ;* MULTI-VALUE keyword&lt;br /&gt;
  ASSOK = &amp;#039;126&amp;#039; ;* ASSOC keyword&lt;br /&gt;
  OVERK = &amp;#039;16&amp;#039;  ;* OVERWRITING keyword&lt;br /&gt;
$ENDIF&lt;br /&gt;
&lt;br /&gt;
* Parse the command line - anything in quotes or brackets one thing&lt;br /&gt;
*&lt;br /&gt;
  BITE = &amp;#039;&amp;#039;&lt;br /&gt;
  FLAG = &amp;#039;&amp;#039;&lt;br /&gt;
  ATTR = 1&lt;br /&gt;
  LONG = LEN(@SENTENCE)&lt;br /&gt;
  FOR HERE = 1 TO LONG&lt;br /&gt;
    THIS = @SENTENCE[HERE,1]&lt;br /&gt;
    IF FLAG EQ &amp;#039;&amp;#039; THEN&lt;br /&gt;
      IF THIS = &amp;#039; &amp;#039; THEN&lt;br /&gt;
        IF BITE&amp;lt;ATTR&amp;gt; NE &amp;#039;&amp;#039; THEN ATTR += 1&lt;br /&gt;
      END ELSE&lt;br /&gt;
        IF INDEX(&amp;#039;&amp;quot;\&amp;#039;:&amp;quot;&amp;#039;&amp;quot;,THIS,1) THEN&lt;br /&gt;
          FLAG = THIS&lt;br /&gt;
        END ELSE&lt;br /&gt;
          IF THIS = &amp;#039;(&amp;#039; THEN&lt;br /&gt;
            FLAG = &amp;#039;)&amp;#039;&lt;br /&gt;
            IF BITE&amp;lt;ATTR&amp;gt; NE &amp;#039;&amp;#039; THEN ATTR += 1&lt;br /&gt;
            BITE&amp;lt;ATTR&amp;gt; = &amp;#039;(&amp;#039;&lt;br /&gt;
          END ELSE BITE&amp;lt;ATTR&amp;gt; = BITE&amp;lt;ATTR&amp;gt;:THIS&lt;br /&gt;
        END&lt;br /&gt;
      END&lt;br /&gt;
    END ELSE&lt;br /&gt;
      IF THIS NE FLAG THEN&lt;br /&gt;
        BITE&amp;lt;ATTR&amp;gt; = BITE&amp;lt;ATTR&amp;gt;:THIS&lt;br /&gt;
      END ELSE&lt;br /&gt;
        IF THIS = &amp;#039;)&amp;#039; THEN BITE&amp;lt;ATTR&amp;gt; = BITE&amp;lt;ATTR&amp;gt;:THIS&lt;br /&gt;
        ATTR += 1&lt;br /&gt;
        FLAG = &amp;#039;&amp;#039;&lt;br /&gt;
      END&lt;br /&gt;
    END&lt;br /&gt;
  NEXT HERE&lt;br /&gt;
&lt;br /&gt;
* Check if we are running this - if so we delete first two&lt;br /&gt;
  IF UPCASE(BITE&amp;lt;1&amp;gt;) EQ &amp;#039;RUN&amp;#039; THEN&lt;br /&gt;
    DEL BITE&amp;lt;1&amp;gt;&lt;br /&gt;
    DEL BITE&amp;lt;1&amp;gt;&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
* Delete the verb&lt;br /&gt;
  DEL BITE&amp;lt;1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Get the file, checking for DICT before file name&lt;br /&gt;
  NAME = BITE&amp;lt;1&amp;gt;&lt;br /&gt;
  DEL BITE&amp;lt;1&amp;gt;&lt;br /&gt;
  READ VREC FROM VOC, NAME ELSE VREC = &amp;#039;&amp;#039;&lt;br /&gt;
  IF VREC&amp;lt;1&amp;gt;[1,1] EQ &amp;#039;K&amp;#039; AND VREC&amp;lt;2&amp;gt; EQ DICTK THEN&lt;br /&gt;
    NAME = BITE&amp;lt;1&amp;gt;&lt;br /&gt;
    DEL BITE&amp;lt;1&amp;gt;&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
* Get the item we want to display or amend or create&lt;br /&gt;
  ITEM = BITE&amp;lt;1&amp;gt;&lt;br /&gt;
  DEL BITE&amp;lt;1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If we don&amp;#039;t have an item, show help&lt;br /&gt;
  IF ITEM EQ &amp;#039;&amp;#039; THEN&lt;br /&gt;
    CRT&lt;br /&gt;
    CRT &amp;#039; SYNTAX: MAKEDICT [DICT] FILE ITEM [OPTIONS] [OVERWRITING]&amp;#039;&lt;br /&gt;
    CRT&lt;br /&gt;
    CRT &amp;#039;OPTIONS: Each option is followed by a string defining it&amp;#039;&lt;br /&gt;
    CRT&lt;br /&gt;
    CRT &amp;#039;   AS   - Dictionary type (A, S, D, I or V)&amp;#039;&lt;br /&gt;
    CRT &amp;#039;   LNUM - Attribute number (A, S, and D types)&amp;#039;&lt;br /&gt;
    CRT &amp;#039;   CALC - I-type (I,V) or correlative (A,S,D)&amp;#039;&lt;br /&gt;
    CRT &amp;#039;   CONV - Conversion&amp;#039;&lt;br /&gt;
    CRT &amp;#039;   FMT  - length and Justification    &amp;#039;&lt;br /&gt;
    CRT &amp;#039;   ASSOC - Associated multivalue string&amp;#039;&lt;br /&gt;
    CRT &amp;#039;   MULTI-VALUE  - M or Y for multivalues, otherwise single&amp;#039;&lt;br /&gt;
    CRT &amp;#039;   DISPLAY.NAME - Column heading for reports&amp;#039;&lt;br /&gt;
    CRT&lt;br /&gt;
    CRT &amp;#039;   OVERWRITING means that changes are made without prompting&amp;#039;&lt;br /&gt;
    CRT&lt;br /&gt;
    STOP&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  OPEN &amp;#039;DICT&amp;#039;,NAME TO DFIL ELSE&lt;br /&gt;
    CRT &amp;#039;Cannot open dictionary of file &amp;quot;&amp;#039;:NAME:&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
    STOP&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  READ DREC FROM DFIL, ITEM ELSE DREC = &amp;#039;&amp;#039;&lt;br /&gt;
  ORIG = DREC&lt;br /&gt;
  TYPE = TRIM(DREC&amp;lt;1&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* See if we just want to look at it&lt;br /&gt;
  IF BITE EQ &amp;#039;&amp;#039; THEN&lt;br /&gt;
    GOSUB SHOWDICT&lt;br /&gt;
    STOP&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
* Initialise the bits and bobs&lt;br /&gt;
  TYPE = &amp;#039;&amp;#039;&lt;br /&gt;
  LNUM = &amp;#039;&amp;#039;&lt;br /&gt;
  CALC = &amp;#039;&amp;#039;&lt;br /&gt;
  CONV = &amp;#039;&amp;#039;&lt;br /&gt;
  DISP = &amp;#039;&amp;#039;&lt;br /&gt;
  FORM = &amp;#039;&amp;#039;&lt;br /&gt;
  MULT = &amp;#039;&amp;#039;&lt;br /&gt;
  ASSO = &amp;#039;&amp;#039;&lt;br /&gt;
  OVER = @FALSE&lt;br /&gt;
&lt;br /&gt;
* Process the input&lt;br /&gt;
*&lt;br /&gt;
  ACNT = DCOUNT(BITE,@AM)&lt;br /&gt;
  FOR ANUM = 1 TO ACNT&lt;br /&gt;
    WORD = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
    READ VREC FROM VOC, WORD ELSE CONTINUE&lt;br /&gt;
    IF UPCASE(TRIM(VREC&amp;lt;1&amp;gt;)[1,1]) NE &amp;#039;K&amp;#039; THEN CONTINUE&lt;br /&gt;
    THIS = TRIM(VREC&amp;lt;2&amp;gt;)&lt;br /&gt;
    BEGIN CASE&lt;br /&gt;
      CASE THIS EQ TYPEK&lt;br /&gt;
        ANUM += 1 ; TYPE = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        TEST = UPCASE(TRIM(TYPE))[1,1]&lt;br /&gt;
        IF NOT(TEST MATCHES &amp;#039;1A&amp;#039;) THEN&lt;br /&gt;
          CRT &amp;#039;&amp;quot;&amp;#039;:TYPE:&amp;#039;&amp;quot; is an invalid Type&amp;#039;&lt;br /&gt;
          STOP&lt;br /&gt;
        END&lt;br /&gt;
        IF NOT(INDEX(&amp;#039;ADISV&amp;#039;,TEST,1)) THEN&lt;br /&gt;
          CRT &amp;#039;&amp;quot;&amp;#039;:TYPE:&amp;#039;&amp;quot; is a wrong Type&amp;#039;; STOP&lt;br /&gt;
        END&lt;br /&gt;
      CASE THIS EQ LNUMK&lt;br /&gt;
        ANUM += 1; LNUM = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        IF NOT(LNUM MATCHES &amp;#039;1[[N0N]]&amp;#039;) AND LNUM THEN&lt;br /&gt;
          CRT &amp;#039;&amp;quot;&amp;#039;:LNUM:&amp;#039;&amp;quot; is an invalid number&amp;#039;&lt;br /&gt;
          STOP&lt;br /&gt;
        END&lt;br /&gt;
      CASE THIS EQ CALCK&lt;br /&gt;
        ANUM += 1; CALC = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        IF CALC EQ &amp;#039;&amp;#039; THEN CALC = @AM&lt;br /&gt;
      CASE THIS EQ CONVK&lt;br /&gt;
        ANUM += 1; CONV = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        IF CONV EQ &amp;#039;&amp;#039; THEN CONV = @FM&lt;br /&gt;
      CASE THIS EQ DISPK&lt;br /&gt;
        ANUM += 1; DISP = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        IF DISP EQ &amp;#039;&amp;#039; THEN DISP = @AM&lt;br /&gt;
      CASE THIS EQ FORMK&lt;br /&gt;
        ANUM += 1; FORM = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        GOOD = @FALSE&lt;br /&gt;
        IF FORM MATCHES &amp;quot;0[[N1X]]&amp;#039;L&amp;#039;0X&amp;quot; THEN GOOD = @TRUE&lt;br /&gt;
        IF FORM MATCHES &amp;quot;0[[N1X]]&amp;#039;R&amp;#039;0X&amp;quot; THEN GOOD = @TRUE&lt;br /&gt;
        IF FORM MATCHES &amp;quot;0[[N1X]]&amp;#039;T&amp;#039;0X&amp;quot; THEN GOOD = @TRUE&lt;br /&gt;
        IF FORM MATCHES &amp;quot;0N&amp;#039;L&amp;#039;0X&amp;quot; THEN GOOD = @TRUE&lt;br /&gt;
        IF FORM MATCHES &amp;quot;0N&amp;#039;R&amp;#039;0X&amp;quot; THEN GOOD = @TRUE&lt;br /&gt;
        IF FORM MATCHES &amp;quot;0N&amp;#039;T&amp;#039;0X&amp;quot; THEN GOOD = @TRUE&lt;br /&gt;
        IF FORM MATCHES &amp;quot;&amp;#039;X&amp;#039;0[[N0X]]&amp;quot; THEN GOOD = @TRUE&lt;br /&gt;
        IF NOT(GOOD) THEN&lt;br /&gt;
          CRT &amp;#039;&amp;quot;&amp;#039;:FORM:&amp;#039;&amp;quot; is an invalid Format&amp;#039;&lt;br /&gt;
          STOP&lt;br /&gt;
        END&lt;br /&gt;
      CASE THIS EQ MULTK&lt;br /&gt;
        ANUM += 1 ; MULT = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        MULT = UPCASE(TRIM(MULT))[1,1]&lt;br /&gt;
        IF MULT EQ &amp;#039;M&amp;#039; OR MULT EQ &amp;#039;Y&amp;#039;&lt;br /&gt;
          THEN MULT = &amp;#039;M&amp;#039;&lt;br /&gt;
          ELSE MULT = &amp;#039;S&amp;#039;&lt;br /&gt;
      CASE THIS EQ ASSOK&lt;br /&gt;
        ANUM += 1; ASSO = BITE&amp;lt;ANUM&amp;gt;&lt;br /&gt;
        IF ASSO = &amp;#039;&amp;#039; THEN ASSO = @AM&lt;br /&gt;
      CASE THIS EQ OVERK&lt;br /&gt;
        OVER = @TRUE&lt;br /&gt;
    END CASE&lt;br /&gt;
  NEXT ANUM&lt;br /&gt;
&lt;br /&gt;
* Change whatever we want to&lt;br /&gt;
*&lt;br /&gt;
  IF TYPE NE &amp;#039;&amp;#039; THEN DREC&amp;lt;1&amp;gt; = TYPE&lt;br /&gt;
  THIS = UPCASE(TRIM(DREC&amp;lt;1,1&amp;gt;))[1,1]&lt;br /&gt;
  BEGIN CASE&lt;br /&gt;
    CASE THIS EQ &amp;#039;I&amp;#039; OR THIS EQ &amp;#039;V&amp;#039;&lt;br /&gt;
      IF CALC NE &amp;#039;&amp;#039; THEN THAT = CALC; PART = 2; GOSUB REPLACE&lt;br /&gt;
      IF CONV NE &amp;#039;&amp;#039; THEN THAT = CONV; PART = 3; GOSUB REPLACE&lt;br /&gt;
      IF DISP NE &amp;#039;&amp;#039; THEN THAT = DISP; PART = 4; GOSUB REPLACE&lt;br /&gt;
      IF FORM NE &amp;#039;&amp;#039; THEN DREC&amp;lt;5&amp;gt; = FORM&lt;br /&gt;
      IF MULT NE &amp;#039;&amp;#039; THEN DREC&amp;lt;6&amp;gt; = MULT&lt;br /&gt;
      IF ASSO NE &amp;#039;&amp;#039; THEN THAT = ASSO; PART = 7; GOSUB REPLACE&lt;br /&gt;
    CASE THIS EQ &amp;#039;D&amp;#039;&lt;br /&gt;
      IF LNUM NE &amp;#039;&amp;#039; THEN DREC&amp;lt;2&amp;gt; = LNUM&lt;br /&gt;
      IF CONV NE &amp;#039;&amp;#039; THEN THAT = CONV; PART = 3; GOSUB REPLACE&lt;br /&gt;
      IF DISP NE &amp;#039;&amp;#039; THEN THAT = DISP; PART = 4; GOSUB REPLACE&lt;br /&gt;
      IF FORM NE &amp;#039;&amp;#039; THEN DREC&amp;lt;5&amp;gt; = FORM&lt;br /&gt;
      IF MULT NE &amp;#039;&amp;#039; THEN DREC&amp;lt;6&amp;gt; = MULT&lt;br /&gt;
      IF ASSO NE &amp;#039;&amp;#039; THEN THAT = ASSO; PART = 7; GOSUB REPLACE&lt;br /&gt;
    CASE THIS EQ &amp;#039;A&amp;#039; OR THIS EQ &amp;#039;S&amp;#039;&lt;br /&gt;
      IF LNUM NE &amp;#039;&amp;#039; THEN DREC&amp;lt;2&amp;gt; = LNUM&lt;br /&gt;
      IF DISP NE &amp;#039;&amp;#039; THEN THAT = DISP; PART = 3; GOSUB REPLACE&lt;br /&gt;
      IF ASSO NE &amp;#039;&amp;#039; THEN THAT = ASSO; PART = 4; GOSUB REPLACE&lt;br /&gt;
      IF CONV NE &amp;#039;&amp;#039; THEN THAT = CONV; PART = 7; GOSUB REPLACE&lt;br /&gt;
      IF CALC NE &amp;#039;&amp;#039; THEN THAT = CALC; PART = 8; GOSUB REPLACE&lt;br /&gt;
      IF FORM NE &amp;#039;&amp;#039; THEN&lt;br /&gt;
        GOOD = @FALSE&lt;br /&gt;
        TEST = OCONV(FORM,&amp;#039;MCA&amp;#039;)&lt;br /&gt;
        IF TEST EQ &amp;#039;R&amp;#039; OR TEST EQ &amp;#039;L&amp;#039; OR TEST EQ &amp;#039;T&amp;#039; THEN&lt;br /&gt;
          NUMB = FIELD(FORM,TEST,1)&lt;br /&gt;
          IF NUMB EQ &amp;#039;&amp;#039; THEN NUMB = FIELD(FORM,TEST,2)&lt;br /&gt;
          IF NUMB MATCHES &amp;#039;1[[N0N]]&amp;#039; THEN&lt;br /&gt;
            DREC&amp;lt;9&amp;gt; = TEST&lt;br /&gt;
            DREC&amp;lt;10&amp;gt; = NUMB&lt;br /&gt;
            GOOD = @TRUE&lt;br /&gt;
          END&lt;br /&gt;
        END&lt;br /&gt;
        IF NOT(GOOD) THEN&lt;br /&gt;
          CRT &amp;#039;&amp;quot;&amp;#039;:FORM:&amp;#039;&amp;quot; is an invalid Format&amp;#039;&lt;br /&gt;
          STOP&lt;br /&gt;
        END&lt;br /&gt;
      END&lt;br /&gt;
    CASE 1&lt;br /&gt;
      CRT &amp;#039;Cannot find type &amp;#039;:DREC&amp;lt;1&amp;gt;&lt;br /&gt;
      STOP&lt;br /&gt;
  END CASE&lt;br /&gt;
&lt;br /&gt;
  IF ORIG EQ DREC THEN&lt;br /&gt;
    CRT &amp;#039;Nothing Changed&amp;#039;&lt;br /&gt;
    STOP&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  IF OVER THEN&lt;br /&gt;
    WRITE DREC ON DFIL, ITEM&lt;br /&gt;
    CRT &amp;#039;Changes made&amp;#039;&lt;br /&gt;
    STOP&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  GOSUB SHOWDICT&lt;br /&gt;
  CRT&lt;br /&gt;
  CRT &amp;#039;OK to update this?&amp;#039;:&lt;br /&gt;
  INPUT ANSW&lt;br /&gt;
  ANSW = UPCASE(TRIM(ANSW))[1,1]&lt;br /&gt;
  IF ANSW EQ &amp;#039;Y&amp;#039; THEN WRITE DREC ON DFIL, ITEM&lt;br /&gt;
&lt;br /&gt;
  STOP&lt;br /&gt;
&lt;br /&gt;
************&lt;br /&gt;
* Subroutines&lt;br /&gt;
*************&lt;br /&gt;
SHOWDICT:&lt;br /&gt;
  CRT&lt;br /&gt;
  CRT NAME,ITEM,&amp;#039; &amp;#039;:&lt;br /&gt;
  THIS = UPCASE(TRIM(DREC&amp;lt;1&amp;gt;))[1,1]&lt;br /&gt;
  BEGIN CASE&lt;br /&gt;
    CASE DREC EQ &amp;#039;&amp;#039;&lt;br /&gt;
      CRT &amp;#039;Dictionary is empty&amp;#039;&lt;br /&gt;
    CASE THIS = &amp;#039;I&amp;#039; OR THIS EQ &amp;#039;V&amp;#039;&lt;br /&gt;
      CRT &amp;#039;I-type&amp;#039;&lt;br /&gt;
      CRT &amp;#039; TYPE: &amp;#039;:DREC&amp;lt;1&amp;gt;&lt;br /&gt;
      CRT &amp;#039;ITYPE: &amp;#039;:DREC&amp;lt;2&amp;gt;&lt;br /&gt;
      CRT &amp;#039; CONV: &amp;#039;:DREC&amp;lt;3&amp;gt;&lt;br /&gt;
      CRT &amp;#039; NAME: &amp;#039;:DREC&amp;lt;4&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  FMT: &amp;#039;:DREC&amp;lt;5&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  S[[/M]]: &amp;#039;:DREC&amp;lt;6&amp;gt;&lt;br /&gt;
      CRT &amp;#039;ASSOC: &amp;#039;:DREC&amp;lt;7&amp;gt;&lt;br /&gt;
    CASE THIS EQ &amp;#039;D&amp;#039;&lt;br /&gt;
      CRT &amp;#039;Prime style&amp;#039;&lt;br /&gt;
      CRT &amp;#039; TYPE: &amp;#039;:DREC&amp;lt;1&amp;gt;&lt;br /&gt;
      CRT &amp;#039; ATTR: &amp;#039;:DREC&amp;lt;2&amp;gt;&lt;br /&gt;
      CRT &amp;#039; CONV: &amp;#039;:DREC&amp;lt;3&amp;gt;&lt;br /&gt;
      CRT &amp;#039; NAME: &amp;#039;:DREC&amp;lt;4&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  FMT: &amp;#039;:DREC&amp;lt;5&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  S[[/M]]: &amp;#039;:DREC&amp;lt;6&amp;gt;&lt;br /&gt;
      CRT &amp;#039;ASSOC: &amp;#039;:DREC&amp;lt;7&amp;gt;&lt;br /&gt;
    CASE THIS EQ &amp;#039;A&amp;#039; OR TYPE EQ &amp;#039;S&amp;#039;&lt;br /&gt;
      CRT &amp;#039;Pick style&amp;#039;&lt;br /&gt;
      CRT &amp;#039;  TYPE: &amp;#039;:DREC&amp;lt;1&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  ATTR: &amp;#039;:DREC&amp;lt;2&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  NAME: &amp;#039;:DREC&amp;lt;3&amp;gt;&lt;br /&gt;
      CRT &amp;#039; ASSOC: &amp;#039;:DREC&amp;lt;4&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  CONV: &amp;#039;:DREC&amp;lt;7&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  CORR: &amp;#039;:DREC&amp;lt;8&amp;gt;&lt;br /&gt;
      CRT &amp;#039;  JUST: &amp;#039;:DREC&amp;lt;9&amp;gt;&lt;br /&gt;
      CRT &amp;#039;LENGTH: &amp;#039;:DREC&amp;lt;10&amp;gt;&lt;br /&gt;
    CASE 1&lt;br /&gt;
      CRT &amp;#039;UNKNOWN DICTIONARY TYPE&amp;#039;&lt;br /&gt;
      ACNT = DCOUNT(DREC,@AM)&lt;br /&gt;
      IF ACNT GT 12 THEN ACNT = 12&lt;br /&gt;
      FOR ANUM = 1 TO ACNT&lt;br /&gt;
        CRT ACNT &amp;#039;R#3&amp;#039;:&amp;#039; &amp;#039;:OCONV(DREC&amp;lt;ANUM&amp;gt;,&amp;#039;MCP&amp;#039;)&lt;br /&gt;
      NEXT ANUM&lt;br /&gt;
  END CASE&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
REPLACE:&lt;br /&gt;
* The @AM is to allow a field to be nulled&lt;br /&gt;
  IF THAT EQ @AM&lt;br /&gt;
    THEN DREC&amp;lt;PART&amp;gt; = &amp;#039;&amp;#039;&lt;br /&gt;
    ELSE DREC&amp;lt;PART&amp;gt; = THAT&lt;br /&gt;
  RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>