<?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=PrePass</id>
	<title>PrePass - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=PrePass"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=PrePass&amp;action=history"/>
	<updated>2026-04-28T22:24:10Z</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=PrePass&amp;diff=2113&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=PrePass&amp;diff=2113&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 allows the non-U2 systems to use the same $DEFINE $UNDEFINE $IFDEF $IFNDEF $ELSE and $ENDIF compiler directives as U2 systems and QM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
      PROGRAM PREPASS&lt;br /&gt;
*&lt;br /&gt;
* Utility program to pre-pass programs to use the same $DEFN stuff&lt;br /&gt;
* as UNIVERSE UNIDATA and QM.  Note that the string &amp;#039;!@#$&amp;#039; used in&lt;br /&gt;
* the first four positions are removed as it does a pass.&lt;br /&gt;
*&lt;br /&gt;
* Keith Johnson&lt;br /&gt;
* The code is supplied on an as-is basis as a source-code resource.&lt;br /&gt;
* No representation whatever is made as to the operation of the program.&lt;br /&gt;
*&lt;br /&gt;
* This code SEEMS to run correctly, but I haven&amp;#039;t done a lot&lt;br /&gt;
* of checking.  The  variable THIS can be pre-set to your own&lt;br /&gt;
* system (For example, R83 or D3) so that you seem to always&lt;br /&gt;
* have &amp;quot;$DEFINE R83&amp;quot; or &amp;quot;$DEFINE D3&amp;quot; in your code.&lt;br /&gt;
*&lt;br /&gt;
* Added test of FIRST[1,1] being &amp;#039;#&amp;#039; to allow #DEFINE, etc.&lt;br /&gt;
* and added conversion &amp;#039;MCU&amp;#039; to allow #define, etc. (KRJ 12 Oct 2006)&lt;br /&gt;
*&lt;br /&gt;
* Fixed bugs BELL not defined, read from FILE should be INFILE&lt;br /&gt;
* Changed to write back to sam place (KRJ 11 July 2012)&lt;br /&gt;
&lt;br /&gt;
      GOOD = (1=1)&lt;br /&gt;
      EVIL = NOT(GOOD)&lt;br /&gt;
      BELL = CHAR(7)&lt;br /&gt;
&lt;br /&gt;
      PREF = &amp;#039;!@#$&amp;#039;&lt;br /&gt;
      THIS = &amp;#039;YOURSYSTEM&amp;#039;&lt;br /&gt;
      THAT = GOOD&lt;br /&gt;
      NUMT = 1&lt;br /&gt;
&lt;br /&gt;
      SHOW = GOOD&lt;br /&gt;
      LIST = &amp;#039;&amp;#039;&lt;br /&gt;
      NUML = 0&lt;br /&gt;
&lt;br /&gt;
      LOOP&lt;br /&gt;
         CRT &amp;#039;Enter file :&amp;#039;:&lt;br /&gt;
         INPUT FILE&lt;br /&gt;
         IF FILE EQ &amp;#039;&amp;#039; THEN CRT; STOP&lt;br /&gt;
         GAIN = EVIL&lt;br /&gt;
         OPEN FILE TO INFILE THEN GAIN = GOOD ELSE&lt;br /&gt;
            CRT BELL:&amp;#039; Cannot open the file &amp;#039;:FILE&lt;br /&gt;
         END&lt;br /&gt;
      UNTIL GAIN DO&lt;br /&gt;
      REPEAT&lt;br /&gt;
