<?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=Cruise</id>
	<title>Cruise - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=Cruise"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=Cruise&amp;action=history"/>
	<updated>2026-04-28T23:43:09Z</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=Cruise&amp;diff=1674&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=Cruise&amp;diff=1674&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:54Z</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;      * Display file entries like REVISE does (using file&amp;#039;s DICT)&lt;br /&gt;
      * Written by Will Johnson&lt;br /&gt;
      * BE SURE TO INSTALL THE TCL.II INCLUDE BEFORE TRYING TO COMPILE THIS!&lt;br /&gt;
      *&lt;br /&gt;
      * Apply conversions if any to each multi-value&lt;br /&gt;
      * Use DICT VOC to control DICTs if specified&lt;br /&gt;
      * Don&amp;#039;t display multi-value only fields&lt;br /&gt;
      * Use MCP to suppress non-printables&lt;br /&gt;
      * Allow edit as a command&lt;br /&gt;
      * Allow exploding one multi-valued field&lt;br /&gt;
      *&lt;br /&gt;
      EQUATE FALSE TO 0, TRUE TO 1&lt;br /&gt;
      TEST.MODE = FALSE&lt;br /&gt;
      $INCLUDE FFT.BP TCL.II&lt;br /&gt;
      GOSUB OPEN.FILES&lt;br /&gt;
      GOSUB GET.ITEMLIST&lt;br /&gt;
      GOSUB BUILD.DICT.TABLE&lt;br /&gt;
      IF TEST.MODE THEN GOSUB DISPLAY.DICT.TABLE&lt;br /&gt;
      FOR I.DICT.TABLE = 1 TO S.DICT.TABLE&lt;br /&gt;
         T.LABEL = DICT.TABLE&amp;lt;1,I.DICT.TABLE&amp;gt;&lt;br /&gt;
         IF T.LABEL = &amp;#039;&amp;#039; THEN T.LABEL = &amp;quot;&amp;lt;NO LABEL&amp;gt;&amp;quot;&lt;br /&gt;
      NEXT I.DICT.TABLE&lt;br /&gt;
      GOSUB PROCESS.RECORDS&lt;br /&gt;
      STOP&lt;br /&gt;
      *&lt;br /&gt;
      OPEN.FILES:&lt;br /&gt;
      OPEN &amp;#039;VOC&amp;#039; TO F.VOC ELSE&lt;br /&gt;
         N.OFE = &amp;#039;VOC&amp;#039; ; GOSUB OPEN.FILE.ERROR&lt;br /&gt;
      END&lt;br /&gt;
      K.VOC = &amp;quot;[[F2R]]&amp;quot;&lt;br /&gt;
      READ EXISTS FROM F.VOC,K.VOC ELSE&lt;br /&gt;
         R.VOC = &amp;quot;D&amp;quot;:@AM:&amp;quot;2&amp;quot;:@AM:@AM:&amp;quot;3R&amp;quot;:@AM:&amp;quot;S&amp;quot;&lt;br /&gt;
         WRITE R.VOC ON F.VOC,K.VOC&lt;br /&gt;
      END&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      OPEN.FILE.ERROR:&lt;br /&gt;
      PRINT &amp;#039;Cannot open file &amp;#039;:N.OFE:&amp;#039;. Hit ENTER&amp;#039;:&lt;br /&gt;
      INPUT CONT ; STOP&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      GET.ITEMLIST:&lt;br /&gt;
      WORD.COUNT = DCOUNT(TRIMB(SENTENCE),&amp;#039; &amp;#039;)&lt;br /&gt;
      LAST.WORD = FIELD(TRIMB(SENTENCE),&amp;#039; &amp;#039;,WORD.COUNT)&lt;br /&gt;
      IF LAST.WORD[1,1] = &amp;#039;(&amp;#039; THEN&lt;br /&gt;
         OPTIONS.EXIST = TRUE ; OPTIONS = LAST.WORD[2,LEN(LAST.WORD)]&lt;br /&gt;
         WORD.COUNT -= 1&lt;br /&gt;
      END ELSE OPTIONS.EXIST = FALSE ; OPTIONS = &amp;#039;&amp;#039;&lt;br /&gt;
      IF C.WORD &amp;lt; WORD.COUNT THEN&lt;br /&gt;
         ITEM.SPECIFIED = TRUE&lt;br /&gt;
         SELECT.LIST = FALSE ; GROUPCODE = &amp;quot;G&amp;quot;:(C.WORD-1):&amp;quot; 99&amp;quot;&lt;br /&gt;
         ITEM.LIST = OCONV(SENTENCE,GROUPCODE)&lt;br /&gt;
         CONVERT &amp;quot;&amp;#039;&amp;quot; TO &amp;quot;&amp;quot; IN ITEM.LIST&lt;br /&gt;
         CONVERT &amp;quot; &amp;quot; TO @AM IN ITEM.LIST&lt;br /&gt;
      END ELSE&lt;br /&gt;
         ITEM.SPECIFIED = FALSE&lt;br /&gt;
         READLIST LISTEXISTS THEN&lt;br /&gt;
            SELECT.LIST = TRUE ; SELECT LISTEXISTS&lt;br /&gt;
         END ELSE SELECT.LIST = FALSE&lt;br /&gt;
      END&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      * Select the DICT of the target file, or if already a DICT&lt;br /&gt;
      * then select the DICT VOC file, sorting it by field number&lt;br /&gt;
      * Then for each dict entry, if it&amp;#039;s a D type and it&amp;#039;s not the key&lt;br /&gt;
      *  to the file, and we haven&amp;#039;t found a definition for this field&lt;br /&gt;
      *  number before then: we add the label to the field number&lt;br /&gt;
      *  position in the table line 1, and the conversion (if any) to&lt;br /&gt;
      *  the field number position in the table line 2.&lt;br /&gt;
      *&lt;br /&gt;
      BUILD.DICT.TABLE:&lt;br /&gt;
      IF DICT.FLAG THEN CMD = &amp;quot;VOC&amp;quot; ELSE CMD = N.FILE&lt;br /&gt;
      CMD = &amp;quot;SSELECT DICT &amp;quot;:CMD:&amp;quot; BY [[F2R]]&amp;quot;&lt;br /&gt;
      EXECUTE CMD, SELECT &amp;gt; DICT.LIST&lt;br /&gt;
      DICT.TABLE = &amp;#039;&amp;#039; ; DONE = FALSE ; LABEL.WIDTH = 0&lt;br /&gt;
      LOOP&lt;br /&gt;
         READNEXT DK.FILE FROM DICT.LIST ELSE DONE = TRUE&lt;br /&gt;
      UNTIL DONE DO&lt;br /&gt;
         READ DR.FILE FROM DF.FILE, DK.FILE THEN&lt;br /&gt;
            DICT.TYPE = DR.FILE&amp;lt;1&amp;gt;&lt;br /&gt;
            IF DICT.TYPE[1,1] = &amp;#039;D&amp;#039; THEN&lt;br /&gt;
               IF NUM(DR.FILE&amp;lt;2&amp;gt;) AND DR.FILE&amp;lt;2&amp;gt; &amp;gt; 0 THEN&lt;br /&gt;
                  IF DICT.TABLE&amp;lt;2,DR.FILE&amp;lt;2&amp;gt;&amp;gt; = &amp;#039;&amp;#039; THEN&lt;br /&gt;
                     T.LABEL = DR.FILE&amp;lt;4&amp;gt;&lt;br /&gt;
                     CONVERT @VM TO &amp;#039; &amp;#039; IN T.LABEL&lt;br /&gt;
                     T.LABEL = TRIM(T.LABEL)&lt;br /&gt;
                     IF T.LABEL = &amp;#039;&amp;#039; THEN T.LABEL = DK.FILE&lt;br /&gt;
                     DICT.TABLE&amp;lt;1,DR.FILE&amp;lt;2&amp;gt;&amp;gt; = T.LABEL&lt;br /&gt;
                     L.LABEL = LEN(T.LABEL)&lt;br /&gt;
                     IF L.LABEL &amp;gt; LABEL.WIDTH THEN LABEL.WIDTH = L.LABEL&lt;br /&gt;
                     DICT.TABLE&amp;lt;2,DR.FILE&amp;lt;2&amp;gt;&amp;gt; = DR.FILE&amp;lt;3&amp;gt;&lt;br /&gt;
                  END&lt;br /&gt;
                  IF DR.FILE&amp;lt;7&amp;gt; # &amp;quot;&amp;quot; THEN&lt;br /&gt;
                     DICT.TABLE&amp;lt;3,DR.FILE&amp;lt;2&amp;gt;&amp;gt; = DR.FILE&amp;lt;7&amp;gt;&lt;br /&gt;
                  END&lt;br /&gt;
                  DICT.TABLE&amp;lt;4,DR.FILE&amp;lt;2&amp;gt;&amp;gt; = DK.FILE&lt;br /&gt;
               END&lt;br /&gt;
            END&lt;br /&gt;
         END&lt;br /&gt;
      REPEAT&lt;br /&gt;
      IF LABEL.WIDTH&amp;lt;10 THEN LABEL.WIDTH=10        ; *set min label wdt&lt;br /&gt;
      IF LABEL.WIDTH&amp;gt;35 THEN LABEL.WIDTH=35        ; *set max label wdt&lt;br /&gt;
      LEFT.JUST = &amp;quot;L#&amp;quot;:LABEL.WIDTH ; RIGHT.JUST = &amp;quot;R#&amp;quot;:LABEL.WIDTH&lt;br /&gt;
      S.DICT.TABLE = DCOUNT(DICT.TABLE&amp;lt;1&amp;gt;,@VM)&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      DISPLAY.DICT.TABLE:&lt;br /&gt;
      PRINT &amp;quot;NUM&amp;quot;:&amp;quot; &amp;quot;:&amp;quot;FIELD DESC&amp;quot; (&amp;quot;L#&amp;quot;:LABEL.WIDTH):&amp;quot; &amp;quot;:&lt;br /&gt;
      PRINT &amp;quot;CONVERSION&amp;quot;:&amp;quot; &amp;quot;:&amp;quot;ASSOCIATION&amp;quot;&lt;br /&gt;
      FOR I.DICT.TABLE = 1 TO S.DICT.TABLE&lt;br /&gt;
         GOSUB DISPLAY.A.DICT.ENTRY&lt;br /&gt;
      NEXT I.DICT.TABLE&lt;br /&gt;
      PRINT &amp;quot;Hit ENTER. &amp;quot;: ; INPUT CONT&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      DISPLAY.A.DICT.ENTRY:&lt;br /&gt;
      PRINT I.DICT.TABLE&amp;quot;R%3&amp;quot;:&amp;quot; &amp;quot;:&lt;br /&gt;
      PRINT DICT.TABLE&amp;lt;1,I.DICT.TABLE&amp;gt; (&amp;quot;L#&amp;quot;:LABEL.WIDTH):&amp;quot; &amp;quot;:&lt;br /&gt;
      PRINT DICT.TABLE&amp;lt;2,I.DICT.TABLE&amp;gt;&amp;quot;L#8&amp;quot;:&amp;quot; &amp;quot;:&lt;br /&gt;
      PRINT DICT.TABLE&amp;lt;3,I.DICT.TABLE&amp;gt;&amp;quot;L#12&amp;quot;:&amp;quot; &amp;quot;:&lt;br /&gt;
      IF DICT.TABLE&amp;lt;4,I.DICT.TABLE&amp;gt; = &amp;#039;&amp;#039; THEN&lt;br /&gt;
         PRINT&lt;br /&gt;
      END ELSE&lt;br /&gt;
         PRINT DICT.TABLE&amp;lt;4,I.DICT.TABLE&amp;gt;&lt;br /&gt;
      END&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      PROCESS.RECORDS:&lt;br /&gt;
      IF TEST.MODE THEN&lt;br /&gt;
         IF SELECT.LIST THEN PRINT &amp;quot;SELECT &amp;quot;: ELSE PRINT &amp;quot;NO SELECT &amp;quot;:&lt;br /&gt;
         PRINT &amp;quot;LIST ACTIVE.  HIT ENTER&amp;quot;: ; INPUT CONT&lt;br /&gt;
      END&lt;br /&gt;
      BEGIN CASE&lt;br /&gt;
         CASE SELECT.LIST ; NULL&lt;br /&gt;
         CASE ITEM.SPECIFIED ; SELECT ITEM.LIST&lt;br /&gt;
         CASE 1 ; SELECT F.FILE&lt;br /&gt;
      END CASE&lt;br /&gt;
      DONE = FALSE&lt;br /&gt;
      LOOP&lt;br /&gt;
         READNEXT K.FILE ELSE DONE = TRUE&lt;br /&gt;
      UNTIL DONE DO&lt;br /&gt;
      REREAD:&lt;br /&gt;
         READ R.FILE FROM F.FILE,K.FILE THEN&lt;br /&gt;
            PRINT @(-1): N.FILE:&amp;#039; &amp;#039;:K.FILE:&amp;#039; &amp;#039;:@LOGNAME&lt;br /&gt;
            S.FILE = DCOUNT(R.FILE,@AM) ; GOSUB PROCESS.ONE.RECORD&lt;br /&gt;
            IF UPCASE(FIELD(@LOGNAME,&amp;#039;\&amp;#039;,2)) = &amp;quot;W.JOHNSON&amp;quot; THEN&lt;br /&gt;
               PRINT &amp;#039;ENTER for next rec, E TO Edit, H for Help,&amp;#039;:&lt;br /&gt;
               PRINT &amp;#039; Q to stop, # to expand &amp;#039;:&lt;br /&gt;
               INPUT CONT&lt;br /&gt;
               BEGIN CASE&lt;br /&gt;
                  CASE CONT = &amp;#039;Q&amp;#039;&lt;br /&gt;
                     CLEARSELECT ; STOP&lt;br /&gt;
                  CASE NUM(CONT)&lt;br /&gt;
                     BEGIN CASE&lt;br /&gt;
                        CASE CONT &amp;lt; 1 ; NULL&lt;br /&gt;
                        CASE CONT &amp;gt; S.FILE ; NULL&lt;br /&gt;
                        CASE CONT # INT(CONT) ; NULL&lt;br /&gt;
                        CASE 1 ; GOSUB EXPAND.FIELD&lt;br /&gt;
                     END CASE&lt;br /&gt;
                  CASE CONT = &amp;#039;E&amp;#039;&lt;br /&gt;
                     EXECUTE &amp;quot;ED &amp;quot;:N.FILE:&amp;quot; &amp;quot;:K.FILE&lt;br /&gt;
                     GO REREAD&lt;br /&gt;
                  CASE CONT = &amp;#039;H&amp;#039;&lt;br /&gt;
                     GOSUB HELP&lt;br /&gt;
               END CASE&lt;br /&gt;
            END&lt;br /&gt;
         END&lt;br /&gt;
      REPEAT&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      * Don&amp;#039;t show me anything for fields with nothing in them. However:&lt;br /&gt;
      * If I have a field with something in it and NO corresponding&lt;br /&gt;
      *  Dict entry, then we show &amp;#039;&amp;lt;no label&amp;gt;&amp;#039; on that line.&lt;br /&gt;
      * So the size I walk through, is the size of the record itself&lt;br /&gt;
      * not the size of the Dict table I&amp;#039;ve here built.&lt;br /&gt;
      *&lt;br /&gt;
      * Don&amp;#039;t show fields composed only of value-marks&lt;br /&gt;
      * Suppress non-printables, but tell me when I&amp;#039;ve done that&lt;br /&gt;
      PROCESS.ONE.RECORD:&lt;br /&gt;
      EXPLODE = FALSE&lt;br /&gt;
      FOR I.DICT.TABLE = 1 TO S.FILE&lt;br /&gt;
         GOSUB PROCESS.ONE.FIELD&lt;br /&gt;
      NEXT I.DICT.TABLE&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      PROCESS.ONE.FIELD:&lt;br /&gt;
      T.FILE = R.FILE&amp;lt;I.DICT.TABLE&amp;gt;&lt;br /&gt;
      * SKIP FIELD IF EMPTY OR ONLY VMS&lt;br /&gt;
      IF CONVERT(@VM,&amp;#039;&amp;#039;,T.FILE) = &amp;#039;&amp;#039; THEN RETURN&lt;br /&gt;
      *&lt;br /&gt;
      IF EXPLODE THEN GOSUB DISPLAY.A.DICT.ENTRY&lt;br /&gt;
      GOSUB OUTPUT.LABEL&lt;br /&gt;
      GOSUB CONVERT.OUTPUT&lt;br /&gt;
      GOSUB SUPPRESS.CONTROL.CHARS&lt;br /&gt;
      *&lt;br /&gt;
      IF EXPLODE THEN&lt;br /&gt;
         CONVERT &amp;quot;_&amp;quot; TO @VM IN T.OUTPUT&lt;br /&gt;
         VALUE.WIDTH = 78-LABEL.WIDTH&lt;br /&gt;
         SPACE.PAD = SPACE(LABEL.WIDTH)&lt;br /&gt;
         S.T.OUTPUT = DCOUNT(T.OUTPUT,@VM)&lt;br /&gt;
         PRINT T.OUTPUT&amp;lt;1,1&amp;gt;&lt;br /&gt;
         FOR I.T.OUTPUT = 2 TO S.T.OUTPUT&lt;br /&gt;
            T.T.OUTPUT = T.OUTPUT&amp;lt;1,I.T.OUTPUT&amp;gt;&lt;br /&gt;
            PRINT SPACE.PAD:&amp;quot; (&amp;quot;:I.DICT.TABLE&amp;quot;R%3&amp;quot;:&lt;br /&gt;
            PRINT &amp;quot;.&amp;quot;:I.T.OUTPUT&amp;quot;R%3&amp;quot;:&amp;quot;): &amp;quot;: T.T.OUTPUT&lt;br /&gt;
         NEXT I.T.OUTPUT&lt;br /&gt;
      END ELSE&lt;br /&gt;
         CONVERT &amp;quot;_&amp;quot; TO &amp;quot;]&amp;quot; IN T.OUTPUT&lt;br /&gt;
         VALUE.WIDTH = 78-(LABEL.WIDTH + 8)&lt;br /&gt;
         SPACE.PAD = SPACE(78-VALUE.WIDTH)&lt;br /&gt;
         T.OUTPUT = FOLD(T.OUTPUT,VALUE.WIDTH)&lt;br /&gt;
         S.T.OUTPUT = DCOUNT(T.OUTPUT,@AM)&lt;br /&gt;
         PRINT T.OUTPUT&amp;lt;1&amp;gt;&lt;br /&gt;
         FOR I.T.OUTPUT = 2 TO S.T.OUTPUT&lt;br /&gt;
            PRINT SPACE.PAD: T.OUTPUT&amp;lt;I.T.OUTPUT&amp;gt;&lt;br /&gt;
         NEXT I.T.OUTPUT&lt;br /&gt;
      END&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      OUTPUT.LABEL:&lt;br /&gt;
      T.LABEL = DICT.TABLE&amp;lt;1,I.DICT.TABLE&amp;gt;&lt;br /&gt;
      IF T.LABEL = &amp;#039;&amp;#039; THEN T.LABEL = &amp;#039;&amp;lt;no label&amp;gt;&amp;#039;&lt;br /&gt;
      IF LEN(T.LABEL) &amp;gt; LABEL.WIDTH THEN&lt;br /&gt;
         PRINT T.LABEL LEFT.JUST:&lt;br /&gt;
      END ELSE&lt;br /&gt;
         PRINT T.LABEL RIGHT.JUST:&lt;br /&gt;
      END&lt;br /&gt;
      IF EXPLODE THEN&lt;br /&gt;
         PRINT &amp;quot; (&amp;quot;:I.DICT.TABLE&amp;quot;R%3&amp;quot;:&amp;quot;.001&amp;quot;:&amp;quot;):&amp;quot;:&lt;br /&gt;
      END ELSE&lt;br /&gt;
         PRINT &amp;quot; (&amp;quot;:I.DICT.TABLE&amp;quot;R%3&amp;quot;:&amp;quot;):&amp;quot;:&lt;br /&gt;
      END&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      CONVERT.OUTPUT:&lt;br /&gt;
      T.CONV = DICT.TABLE&amp;lt;2,I.DICT.TABLE&amp;gt;&lt;br /&gt;
      S.T.FILE = DCOUNT(T.FILE,@VM) ; T.OUTPUT = &amp;#039;&amp;#039;&lt;br /&gt;
      FOR I.T.FILE = 1 TO S.T.FILE&lt;br /&gt;
         T.OUTPUT&amp;lt;1,I.T.FILE&amp;gt; = OCONV(T.FILE&amp;lt;1,I.T.FILE&amp;gt;,T.CONV)&lt;br /&gt;
      NEXT I.T.FILE&lt;br /&gt;
      CONVERT @VM TO &amp;quot;_&amp;quot; IN T.OUTPUT&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      SUPPRESS.CONTROL.CHARS:&lt;br /&gt;
      CT.OUTPUT = OCONV(T.OUTPUT,&amp;#039;MCP&amp;#039;)  ; *REM NON-PRINTABLES&lt;br /&gt;
      IF CT.OUTPUT = T.OUTPUT THEN PRINT &amp;quot; &amp;quot;: ELSE&lt;br /&gt;
         PRINT &amp;quot;.&amp;quot;: ; T.OUTPUT = CT.OUTPUT&lt;br /&gt;
      END&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      EXPAND.FIELD:&lt;br /&gt;
      EXPLODE = TRUE&lt;br /&gt;
      I.DICT.TABLE = CONT&lt;br /&gt;
      GOSUB PROCESS.ONE.FIELD&lt;br /&gt;
      PRINT &amp;#039;Hit ENTER, or Q TO STOP &amp;#039;: ; INPUT CONT&lt;br /&gt;
      IF CONT = &amp;#039;Q&amp;#039; THEN STOP&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
      HELP:&lt;br /&gt;
      PRINT &amp;quot;Help doesn&amp;#039;t yet work, press ENTER&amp;quot;: ; INPUT CONT&lt;br /&gt;
      RETURN&lt;br /&gt;
      *&lt;br /&gt;
   END&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>