home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xco212p.zip / SAMPLES / SIMPLE / self.ob2 < prev    next >
Text File  |  1994-03-31  |  1KB  |  43 lines

  1. <*+ MAIN *> MODULE self;
  2. IMPORT InOut;
  3. CONST C=27X; F=6; L=15;
  4. VAR s: ARRAY F+L OF ARRAY 64 OF CHAR;
  5.     i: INTEGER;
  6. BEGIN
  7.   s[ 0] := '<*+ MAIN *> MODULE self;';
  8.   s[ 1] := 'IMPORT InOut;';
  9.   s[ 2] := 'CONST C=27X; F=6; L=15;';
  10.   s[ 3] := 'VAR s: ARRAY F+L OF ARRAY 64 OF CHAR;';
  11.   s[ 4] := '    i: INTEGER;';
  12.   s[ 5] := 'BEGIN';
  13.   s[ 6] := '  FOR i := 0 TO (F+L)*2-1 DO';
  14.   s[ 7] := '    IF i>=F*2+L THEN InOut.WriteString (s[i-F-L])';
  15.   s[ 8] := '    ELSIF i<F   THEN InOut.WriteString (s[i])';
  16.   s[ 9] := '    ELSE';
  17.   s[10] := '      InOut.WriteString ("  s[");';
  18.   s[11] := '      InOut.WriteInt (i-F, 2);';
  19.   s[12] := '      InOut.WriteString ("] := ");';
  20.   s[13] := '      InOut.Write (C);';
  21.   s[14] := '      InOut.WriteString (s[i-F]);';
  22.   s[15] := '      InOut.Write (C);';
  23.   s[16] := '      InOut.Write (";")';
  24.   s[17] := '    END;';
  25.   s[18] := '    InOut.WriteLn;';
  26.   s[19] := '  END';
  27.   s[20] := 'END self.';
  28.   FOR i := 0 TO (F+L)*2-1 DO
  29.     IF i>=F*2+L THEN InOut.WriteString (s[i-F-L])
  30.     ELSIF i<F   THEN InOut.WriteString (s[i])
  31.     ELSE
  32.       InOut.WriteString ("  s[");
  33.       InOut.WriteInt (i-F, 2);
  34.       InOut.WriteString ("] := ");
  35.       InOut.Write (C);
  36.       InOut.WriteString (s[i-F]);
  37.       InOut.Write (C);
  38.       InOut.Write (";")
  39.     END;
  40.     InOut.WriteLn;
  41.   END
  42. END self.
  43.