gm2
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CHAR as FOR loop control variable


From: Michael Riedl
Subject: CHAR as FOR loop control variable
Date: Tue, 2 May 2023 13:08:32 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:102.0) Gecko/20100101 Thunderbird/102.10.0

Hallo Gaius,

just recognised that GM2 (14.0.0) does not like a CHAR type FOR loop control variable any more ... :-)

The compilation gave quite miss-leading error messages

mriedl@laptop:~/Modula-2/InOut/quellen.gm2$make RealConvert.o
~/Modula-2/Numerik/TestRoutinen/Tools/convreal < RealConvert.mi  > RealConvert.mod gm2 -c -fiso -flibs=iso -I /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso -I /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2pim -I /home/mriedl/Modula-2/Numerik/quellen.gm2 -I /home/mriedl/Modula-2/InOut/quellen.gm2 -I /home/mriedl/Modula-2/Numerik/TestRoutinen/LinAlg -L /home/mriedl/Modula-2/Numerik/quellen.gm2 -L /home/mriedl/Modula-2/InOut/quellen.gm2 -L /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso -L /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2pim -O2 -g -O2 -fno-m2-plugin  RealConvert.mod /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected
Makefile:385: recipe for target 'RealConvert.o' failed
make: *** [RealConvert.o] Error 1

Here the simplified code reproducing the error

MODULE RealConvert;

FROM ConvTypes IMPORT ConvResults;

VAR   RKonv        : ARRAY ['0'..'9'] OF REAL;
      IKonv        : ARRAY ['0'..'9'] OF CARDINAL;
      KommaZeichen : CHAR; (* Macht 1,0 statt 1.0 in Ausgaben m"oglich. *)
      Ziffern      : ARRAY [0..11] OF CHAR; (* + 0C *)


VAR   c : CHAR;
      p : CARDINAL;
BEGIN
      (* Does not work ...  *)
      p:=0;
      FOR c:='0' TO '9' DO RKonv[c]:=VAL(REAL,p); IKonv[c]:=p; INC(p); END;

      (* This is essentially doing the same as the loop before - does work *)

      IKonv["0"] :=  0;   IKonv["1"] :=  1;   IKonv["2"] :=  2;
      IKonv["3"] :=  3;   IKonv["4"] :=  4;   IKonv["5"] :=  5;
      IKonv["6"] :=  6;   IKonv["7"] :=  7;   IKonv["8"] :=  8;
      IKonv["9"] :=  9;

      RKonv["0"] :=  0.0; RKonv["1"] :=  1.0; RKonv["2"] :=  2.0;
      RKonv["3"] :=  3.0; RKonv["4"] :=  4.0; RKonv["5"] :=  5.0;
      RKonv["6"] :=  6.0; RKonv["7"] :=  7.0; RKonv["8"] :=  8.0;
      RKonv["9"] :=  9.0;

      KommaZeichen:='.';
      Ziffern := "0123456789"; (* wg. GM2 *)

END RealConvert.


The compilation gave quite miss-leading error messages

mriedl@laptop:~/Modula-2/InOut/quellen.gm2$make RealConvert.o
~/Modula-2/Numerik/TestRoutinen/Tools/convreal < RealConvert.mi  > RealConvert.mod gm2 -c -fiso -flibs=iso -I /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso -I /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2pim -I /home/mriedl/Modula-2/Numerik/quellen.gm2 -I /home/mriedl/Modula-2/InOut/quellen.gm2 -I /home/mriedl/Modula-2/Numerik/TestRoutinen/LinAlg -L /home/mriedl/Modula-2/Numerik/quellen.gm2 -L /home/mriedl/Modula-2/InOut/quellen.gm2 -L /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso -L /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2pim -O2 -g -O2 -fno-m2-plugin  RealConvert.mod /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected /usr/local/gm2/lib/gcc/i686-pc-linux-gnu//14.0.0/m2/m2iso/ConvTypes.def:38:1: Fehler: type incompatibility, attempting to use a string ('_T37') when a CHAR is expected
Makefile:385: recipe for target 'RealConvert.o' failed
make: *** [RealConvert.o] Error 1

(for the complete module it made similar claims about module "ASCII" which was not even directly imported to the (implementation) module ...


Gruß

Michael







reply via email to

[Prev in Thread] Current Thread [Next in Thread]