&lt;br /&gt;
      LOOP&lt;br /&gt;
         CRT &amp;#039;Enter item name :&amp;#039;:&lt;br /&gt;
         INPUT NAME&lt;br /&gt;
         IF NAME EQ &amp;#039;&amp;#039; THEN CRT; STOP&lt;br /&gt;
         GAIN = EVIL&lt;br /&gt;
         READ ITEM FROM INFILE, NAME THEN GAIN = GOOD ELSE&lt;br /&gt;
            CRT BELL:&amp;#039;  Cannot read item &amp;#039;:NAME&lt;br /&gt;
         END&lt;br /&gt;
      UNTIL GAIN DO&lt;br /&gt;
      REPEAT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      XXCNT = DCOUNT(ITEM,@AM)&lt;br /&gt;
      NEW1 = &amp;#039;&amp;#039;&lt;br /&gt;
      FOR XX = 1 TO XXCNT&lt;br /&gt;
         LINE = ITEM&amp;lt;XX&amp;gt;&lt;br /&gt;
         IF LINE[1,4] = PREF THEN LINE = LINE[5,99999]&lt;br /&gt;
         LIN = TRIM(LINE)&lt;br /&gt;
         FIRST = FIELD(LIN,&amp;#039; &amp;#039;,1)&lt;br /&gt;
         IF FIRST[1,1] = &amp;#039;$&amp;#039; or FIRST[1,1] = &amp;#039;#&amp;#039; THEN&lt;br /&gt;
            FIRST = &amp;#039;$&amp;#039;:OCONV(FIRST[2,99],&amp;#039;MCU&amp;#039;)&lt;br /&gt;
            GOSUB DOIT&lt;br /&gt;
         END ELSE&lt;br /&gt;
            IF SHOW ELSE LINE = PREF:LINE&lt;br /&gt;
         END&lt;br /&gt;
         NEW1&amp;lt;XX&amp;gt; = LINE&lt;br /&gt;
      NEXT XX&lt;br /&gt;
      WRITE NEW1 ON INFILE, NAME&lt;br /&gt;
      STOP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DOIT:&lt;br /&gt;
      SECOND = FIELD(LIN,&amp;#039; &amp;#039;,2)&lt;br /&gt;
      BEGIN CASE&lt;br /&gt;
         CASE FIRST = &amp;#039;$DEFINE&amp;#039;&lt;br /&gt;
            LOCATE SECOND IN THIS&amp;lt;1&amp;gt; SETTING POSN THEN&lt;br /&gt;
               THAT&amp;lt;POSN&amp;gt; = GOOD&lt;br /&gt;
            END ELSE&lt;br /&gt;
               NUMT += 1&lt;br /&gt;
               THIS&amp;lt;NUMT&amp;gt; = SECOND&lt;br /&gt;
               THAT&amp;lt;NUMT&amp;gt; = GOOD&lt;br /&gt;
            END&lt;br /&gt;
            LINE = PREF:LINE&lt;br /&gt;
            RETURN&lt;br /&gt;
         CASE FIRST = &amp;#039;$UNDEFINE&amp;#039;&lt;br /&gt;
            LOCATE SECOND IN THIS&amp;lt;1&amp;gt; SETTING POSN THEN&lt;br /&gt;
               THAT&amp;lt;POSN&amp;gt; = EVIL&lt;br /&gt;
            END ELSE&lt;br /&gt;
               NUMT += 1&lt;br /&gt;
               THIS&amp;lt;NUMT&amp;gt; = SECOND&lt;br /&gt;
               THAT&amp;lt;NUMT&amp;gt; = EVIL&lt;br /&gt;
            END&lt;br /&gt;
            LINE = PREF:LINE&lt;br /&gt;
            RETURN&lt;br /&gt;
         CASE FIRST = &amp;#039;$IFDEF&amp;#039;&lt;br /&gt;
            LOCATE SECOND IN THIS&amp;lt;1&amp;gt; SETTING POSN THEN&lt;br /&gt;
               TEMP = THAT&amp;lt;POSN&amp;gt;&lt;br /&gt;
            END ELSE TEMP = EVIL&lt;br /&gt;
            NUML += 1&lt;br /&gt;
            LIST&amp;lt;NUML&amp;gt; = TEMP&lt;br /&gt;
         CASE FIRST = &amp;#039;$IFNDEF&amp;#039;&lt;br /&gt;
            LOCATE SECOND IN THIS&amp;lt;1&amp;gt; SETTING POSN THEN&lt;br /&gt;
               TEMP = NOT(THAT&amp;lt;POSN&amp;gt;)&lt;br /&gt;
            END ELSE TEMP = GOOD&lt;br /&gt;
            NUML += 1&lt;br /&gt;
            LIST&amp;lt;NUML&amp;gt; = TEMP&lt;br /&gt;
         CASE FIRST = &amp;#039;$ENDIF&amp;#039;&lt;br /&gt;
            IF NUML LT 1 THEN RETURN&lt;br /&gt;
            DEL LIST&amp;lt;NUML&amp;gt;&lt;br /&gt;
            NUML -= 1&lt;br /&gt;
         CASE FIRST = &amp;#039;$ELSE&amp;#039;&lt;br /&gt;
            LIST&amp;lt;NUML&amp;gt; = NOT(LIST&amp;lt;NUML&amp;gt;)&lt;br /&gt;
         CASE 1&lt;br /&gt;
            IF SHOW ELSE LINE = PREF:LINE&lt;br /&gt;
            RETURN&lt;br /&gt;
      END CASE&lt;br /&gt;
      LINE = PREF:LINE&lt;br /&gt;
      SHOW = GOOD&lt;br /&gt;
      FOR YY = 1 TO NUML&lt;br /&gt;
         IF NOT(LIST&amp;lt;YY&amp;gt;) THEN&lt;br /&gt;
            SHOW = EVIL&lt;br /&gt;
            RETURN&lt;br /&gt;
         END&lt;br /&gt;
      NEXT YY&lt;br /&gt;
      RETURN&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://gist.github.com/ianmcgowan/4759135.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>